컨테이너 오케스트레이션이 중요한 이유는 무엇인가요?
- 7분
이 단원에서는 Tailspin 팀을 따라 경영진의 새 지시문을 제공하기 위한 전략을 살펴볼 수 있습니다. 팀은 Kubernetes가 마이크로 서비스 아키텍처로의 전환을 어떻게 지원할 수 있는지 살펴봅니다.
미래는 더 작습니다.
테일스핀의 상황이 좋아지고 있습니다. 최근 관리 오프사이트에서 Andy는 Azure DevOps를 통해 팀의 최근 성공을 발표했는데, 이는 호평을 받았습니다. Andy는 또한 Docker 컨테이너를 사용하여 팀의 최근 개념 증명 프로젝트에 대한 데모를 발표했습니다. 이러한 데모는 조직의 기술적 미래에 대한 일련의 생산적인 대화로 이어졌습니다. 다음 날, 앤디는 스페이스 게임 웹 팀과 뉴스를 공유하기 위해 돌아갑니다.
앤디: 어제 오프사이트 프레젠테이션에서 상황이 정말 잘 진행되었습니다. 경영진은 우리가 지금까지 한 일에 깊은 인상을 받았으며 우리에게 특별한 임무를 발표했습니다.
팀: 어 오. 나는 1 마일 떨어진 곳에서 오는 것과 같은 함정을 볼 수있을만큼 오랫동안 주변에 있었습니다.
앤디: 아니, 이것은 우리에게 좋은 기회입니다. 경영진은 Docker 컨테이너 데모를 좋아했으며 마이크로 서비스 아키텍처 채택을 살펴보기를 원합니다.
Amita: 마이크로 서비스? 휴대폰 및 시계용 앱처럼?
Andy: 아니요, 마이크로 서비스는 웹앱과 같은 일반적인 앱입니다. 주요 차이점은 단일 모놀리식 앱을 빌드하고 배포하는 대신 자율 서비스로 더 잘 유지 관리되고 관리되는 모든 구성 요소를 리팩터링한다는 것입니다. 그런 다음 이러한 서비스를 빌드하여 해당 서비스가 수행하는 작업을 잘 수행하고 독립적으로 작동하도록 배포합니다.
팀: 그 소리가 마음에 들지 않아요. 저는 이미 환경 전반에 걸쳐 많은 서비스를 다루고 있습니다. 내 접시에 더 많은 것을 원하는지 모르겠어요.
앤디: 이해할 수 있는 문제입니다. 다행히 지정된 환경에서 다양한 컨테이너를 관리하기 위한 몇 가지 유용한 도구가 있습니다. Kubernetes를 사용하여 오케스트레이션되는 웹 애플리케이션에 대해 다중 컨테이너 솔루션을 탐색해 보라는 요청을 받았습니다. 또한 DevOps 프로세스에 어떤 영향을 미칠지 알고 싶어합니다.
마라: 저는 쿠버네테스를 읽었습니다. Azure는 Azure Kubernetes Service를 통해 이를 지원하며, Azure DevOps에서 파이프라인 지원이 있다는 것을 알고 있습니다.
Amita: 이 과정은 복잡해질 것 같습니다. 테스트에 어떤 영향을 주나요?
마라: 그것은 큰 변화가 되어서는 안됩니다. Kubernetes는 다른 네임스페이스에 배포할 수 있는 방법을 제공합니다. 이렇게 하면 테스트 및 프로덕션 전용 환경 전체를 가질 수 있도록 배포를 분할할 수 있습니다. 또한 모두 동일한 클러스터에서 실행되고 동일한 컨테이너를 사용하므로 테스트 환경은 프로덕션 환경에서 예상되는 것을 제공해야 합니다.
아미타: 어디에 어떤 환경이 있는지 추적하기가 어려울까요?
Mara: 아니요, Azure DevOps 환경을 사용하여 이 모든 작업을 수행할 수 있습니다. 포털을 사용하여 각 서비스가 어디에 있고 어떻게 도착했는지 확인할 수 있습니다. 모두 파이프라인을 통해 자동화되므로 수동으로 추적할 필요가 없습니다. 내가 지금 가지고있는 유일한 관심사는 이것을 구축하기 위해 우리의 개발 경험에 얼마나 많은 영향을 미칠 것입니다.
앤디: 좋은 소식은 그 영향이 미미하다는 것입니다. Docker 컨테이너를 빌드하도록 프로젝트가 설정되어 있다고 가정할 때 Kubernetes에 배포해야 하는 것은 서비스와 해당 배포를 설명하는 몇 가지 매니페스트 파일입니다.
Mara: 두 번째 컨테이너로 리팩터링할 내용에 대해 생각해보시겠습니까? 웹 API를 통해 순위표를 사용할 수 있도록 요청하는 여러 팀이 있었습니다.
앤디: 저는 여러분보다 한 걸음 앞서 있습니다. 어젯밤 Docker 프로젝트를 포크하고 순위표 데이터 기능을 자체 마이크로 서비스로 리팩터링했습니다. 이렇게 하면 웹 사이트에 대한 컨테이너 하나와 순위표 API용 컨테이너가 남습니다. 두 컨테이너는 앱에서 사용하는 기술 스택에 관계없이 사이트 또는 API를 사용하려는 모든 사용자와 공유할 수 있는 고유한 퍼블릭 엔드포인트를 갖도록 구성됩니다. 부하가 어느 한 쪽에서 크게 증가할 경우, 그 컨테이너를 독립적으로 확장할 수 있습니다.
Mara: 이 프로젝트는 굉장하게 들립니다! 릴리스 파이프라인 업데이트를 시작해 보겠습니다.
Kubernetes란?
Kubernetes는 컨테이너화된 애플리케이션의 배포, 크기 조정 및 관리를 자동화하는 오픈 소스 컨테이너 오케스트레이션 플랫폼입니다. 선언적이고 응답성이 뛰어난 방식으로 분산 시스템을 실행하기 위한 프레임워크를 제공하고 여러 호스트에서 컨테이너를 실행하여 리소스를 효율적으로 사용하고 안정성을 높일 수 있습니다.
Tailspin 팀은 모든 요구 사항을 충족하므로 이 시나리오에서 Kubernetes를 선택했습니다.
다중 컨테이너 배포의 복잡성: Kubernetes는 무엇보다도 컨테이너 배포 배포 및 유지 관리와 관련된 프로세스를 자동화하도록 설계되었습니다.
환경 및 단계 간 일관성: 컨테이너가 포함된 앱에 대해 일관된 배포를 보장하는 것처럼 Kubernetes는 클러스터가 관리하는 컨테이너에 대해 일관된 배포를 보장합니다.
Azure DevOps 지원: Azure DevOps는 Kubernetes 작업에 대한 일류 지원을 제공합니다.
개발 용이성: Kubernetes가 원본 프로젝트에 미치는 영향은 최소한의 선언적 구성으로 제한되는 Docker 지원을 추가하는 것과 비슷합니다.
Kubernetes를 채택하면 여러 Docker 컨테이너를 사용하는 마이크로 서비스 아키텍처를 채택하는 프로세스가 크게 간소화됩니다.