데브코스 생성형 AI 백엔드 1기 최종 프로젝트 회고

김주엽·2025년 8월 22일
0
post-thumbnail

6월 10일에 최종 프로젝트를 시작해서 7월 17일에 최종 발표를 하며 데브코스 생성형 AI 1기를 수료했다.

프로젝트가 끝난지 한달이 지났지만 개도 안걸린다는 여름 감기에 걸려서 코딩하기에는 머리도 아프고 해서 뒤늦게라도 회고를 작성해보려고 한다!


🎯 프로젝트 주제 선정

데브코스 측에서 아래와 같은 주제 4가지를 정해주었다.

  • 취미 공유 및 커뮤니티 플랫폼
  • 온라인 펀딩 플랫폼
  • 온라인 상점 및 재고 관리 시스템
  • 온라인 학습 관리 시스템

이 주제들에 대해서 최종적으로 선택한 주제는 커뮤니티다.

처음에는 졸업 작품 판매 플랫폼을 만드려고 했는데 이것저것 문제가 많아서 주제를 변경했다.

왜 커뮤니티를 선택했을까?

데브코스를 직접 들으면서 가장 아쉬웠던게 기수 간에 소통이 부족하다는 점이었다.

특히 스터디를 구하거나 토이 플젝과 같은 팀원을 구하고 싶어도 다른 코스 수강생과 소통할 수 있는 공간이 없다보니 같은 코스 내에서만 스터디를 진행해야만 했다.

이러한 아쉬움을 팀원 모두가 공감하고 있었고 우리가 가장 아쉬움을 느꼈던 부분을 커뮤니티 웹사이트를 만들어 해소하고자 이러한 주제를 선택했다.


😅 프로젝트 기획에서의 어려움

처음 기획했던 졸업 작품 판매 플랫폼에서 주제를 급하게 변경하다보니 아무래도 기획에서 많은 어려움이 있었다.

커뮤니티가 그저 그런 CRUD에 가깝기 때문에 단순한 프로젝트가 될 가능성이 컸기에 어떤 기술적인 도전들을 할 지 모두가 고민이 깊었다.
(기획만 거의 한 10일 가까이 한듯..)

💡 우여곡절 끝에 나온 아이디어들

팀원 모두가 이것저것 고민한 끝에 나온 아이디어는 다음과 같았다.

  1. AI 게시글 맞춤 추천 및 신고 시스템
  2. 웹소켓을 이용한 채팅
  3. SSE를 활용한 실시간 알림
  4. OCR + Vision 기반 수강생 자동 인증 시스템

이렇게 커뮤니티에 어느정도 기술적인 도전들을 추가하기로 결정된 이후로는 각자 원하는 파트를 맡아서 빠르게 문서화를 진행하고 개발을 시작했다.


🏆 Amateurs - 데브코스 수강생들을 위한 커뮤니티

아마추어스 메인 페이지

아마추어스는 데브코스 수강생들을 위해 만들어진 서비스다.
우리가 직접 수강하면서 느꼈던 가장 큰 아쉬움인 소통 문제를 해결하고자 이러한 커뮤니티를 만들게 되었다.

평소에 데브옵스에 관심이 많아 이번 플젝에서도 데브옵스를 주역할로 맡았다.
특히 이번 프로젝트에서는 여러 새로운 기술들을 도입해보고 싶었는데 그 과정에서 많은 시행착오를 겪었다.
가장 인상 깊었던 몇 가지 도전들을 정리해보면 다음과 같다.


🔧 기술적 도전들

1️⃣ jOOQ + JPA 하이브리드 구조의 도입

게시판 별로 복잡한 JOIN이 많이 발생하다보니 JPQL로는 한계가 있었다.

처음에는 QueryDSL을 고려했지만 지원 중단 이슈 때문에 jOOQ를 선택했다.

jOOQ 도입 과정

  • jOOQ 세팅이 생각보다 복잡했지만 한번 세팅하고 나니 SQL만 알면 사용할 수 있어서 러닝커브가 비교적 낮았다
  • Docker 컨테이너로 테스트 DB를 띄우고 Flyway로 스키마를 자동 구성하도록 설정했다.

조회 관련 API는 jOOQ로 CUD 같은 반복적인 코드는 JPA로 처리하는 하이브리드 방식을 택했는데 조회 쿼리가 복잡할수록 jOOQ의 성능이 더 뛰어난 것을 확인할 수 있었다.

2️⃣ Blue-Green 배포와 CI/CD 파이프라인

GitHub Actions를 활용해서 CI/CD를 구축했다.

특히 Blue-Green 배포 전략을 도입해서 서비스 중단 없이 안전한 배포를 구현하는 것이 목표였다.

CI/CD 구성

CI 과정:

  • 코드 변경을 감지해서 jOOQ 코드 생성
  • 테스트 실행
  • Docker 이미지 빌드까지 자동화

CD 과정:

  • 새 버전을 대기 환경에 배포
  • 헬스체크를 통해 정상 동작을 확인
  • NGINX 설정을 변경해서 트래픽을 전환

3️⃣ LGTP Observability 환경 구축

모니터링도 제대로 해보고 싶어서 LGTP 스택(Loki, Grafana, Tempo, Prometheus)을 도입했다.

솔직히 모놀리식 구조에서는 Tempo가 오버엔지니어링 측면이 있었지만 향후 MSA 구조로 전환할 때를 대비한다는 마음으로 진행했다.

LGTP의 효과

  • 실시간으로 로그, 메트릭, 트레이스 데이터를 시각화해서 대시보드에서 관리
  • 중앙화된 로그 검색으로 이슈 식별이 훨씬 수월해짐

4️⃣ n8n을 활용한 자동화 워크플로우

개발 과정에서 반복적인 알림이나 리뷰 작업들을 자동화하고 싶어서 n8n을 도입했다.

노코드/로우코드 환경이라 빠르게 워크플로우를 구성할 수 있었고, AI 통합 기능도 제공해서 활용도가 높았다.

구축한 워크플로우들

  • DevOps 알림 시스템 (Grafana → AI 분석 → Discord)
  • GitHub 협업 알림
  • AI 코드 리뷰 자동화
  • IT 뉴스 글 작성 자동화

특히 AI 기반 코드 리뷰 자동화는 일관된 품질 기준을 유지하는 데 도움이 되었다.


🔥 트러블슈팅 경험들

CI 파이프라인 최적화

문제 상황

처음에는 모든 CI 파이프라인에서 jOOQ 코드 생성이 매번 실행되어서 빌드 시간이 8~9분까지 소요됐다.

Docker 기반 jOOQ 코드 생성 과정이 불필요하게 반복 실행되는 게 문제였다.

해결 과정

  • jOOQ 전용 워크플로우를 분리
  • 캐시 히트 시 jOOQ 생성 과정을 스킵하도록 조건부 실행을 구현

결과

캐시 히트 시 1~2분 정도 빌드 시간을 단축할 수 있었다.

테스트 격리 문제

문제 상황

정상적으로 동작하던 테스트가 팀원의 테스트 코드 추가 후 전체 테스트 실행 시에만 실패하는 현상이 발생했다.

개별 테스트는 성공하는데 전체 실행 시 실패하는 전형적인 테스트 격리 문제였다.

원인 분석

  • 테스트마다 데이터를 생성하는데 Mock 방식이 아니어서 테스트 DB에 데이터가 누적
  • 다른 팀원이 삽입한 데이터로 인해 데이터 불균형이 발생

해결 방법

테스트 실행 전후에 데이터 정리 로직을 추가해서 테스트 격리를 구현했다.


🏅 프로젝트 결과

팀원들과 함께 열심히 작업한 결과 우리 프로젝트가 우수 프로젝트로 선정되었다! 🎉

특히 멘토 중 한 분이 본인이 얼마 전에 사라진 데브코스 커뮤니티를 팀장직을 맡아 개발했었는데 그때도 비슷하게 한달 만들었지만 그 당시에 만든 것보다 더 잘 만든 것 같다고 말씀해주셨다.

실제로 비슷한 프로젝트를 현업에서 만든 경험이 있는 분의 이런 피드백을 들으니 정말 뿌듯했다.

이번 프로젝트에서 잘했던 점들

새로운 기술 스택에 대한 적극적인 도전이 가장 만족스러웠다. jOOQ + JPA 하이브리드 구조, LGTP 모니터링 스택, n8n 자동화 워크플로우 등 처음 써보는 기술들이 많았지만 팀원들과 함께 학습하면서 성공적으로 도입할 수 있었다.

아쉬웠던 점들

가장 아쉬웠던 건 인프라 리소스의 한계였다. EC2 프리티어로 LGTP 스택을 모두 돌리니 응답 속도가 너무 느려서 모니터링의 효과를 제대로 체감하기 어려웠다.

또한 모놀리식 아키텍처로 인해 Tempo의 분산 트레이싱 기능을 제대로 활용하지 못한 점도 아쉬웠다. LGTP 각 컴포넌트의 동작 원리는 이해했지만 내부 아키텍처에 대한 깊이 있는 학습 부족으로 성능 최적화에는 한계가 있었다.

다음에 도전해보고 싶은 것들

Kubernetes 환경에서의 컨테이너 오케스트레이션을 경험해보고 싶다. IaC(Infrastructure as Code)를 활용한 체계적인 인프라 관리도 시도해볼 예정이다.

또한 현재 구축한 AI 코드 리뷰 자동화를 더욱 고도화해서 실제 업무에서 활용할 수 있는 수준으로 발전시키고 싶다.

그리고 언젠가는 MSA 환경을 직접 구축해서 분산 트레이싱과 성능 병목 지점 분석을 실습해보는 것이 목표다. LGTP 스택의 내부 구조도 더 깊이 학습해서 최적화 역량을 기르고 싶다.


🎉 마무리

이번 프로젝트를 통해 데브옵스 전반에 대한 실무 역량을 크게 향상시킬 수 있었다.

특히 단순한 설정이 아닌 왜 이런 구조로 가져가야 하는지에 대한 고민과 트레이드오프를 경험할 수 있었던 것이 가장 큰 수확이었다.

물론 아쉬운 점들도 많았지만 한 달이라는 짧은 시간 안에 팀원들과 함께 이 정도 규모의 프로젝트를 완성할 수 있었다는 것 자체가 의미 있었다.

마지막으로 데브코스를 수료하면서 느낀 건 결국 개발은 혼자 하는 게 아니라는 것이다.
좋은 팀원들과 함께 고민하고 문제를 해결해나가는 과정에서 더 많은 것을 배울 수 있었다.

profile
나야 루이지

0개의 댓글