마이크로서비스 와 쿠버네티스: 소프트웨어 생태계 가꾸기
소프트웨어 개발은 정원 가꾸기와 마찬가지로 다양한 요소가 어떻게 함께 작동하여 아름답고 생산적인 생태계를 만드는지에 대한 이해가 필요합니다. 모든 정원이 그러하듯, 마이크로서비스 와 쿠버네티스 의 차이점은 무엇인가라는 문제가 되는 잡초가 계속 대화에 끼어들고 있습니다.
목차
1. 마이크로서비스: 정원에 있는 식물
2. 컨테이너: 마이크로서비스를 위한 냄비
3. 쿠버네티스: 원예 도구
4. 쿠버네티스 없는 마이크로서비스: “야생 정원” 옵션
5. 쿠버네티스의 모든 것이 마이크로서비스는 아니다
6. 문제의 근원 파악하기
1. 마이크로서비스: 정원에 있는 식물

식물은 정원 생태계의 주요 요소입니다. 식물은 정원을 구성하는 살아있는 유기체이며 정원의 아름다움과 기능에 기여합니다. 마찬가지로 마이크로서비스는 최신 소프트웨어 애플리케이션의 주요 구성 요소입니다. 마이크로서비스는 특정 기능을 수행하고 함께 작동하여 더 크고 복잡한 애플리케이션을 만드는 개별 서비스입니다.
마이크로서비스는 식물과 마찬가지로 크기, 형태, 목적이 다양합니다. 어떤 마이크로서비스는 작고 전문화되어 있으며, 한 가지 작업만 담당합니다. 다른 마이크로서비스는 규모가 더 크거나, 운영이 더 일반화되어 있거나, 작은 구성 요소의 클러스터로 구성되어 있습니다. 예를 들어, 딸기 농장은 작아서 딸기만 생산합니다. 이는 신용 카드 거래(소규모 및 전문)만 처리하는 마이크로서비스와 유사합니다. 고수와 같은 보다 일반화된 식물은 salsa와 guacamole에 사용되는 잎채소뿐만 아니라 고수 씨앗도 생산합니다. 이러한 종류의 식물은 사용자 인증을 처리하는 서비스(더 크고 일반적인 프로세스)와 유사합니다.
2. 컨테이너: 마이크로서비스를 위한 냄비

대부분의 식물은 흙에 심어야 영양분과 수분을 흡수할 수 있으며, 화분에 심지 않고 그대로 두면 죽게 됩니다. 화분을 땅에 바로 심는 것도 좋지만, 많은 정원사는 토양을 맞춤화하고, 해충을 더 잘 방어하며, 정원을 돌아다니거나 겨울 동안 실내로 식물을 옮길 수 있는 화분이 있는 컨테이너 원예를 선택합니다. 마찬가지로 마이크로서비스를 배치할 위치에는 여러 가지 옵션이 있으며, 가장 일반적인 것은 “컨테이너”에 배치하는 것입니다. 컨테이너화된 마이크로서비스에는 앱을 실행하는 데 필요한 모든 것이 포함되어 있으며, 런타임 환경 간에 쉽게 이식할 수 있습니다.
3. 쿠버네티스: 원예 도구
그렇다면 컨테이너(화)에 마이크로서비스(식물)가 있는데 어떻게 배포, 유지 관리 및 확장할 수 있을까요? 도구를 사용해서! 바로 쿠버네티스입니다. 쿠버네티스는 마이크로서비스를 보다 쉽게 관리하고 유지보수할 수 있는 다양한 기능과 애드온을 제공하며, 사실상 컨테이너 오케스트레이션을 위한 도구로 간주합니다. 예를 들어, 쿠버네티스는 자동화된 load balancing, service discovery, self-healing 기능을 제공하여 개발자의 유지 관리 및 모니터링 작업의 일부를 덜어줍니다. 그리고 모두가 마이크로서비스(식물)가 더 많이 생산하기를 원할 때? 쿠버네티스는 automatic scaling 및 rolling updates를 지원하며 마이크로서비스 애플리케이션을 원활하게 실행할 수 있도록 합니다.
참고: Docker Swarm 및 HashiCorp Nomad와 같은 쿠버네티스 대안도 거의 같은 기능을 제공합니다.
4. 쿠버네티스 없는 마이크로서비스: “야생 정원” 옵션

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

능숙한 정원사라면 토마토와 함께 메리골드를 심는 것이 자원을 더 잘 활용하고 더 건강한 정원을 만드는 데 기여한다는 것을 알고 있습니다. 마찬가지로, 쿠버네티스는 마이크로서비스 관리 이상의 용도로 사용할 수 있는 다양한 기능과 애드온을 제공합니다. 예를 들어, 머신 러닝 모델이나 모놀리스와 같은 마이크로서비스 가 아닌 앱에도 쿠버네티스를 사용할 수 있습니다. 많은 고객들이 마이크로서비스 와 기타 애플리케이션을 관리하기 위해 쿠버네티스를 사용하고 있으며, 일부는 쿠버네티스 내부에 가상 머신(VM)을 배포하기도 합니다! 이는 레거시 모놀리식 앱을 마이크로서비스 지향 아키텍처로 전환하는 조직에게 훌륭한 옵션이 될 수 있습니다.
6. 문제의 근원 파악하기
이 포스터를 통해 두 가지를 얻으셨으면 좋겠습니다:
- 쿠버네티스에 배포된 모든 것이 마이크로서비스 는 아닙니다. 쿠버네티스가 제공하는 기능과 애드온은 다양한 에코시스템에서 유용한 도구가 될 수 있습니다.
- 마이크로서비스 를 항상 쿠버네티스로 관리할 필요는 없습니다. 일부 애플리케이션은 대체 도구와 “야생의 정원” 접근 방식을 통해 번창할 수 있습니다.
마이크로서비스 의 기본 사항에 대한 자세한 내용은 다음 리소스를 참조하세요:
NGINX Plus를 직접 사용해 보시려면 30일 무료 평가판을 신청하거나 NGINX STORE에 연락하여 논의하십시오.
NGINX에 대한 최신 정보들을 빠르게 전달받고 싶으시다면, 아래의 뉴스레터를 구독하세요.
댓글을 달려면 로그인해야 합니다.