https://jihyun-devstory.tistory.com/47
[Infra] AWS EC2를 이용한 WAS 서버 배포
1. EC2 인스턴스 생성(1) AWS Region 서울로 설정IAM 사용자로 회원가입 후 로그인하면 아래와 같이 지역을 설정할 수 있다. 작성자는 Seoul로 설정했다. (2) 인스턴스 시작 버튼 누르기 EC2 서비스에 들
jihyun-devstory.tistory.com
배포했던 서버에 CI/CD를 적용해보려 한다. 그 전에 CI/CD가 무엇인지, 왜 해야하는지, 어떤 방법이 있는지 알아보자.
1. CI/CD란?

(1) CI(Continuous Integration)

CI란 다수의 개발자가 형상관리 툴을 공유하여 사용하는 환경을 말한다. 대표적인 예시로는 Github가 있다. 수 많은 Commit이 쌓이면 기능별로 빌드/테스트/통합하는 것은 번거롭기 마련이다. 이러한 상황에 자동화 된 빌드 및 테스트는 새로운 코드의 변경사항에 대한 충돌 등을 방어할 수 있다.
(2) CD(Continuous Delivery / Continuous Deployment)

Continuous Delivery란 개발자들이 애플리케이션에 적용한 변경사항이 버그 테스트를 거쳐 리포지토리에 자동으로 업로드 되는 것을 말한다. 운영팀이 이 리포지토리에서 애플리케이션을 실시간 운영환경으로 배포할 수 있다. 개발팀과 비즈니스팀 간의 가시성과 커뮤니케이션 부족 문제를 해결할 수 있다는 대표적 장점이 있다.
Continous Deployment란 개발자의 변경사항을 리포지토리에서 고객이 사용 가능한 운영환경까지 자동으로 Release 하는 것을 말한다. 애플리케이션 제공 속도를 저해하는 수동 프로세스로 인한 운영팀의 프로세스 과부하 문제를 해결할 수 있다.
2. CI/CD가 필요한 이유
(1) 개발자 생산성 향상
CI/CD를 통해 개발자가 수동 작업에 대한 부담을 덜 수 있다. 또한 고객에게 제공되는 오류 및 버그 수를 줄일 수 있다.
(2) 더 빠르게 버그를 발견 및 해결
테스트를 조금 더 빈번하게 수행함으로써 팀에서는 이후에 더 큰 문제를 발견하기 전에 버그를 조기에 발견 및 해결할 수 있다.
(3) 더 빠르게 업데이트 제공
조금 더 빠르고, 조금 더 빈번하게 고객에게 업데이트를 제공할 수 있다.
3. CI/CD 툴

CI/CD 툴의 대표적인 예로는 Jenkins와 GitLab 등이 있다. 각각의 장단점들이 존재하지만 작성자는 가장 많이 사용하는 Jenkins를 직접 사용해볼 예정이다.
호스팅 방식으로는 대표적으로 On-Promis와 Cloud가 존재하는데 각각의 장단점은 다음과 같다.
(1) On-premise
On-premise는 직접 설치해서 관리하는 방식이다. On-premise 방식에서 사용되는 대표적인 플랫폼은 Jenkins이다. 오픈소스이고 무료라는 장점이 있다.
장점
- 직접적인 추가 비용이 많이 들지 않음
- 필요한 프로그램이나 스크립트를 마음대로 실행할 수 있음
단점
- 직접 설치해서 사용해야해서 디바이스 관리가 필요함
- 캐시 용량이 가득차면 한 번씩 초기화 해야 함
- 보통 물리 서버 1대를 사용하는데, CPU, RAM 리소스의 한계가 있기 때문에 여러 Job을 실행시키기 어려움
(2) Cloud
마찬가지로 많은 곳에서 클라우드 방식도 사용하고 있다.
장점
- 개발 환경을 관리하기 쉬움(기본 제공되는 도커 이미지들에서 선택해서 사용할 수 있음)
- 여러 Job을 병렬로 실행시킬 수 있(빌드를 위해 가상 서버를 띄워서 사용하기 때문에 여러 Job을 동시에 실행해도 충돌이 나지 않음)
- 물리 서버를 관리하지 않아도 됨
단점
- CI를 열심히 사용할 수록 비용이 증가함
- 하나의 플랫폼에 의존되면 다른 플랫폼으로 넘어가기 어려움(CI 실행을 위한 설정 파일이 플랫폼 마다 다름)
4. Jenkins를 이용한 CI/CD 적용
참고 자료
CI/CD 플랫폼과 기본 개념 알아보기
이번 글에서는 CI/CD가 무엇인지, 어떤 CI 플랫폼이 있는지, 동작을 이해할 때 도움되는 용어들을 알아보겠습니다.
medium.com
https://gong-story.tistory.com/40
AWS EC2 + Jenkins + Github 활용한 Spring Boot CI/CD 구축
이번 포스팅에서는 AWS EC2서버에 젠킨스와 Github를 연동하여 Spring Boot 프로젝트가 자동 배포되도록 CI/CD를 구축해 보려고 합니다. 전 회사에서는 gitlab에 push후에 젠킨스에 들어가서 배포 버튼을
gong-story.tistory.com
'Backend > Infra' 카테고리의 다른 글
[Infra] Docker란?(feat. Docker, Docker File, Docker Compose) (0) | 2025.01.03 |
---|---|
[Infra] 무중단 배포 적용하기(feat. Blud-Green Deployment) (1) | 2024.12.28 |
[Infra] WAS 서버를 배포하며 겪은 에러 해결 방법 (1) | 2024.12.28 |
[Infra] AWS EC2를 이용한 WAS 서버 배포 (0) | 2024.12.23 |
[Infra] 인프라 키워드 정리 Part 1(feat. Cloud Service, AWS, EC2) (4) | 2024.12.18 |