재학습/INFRA

[AWS]_Jenkins_어떤유형의 AWS서버를 선택할까?

재이든 2023. 1. 4. 18:09
반응형

 

 

개요

프로젝트가 시작되었다.

인프라구성부터 진행이되는데, AWS의 어떤 서비스를 사용해서 띄워야할까?

그것에 대한 고찰이다.

 

대상

- CI/CD를 위한 Jenkins서버

- 백오피스 기능을 위한 API서버

 

 

Jenkins서버

https://aws.amazon.com/ko/getting-started/hands-on/setup-jenkins-build-server/

 

Jenkins 빌드 서버를 설정하는 방법 – Amazon Web Services(AWS)

Amazon EC2를 사용하여 Jenkins 설치를 호스팅할 가상 애플리케이션 서버를 시작합니다. 이러한 단일 노드 설정에서 Jenkins 서버와 에이전트 모두 같은 Amazon EC2 인스턴스상에 실행됩니다. 예상 로드에

aws.amazon.com

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

위 두개로 나누는게 구조를 생각하기에 수월할거라 판단했다.

 

 

 

반응형