클라우드 부트캠프에서 현업에서는 EB보다는 ECS를 더 활용 많이 한다고 한다
그래서 백엔드 부트캠프에서 배운 Elastic Beanstalk과
클라우드 부트캠프에서배운 ECS는 어떤차이점이 있을지 궁금해서 정리했다
Elastic Beanstalk(EB)
웹 애플리케이션을 배포하고 실행하는 가장 간단한 방법
용량 프로비저닝, 로드 밸런싱, 오토스케일링 자동으로 관리해준다 + (docker와 함께 사용 가능)
-프로비저닝 : 사용자의 요구에 맞게 시스템자원을 미리 할당해두었다가 필요할때 즉시 사용하는것
-로드 밸런싱 : 서버의 부하가 한쪽으로 치우치지 않게 클라이언트들의 요청을 여러서버로 균등하게 나눠주는것
-오토스케일링 : 어플리케이션을 모니터링하며 실시간으로 용량을 늘였다 줄였다 하는것
사용이 편리하다 - 최소한의 지식으로 배포가능
무중단 배포, 롤백이 매우 쉽다 - 롤링, 블루 그린배포
- 롤링: 점진적으로 새로운 버전으로 전환하는것
- 블루그린 : 새로운 버전을 미리 배포하고 한번에 전환하는것
대신 아키텍처의 구성,확장성이 어렵고 자유롭지 않다, 요구되는 아키텍처의 복잡도가 높을 수록 EB를 사용하기 힘들다
Elastic Container Service(ECS)
매우 안전하고,안정적으로 확장 가능하다
Docker 컨테이너용 호스트,마이크로부터 대규모 서비스까지 호스팅가능하다(오케스트레이션)
서비스 단위로 컨테이너를 관리 가능 -> 복잡한 아키텍처나 설계패턴을 구현하는데 적합하다
fargate를 사용하면 컨테이너를 통해 관리하므로 프로비저닝할 필요가 없다
높은 유연성과 확장성이 있기 때문에 마이그레이션 할때도 편하고
다른 aws서비스와 함께 동작하기 위해 별도의 노력이 필요하지 않다
하지만 EB보다 필요 지식이 많기 때문에 서비스의 규모와 복잡성이 큰 경우에만 사용하는게 좋다