3주차 회고 이후로 회고 글을 적지 못했는데 정말 많은 일들이 있었다. 일단 2월 29일 데모데이를 끝으로 프로젝트가 끝났다. 정말 예상치도 못한 일들이 있었고 아무튼 데모데이까지 참여 할 수 있게 되어 정말 다행이다.
본격적인 개발을 시작하기 전 ERD 설계, API 명세서 등에 많은 시간을 투자했다. 기능 명세서는 계속 바뀌었고 수정 작업을 계속 이어갔다. 그러나 갈수록 수정 사항이 반영된 디자인은 올라오지 않았다. 물론 백엔드에게 디자인이 꼭 필요한 건 아니지만 비쥬얼적인 구상 없이는 어려웠다. 또한 기능 명세서에는 디자인과 일치하지 않는 것들이 많았어서 계속 질문했다. 매주 목요일마다 팀원들과 만나 불명확한 부분을 정리해서 PM에게 전달했다. 물론 직접하기도 했다. 문제는 소통이 이어지지 않았다는 것이다.
백엔드 -> PM -> 디자이너 | 프론트 🚨
다 같이 모이는 자리가 없다보니 우리는 모든 의견을 디스코드나 대면 회의 때 PM에게만 전달했다. 그럼 PM은 디자이너에게 와이어프레임과 디자인 수정을 요청했고 공용 페이지에서 바로 확인 가능한 부분이였다. PM에게 전달했고 공용 페이지에도 수정되었으니 우리는 프론트에게도 전달 되었겠다 라는 믿음이 있었다. 하지만 이건 우리만의 착각이였다. 초반에 프론트 부원들에게 적극적으로 소통을 시도하지 못한건 정말 후회된다. 물론 노션 페이지에 API 명세서를 다 만들어 놓고 수정시 표시도 잘해놔서 딱히 받을 질문이 없었다. 실제로 질문이 많이 오지는 않았다.
같이 회원가입과 로그인 파트를 맡았던 프론트장님과 연락이 잘되는 편이였다.
우리는 이런식으로 궁금하게 생기면 바로 디스코드로 문의했다. 요구사항을 정확하게 명시하여 빠르게 개발을 진행할 수 있다.
글만으로는 이해하기 복잡한 부분은 이렇게 예시와 함께 바로 이해할 수 있도록 설명해주셨다.
나는 API 수정 사항이 생겼을때 이렇게 보냈다. 이렇게 서로 보고할때 최대한 직관적으로 설명했더니 나중에 커뮤니케이션 비용을 덜 수 있었다.
과연 다른 파트원들은 괜찮았을까?
백엔드 -> PM -> 디자이너 | 프론트 🚨
프론트 -> PM -> 디자이너 | 백엔드 🚨
프론트장님과 길게 대화를 나눠보니 사실 프론트도 같은 상황이였다. 프론트쪽에서도 수정 사항이 생기면 PM에게만 보고했고 백엔드로부터 문의가 들어 오지않아 걱정이 많으셨다. 그리고 마침내 큰 위기를 맞았다.
백엔드 팀원이 작성한 API 명세서가 실제 구현 내용고 달랐다. 정말 황당한 순간이였다. 우연히 팀 컴시트에 올려놓은 API 명세서를 확인하던 중 코드 리뷰할 때 본적도 없는 API가 있었다. Endpoint 뿐만 아니라 parameter 이름들도 달랐었다. 당사자는 전혀 몰랐고 프론트에게 전달 조차 안했다는 사실을 전해 들었다.
그분은 본인이 작성한 API 명세서를 따르지 않았다. 프론트는 API 명세서를 바탕으로 개발했고 그 안에서 수정도 했다. 물론 이 수정 사실도 우리에게 전달되지 않았다. 결과적으로 서로 다른 일을 하고 있었던 것이다. 나는 프론트장님과 수월하게 진행되고 있었기에 전혀 인지하지 못했었다. 정말 충격적인 순간이였다.
데모데이가 일주일정도 남은 시점 점점 불길한 기운이 들기 시작했다. 우리 파트장님은 인턴 때문에 바쁘시고 백엔드 쪽 일이 잘 정돈 된다는 느낌이 들지 않았다. 백엔드 쪽에서 배포 해본적 있는 사람이 없어서 API 연결이 잘 될지도 모르는 상황이였다. 하지만 다들 어떻겐가 되겠지라는 마인드로 배포를 미루었다. 난 정말 불안했다. 프론트 파트에서도 연락이 잘 안되는 인원들이 생기기 시작했다. 아마 API 명세서가 잘못되어 진행된 대규모 수정 작업 때문에 다들 지치고 갈등이 생긴 것 같았다.
그리고 마침내 백엔드쪽에서 API 명세서를 안지키고 구현한 분이 잠수를 탔다 😭
백엔드 팀원들은 점점 본인 파트에만 집중하기 시작했고 다른 파트에는 관심을 가지지 않았다. 그래서 결국 같이 하기로 했던 배포 작업을 내가 혼자하기로 했다. 정말 고맙게도 프론트 파트장님이 나와주셔서 왕십리 탐앤탐스에서 같이 밤새 진행했다. 배포 과정은 정말 스릴 넘쳤다.
Github Action 자동화-> Elastic Beanstalk 롤링 무중단 배포 -> Netlify와 HTTP 통신
여기까지는 내가 예상한 작업이었다. 처음해보는거라 시간이 걸렸지만 아무 문제없이 배포됐다. 그런데 과연 배포만 하면 될까?
첫번째로 겪은 문제는 Netlify 서버와 HTTP 통신이 안되는 것이었다. 요청이 스프링 부트 서버에 도달하지도 못해 1차 멘붕이 왔다. 삽질한 끝에 Netlify는 HTTPS 통신이 필요하다는 것을 알아챘다.
Netlify와 HTTPS 통신 준비 -> 가비아에서 도메인 구매 등록 -> SSL 인증서 발급 -> AWS에서 레코드 생성
이렇게만 하면 잘되겠지? 라고 생각했지만 어림도 없었다. 바로 CORS 정책 문제가 터진것이다.. 자세한 해결 내용은 따로 글을 정리할 것이다. 이 이후로도 Preflight 요청 문제를 겪었고 해결했다.
CORS 정책 문제 해결 (2시간 소요) -> Preflight 요청 문제 해결
프론트 파트장님이 옆에서 같이 정보 찾고 도와주셔서 그나마 빠르게 해결할 수 있었던 것 같다. 이 많은 문제들을 해결하고 나니 갑자기 기분이 정말 좋았다. 배포를 처음부터 끝까지 해보니 왠지 자신감도 생겼고 다음번에 배포 자동화와 무중단 인프라를 자신있게 만들 수 있을거라는 믿음이 생겼다.
물론 팀원 10명 중 4명 밖에 오지 않았다. 하지만 탈주 위기를 극복하고 배포하여 데모데이 참석한 것은 정말 자랑스럽다. 물론 탈주자 파트는 데모데이에서 못보여줬지만 우리가 할 수 있는 최선을 다했기 때문에 아쉽지 않았다.
정말 고생이 많았다. 그래도 배워간 부분이 정말 많아 다행이다.
이어서 마무리 하기로 했지만 주요 팀원들이 졸업 프로젝트와 인턴이 겹쳐서 무산됐다 🥲