Overview
MicroServices Architecture
마이크로서비스 아키텍처(MicroServices Architecture)는 최근 유행하는 서비스 아키텍처의 한 방법으로, 다른 서비스 아키텍처들과 가장 큰 차이는 애플리케이션을 작고 독립적인 구성 요소로 나누어 접근하는 것이다. 각각의 애플리케이션이 서로 종속 관계가 없기 때문에, 확장이 용이하고 개발 속도를 앞당길 수 있는 장점이 있다. 또한 하나의 애플리케이션에서 문제가 발생해도 전체 프로세스가 실패할 가능성을 줄여 안정성을 높인다.
다만, 마이크로서비스는 서비스 규모가 커질수록 각 애플리케이션간의 통신을 관리하는 것이 다소 까다로울 수 있다. 이러한 장단점을 가진 마이크로서비스 아키텍처를 운영해 볼 수 있는 손쉬운 방법 중 하나가 바로 Amazon ECS이다. 본 글에서 간단하게 ECS를 알아보고 사용법을 배워보자.
AWS Container Service
Amazon ECS는 AWS에서 제공하는 다양한 컨테이너 서비스 중 하나이다. 서비스들은 역할에 따라서 다음과 같이 분류된다.
컨테이너 이미지를 저장하는 Image Registry, 서비스 관리 및 배포하는 Management 그리고 컨테이너가 실행되는 Hosting 크게 3가지 역할로 나뉜다. 편의상 3가지로 나누기는 했지만, 경계가 명확하게 나뉘어지는 것은 아니다.(e.g. EC2에 K8S로 서비스를 한다던가) 참고하는 정도로만 알고 있으면 될 것 같다.
Image Registry
ECR (Elastic Container Registry)
ECR은 AWS에서 제공하는 Docker Hub라고 볼 수 있다. 차이점이 있다면 S3를 기반으로 관리하여, 컨테이너를 업로드 및 다운로드하는 기능은 그대로 유지하고 S3와 같은 액세스 정책을 적용하거나 컨테이너 관리에 용이하다.
Management
ECS(Elastic Container Service)
ECS 기본 구조는 다음과 같다.
Cluster
Amazon ECS 클러스터는 작업 또는 서비스의 논리적 그룹이다. 논리적으로 그룹화 된 인스턴스들을 모아둔 것이라고 볼 수 있으며, 가용 용량이나 네트워크와 관련된 리소스 등도 포함하고 있다.
Service
작업을 실행하는 방식의 하나이다. 서비스를 이용해 작업의 실행 유형이나 실행할 작업의 갯수, 배포 방식 등 작업을 실행 및 관리 하는 역할이다. 실질적으로 연산을 수행하기 보다는 연산하는 그룹을 관리하는 부분이라고 생각하면 된다.
Container Instance
서비스에 따라서 작업이 배포되는 공간이다. 기준에 따라서 작업들을 그룹으로 구분한 것이다.
Task
이미지, 리소트, 포트 등을 설정하고 설정된 내용을 기반으로 컨테이너를 배포한다. Docker Compose와 같이 다수의 컨테이너를 한번에 올릴 수 있도록 설정할 수 있다.
ECS(Elastic Container Service) vs EKS(Elastic Kubernetes Service)
AWS는 ECR에 업로드한 이미지를 기반으로 서비스를 배포하기 위한 도구로 ECS와 EKS를 지원한다. 전반적인 역할은 유사하지만, ECS는 Docker를 기반으로하고 EKS는 Kubernetes를 기반으로하는 차이가 있다. 이에 따라서, 로드벨런싱이나 ENI(Elastic Network Interface) 그리고 비용 부분에서 차이가 있다. 각각 서비스 방법에 따라서 장단점이 존재하기 때문에 서비스의 규모나 비용, 제어 범위 등을 고려해보고 선택해야 한다.
개인적으로, EKS는 다수의 컨테이너가 필요한 대규모 서비스에서 적합한 방법이라고 생각한다. 모니터링 툴이나 부가적인 관리 도구가 필요한 경우가 아니고 소규모로 운영하는 경우에는 ECS를 선택하는 것이 유리할 것으로 판단된다.
Hosting
Fargate
EC2의 Serverless 버전이다. 대표적인 Serverless인 AWS Lambda와 서버가 없다는 점은 동일하지만, 함수단위가 아닌 컨테이너 단위이며 요청이 들어올때 동작하는 AWS Lambda와는 다르게 컨테이너가 작업이 종료되기 전까지 계속 실행된 상태로 대기한다.
EC2
가상 머신을 사용하는 방법이다. Fargate에 추가적으로 OS와 보안, 서버 모니터링 등 다양한 기능 설계가 가능하다.
Reference
'Study > MLOps' 카테고리의 다른 글
AWS Container Support Service (3/3) (0) | 2024.04.16 |
---|---|
AWS Container Support Service (2/3) (0) | 2024.03.14 |
근본의 Ansible? (0) | 2024.01.03 |
Slurm과 Kubernetes 정답은? (0) | 2023.12.06 |
도대체 MLOps는 무엇일까? (1) | 2023.11.21 |