블로그 | NGINX

마이크로서비스와 쿠버네티스: 소프트웨어 생태계에 대한 원예 가이드

NGINX-F5-수평-검정-유형-RGB의 일부
젠 길 썸네일
젠 길
2023년 3월 30일 게시

원예와 마찬가지로 소프트웨어 개발에도 다양한 요소가 어떻게 함께 작용하여 아름답고 생산적인 생태계를 조성하는지에 대한 이해가 필요합니다. 이것이 바로 올해의 마이크로서비스 3월 프로그램에서 우리가 원예 주제를 선택하게 된 계기가 되었습니다. 어느 정원에서나 그렇듯이, 대화에 계속 끼어드는 문제적 잡초 하나가 있습니다. 마이크로서비스와 쿠버네티스의 차이점은 무엇일까요?

식물은 정원 생태계의 주요 요소입니다. 그들은 정원을 구성하는 살아있는 유기체이며, 정원의 아름다움과 기능성에 기여합니다. 마찬가지로, 마이크로서비스현대 소프트웨어 애플리케이션 의 주요 구성 요소입니다. 이는 특정 기능을 수행하고 함께 작동하여 더 크고 복잡한 애플리케이션을 만드는 개별 서비스입니다.

식물과 마찬가지로 마이크로서비스도 크기, 형태, 목적이 다양합니다. 일부는 규모가 작고 전문화되어 있으며, 한 가지 작업만 담당합니다. 다른 조직들은 규모가 더 크고, 운영이 더 일반화되어 있거나, 더 작은 구성 요소들의 집합으로 구성되어 있습니다. 예를 들어, 딸기 나무는 작아서 딸기만 맺습니다. 이는 신용카드 거래(소규모이고 특수한 거래)만 처리하는 마이크로서비스와 유사합니다. 고수와 같은 보다 일반화된 식물은 살사와 과카몰리에 사용되는 잎이 많은 채소뿐만 아니라 고수 씨앗도 생산합니다. 이런 종류의 플랜트는 사용자 인증(더 크고 일반적인 프로세스)을 처리하는 서비스와 유사합니다.

대부분의 식물은 영양분과 수분을 흡수할 수 있도록 흙에 심어야 합니다. 맨뿌리로 두면 죽습니다. 땅에 바로 심는 것도 전혀 문제가 없지만, 많은 정원사는 화분을 이용한 컨테이너 정원을 선택합니다. 화분을 이용하면 토양을 원하는 대로 조절할 수 있고, 해충에 더 잘 대처할 수 있으며, 정원 주변으로 식물을 옮길 수 있기 때문입니다(겨울에는 정원 안에서 옮길 수도 있습니다). 마찬가지로 마이크로서비스를 배치할 위치에는 여러 가지 옵션이 있는데, 가장 일반적인 옵션은 "컨테이너"에 배치하는 것입니다. 컨테이너화된 마이크로서비스에는 앱을 실행하는 데 필요한 모든 것이 포함되어 있으며 런타임 환경 간에 쉽게 이식할 수 있습니다.

이제 우리는 컨테이너(화분)에 마이크로서비스(식물)를 넣었지만 이를 어떻게 배포하고, 유지 관리하고, 확장할 수 있을까요? 도구를 사용해서요! 쿠버네티스를 소개합니다. 쿠버네티스는 마이크로서비스를 보다 쉽게 관리하고 유지할 수 있도록 하는 많은 기능과 애드온을 제공하며, 컨테이너 오케스트레이션을 위한 사실상의 도구로 간주됩니다. 예를 들어, 쿠버네티스는 자동화된 부하 분산, 서비스 검색 및 자체 복구 기능을 제공하여 개발자의 일부 유지 관리 및 모니터링 작업을 덜어줍니다. 그리고 모두가 마이크로서비스(플랜트)가 더 많은 것을 생산하기를 원할 때는 어떨까요? 쿠버네티스는 자동 확장 및 롤링 업데이트를 지원하여 마이크로서비스 애플리케이션이 원활하게 실행되도록 합니다.

메모: Docker SwarmHashiCorp Nomad 와 같은 Kubernetes 대안은 거의 동일한 기능을 제공합니다.

우리는 마이크로서비스를 관리하고 애플리케이션이 통제 불능으로 커져가는 것을 방지하기 위해 Kubernetes를 사용하는 사례를 확립했습니다. 하지만 쿠버네티스와 컨테이너는 항상 필요한 것은 아닙니다. 애플리케이션의 복잡성에 따라 자동화 도구를 사용하여 배포 또는 프로비저닝이 가능한 기존의 가상(또는 물리적) 머신 플랫폼을 사용할 수도 있습니다. 이러한 도구는 Kubernetes와 동일한 수준의 자동화 및 확장성을 제공하지는 않지만 덜 복잡하거나 중요하지 않은 앱의 경우 이러한 타협이 괜찮을 수 있습니다. 또 다른 옵션은 기본 인프라에 대한 걱정 없이 이벤트에 응답하여 마이크로서비스 코드를 실행할 수 있는 서버리스 컴퓨팅 플랫폼(예: AWS Lambda )을 사용하는 것입니다.

이 섹션의 제목이 있는 배너 -- Kubernetes의 모든 것이 마이크로서비스는 아닙니다

현명한 정원사라면 토마토 옆에 금잔화를 심는 것과 같은 동반 식물을 심는 것이 자원을 더 잘 활용하고 더 건강한 정원을 만드는 데 도움이 된다는 것을 알고 있습니다. 마찬가지로 쿠버네티스는 마이크로서비스 관리 이상의 용도로 사용할 수 있는 광범위한 기능과 애드온을 제공합니다. 예를 들어 Kubernetes는 마이크로서비스가 아닌 앱(예: 머신 러닝 모델이나 모놀리스)에 사용할 수 있습니다. 많은 고객이 Kubernetes를 사용하여 마이크로서비스와 다른 애플리케이션을 관리하고 있으며, 일부는 Kubernetes 내부에 가상 머신(VM)을 배포하기도 합니다! 이는 기존 모놀리식 앱을 마이크로서비스 지향 아키텍처로 전환하는 조직에 좋은 옵션이 될 수 있습니다.

문제의 핵심을 파악하다

이 글을 읽고 두 가지를 얻으셨으면 합니다(지역 보육원을 방문하고 싶은 마음 외에도):

  • Kubernetes에 배포된 모든 것이 마이크로서비스는 아닙니다. Kubernetes가 제공하는 기능과 추가 기능은 이를 다양한 생태계에서 유용한 도구로 만듭니다.
  • 마이크로서비스는 항상 Kubernetes로 관리할 필요는 없습니다. 일부 애플리케이션은 대체 도구와 "야생 정원" 접근 방식을 통해 성공을 거두고 있습니다.

마이크로서비스의 기본에 대한 자세한 내용은 다음 리소스를 확인하세요.


"이 블로그 게시물에는 더 이상 사용할 수 없거나 더 이상 지원되지 않는 제품이 참조될 수 있습니다. 사용 가능한 F5 NGINX 제품과 솔루션에 대한 최신 정보를 보려면 NGINX 제품군을 살펴보세요. NGINX는 이제 F5의 일부가 되었습니다. 이전의 모든 NGINX.com 링크는 F5.com의 유사한 NGINX 콘텐츠로 리디렉션됩니다."