1. CI/CD 는 세 단계를 가진다.
개발, 빌드, 배포
각 단계는 하나의 서버 개념이다.
2. Jar 파일 빌드 시점에 대한 고민
.jar 파일을 빌드해야하기 때문에 이 과정을 개발 단계에서 포함해서 가져가냐, 빌드 단계에서 가져가냐의 차이는 있다.
빌드 단계에서 .jar 파일을 빌드하게 해놓는다면 Github Actions, Jenkins 등 툴에 따라서 환경을 맞춰줘야한다.
이렇게 하면 이미지가 가벼워진다.
개발단계에서 이미지를 만들고 도커파일 자체에서 jdk, gradle 를 정의하고 가져온다면 build 를 어떤 툴로 하든 가능해진다. but, 이미지가 무거워진다는 단점이 있다.
사실상 이렇게 만든 .jar 파일을 배포하면 끝이다.
3. 서버 확장 시 생길 수 있는 문제
하지만 나중에 EC2 서버를 늘려야하는 필요가 생긴다면 문제가 생긴다.
.jar 파일을 어디서 가져왔는지 남지 않는다는 것 ( 주소를 알 수가 없다 )
그렇기 때문에 S3 에 .jar 파일을 올리고 이를 EC2 에서 가져오게 한다면 해결이 가능하다.
4. Docker 이미지를 활용하는 이유
그런데 이대로 하면 EC2 에 자꾸 무언가 java jdk 등을 깔아줘야한다는 불편함이 생겼다.
그래서 빌드된 .jar 파일을 Docker 등 이미지로 만들어서 이를 빌드하고 이를 S3 에 올려도 된다는 것
그 때 이미지에 특화된 전용 저장소를 쓴다.
5. 결론
우리는 이렇게 각 단계를 이해하면 위와 같은 과정도 CI/CD 가 가능하다는 것을 알 수 있다.
CI/CD 파이프 라인은 내가 구성하기 나름이고 이해를 해야한다.
'컴퓨터 프로그래밍 > CS' 카테고리의 다른 글
[CS] 1. 객체지향 프로그래밍 ( OOP ) (0) | 2024.12.12 |
---|---|
[CS] 무중단 배포 (3) | 2024.11.07 |
[CS] Spring Bean 이 없는 세상 (3) | 2024.10.27 |
[CS] CI 와 CD 란? (0) | 2024.10.27 |
[CS] ACCESS 토큰과 REFRESH 토큰 (0) | 2024.10.23 |