AWS MSA 1. 서비스를 통한 컴포넌트화 (Componentization Via Services)

2020. 6. 23. 13:24IT/AWS

728x90

 

원문 : Running Containerized Microservices on AWS
https://d1.awsstatic.com/training-and-certification/docs-devops-pro/running-containerized-microservices-on-aws.pdf

 

 마이크로서비스 아키텍처는 잘 정의된 API를 통해 통신하는 소규모 독립 서비스들로 구성된다. 이 작은 구성 요소들은 각각의 기능을 수행하기 위해 서로 협력하고, 모든 기능을 갖춘 응용 프로그램을 제공하도록 분할되어 있다. 마이크로서비스 아키텍처는 1980년대에 널리 사용된 Walkman 휴대용 오디오 카세트 플레이어에 비유할 수 있다. 배터리는 전원을 공급하고, 오디오 테이프는 매체이며, 헤드폰은 출력을 제공하며, 메인 테이프 플레이어는 키를 눌러 입력을 받는다. 함께 사용하면 음악이 재생된다. 이와 마찬가지로, 마이크로서비스는 분리되어야 하고, 각각 구성요소는 하나의 기능에 중점을 두어야 한다. 또한 마이크로서비스 아키텍처를 통해 교체 또는 업그레이드가 가능하다. 애플리케이션의 특정 서비스가 성능상 문제 되는 경우, 더 성능이 좋고 간소화된 구성 요소로 교체할 수 있다.

 

 마이크로서비스는 모듈화를 통해 각 기능을 자유롭게 디자인할 수 있다. 서비스 간 통신은 암시적 및 숨겨진 종속성을 방지하기 위해 잘 정의된 API를 사용한다.

 

 Decoupling은 민첩성을 향상시킨다. 한 개발 팀이 다른 팀에 의존할 필요성이 없다. 다른 팀이 작업을 마칠 때까지 기다릴 필요가 없어지기 때문이다. 또한 컨테이너를 사용하면 컨테이너 이미지를 다른 컨테이너 이미지로 교체할 수 있다.

 

 컨테이너화는 각 응용 프로그램에 대해 전체 VM을 시작하지 않고 분산 응용 프로그램을 배포하고 실행하기 위한 운영 체제 수준 가상화 방법이다. 컨테이너 이미지는 서비스의 모듈화를 허용한다. 기본 이미지에 기능을 구축하여 구성된다. 개발자, 운영 팀 및 IT 리더는 원하는 보안 및 툴링 프로파일이 있는 기본 이미지에 동의해야 한다. 그런 다음이 이미지를 조직 전체에서 초기 빌딩 블록으로 공유할 수 있다. 이러한 기본 이미지를 바꾸거나 업그레이드하는 것은 Dockerfile에서 FROM 필드를 업데이트하고 일반적으로 CI/CD(Continuous Integration/Continuous Delivery) 파이프라인을 통해 재 구축하는 것처럼 간단하다.

 

 중요한 역할을 하는 12가지 요인 앱 패턴 방법론의 주요 요소는 다음과 같다.

 

• 종속성 (명시적으로 종속성 선언 및 격리) : 컨테이너 내에 자체 포함되며 다른 서비스와 공유되지 않는다.

• 일회용 (빠른 시작 및 정상적인 종료로 견고성 극대화) : 저장소에서 쉽게 꺼내어 실행이 중지되면 폐기되는 컨테이너가 일회성으로 활용한다.

• 동시성 (프로세스 모델을 통해 확장) : 메모리 및 CPU 효율적인 방식으로 자동 확장할 수 있는 작업 또는 포드로 구성된다.

 

 각 비즈니스 기능이 자체 서비스로 구현됨에 따라 컨테이너화된 서비스의 수가 증가한다. 각 서비스에는 자체 통합 및 자체 배포 파이프라인이 있어야 한다. 이것은 민첩성을 증가시킨다. 컨테이너화된 서비스는 빈번한 배포가 적용되므로 어떤 호스트에서 어떤 컨테이너가 실행 중인지 추적할 수 있어야 한다. 결국 컨테이너 상태, 클러스터에서 사용 가능한 리소스 등을 제공하는 시스템이 필요하다.

 

 컨테이너 오케스트레이션 및 스케줄링 시스템을 사용하면 함께 작동하는 컨테이너 세트를 조립하여 애플리케이션을 정의할 수 있다. 정의는 애플리케이션의 청사진과 같다. 사용할 컨테이너 및 컨테이너가 속하는 저장소, 애플리케이션의 컨테이너 인스턴스에서 열어야 하는 포트 및 마운트 할 데이터 볼륨과 같은 다양한 매개 변수를 지정할 수 있다.

 

 컨테이너 관리 시스템을 사용하면 컨테이너 인스턴스의 지정된 수의 인스턴스(링크 및 볼륨을 사용하여 함께 인스턴스화하고 협업하는 컨테이너)를 실행 및 유지 관리할 수 있다. (Amazon ECS는 이를 작업으로, Kubernetes는 이를 포드로 지칭한다.) 스케줄러는 서비스에 대해 원하는 컨테이너 세트 수를 유지한다. 또한 서비스 인프라는 로드 밸런서 뒤에서 실행되어 서비스와 관련된 컨테이너 세트에 트래픽을 분산시킬 수 있다.

 

300x250