마이크로서비스 와 쿠버네티스: 소프트웨어 생태계 가꾸기

소프트웨어 개발은 정원 가꾸기와 마찬가지로 다양한 요소가 어떻게 함께 작동하여 아름답고 생산적인 생태계를 만드는지에 대한 이해가 필요합니다. 모든 정원이 그러하듯, 마이크로서비스 와 쿠버네티스 의 차이점은 무엇인가라는 문제가 되는 잡초가 계속 대화에 끼어들고 있습니다.

목차

1. 마이크로서비스: 정원에 있는 식물
2. 컨테이너: 마이크로서비스를 위한 냄비
3. 쿠버네티스: 원예 도구
4. 쿠버네티스 없는 마이크로서비스: “야생 정원” 옵션
5. 쿠버네티스의 모든 것이 마이크로서비스는 아니다
6. 문제의 근원 파악하기

1. 마이크로서비스: 정원에 있는 식물

이 섹션의 제목이 있는 배너 - 마이크로서비스: 정원의 식물

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

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

2. 컨테이너: 마이크로서비스를 위한 냄비

Banner with title of this section -- Containers: The Pots for Your Microservices

대부분의 식물은 흙에 심어야 영양분과 수분을 흡수할 수 있으며, 화분에 심지 않고 그대로 두면 죽게 됩니다. 화분을 땅에 바로 심는 것도 좋지만, 많은 정원사는 토양을 맞춤화하고, 해충을 더 잘 방어하며, 정원을 돌아다니거나 겨울 동안 실내로 식물을 옮길 수 있는 화분이 있는 컨테이너 원예를 선택합니다. 마찬가지로 마이크로서비스를 배치할 위치에는 여러 가지 옵션이 있으며, 가장 일반적인 것은 “컨테이너”에 배치하는 것입니다. 컨테이너화된 마이크로서비스에는 앱을 실행하는 데 필요한 모든 것이 포함되어 있으며, 런타임 환경 간에 쉽게 이식할 수 있습니다.

3. 쿠버네티스: 원예 도구

그렇다면 컨테이너(화)에 마이크로서비스(식물)가 있는데 어떻게 배포, 유지 관리 및 확장할 수 있을까요? 도구를 사용해서! 바로 쿠버네티스입니다. 쿠버네티스는 마이크로서비스를 보다 쉽게 관리하고 유지보수할 수 있는 다양한 기능과 애드온을 제공하며, 사실상 컨테이너 오케스트레이션을 위한 도구로 간주합니다. 예를 들어, 쿠버네티스는 자동화된 load balancing, service discovery, self-healing 기능을 제공하여 개발자의 유지 관리 및 모니터링 작업의 일부를 덜어줍니다. 그리고 모두가 마이크로서비스(식물)가 더 많이 생산하기를 원할 때? 쿠버네티스는 automatic scaling 및 rolling updates를 지원하며 마이크로서비스 애플리케이션을 원활하게 실행할 수 있도록 합니다.

참고: Docker SwarmHashiCorp Nomad와 같은 쿠버네티스 대안도 거의 같은 기능을 제공합니다.

4. 쿠버네티스 없는 마이크로서비스: “야생 정원” 옵션

이 섹션의 제목인 배너 - 쿠버네티스 없는 마이크로서비스: '와일드 가든' 옵션

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

5. 쿠버네티스의 모든 것이 마이크로서비스는 아니다

이 섹션의 제목 배너 - 쿠버네티스의 모든 것이 마이크로서비스는 아닙니다.

능숙한 정원사라면 토마토와 함께 메리골드를 심는 것이 자원을 더 잘 활용하고 더 건강한 정원을 만드는 데 기여한다는 것을 알고 있습니다. 마찬가지로, 쿠버네티스는 마이크로서비스 관리 이상의 용도로 사용할 수 있는 다양한 기능과 애드온을 제공합니다. 예를 들어, 머신 러닝 모델이나 모놀리스와 같은 마이크로서비스 가 아닌 앱에도 쿠버네티스를 사용할 수 있습니다. 많은 고객들이 마이크로서비스 와 기타 애플리케이션을 관리하기 위해 쿠버네티스를 사용하고 있으며, 일부는 쿠버네티스 내부에 가상 머신(VM)을 배포하기도 합니다! 이는 레거시 모놀리식 앱을 마이크로서비스 지향 아키텍처로 전환하는 조직에게 훌륭한 옵션이 될 수 있습니다.

6. 문제의 근원 파악하기

이 포스터를 통해 두 가지를 얻으셨으면 좋겠습니다:

  • 쿠버네티스에 배포된 모든 것이 마이크로서비스 는 아닙니다. 쿠버네티스가 제공하는 기능과 애드온은 다양한 에코시스템에서 유용한 도구가 될 수 있습니다.
  • 마이크로서비스 를 항상 쿠버네티스로 관리할 필요는 없습니다. 일부 애플리케이션은 대체 도구와 “야생의 정원” 접근 방식을 통해 번창할 수 있습니다.

마이크로서비스 의 기본 사항에 대한 자세한 내용은 다음 리소스를 참조하세요:

NGINX Plus를 직접 사용해 보시려면 30일 무료 평가판을 신청하거나 NGINX STORE에 연락하여 논의하십시오.

NGINX에 대한 최신 정보들을 빠르게 전달받고 싶으시다면, 아래의 뉴스레터를 구독하세요.

NGINX STORE를 통한 솔루션 도입 및 기술지원 무료 상담 신청

* indicates required