개요
프로젝트가 시작되었다.
인프라구성부터 진행이되는데, AWS의 어떤 서비스를 사용해서 띄워야할까?
그것에 대한 고찰이다.
대상
- CI/CD를 위한 Jenkins서버
- 백오피스 기능을 위한 API서버
Jenkins서버
https://aws.amazon.com/ko/getting-started/hands-on/setup-jenkins-build-server/
AWS에 Jenkins를 띄우기위한 내용을 찾아보니까 AWS내에 위의 문서를 찾을 수 있었다.
AWS에서 제공하는것이니만큼 AWS를 최적으로 사용하는방법을 제공할 줄 알았지만,
'AWS에서 Jenkins띄우는 쉬운 방법' 정도의 컨셉인 것 같다.
그래서 구글링을 좀 더 해보려는데,
전부 EC2만 사용한다.
이게 최적의 방법인걸까? 아니면 전부 취준생이라 쉬운개념으로만 적용한걸까? 싶다가
내가 선택할 수 있는 기준을 정하기위해 AWS의 각 서비스를 비교해봐야겠다는 생각을 했다.
AWS 서비스 비교
EC2:
Jenkins를 실행하기 위한 가장 일반적인 옵션
Jenkins 및 기타 필요한 도구를 실행하는 데 사용할 수 있는 가상 머신을 시작할 수 있다.
환경을 완벽하게 제어할 수 있으며 다양한 사용 사례에 적합함
ECS:
Docker 컨테이너에서 Jenkins를 실행할 수 있는 컨테이너 기반 서비스
환경에서 이미 컨테이너를 사용하고 있고 기존 컨테이너 인프라와 함께 Jenkins를 사용하려는 경우 좋은 옵션
EKS:
컨테이너화된 환경에서 Jenkins를 실행하는 데 사용할 수 있는 관리형 Kubernetes 서비스
이미 Kubernetes를 사용 중이고 기존 클러스터에서 Jenkins를 사용하려는 경우 좋은 옵션
Lambda:
완전 관리형 환경에서 Jenkins 작업을 실행하는 데 사용할 수 있는 서버리스 컴퓨팅 서비스
필요에 따라 Jenkins 작업을 실행하고 사용한 컴퓨팅 시간에 대해서만 비용을 지불하려는 경우 좋은 옵션
Insights
소규모 또는 중간 규모의 Jenkins 환경이 있고 제한된 예산으로 작업하는 경우
EC2 또는 ECS가 최상의 옵션
이 두 서비스 모두 가상 머신이나 Docker 컨테이너에서 Jenkins를 실행할 수 있으며 상대적으로 비용 효율적
크거나 복잡한 Jenkins 환경이 있는 경우 EKS 또는 Lambda가 더 나은 옵션
EKS는 많은 수의 Jenkins 작업을 처리하도록 확장할 수 있는 관리형 Kubernetes 서비스이고
Lambda는 Jenkins 환경의 요구 사항을 충족하도록 확장할 수 있는 서버리스 컴퓨팅 서비스
이 두 옵션 모두 EC2 또는 ECS보다 비용이 많이 들지만 추가적인 확장성과 관리 용이성을 제공
결과
EC2로 구현한다.
1.CICD를 위한 Jenkins - EC2
2.Jenkins로 인해 자동화배포처리될 컨테이너 - ECS
위 두개로 나누는게 구조를 생각하기에 수월할거라 판단했다.
'재학습 > INFRA' 카테고리의 다른 글
[작성중][AWS]_Github actions로 ECS를 통해 서비스 배포하기 (2) | 2023.01.06 |
---|---|
AWS환경에 Docker설치 (0) | 2022.10.12 |
[CLOUD] 클라우드 서비스란? (0) | 2021.11.26 |