AWS_Micro Service

2021. 12. 29. 16:26Cloud

1. 개념

:  잘 정의된 API를 통해 통신하는 독립 서비스로 구성된 APP. 이와 반대되는 모놀리식 APP은 일부 기능이 마비되면 전체가 마비되지만 마이크로 서비스 APP은 기능 하나에 장애가 발생하여도 전체가 마비되지 않는다.

마이크로 서비스 방식으로 실행하려면 기능을 분리시키고 독립된 컴퓨팅 환경에서 작동하도록 해주어야 한다. 기능들이 서로 같은 기기(서버)내에 있지 않으니 통신하여야 하는데 이를 API 호출로 처리한다.

2. API 정의

 : 분리된 기능을 제공해주는 서버의 이름과 어떤 함수를 사용해서 통신하는지, 어떤 파라미터를 사용하면 처리를 해줄 것인지, 응답 메세지는 어떤것이 올지 등등 API 형태로 정의한 것

 1) 장점

 - 자율성 : 기능이 각자 독립적으로 작동하기 때문에 특정 기능에 장애가 생겨도 다른 기능은 정상 작동

 - 전문성 : API를 통해 통신하기 때문에 관리팀은 각자 기능에 대해서만 작업을 집중할 수 있기 때문에 전문성 증대

ex> AWS Service는 Micro Service 형태로 이루어져 있어 특정 서비스에 장애가 생겨도 다른 작업은 전혀 영향이 없다.

3. 컨테이너 서비스

 : VM과 비슷한 가상화 기술

 1) 개념

 

VM AMI : OS(하이퍼바이져) ~ APP
'분' 단위 시간 소요 : OS 부팅시간 + APP 실행 시간
OS 포함 = AMI 자체 크기 증가
Container AMI : Docker ~ APP
'초' 단위 시간 소요 : APP 실행 시간
OS 미포함 = OS 부팅시간 없음, 용량 없음
*Docker = 운영체제 가상화 환경 제공
Docker 분할 : 다중 운영체제 운영, 리소스 활용 극대화
Container AMI
마치 이미 켜져 있는 컴퓨터에서 APP을 돌리는 느낌
APP 입장에서는 여러개의 OS를 쓰는 것처럼 보임 

 2) 특징

  - 반복 가능 : 언제든 반복해서 APP 실행 가능

  - 독립형 실행 환경 : HW는 동일하지만 독립 실행이 가능

  - VM보다 더 빠른 실행 속도 : VM을 통해 APP을 실행하는 시간('분'단위)보다 속도가 빠르다.('초'단위)

 3) 장단점

 - 장점 :  컨테이너 AMI는 어떤 환경이든 사용자가 만든 APP이 동일하게 동작할 수 있다. 

*VM의 경우 AWS AMI를 Azure, GCP에 사용할 수 없다.

 - 단점 : 운영기간이 길어질수록 아키텍쳐가 복잡해지고 관리해야할 컨테이너 수가 늘어나 관리 감독 업무에 부담이 증가

ex> 컨테이너가 올라간 인스턴스가 장애로 인해 삭제되면 어떻게 찾을것인가? 같이 돌아가던 컨테이너는 어떻게 복구하는가? 

 

*참고)Container Orchestration Tool

 : 운영의 장기화로 관리가 힘들정도로 많아진 컨테이너들을 효율적으로 관리하기 위한 서비스

 ex> 쿠버네틱스

4. AWS ECS(Elastic Container Service)

 : AWS에서 개발한 Container Orchestration Tool Service.

 - 컨테이너의 실행 조정

 - 노드플릿 유지 관리 확장

 *노드플릿 : 컨테이너를 작동시키는 인스턴스

 - 인프라 구축의 복잡성 제거

 - 컨테이너를 올릴 인스턴스가 부족해지면 Auto Scaling을 통해 인스턴스 생성

 - ECS는 task(작업단위)로 컨테이너들을 관리 감독

 

 

*참고)AWS EKS(Elastic Kubernetes Service)

 : AWS가 쿠버네틱스 서비스를 관리형 형태로 만든 서비스

 

 

 

 

5. AWS Fargate

 : ECS나 EKS를 통해 만들어진 서버(인스턴스)를 사용자가 관리하지 않고 Fargate가 생성한 인스턴스 위에 컨테이너를 탑재하여 완전 관리해주는 컨테이너 서비스. 서버리스 서비스이기도 하다.

 - 규모 조정에 이점 : ECS와 EKS는 컨테이너 수가 많아지면 인스턴스 수가 부족해지고, ELB를 통해 인스턴스를 늘려도 시간 소모가 점점 늘어난다. Fargate는 대규모의 서버를 보유하기 때문에 인스턴스 조정할 필요가 없어 속도적인 측면에 장애가 발생하지 않는다.

 - 클러스터 프로비저닝 및 관리

 - 실행 시간 환경 관리 : 대규모 서버를 보유하기 때문에 속도 보장

 

6. 결과

ELB를 이용한 마이크로 서비스 아키텍쳐 구상도

" 마이크로 서비스 아키텍쳐로 만들려면 전체를 API 함수를 통해 통신하는 형태로 만들어 주고, 실제로 돌아가는 컴퓨팅 환경을 컨테이너를 이용해 구현. ELB를 사용해 요청을 특정 컨테이너 그룹으로 보낼지도 설정이 가능하여 더욱 효율적인 마이크로 서비스 아키텍쳐 구축 가능 "

'Cloud' 카테고리의 다른 글

AWS_복구  (0) 2021.12.30
AWS_Serverless Computing  (0) 2021.12.30
AWS_결합 해제  (0) 2021.12.28
AWS_Caching  (0) 2021.12.27
AWS_Auto Scaling  (0) 2021.12.27