개요
원래는 익숙한 젠킨스를 사용하려 했지만, 이번 서비스 개시의 목표는 바로 UI 설정 없이 코드로만 형상을 유지하는 것이었다
물론 젠킨스도 파이프라인을 코드로 작성할 수 있었지만, 당시 깃허브로 부터 인증 받는 과정에서 막혔었다
그래서 아예 깃허브에 종속되어있는 서비스인 깃허브 액션을 사용하려고 했었으나, 최근에 깃허브 계정 인증 방법에 대해 조사하면서 젠킨스에서도 간단한 세팅 한 번으로 깃허브 계정 인증을 받을 수 있는 방법을 알게되었다
물론 정확하게 잘 돌아갈지는 모르지만, 조만간 조사를 더 해보고 선택해야겠다
고민사항
: 메인 서버 / DL 서버 / 인프라가 각각 다른 레포지터리에 있으며, 각 서버들은 바닐라 혹은 Docker 컨테이너로 독립적인 실행이 가능하게 containerize 되어 있다
: 인프라 구성에 대한 레포지터리에는 docker-compose로 각 서버들과 DB를 묶어서 컨테이너로 실행하도록 작업이 되어있다
: 마찬가지로 CICD도 분리되어 작업할 필요가 있다
: 즉, 메인 서버 / DL 서버에 대한 웹훅이 들어오면 바닐라 모드인지, docker 컨테이너 모드인지를 구분해야한다
: 그리고 두 모드가 아닐때는 인프라 레포지터리에 대한 웹훅이 실행되어 컴포즈가 내려갔다가 올라가야한다
: 사실 과도한 설계이긴 하지만, 완벽한 MSA를 구축하기 위해서는 필요한 설계이지 않을까 싶다
생각한 방법
1. 웹훅에 파라미터를 추가
: 빌드 및 배포를 수행할 때 입력된 파라미터에 따라 바닐라, 독립 컨테이너, 컴포즈를 재시작
- 장점
: 파이프라인 하나로 제어가 가능
- 단점
: 브랜치에 대한 push 혹은 merge를 통한 자동 배포를 할 수 없음 (물론 커밋에 태그를 다는 방법이면 될지도)
2. 레포지터리 별로 파이프라인을 관리하고 서버 설정에 따라 실행
: 서버 별 레포지터리의 파이프라인에는 바닐라와 Docker 컨테이너 상태만 구분
: 레포지터리 별로 서버에 대한 설정 파일이 존재하여, 사용자가 해당 파일을 실행만 하면 웹훅의 동작이 바뀜
: ex) 메인 혹은 DL 서버 repo의 builderSetting을 실행 > 메인 혹은 DL 서버만을 위한 CICD 설정이 완료
ex) 인프라 repo의 builderSetting을 실행 > 메인 및 DL 서버 repo에 웹훅 실행 시 컴포즈 컨테이너가 재생성
- 장점
: 이론상으로는 완벽하게 레포지터리별로 분리시킬 수 있다
- 단점
: 설계가 아주 복잡하며 설정 전환에 대한 고민도 필요
'Development > Project' 카테고리의 다른 글
23년 하반기 회고 (0) | 2024.01.11 |
---|---|
이게뭐약 이슈 생성 및 관리 정책 (0) | 2023.08.22 |
23년 상반기 회고 (0) | 2023.06.27 |
22년 하반기 회고 (2) | 2022.12.29 |
22년 상반기 회고 (0) | 2022.07.27 |