AWS, 아는 만큼 보인다
전 직장에서는 클라우드 서비스를 사용하지 않았다. 언제 샀는지 알 수 없고, 더 이상 부품조차 구할 수 없는 오래된 물리 서버로 모든 것을 해결했다. 하지만 이제 AWS를 사용하는 곳으로 왔으니, 다시 클라우드 서비스의 대표 AWS의 개념을 오랜 기억속에서 꺼낼 때가 되었다.
ECS, EC2 뭐가 다른가?
최근 일을 하면서 자주 접하는 단어들이다. 둘 다 클라우드 서비스라는 것은 알겠는데, 정확히 무슨 차이가 있는지 잘 알지 못해서 이번 기회에 정리를 해보려고 한다.
EC2
아마 AWS를 입문하는 사람들, 특히 학생일 경우 가장 많이 사용하는 서비스일 것이다. 첫 가입일 경우 1년간 무료 크레딧을 제공해주기 때문에 학습을 하기에도 매우 용이하기 때문이다. 간단하게 물리 서버가 가상으로 제공되어 유연하게 확장하고 축소할 수 있는 서비스이다. 아주 기본적인 클라우드 서비스라고 볼 수 있으며, 이외의 권한들은 수동으로 설정해줘야 한다.
ECS(Elastic Container Sevice)
EC2는 알겠지만, ECS가 뭔지는 잘 몰랐다. 대충 EC2보다 더 좋겠거니라는 생각을 했지만, 막상 두 가지는 서로 다른 개념으로 보아도 무방했다. 뭐가 더 좋다 나쁘다의 개념이 아니라, ECS는 하나의 종합패키지의 개념에 더 가깝다고도 볼 수 있다. 배포와 관리를 더 용이하게 한 서비스인 것이다.
ECS는 크게 세 가지 계층으로 나눠진다.
- 용량 - 컨테이너가 실행되는 인프라.
- 컨트롤러 - 컨테이너에서 실행되는 애플리케이션을 배포하고 관리.
- 프로비저닝 - 스케줄러와 함께 애플리케이션 및 컨테이너를 배포 및 관리하는 데 사용할 수 있는 도구.
Capacity Option 중 선택지로 EC2를 옵션으로도 선택할 수 있지만 이외에도 Fargate와 외부 가상 머신 또는 서버를 클러스터에 등록하여 사용할 수도 있다.
ECS와 Docker
컨테이너와 도커, 쿠버네티스에 대한 설명은 아래의 동영상에서 매우 친절하게 설명해준다.
기존의 EC2에서 Docker로 배포하는 것 또한 가능하지만, 직접 컨테이너를 관리하고 실행해야 하는 문제가 있다. 하지만 ECS는 다음과 같은 과정으로 실행된다.
- ECS에 클러스터를 생성한다.
- 해당 클러스터에 컨테이너 인스턴스를 생성한다. (EC2 인스턴스)
- Task definition 설정 - 컨테이너의 네트워크 모드, 실행 명령어, CPU 메모리 제한 등의 설정
- Task 생성 및 실행 - 하나 이상의 컨테이너로 이루어져있다.
ECS에서 도커를 사용하면 해당 배포와 관리를 AWS에서 담당하기 때문에 더 편리하게 컨테이너를 사용할 수 있다. 어떻게 보면 ECS는 kubernetes와 유사한 서비스를 제공한다고도 볼 수 있다.
정리하자면...
- EC2는 클라우드 가상 서버이다. 모든 요소에 대하여 수동으로 제어해야 한다.
- EC2에서 도커를 사용할 경우, 직접 컨테이너를 관리해야 한다. 물론 kubernetes와 함께 사용하는 방법도 있다. 그러나 ECS가 자동화 면에서 더 다양한 제어가 가능하다.
- ECS는 kubernetes와 같이 컨테이너 오케스트레이션 역할을 한다.
추후 참고하면 좋을 것 같은 자료들
자동화 배포 및 관리를 하기 위해 사용해야 할 것들은 다음과 같다.
- Next14
- github
- jenkins
- docker
- ECS
많기도 하다... 간단하게 서로 어떤 순서와 관계로 동작하는지 알아둔다면 추후 docker 세팅을 할 때 도움이 되지 않을까 하며 여기 기록해둔다.
'개발 > 스터디' 카테고리의 다른 글
Docker+Jenkins 동작 방식 (0) | 2024.08.11 |
---|---|
Docker와 Standalone (0) | 2024.08.10 |
기술 면접 준비 - React (5) 完 (0) | 2024.06.29 |
기술 면접 준비 - Typescript 기본 (4) (0) | 2024.06.24 |
기술 면접 준비 - HTML, CSS 기본 (3) (0) | 2024.06.23 |