28Delivery - 10일
in Think-Diary on Think
개요
지난 프로젝트로 부터 약 2달 후, 다시 백앤드 교육을 수강하기로했다. 지난 반기동안 했던 백앤드 능력으론 부족하다고 판단했기 때문이다. 그리하여 내일배움캠프의 백앤드 심화 과정 교육을 수강 중이며, 이 프로젝트는 최근 진행한 10일간의 팀 프로젝트이다.
28Delivery
먼저 진행한 팀 프로젝트를 소개한다. 배달의 민족과 같은 배달 대행 서비스 플랫폼이란 주제를 가지고 만든 팀 프로젝트, 28Delivery이다. 당시 28조 였던 것과 배달이란 주제로 합친 이름이다. 이 프로젝트의 주요 기능은 다음과 같다.
- 스프링 부트를 기반으로 만든 모놀리식 백앤드 어플리케이션
- 사용자, 음식점, 메뉴, 주문, 배송지, 리뷰, 관리자 등 각 도메인의 CRUD 및 검색 기능 제공
- 프론트앤드 개발자에게 전달할 기능들을 API로 정리하고 문서화하여 전달
- CI/CD 툴을 이용한 배포
자세한 것은 https://github.com/28delivery/BackEnd 에서 확인할 수 있다.
잘한 것 & 배운 것
기술적인 부분
우선 내가 맡은 부분은 사용자 도메인 API 부분과 보안 인증 부분, 그리고 CI/CD 배포 부분이다. 이 부분은 팀 프로젝트 들어가기 전 약 5일동안 개인적으로 공부하고 연구하는 시간이 있었으며, 이 것을 기반으로 하여 실제로 구현하는 경험을 얻었다.
보안 인증 부분에서 권한 인가 설정에 사용되는 JWT와 필터 부분을 구현하고, 이와 관련되어 사용자 도메인 API 부분에선 사용자 계정의 권한 설정 로그인/로그아웃, CRUD 등 구현하였다. 또한 위 두 부분을 테스트할 시나리오를 테스트 코드로 만들어 코드 검증 부분까지 구현을 하였다. 위 구현에서 코드의 구조와 품질을 중요시하게 생각하는 고민을 많이 하게 되었고, 이러한 고민을 거쳐서 역할을 수행할 수 있었다.
그리고 CI/CD 배포 관련해서는 익숙치 못한 AWS EC2 서비스와 Docker / Docker-compose, 그리고 Github action를 이용해서 빌드 및 배포 자동화를 이루었다. 위 역할을 나만 맡은게 아닌, 다른 학우분들과 같이 맡았었고 그 중 위 기술에 정통한 학우 덕분에 CI/CD 분야를 해결할 수 있었다. 개인적으로 버스를 받았다라고는 할 수는 있지만, 서로 모르는 부분들이나 문제 상황에 처해 어떻게 해결하고 조치하는 방법을 공유하며 해결해 나아갔다. 위 부분을 맡으면서 지난 직장에서에 젠킨스로 매일매일 빌드한 경험을 기억하기도 하였다.
소통적인 부분
기술적인 부분 경험을 쌓는 과정에서 서로 간 분위기는 잘 형성되었다. 팀장님은 일일 스크럼을 통해 결과와 목표를 조정하며 팀 진행도를 조절하였고, 그 페이스를 모든 팀원이 맞추어 각자의 역할을 수행해왔다. 맨 처음 프로젝트 목표 및 협업 규칙들을 정하는 것부터 문제 상황을 맞아하는 것을 거쳐서 마지막 테스트까지 프로젝트의 모든 과정을 서로 보완해주면 진행하왔고, 이를 트러블 슈팅으로 문서화하며 각자의 개발 경험들을 쌓아왔다.
아쉬운 것 & 배워야 하는 것
일정 컨트롤
이 프로젝트의 주어진 시간은 10일이었다. 이 기간동안 설계부터 발표 준비까지 일정이 무척 빠듯했었다. 모두가 저녁 먹고와서 다시 개발을 하루가 넘길 때 까지 개발을 해야 겨우겨우 완성할 수 있었다. 특히 마지막 날 테스트 코드 작성하고 확인하는 과정은 모두가 밤새서 만들 정도였다. 설계 2일에 구현 6일, 테스트 및 발표 준비 2일은 실제로도 빡센 업무라 한다. 그럼에도 불구하고 프로젝트는 완성은 했지만 시간이 좀더 있었더라면 품질을 더 개선할 수 있었지 않았을까란 아쉬움이 들기도 한다. 그리고 개인적으로 이사 시기와 겹치는 바람에 이거 준비하랴, 저거 준비하랴 정신이 없었고 내부적으로 맣이 지칠수 밖에 없었던 과정이었다.
완성도와 기술
완성 후 다른 조 발표하는 것을 보면서, 우리 프로젝트에 대한 비교적 아쉬운 점들이 있었다. 우리가 사용한 기술 외 엘라스틱서치를 통해 검색 기능을 좀 더 개선을 할 수 있었던 것이라든가, 레디스를 이용하여 DB 성능을 높일 수 있었던 것이 비교가 되어 쫌 아쉬었다. 또한 개인적으로 프로젝트 진행하면서 크로스 체크가 좀 더 진행되었어야 하지 않을까하는 아쉬움도 있다. 각자의 코드 스타일을 부분부분 묶여야 하는데, 쫌 방치된 것들도 있었고, API 문서화 할때 설계가 일치되지 않아 다시 고치는 자원이 소모되기도 하였다.
이러한 기술적인 아쉬움과 쫌 더 서로간의 체크 과정을 겪다보니 다음 프로젝트를 진행할 때 반면교사로 삼을 수 있겠다.
결론
10일 단기간임에도 불구하고 어쨌든 팀 모두가 개발은 해냈다. 많이 고되기는 했지만 고된 만큼 성취감도 있었고 또한 아쉬움도 있었던 프로젝트였다. 이를 기반으로, 다음 프로젝트할 때(아마도 MSA 프로젝트할 때) 경험을 발휘 할 수 있을 것 같다. 끝!