반응형

컨테이너

마이크로서비스 지향적 아키텍처의 이점은 인프라 수준까지 전파되어야 합니다. 이 목표를 컨테이너를 통해 달성할 수 있습니다.

 

클라우드에서 가상 장치를 실행하면 동적이고 탄력적인 환경이 확보되지만, 개발자의 프로세스를 단순화할 수 있습니다. 컨테이너는 애플리케이션의 코드, 구성 및 종속성을 하나의 객체로 패키징하는 표준화된 방식을 제공합니다.

 

컨테이너는 서버에 설치된 운영 체제를 공유하며 리소스가 격리된 프로세스 형태로 실행되므로 환경에 상관없이 빠르고 안정적이며 일관된 배포를 진행할 수 있습니다.

 

컨테이너와 마이크로서비스

컨테이너는 확장성과 이동성이 뛰어나며 지속적인 배포가 가능하므로 마이크로서비스 아키텍처에 이상적인 선택입니다.

 

마이크로서비스 아키텍처는 전통적인 모놀리식 아키텍처를 서비스로 실행되고 경량 API를 통해 통신하는 독립된 구성 요소들로 분해합니다. 이러한 마이크로서비스 환경에서는 복원력, 효율성, 그리고 전반적인 민첩성이 향상되어 반복 작업을 신속하게 처리할 수 있습니다.

 

각 마이크로서비스를 컨테이너에 구축할 수 있습니다. 각 마이크로서비스는 별도의 구성 요소이므로 장애를 더 잘 견딜 수 있습니다. 컨테이너에 장애가 발생할 경우 컨테이너를 종료하고 그 특정 서비스에 새 컨테이너를 신속하게 시작할 수 있습니다. 특정 서비스에 트래픽이 많은 경우 그 마으크로서비스를 처리하는 컨테이너를 스케일 아웃할 수 있습니다. 이러한 구성 방식으로 인해 전체 애플리케이션을 지원하기 위해 서버를 추가로 배포할 필요가 없습니다. 마이크로서비스와 컨테이너는 지속적 배포에도 적합합니다. 애플리케이션의 다른 구성 요소에 영향을 주지 않고 개별 서비스를 업데이트할 수 있습니다.

 

가상화 및 추상화 수준

베어 메탈 서버는 라이브러리를 사용하여 하나 이상의 애플리케이션으로 독립 실행형 OS를 실행합니다. 서버의 사용률이 0%이든 100%이든 관계없이 비용이 일정하게 유지됩니다. 크기를 조정하려면 서버를추가로 구매하여 구성해야 합니다. 그리고 여러 서버에서 작동하는 애플리케이션을 구축하기도 어렵습니다. 이러한 서버의 OS가 동일해야 하기 때문입니다. 뿐만 아니라 애플리케이션 라이브러리 버전도 동기화해야 합니다.

 

가성 장치를 사용하여 애플리케이션 및 해당 라이브러리를 자체 OS 전체와 함께 격리할 수 있습니다. VM의 단점은 가상화 계층이 무겁다는 것입니다. 각 VM은 자체 OS를 사용하므로 호스트 CPU와 RAM이 더 많이 필요합니다. 따라서 효율성과 성능이 낮아집니다. VM마다 개별 OS가 있다는 것은 물리적 호스트에서 더 많은 패치와 더 많은 업데이트, 더 많은 공간을 차지한다는 뜻이기도 합니다.

 

컨테이너화를 수행하면 컨테이너는 시스템의 OS 시스템 커널을 공유하며 기본 OS 파일 시스템이 노출됩니다. 시스템의 OS 시스템 커널을 공유하면 공유 라이브러리를 사용할 수 있으며 필요에 따라 개별 라이브러리도 사용할 수 있습니다. 그러므로 컨테이너는 휴대성이 뛰어납니다. 또한 컨테이너는 VM보다 빠르게 시작하고 중지할 수 있습니다. 컨테이너는 가볍고 효율적이며 빠릅니다.

 

VM과 달리 컨테이너는 적절한 커널 기능이 지원되며 Docker daemon이 있는 어떤 Linux 시스템에서나 실행할 수 있으므로 휴대성이 뛰어납니다. 랩톱, VM, EC2 인스턴스, 베어 메탈 서버에 호스트할 수 있습니다. 또한, 하이퍼바이저가 필요 없다는 것은 성능 오버헤드가 거의 발생하지 않는다고 볼 수 있습니다. 프로세스가 커널과 직접 커뮤니케이션하며, 대체로 다른 독립 컨테이너에 대해서는 인식하지 못합니다. 대부분의 컨테이너는 몇 초 이내로 부팅이 완료됩니다.

 

AWS 컨테이너

AWS에서 컨테이너를 실행할 때 여러 옵션을 사용할 수 있습니다. 일반적으로는 EC2 인스턴스를 기반으로 컨테이너를 실행하고 VM 배포 및 컨테이너화의 요소를 사용하게 됩니다.

 

 

위 그림에서는 물리적 서버, 하이퍼바이저, 가상 게스트 OS 2개가 포함된 기본 서버 인프라가 나와있습니다. 운영 체제 중 하나는 Docker를 실행하고 다른 하나는 별도의 애플리케이션을 실행합니다.  Docker가 설치된 가상 게스트 OS는 컨테이너를 빌드하고 실행할 수 있습니다. 이러한 유형의 배포는 사용되는 EC2 인스턴스 크기까지만 조정이 가능합니다. 또한 컨테이너의 네트워킹, 액세스 및 유지 관리를 고객이 직접 관리해야 합니다.

 

오케스트레이션 도구는 AWS에서 컨테이너를 실행하기 위한 확장 가능 솔루션입니다. 오케스트레이션 도구는 수백 개의 EC2 인스턴스를 포함하여 컨테이너를 호스팅할 수 있는 컴퓨팅 리소스 풀을 사용합니다. 오케스트레이션 도구는 애플리케이션의 수요가 변경됨에 따라 컨테이너를 시작하고 종료합니다. 그리고 컨테이너의 연결을 관리합니다. 또한 컨테이너 배포 및 업데이트를 관리하는 데에도 도움이 됩니다.

반응형

'자격증 > AWS SAA' 카테고리의 다른 글

[AWS SAA] 43. ECS와 EKS  (0) 2023.09.05
[AWS SAA] 42. 컨테이너 서비스  (0) 2023.09.05
[AWS SAA] 40. 마이크로서비스  (0) 2023.09.03
[AWS SAA] 39. 인프라 관리  (0) 2023.09.02
[AWS SAA] 38. CloudFormation  (0) 2023.09.01