BEYOND SW 캠프 15기 19주차 회고

mijuckboon·2025년 6월 1일
post-thumbnail

부트캠프 19주차 회고를 적어본다.

일정

이번주 월요일 및 화요일은 데브옵스 프로젝트의 진행, 발표(체험 부스 형식), 데브옵스 교과목 평가가 진행되었고, 수요일부터는 최종 프로젝트가 시작되어 기획 작업에 들어갔다.

데브옵스 프로젝트

데브옵스 프로젝트에 대한 자세한 내용은 별도의 프로젝트 회고에서 다루는 것으로 하고, 여기서는 일부 내용만 간략하게 정리한다.

프로젝트 구조

수업 및 이전 백엔드 프로젝트에서는 CQRS 패턴을 적용한 코드 작성 방법을 배웠으며, 특히 command 영역에는 JPA, query 영역에는 MyBatis를 이용하였다.
이번 데브옵스 프로젝트는 기간이 짧아 기능 수가 적고 구조가 비교적 간단하므로, 아래와 같은 구조를 사용하였다.

  • command, query 분리 없이 layer 구조만
  • 영속성 프레임워크는 MyBatis 없이 JPA만

MyBatis 없이 JPA만 이용하려니 동적 쿼리 작성이 다소 복잡해지긴 했으나, 덕분에 Spring JPA 환경에 대한 이해도를 높이며 다른 패턴에 대해 공부해볼 수 있었다. 관련 내용은 다음과 같다.

JPA 동적 쿼리 작성법

  • Repository 구조
    repository 구조
public interface ProblemRepository extends JpaRepository<Problem, Integer> {
}

public interface ProblemRepositoryCustom {
}

@Repository
public class ProblemRepositoryImpl implements ProblemRepositoryCustom {
}
  • 구성
    • XXXRepository: JPA 기본 repository
    • XXXRepositoryCustom: JPA 기본 repository를 확장하여 사용하기 위해 필요한 인터페이스
    • XXXRepositoryImpl: 실제 동적 쿼리를 작성하는 XXXRepositoryCustom의 구현체
  • QueryDSL 등을 통한 동적 쿼리 작성 시에도 위와 같은 3단 구조가 필요
  • Spring Data JPA 환경에서 이와 같이 기본 repository를 확장하려면, 이름 양식이 반드시 일치해야 함 (CustomXXXRepository 등 사용 불가)

좋았던 점

  • 이전 프로젝트에서는 각자 기능을 구현하기 바빠 코드 리뷰가 원활이 이루어지지 않았는데, 이번에는 코드 리뷰를 통한 PR merge를 진행하였다. 꿈꿔왔던 개발 협업 방식으로 진행해본 점이 매우 만족스러웠으며, 유사한 기능이 필요할 때 팀원의 코드를 참고하는 등 개발 시간을 많이 단축할 수 있었다. 이를 통해 코드 리뷰의 중요성을 느꼈다.
  • 배포 과정은 5명 전부가 매달리는 것보다는 일부가 맡는 것이 원활한 진행이 가능하다고 판단하여 2명의 팀원이 진행하게 되었다. 배포 과정을 진행 중인 팀원의 담당 파트에서 발생한 수정 사항 및 문서화 작업은 나머지 3명의 팀원이 진행하며 프로젝트의 완성도를 높여갔다. 이 경험을 통해 진정한 협업이 어떤 것인지 알 수 있었다.
  • 지금까지 진행한 프로젝트 중 맡은 기능을 가장 높은 완성도로 제출할 수 있었던 점이 좋았다.

아쉬웠던 점

  • 일부 팀원은 테스트 코드를 작성하기도 했지만, 필자는 시간 관계상 테스트 코드 작성은 생략하고 Postman을 이용한 테스트만 진행하였다.
  • 프론트엔드 개발 시 빠른 구현에 초점을 맞추느라, 필자의 담당 파트는 컴포넌트화를 충분히 하지 못했다. 결과적으로 유지보수성이 좋지 못한 코드를 작성하게 되었는데, 최종 프로젝트에서는 유지보수성 좋은 방향으로 코드를 작성해봐야 겠다.

프로젝트 발표

이번 프로젝트 발표는 각 조에서 체험 부스를 운영하는 방식으로 진행되었다. 기존의 PPT 발표 방식에 비해 다른 조가 어떤 서비스를 만들었는 지를 잘 파악할 수 있는 점은 좋았으나, 트러블슈팅 과정에 대한 공유가 부족했던 점이 아쉬웠다.
모든 방식에는 서로 장단점이 있기 마련인데, 새로운 방식을 한 번 경험하고 이를 비교해볼 수 있어서 좋았다.

교과목 평가

프로젝트 발표 종료 후에는 데브옵스 교과목에 대한 평가가 진행되었다.
단원 평가 결과
단원 평가가 끝난 직후에 매니저님께서 필자의 이름을 거론하며 1등이라고 발표하셨고, 강사님께서는 10기, 15기 역사 상 100점은 처음이라고 말씀하셨다.

사실 잘 모르겠어서 찍은 문제들이 꽤 많았기에, 프론트엔드 단원 평가 정도 혹은 그 이하의 점수를 예상하고 있었다. 100점을 맞는 것은 계획에 없던 일이었는데, 운 좋게 찍은 문제들까지 모두 맞힌 덕분에 역사를 쓸 수 있었다. 이 운을 여기에 쓸 게 아니라 로또에 썼어야 했는데...

스스로 평가해보았을 때 Docker, Kubernetes, Jenkins 중 Kubernetes에 대한 이해도는 다소 부족한 상황으로 진단된다. 데브옵스 교과목에 대한 복습을 열심히 하여, 100점이라는 평가 결과가 부끄럽지 않도록 이해도를 보완해야겠다.

최종 프로젝트

최종 프로젝트는 지난 주 중 회의를 통해 결정된 인사 관리 시스템을 주제로 진행하게 되었다.
기획 단계 중 기존 서비스 조사를 위해, 필자가 이전 직장에서 출결 관리에 이용해본 flex 서비스에 무료 체험을 신청하여 제공되는 기능을 테스트하였다. 화면이 없는 상태에서 기능 정의나 요구사항 명세서를 작성하려면 막막한 부분이 있는데, 기존 서비스를 직접 체험해보는 과정은 많은 도움이 되었다.

최종 프로젝트 기획에서는 해당 서비스를 구성하기 위해 필요한 용어 공부 또한 필요했다. 몇 가지 예시는 아래와 같다.

  • 직위, 직급, 직군, 직무, 직책
  • 통상임금, 포괄임금
  • 취업규칙
  • 외근, 출장
  • 기안, 상신

직장 생활 경험이 있는 필자의 경우 정확한 의미까지는 몰라도 대략 알고 있는 용어들이 대부분이었으나, 팀원들에게는 생소한 용어였다. 특히 직위, 직급 등의 용어는 출처에 따라 설명이 달라 혼란스러웠다.
프로젝트 규모가 커지다보니 기획 단계에서의 어려움이 다소 있지만, 팀원 및 배정받은 멘토님과 함께 조율해가며 기획을 잘 마무리 해야겠다.

느낀 점

프로젝트를 여러 번 진행해보며 개발 프로세스에 대한 이해도가 높아지고 있는 듯하다. 부트캠프 종료 후에 알고리즘 공부, 기술면접 대비도 필요하지만 작은 프로젝트라도 몇 개 진행해보며 실전 감각과 개발 역량을 길러나가야 겠다.

profile
곽진웅, 백엔드 개발자 준비 중

2개의 댓글

comment-user-thumbnail
2025년 6월 5일

운도 실력 ㅋ !

1개의 답글