1. 프로젝트 개요
2차 프로젝트는 온라인 모임을 통한 미션을 모임별로 공유하고,
성취할 수 있는 서비스를 제공하는 사이트를 구축하는 것이었다.
이번에는 프론트와 백엔드간 코드가 아예 깃 레포지토리부터 분리되어 진행하는 프로젝트였다.
지금까지는 프론트와 백엔드 코드 모두 한 프로젝트에 담겨 진행했기 때문에,
어떻게 진행해야할지 감이 오지 않았다.
다행히 개인사정으로 출석하지 못한 날에 프론트와 백엔드 코드를 분리해 진행하는 Mini-Project를 진행한 사실을 알게되었다.
같은 팀원분들께서 해당 Mini-Project를 진행해주셔서 참고하며 진행할 수 있었다.
크게 요약하면 프론트는 React로 진행했는데,
View와 관련된 부분 + 백엔드에서 작성한 API를 호출하는 코드가 담겨져 있었다.
백엔드는 View와 관련된 부분 없이 호출할 API 주소와 해당 API를 호출했을 때 어떤 기능을 하는 것인지 잘 작성하고 프론트 개발자 분들과 공유할 필요가 있었다.
여기서부터 엄청난 갈등이 시작되었다..
2. API 명세서 관련
프론트-백엔드 개발자 사이에 참고해야할 반드시 필요한 문서인 API 명세서를 두고 엄청난 내적 갈등이 시작되었다.
1차 프로젝트 때는 급한대로 구글 스프레드 시트에 작성해서 진행했었는데,
수기로 작성해야했고 작성하는 사람만 작성하는 단점이 있어서 이번에는 꼭 API를 문서화할 수 있는 라이브러리를 도입해야겠다고 생각했다.
처음에는 급한대로 구글 스프레드 시트에 작성하기 시작했는데,
작성하면서도 들었던 생각이 '어떤 것을 작성해야하지?', '이렇게 하는 것이 맞나?', '이거 또 나만 열심히 하는 것 아닌가?'라는 생각이었다.
그러다가 주위에서도 그렇고 예~~전에 정말 잠깐 봤던 Swagger가 생각났다.
Node.js와 Express를 이용해서 Swagger를 적용해보기로 마음 먹고 도전했는데,
미리 예견되었지만, 실제로 해보니 (@swagger) annotation 지옥에 빠지는 경험을 했다.
해당 내용과 Swagger를 파일 분리하여 적용하는 방법에 대해서는 아래 글에 자세하게 적었다.
2023.11.01 - [IT/SeSAC] - [새싹x코딩온] Swaager x Express를 yaml 파일로 분리해서 관리하기 (2차 프로젝트 진행 중)
yaml 파일로 parameter, request body, response 별로 분리하니 굉장히 가독성도 좋고 관리하기가 편했다.
물론, 이걸 적용한다고 2일이나 삽질을 했다..
Swagger를 적용하니 프론트와 백엔드 개발자 그리고 백엔드 개발자 사이에서도 Swagger를 보면서 API 이야기를 하는 경우가 많았다.
Swagger UI에서 직접 테스트도 할 수 있어 에러가 발생한다고 하면 어떤 부분에서 에러가 나는지 빠르게 알 수 있는 것도 매우 좋았다.
3. 배운 점
하지만 이번에도 매우 큰 고비가 왔다.
백엔드 개발에 비해서 프론트 개발이 지지부진하다는 것이었다.
여기서 초비상이 걸렸다.
단순히 지지부진한 것이 아니라 전체적인 디자인 + 반응형 + API 연계가 총체적으로 안되는 부분이 많았던 것이었다.
프로젝트가 끝나기 며칠 전에 이런 통보를 받으니 일단 당황스러웠고 화도 나고 불쾌하기도 했다.
백엔드는 할 만큼, 열심히 자기 몫을 했는데 이게 정말 한 거라고 말할 수 있을까 라는 허무함과 허탈감이 밀려왔다.
현실에서는 일정이 딜레이되거나 1인분도 못하는 사람도 있는데, 정말 오랜만에 겪어보는 신선한 충격과 고통이었다..
예전에는 모든 것을 참으면서 어떻게든 최선의 방법을 찾아서 적용하려고 했었지만,
이번에는 불쾌한 감정을 최대한 부드럽게 표출하면서도 어떤 상황인지 대화를 통해 각자가 생각하기에 최선의 방법을 찾아내고, 내가 한 것을 인정받으려고 노력했었다.
스트레스를 분출하지 않고 꾹꾹 눌러담으니 화병도 나고 했는데,
이번에는 적당하게 분출도 하면서 예전에 가졌던 침착함도 더해서 최선을 다하려고 했다.
어떤 상황이 오더라도 최대한 즐기고, 발전하자는 마인드를 가지고 스스로를 컨트롤 하니 뭔가 아프지도 않고 최선의 판단을 한 것 같아 기쁘기도 했다.
지금은 현실에서 겪을 수 있는 상황에 대해서 미리 겪어 본 것을 행운이라고 여기고 좋은 경험을 했다고 생각한다.
1차 프로젝트와 마찬가지로 리더십, 사람들을 어떻게 다루어야(?)하는지, 각각 사람의 성향과 성격을 파악한다면 더 최선의 결과를 얻을 수 있지 않을까 하는 생각도 했다.
그보다도 나 스스로가 어떤 마인드를 가지고 침착하게 '사람처럼' 할 수 있는 것이 더 어렵기도 하고 많은 생각을 하게 된 프로젝트였다.