마이크로서비스와 쿠버네티스: 소프트웨어 생태계를 가꾸는 정원 가이드

NGINX | 2023년 3월 30일

정원 가꾸기와 마찬가지로 소프트웨어 개발에서도 서로 다른 요소들이 어떻게 조화를 이루어 아름답고 생산적인 생태계를 만드는지 이해해야 합니다. 이것이 올해 Microservices March 프로그램의 주제를 정원 가꾸기로 정한 계기가 되었습니다. 어느 정원에서나 그렇듯, 골칫거리 잡초 하나가 계속 대화에 끼어듭니다. 바로 마이크로서비스와 Kubernetes의 차이점은 무엇인가 하는 질문입니다.

이 섹션의 제목이 표시된 배너 — 마이크로서비스: 정원의 식물

식물은 정원 생태계를 이루는 핵심 요소입니다. 식물은 정원을 구성하는 생명체로서 정원의 아름다움과 기능성에 기여합니다. 이와 마찬가지로 마이크로서비스는 현대적인 소프트웨어 애플리케이션을 구성하는 핵심 요소입니다. 각각의 서비스는 특정 기능을 수행하며, 서로 협력하여 더 크고 복잡한 애플리케이션을 만듭니다.

식물과 마찬가지로 마이크로서비스도 크기, 형태, 목적이 다양합니다. 어떤 것은 작고 특화되어 하나의 작업만 수행합니다. 또 어떤 것은 더 크고 보다 범용적인 작업을 수행하거나, 여러 개의 작은 구성 요소가 모여 이루어집니다. 예를 들어 딸기 모종은 크기가 작고 딸기만 생산합니다. 이는 신용카드 거래만 처리하는 작고 특화된 마이크로서비스와 비슷합니다. 고수처럼 보다 범용적인 식물은 살사와 과카몰리에 사용하는 잎채소뿐 아니라 코리앤더 씨앗도 생산합니다. 이러한 식물은 사용자 인증을 처리하는 서비스처럼 더 크고 범용적인 프로세스에 해당합니다.

이 섹션의 제목이 표시된 배너 -- 컨테이너: 마이크로서비스를 담는 화분

대부분의 식물은 토양에서 영양분과 수분을 흡수할 수 있도록 흙에 심어야 합니다. 뿌리가 드러난 채로 두면 죽고 맙니다. 땅에 바로 심어도 전혀 문제가 없지만, 많은 정원사는 화분을 이용한 컨테이너 재배를 선택합니다. 토양을 원하는 대로 조절하고 해충으로부터 식물을 더 잘 보호할 수 있으며, 정원 안에서 식물을 옮기거나 겨울에는 실내로 들여놓을 수도 있기 때문입니다. 이와 마찬가지로 마이크로서비스를 배치할 수 있는 곳도 여러 가지이며, 가장 일반적인 곳은 이름 그대로 ‘컨테이너’입니다. 컨테이너화된 마이크로서비스에는 앱 실행에 필요한 모든 요소가 포함되어 있으며, 런타임 환경 간에 손쉽게 이식할 수 있습니다.

이 섹션의 제목이 표시된 배너 -- Kubernetes: 원예 도구

이제 컨테이너(화분)에 마이크로서비스(식물)를 담았습니다. 그렇다면 이를 어떻게 배포하고 유지 관리하며 확장할까요? 도구를 사용하면 됩니다! 바로 Kubernetes입니다. Kubernetes는 마이크로서비스를 더 쉽게 관리하고 유지할 수 있도록 다양한 기능과 추가 기능을 제공하며, 컨테이너 오케스트레이션의 사실상 표준 도구로 여겨집니다. 예를 들어 Kubernetes는 자동 부하 분산, 서비스 디스커버리, 자가 복구 기능을 제공하여 개발자의 유지 관리 및 모니터링 부담을 덜어 줍니다. 모두가 여러분의 마이크로서비스(식물)에서 더 많은 결과물을 원한다면 어떻게 해야 할까요? Kubernetes는 자동 확장과 롤링 업데이트를 지원하여 마이크로서비스 애플리케이션이 원활하게 실행되도록 해 줍니다.

참고: Docker Swarm 및 HashiCorp Nomad와 같은 Kubernetes 대안도 거의 동일한 기능을 제공합니다.

이 섹션의 제목이 표시된 배너 — Kubernetes 없는 마이크로서비스: '야생 정원' 옵션

지금까지 마이크로서비스를 관리하고 애플리케이션이 무질서하게 확장되어 통제 불능 상태가 되는 것을 방지하기 위해 Kubernetes를 사용해야 하는 이유를 살펴보았습니다. 하지만 Kubernetes와 컨테이너가 항상 필요한 것은 아닙니다. 애플리케이션의 복잡성에 따라 기존의 가상 머신(또는 물리적 머신) 플랫폼을 선택할 수도 있으며, 이러한 플랫폼도 자동화 도구를 사용해 배포하거나 프로비저닝할 수 있습니다. 이런 도구는 Kubernetes와 같은 수준의 자동화와 확장성을 제공하지는 않지만, 비교적 단순하거나 중요도가 낮은 앱이라면 이러한 절충안을 받아들일 수 있습니다. 또 다른 방법은 AWS Lambda와 같은 서버리스 컴퓨팅 플랫폼을 사용하는 것입니다. 이러한 플랫폼을 이용하면 기반 인프라를 신경 쓰지 않고 이벤트에 응답하여 마이크로서비스 코드를 실행할 수 있습니다.

이 섹션의 제목이 표시된 배너 -- Kubernetes의 모든 것이 마이크로서비스인 것은 아닙니다

노련한 정원사들은 동반 식재(예: 토마토 옆에 메리골드 심기)가 자원을 더 효율적으로 활용하고 정원을 더 건강하게 가꾸는 데 도움이 된다는 사실을 알고 있습니다. 마찬가지로 Kubernetes는 다양한 기능과 추가 기능을 제공하므로 마이크로서비스 관리 외에도 폭넓게 활용할 수 있습니다. 예를 들어 Kubernetes는 머신 러닝 모델이나 모놀리식 애플리케이션과 같은 비마이크로서비스 앱에도 사용할 수 있습니다. 많은 고객이 Kubernetes를 사용해 마이크로서비스와 기타 애플리케이션을 관리하고 있으며, 일부 고객은 Kubernetes 내부에 가상 머신(VM)까지 배포하고 있습니다! 이는 기존 모놀리식 앱을 마이크로서비스 지향 아키텍처로 전환 중인 조직에 매우 유용한 선택지가 될 수 있습니다.

문제의 근본 원인 파악하기

이 글을 통해 두 가지를 얻어 가시길 바랍니다(가까운 묘목장에 가 보고 싶은 마음은 물론이고요):

  • Kubernetes에 배포되는 모든 것이 마이크로서비스인 것은 아닙니다. Kubernetes가 제공하는 기능과 애드온 덕분에 Kubernetes는 다양한 생태계에서 유용한 도구로 활용될 수 있습니다.
  • 마이크로서비스를 항상 Kubernetes로 관리해야 하는 것은 아닙니다. 일부 애플리케이션은 다른 도구와 ‘자유롭게 가꾸는 정원’ 방식에서 더 잘 성장합니다.

마이크로서비스의 기본 개념에 대해 자세히 알아보려면 다음 자료를 확인하세요:


공유

작성자 소개

관련 블로그 게시물

시청하기: KubeCon North America 2023에서의 NGINX Gateway Fabric
NGINX | 2023. 11. 30.

시청하기: KubeCon North America 2023에서의 NGINX Gateway Fabric

이 영상에서는 KubeCon의 NGINX 부스를 찾아가, 저희가 공개한 Kubernetes Gateway API 구현을 살펴봅니다.

F5 NGINX로 대규모 WAF 플릿을 확인하고 관리하는 2가지 방법
NGINX | 2023. 03. 23.

F5 NGINX로 대규모 WAF 플릿을 확인하고 관리하는 2가지 방법

앱 보안을 강화하는 두 가지 방법을 소개합니다. NGINX Management Suite를 통해 WAF 운영에 대한 가시성을 높이고, NGINX App Protect WAF를 활용해 코드형 보안을 구현하는 것입니다.

Ingress 컨트롤러 선택 가이드, 4부: NGINX Ingress Controller 옵션
NGINX | 2021. 09. 27.

Ingress 컨트롤러 선택 가이드, 4부: NGINX Ingress Controller 옵션

개발 주체, 개발 철학, 프로덕션 환경 준비도, 보안 및 지원을 기준으로 어떤 NGINX Ingress 컨트롤러가 가장 적합한지 알아보세요.

진화하는 공격 환경에 NGINX App Protect Denial of Service가 적응하는 방법
NGINX | 2021. 07. 06.

진화하는 공격 환경에 NGINX App Protect Denial of Service가 적응하는 방법

NGINX App Protect Denial of Service(DoS)가 계층 7 DoS 공격을 방어하기 위해 완화 방법을 실시간으로 조정하는 방식을 설명합니다. 정상적인 사용자 행동과 서버 상태에 대한 모델을 생성하여 공격을 나타내는 이상 징후를 감지하고 맞춤형 완화 시그니처를 적용할 수 있습니다.

NGINX Instance Manager를 활용한 대규모 구성 업데이트 및 인증서 관리
NGINX | 2021. 06. 30.

NGINX Instance Manager를 활용한 대규모 구성 업데이트 및 인증서 관리

NGINX Instance Manager 버전 1.0에는 두 가지 새로운 기능이 도입되었습니다. NGINX 인스턴스에 태그와 사용자 역할을 지정하면 전체 그룹에 구성을 한 번에 적용할 수 있습니다. 인증서 검사는 만료 예정인 인증서를 감지하여 서비스 중단을 방지할 수 있도록 인증서를 교체할 수 있게 해줍니다.

Netflix가 자사 CDN의 핵심으로 NGINX를 선택한 이유
NGINX | 2015. 03. 25.

Netflix가 자사 CDN의 핵심으로 NGINX를 선택한 이유

Netflix가 글로벌 콘텐츠 전송 네트워크인 Open Connect의 스트리밍 미디어 기술로 NGINX를 선택한 이유를 NGINX 개발자 Gleb Smirnoff에게서 알아보세요.