17주차 회고록
1) 17주차를 시작하며
이번 주를 끝으로 DevOps 프로젝트를 마무리했고, 이제는 최종 프로젝트만 남게 되었다.
백엔드와 프론트엔드에 이어 DevOps까지 쉬지 않고 달려온 만큼 체력적으로도, 정신적으로도 꽤 벅찼던 한 주였다.
특히 이번 DevOps 프로젝트에서는 커뮤니티 기능, 알림 기능에 더해서 Jenkins까지 담당하다 보니
여러 영역을 동시에 챙겨야 해서 자연스럽게 시간에 쫓기는 상황이 계속되었다.
그 과정에서 내 파트의 개별 기능 테스트에만 신경을 많이 쓰고,
정작 다른 팀원들의 기능과 함께 합쳐서 돌아가는 통합 테스트를 충분히 하지 못했다.
그 여파로 실제 시현 시간에는 일부 기능이 예상대로 동작하지 않는 장면이 나와 아쉬움이 많이 남는 한 주이기도 했다.
이번 경험을 통해 DevOps라는 이름에 걸맞게 기술만이 아니라
팀원들과의 소통과 조율이 얼마나 중요한지 다시 한 번 느끼게 되었다.
이 아쉬움과 깨달음을 잘 정리해서, 남은 최종 프로젝트에서는 반드시 보완해 나가야겠다는 생각이 크다.
2) 학습 요약
2-1) Jenkins 기본 개념 이해
-
Jenkins의 역할 정리
- 소스 코드 변경을 감지하고, 빌드와 테스트, 배포까지 자동으로 이어주는 CI CD 도구로서의 역할을 다시 정리했다.
- 기존에 수동으로 하던 빌드와 배포 과정을 단계별 스텝으로 정의해
개발자가 코드에 더 집중할 수 있는 환경을 만드는 것이 핵심이라는 점을 이해했다.
-
기본 구성 요소 학습
- Jenkins 서버, 잡, 파이프라인, 노드 같은 기본 용어와 구조를 익혔다.
- Freestyle 잡과 파이프라인 잡의 차이를 살펴보고
이번 프로젝트에서는 파이프라인을 중심으로 구성을 가져가는 방향으로 정리했다.
2-2) Jenkins를 이용한 CI CD 파이프라인 구축
-
파이프라인 설계
- 깃 저장소에 푸시가 발생하면 자동으로 빌드가 시작되는 흐름을 목표로 두고
파이프라인의 기본 단계들을 정리했다.
예를 들어 소스 체크아웃, 빌드, 테스트, 이미지 빌드, 레지스트리 푸시 같은 단계들이다.
-
Jenkinsfile 작성 연습
- Jenkinsfile 안에서 stage와 step을 나누어
각 단계에서 어떤 작업을 수행할지 스크립트로 표현하는 방식에 적응하는 연습을 했다.
- 도커 빌드와 관련된 명령을 파이프라인 안에 녹여 넣으면서
DevOps 프로젝트의 실제 빌드 흐름을 어느 정도 자동화하는 수준까지 가져가 보았다.
-
CI CD 흐름 체감
- 커밋 후 파이프라인이 자동으로 동작하고,
성공 여부를 한눈에 확인할 수 있는 경험을 하면서
제대로 된 자동화 환경이 개발 속도와 안정성 둘 다에 큰 도움을 준다는 점을 체감했다.
2-3) Jenkins 파이프라인 확장과 ArgoCD 연동
-
파이프라인 확장 개념
- 단순 빌드만 하는 파이프라인에서 넘어가
테스트, 이미지 빌드, 배포까지 이어지는 확장된 파이프라인 구성을 살펴보았다.
- 반복적으로 사용되는 부분을 공통 스크립트나 스테이지로 분리해
유지 보수가 쉬운 구조를 지향해야 한다는 점도 함께 배웠다.
-
ArgoCD 개념 이해
- GitOps 방식으로 쿠버네티스 배포를 관리하는 도구라는 관점에서 ArgoCD를 다시 정리했다.
- 클러스터 상태를 깃에 정의된 매니페스트와 비교하고,
차이가 나면 동기화하는 구조를 이해했다.
-
Jenkins와 ArgoCD의 연계 흐름
- Jenkins에서 애플리케이션 빌드 및 도커 이미지 푸시까지 담당하고
ArgoCD가 해당 이미지를 사용하는 쿠버네티스 리소스를 감시하며 배포를 담당하는 흐름을 살펴보았다.
- 파이프라인에서 매니페스트나 이미지 태그를 갱신하고
ArgoCD가 이를 반영해 클러스터에 배포하는 구조를 개념적으로 정리했다.
2-4) ArgoCD를 통한 Kubernetes 클러스터 배포 자동화
-
배포 자동화 흐름 이해
- 기존에는 kubectl 명령을 직접 사용해 매니페스트를 적용했다면,
이제는 깃 리포지토리를 기준으로 클러스터가 자동으로 원하는 상태를 따라가도록 만드는 방식을 배웠다.
- 수동 배포보다 변경 이력 추적과 롤백이 쉬워진다는 점이 특히 매력적으로 느껴졌다.
-
DevOps 프로젝트 적용 상상
- Cherry Booker 서비스의 백엔드 이미지가 새로 빌드되면
관련 매니페스트를 갱신하고, ArgoCD가 이를 인식해 배포까지 이어가게 하는 흐름을
실제 프로젝트에 어떻게 녹일 수 있을지 고민해 보았다.
- 아직 완전히 이상적인 수준까지 구현한 것은 아니지만,
최소한 DevOps 프로젝트에서 배운 내용을 기반으로
최종 프로젝트 때는 더 자연스러운 자동 배포 파이프라인을 만들어 보고 싶다는 생각이 들었다.
3) 진행 상황
-
DevOps 프로젝트 종료
- 이번 주를 끝으로 Cherry Booker DevOps 프로젝트를 마무리했다.
- 커뮤니티 기능과 알림 기능에 더해 Jenkins 기반의 CI CD 파이프라인까지 함께 담당하면서
서버 기능과 배포 자동화가 어느 정도 연결된 형태를 만드는 데 집중했다.
- 이제 교육 과정에서는 최종 프로젝트만 남아 있는 상황이라
DevOps에서의 경험을 어떻게 잘 정리해서 가져갈지가 중요한 시점이 되었다.
-
Jenkins 파이프라인 실 적용
- 팀 리포지토리와 Jenkins를 연동해
코드 변경이 일어나면 빌드와 일부 테스트가 자동으로 돌아가도록 설정했다.
- DevOps 프로젝트 수준에서는 최소한 파이프라인이 동작하고
배포 과정 일부까지 자동화되었다는 점에서 의미가 있었다.
-
통합 테스트의 아쉬움
- 내 파트인 커뮤니티와 알림 기능, Jenkins 설정에 신경 쓰느라
정작 다른 팀원 기능과 함께 합쳐진 상태에서의 통합 테스트는 충분히 하지 못했다.
- 그 결과 실제 시현 때는 각자 개별로는 되던 기능들이
한 화면에서, 하나의 흐름으로 묶였을 때 제대로 동작하지 않는 부분이 있어서 아쉬움이 컸다.
4) 느낀 점
이번 DevOps 프로젝트를 하면서 가장 크게 느낀 점은
내가 맡은 기능만 잘 만드는 것으로는 프로젝트 전체 완성도에 한계가 있다는 사실이었다.
커뮤니티와 알림 기능, 그리고 Jenkins 파이프라인까지 동시에 맡다 보니
한정된 시간 안에서 우선순위를 정해야 했고,
결국 내 눈앞에 보이는 개별 기능 테스트에 더 많은 시간을 쏟게 되었다.
하지만 실제로 중요한 것은 각 기능이 따로 잘 돌아가는지가 아니라
팀원들의 기능과 함께 하나의 서비스로 자연스럽게 엮여서 동작하는지였다.
이 부분을 충분히 신경 쓰지 못해
시현 시간에 예상치 못한 오류나 미완성스러운 장면들이 나온 것은 분명 아쉬운 대목이다.
다음에는 일정 초반부터 통합 테스트를 위한 시간과 체크리스트를 따로 확보해 두어야 한다는 교훈을 얻었다.
또 하나 크게 느낀 점은 팀원들과의 소통이다.
각자 바쁘게 자기 일을 처리하다 보니
지금 무엇이 어디까지 되었는지, 어떤 부분에서 막히고 있는지,
언제까지 무엇을 맞춰야 하는지에 대한 공유가 충분하지 않았다.
결국 이 부족한 소통이 통합 테스트 부족과 시현 단계의 문제로 이어졌다고 느꼈다.
이 경험을 바탕으로 최종 프로젝트에서는
기능 구현 자체 못지않게 팀원들과의 소통과 조율,
그리고 전체 흐름을 함께 점검하는 시간을 의도적으로 확보해야겠다고 다짐하게 되었다.
한편, 현재 컨디션도 좋지 않은 편이라
계속 이어지는 프로젝트와 학습에 체력이 점점 따라가지 못하고 있다는 느낌이 든다.
최종 프로젝트는 기간도 길고 부담도 큰 만큼,
지금 시점에서는 무작정 달리기보다 우선 몸 상태부터 회복하는 것이 중요하다고 생각한다.
5) 다음 계획
-
최종 프로젝트 준비와 DevOps 경험 정리
- DevOps 프로젝트에서 경험한 Jenkins 파이프라인과 ArgoCD 기반 배포 흐름을
최종 프로젝트에 어떻게 가져갈지 정리할 계획이다.
- 이번에 부족했던 통합 테스트와 사전 점검 부분은
일정 초반에 계획 단계에서부터 반영해 두는 것을 목표로 한다.
-
소통 중심의 협업 방식 보완
- 팀원들과의 짧은 데일리 공유나 간단한 회고를 통해
각자 진행 상황과 문제점을 더 자주 나누려고 한다.
- 기능 인터페이스나 의존 관계에 변화가 생기면
바로 공유하는 습관을 만들고,
통합 테스트 일정도 미리 캘린더에 박아 두는 방식으로 운영해 보고자 한다.
-
Jenkins 활용도 향상
- 최종 프로젝트에서는 이번에 만든 파이프라인을 기반으로
테스트 단계나 품질 검증 단계를 조금 더 보강해 보고 싶다.
- 단순히 빌드 자동화에서 멈추지 않고,
최소한 기본 테스트와 간단한 검증 절차까지 포함된 파이프라인을 목표로 할 계획이다.
-
컨디션 회복과 리듬 재정비
- 현재 컨디션이 좋지 않은 만큼
최종 프로젝트에 본격적으로 들어가기 전까지는
생활 리듬을 다시 정리하고, 수면과 식사, 휴식을 우선순위에 두려고 한다.
- 무리해서 한 번에 몰아치는 방식보다는
일정한 리듬 속에서 꾸준히 집중력을 유지하는 쪽으로 패턴을 바꾸는 것이 목표다.
이번 17주차는
DevOps 프로젝트를 마무리하고 최종 프로젝트를 앞두고 서 있는 전환의 한 주였다.
커뮤니티와 알림, Jenkins까지 욕심껏 맡아보며 한계를 체감한 만큼
통합 테스트와 팀 소통의 중요성을 뼈저리게 느꼈고,
앞으로는 같은 실수를 반복하지 않기 위해 준비해야 할 것들이 분명해졌다.
이제는 잠시 숨을 고르며 컨디션을 회복한 뒤,
최종 프로젝트에서 더 단단해진 모습으로 다시 시작하고 싶다.