2022. 4. 22. 00:42ㆍ작업일지
본 게시글은 https://github.com/f-lab-edu/double-shop에서 CI/CD를 구성하는 데 진행했던 과정을 정리한 내용입니다. CI/CD를 설계하는 데 필요한 방향을 찾는 데는 도움이 될 수 있겠지만, 구체적인 구현 기술에 대한 내용을 찾는 다면 이 게시글은 도움이 안 될 수 있습니다.
개요
최근에, Jenkins CI툴과 github action을 활용하여, CI/CD 구성을 1차적으로 완료하였다. 시작하기 전부터 만만한 작업이 아니라고 생각했지만, 실제로 해보니, 과정을 이해하는 것도 쉽지 않았고, 이해한 후에 실제로 구현해보는 것은 더더욱 어려웠다. 이번 게시글에서는 CI/CD를 구성하기 위해 겪었던 시행착오 과정을 정리하여, 그동안 수행했던 학습과정과 삽질들을 기록하여, 퀄리티를 높이기 위해선 어떤 시도를 해야 할 지에 대해 탐구해보도록 하겠다.
Step 1. CI/CD 실무자의 관점에서 이해해보기
CI/CD가 어떤 것인지에 대한 의미를 설명해주는 글은 조금만 구글링 하거나, 개발 관련 유튜브 영상을 참고하면, 금방 나온다. 하지만, 이러한 자료들을 아무리 찾아봐도 어떻게 설계하면 되는지에 대한 글은 많지만, 어떻게 구현하면 되는지에 대한 내용은 정말 찾아보기 힘들다.
이유를 생각해보면 이러한 현상이 일어나는 건 당연하다고 생각해볼 수 있었다. 바로 CI/CD를 뭔가 정형화된 방법론으로 정리하기에는 세부 과정도 다양하고, 구현할 수 있는 툴 역시 다양하기 때문이다.
위의 이미지만 보면, CI/CD에 대해 이해하는 것은 정말 쉽지만, 이걸 실제로 구현하고자 하면 앞길이 막막해진다...
그렇다면, CI/CD를 실제로 구성하려면 제일 먼저 무엇을 해야 할까? 바로 문제 정의'라고 할 수 있겠다. 문제 정의라고 한다면, 현재 CI/CD를 구성해야하는 애플리케이션의 환경을 파악하고 그 환경에 맞게 해결해야 할 문제를 구체화하는 것이다. 상황 정의를 완료하면, 다음은 무엇을 생각해야 할까? 당연하게도 해당 환경에서 CI/CD를 구성해야 하는 이유를 정의해야 하는 것이다. 만약 CI/CD가 대략 무엇인지에 대한 내용을 모른다면 이 게시글을 참고하길 바란다.
보통 CI/CD가 필요한 이유로 '자동화 프로세스'를 구축하기 위함이라고 하는데, 그렇다면 자동화 프로세스가 필요한 이유가 무엇일까? 그리고 왜 이유를 정의해야할까? 먼저 이유를 정의해야 하는 근거를 설명해보자면... CI/CD가 아무리 편리할 수 있다고 해도, 그러한 자동화 프로세스를 문제없이 만드는 것은 굉장히 어렵다. 따라서, 일이 매우 복잡해진다. 명확한 이유 없이 CI/CD를 무조건 구축하려고 하면, 분명 중간에 지쳐서 그만두거나, 마무리 작업이 덜된 프로세스를 구성하게될 확률이 크다.
따라서, 실무자로서 CI/CD를 구성하기 위해선..
- 먼저 이러한 자동화 프로세스가 필요한 이유를 정의한다.
- Before/After를 잘 살펴서, 해당 프로세스로 인해 얻을 수 있는 이점을 생각해야한다.
- 그리고, CI/CD를 실제로 구현하기 위해 사용해야 할 기술과 혹은 활용해야 할 툴을 정하는 것과 같은 문제 해결을 해야 하는 부분을 구체화해야 한다.
마지막으로 이야기하고 싶은 것은, 그냥 CI/CD를 해보는 것은 어쩌면 그냥 안 하는 것보다도 못할 수 있다는 점을 강조하고 싶다...
'작업일지' 카테고리의 다른 글
작업일지#15 그 동안의 회고 및 앞으로의 계획 (0) | 2022.09.02 |
---|---|
[회고] 기능 구현부터 배포 자동화까지... -2- CI/CD를 어떻게 구현해야 할까? (0) | 2022.04.22 |
작업일지#14 Sync와 Async 속도차이 (0) | 2022.03.24 |
작업 일지#13 프로덕션 코드 리팩토링 - JPA로 이전 (0) | 2022.03.05 |
작업 일지#12 1차 배포 (0) | 2022.03.01 |