사실 오늘 날짜는 6월 9일이 아니고 6월 14일이다.
하지만 실질적으로 데모데이가 6월 9일이었고, 방학식이 6월 10일이었기 때문에 제목에는 6월 9일이라 적었다.
장바구니 미션은 3기때까진 존재하지 않다가, 4기 때부터 처음으로 생겨난 미션이라 한다.
레벨3 부터 프론트 크루들과 작업하기 전에 미리 맛보기용으로 이 미션을 넣어준 듯하다.
포항항 장바구니
우리 팀 이름은 포항항 장바구니로 지었다.(포항항ꉂꉂ(ᵔᗜᵔ*)ㅋㅋㅋㅋ)
백엔드 크루 구성원은 정, 조시, 포키, 케이(나)로 이루어졌고, 프론트 크루 구성원은 유세지, 샐리로 총 6명으로 구성됐다. 그동안의 미션은 페어랑 함께 2인 또는 3인으로만 작업해왔었기 때문에, 6명이서 함께 작업하는 경험은 굉장히 신기했다.
특히 나는 프론트 크루들과 api 명세를 맞춰보고 배포해보는 경험이 처음이었기 때문에 더 신기하고 인상깊게 느껴졌던 것 같다.
실제로 위와 같이 api를 프론트 크루들과 함께 노션에 작성해보는 경험도 해보았고,
swagger를 이용하여 api 자동 문서화시켜보는 경험도 정 덕분에 할 수 있었다.
swagger 설정은 정 블로그 포스팅에 자세하게 기록돼있어서 참고하면 좋을 듯하다.
https://bugoverdose.github.io/development/swagger-tutorial/
1단계 - 유저 API 명세 맞추기
1단계는 유저를 jwt를 이용하여 회원가입시키고 Interceptor 혹은 ArgumentResolver를 이용하여 토큰으로 인가를 확인해줄 수 있도록 작업하는 미션이었다. 따라서 Customer 도메인을 만들고 AuthService, CustomerService와 함께 컨트롤러들도 만들어주는 작업을 해주었다.
나는 1단계는 포키랑 함께 페어로 작업을 하게 됐다. 포키는 이번 미션의 일정 조율, 체크리스트, 목표, 페어 규칙들을 노션으로 꼼꼼하게 기록하고 관리하는 타입이었다. 기록 내용들이 굉장히 상세해서 포키의 부지런함에 감탄하며 칭찬할 수밖에 없었다.
위 이미지는 미션동안 일정 조율을 위해 각자의 일정을 적는 공간이다. 나... 왜케 저때에 뭐가 많았지... 아무래도 근로랑 같이 하다보니 뭐가 굉장히 많은 느낌.
참고로 저기에 '내일 오전 산악회 예정'이 적혀있다. 원래는 진짜 가려 했는데, 포키와 내 쪽에 공통으로 적혀 있는 '일단 오늘 한잔 gmg (술 마시기)' 때문에 우테코 4기 백엔드 크루 디우랑 가방이 바껴버려서 오전에 체인지해주느라... 산악회는... 못갔다 ㅎㅎㅎ...
페어 규칙도 함께 작성해보았다. 이번 미션은 시간이 촉박했기 때문에 완벽설계보단 최소기능 구현에 집중하도록 했다. 또, 너무 오랜 시간 집중하면 효율이 떨어질 수 있기 때문에 최대 2시간 작업하고 중간에 쉬는시간을 꼭 가지도록 규칙을 세웠다. 실제로 위 규칙은 잘 지켜졌으며, 규칙을 지킬 때 효율 또한 만족스러웠다!
1단계를 같이 작업하던 중, 3일째 즈음에 포키가 (어떠한 신기한 이유로...) 화상을 입어서 오프라인으로 나올 수 없게 됐다. 처음에는 온라인이기 때문에 구현 속도 면에서나 소통의 원활성 면에서 걱정을 했었다.
다행히 첫 작업을 하면서 이 걱정은 싹 사라지게 됐다. 일단 호흡이 되게 잘 맞았고, 게더에서도 생각보다 원활하게 소통이 이루어졌기 때문이다. 무엇보다 포키와 나는 레벨1 때 함께한 브리조 크루들에 속한 덕분에 원래부터 친한 사이였던 점이 한몫 해준 듯하다.
온라인으로 소통하면서 포키도 나도 서로 모르는 내용을 많이 알려주곤 했다. 카톡으로 도메인 레거시 코드 관련 토론을 하기도 했고, aws에 관해서 머리를 합쳐 같이 고민하기도 했다. 배포가 안될 때 포키가 온라인으로 같이 안되는 이유를 찾아보기도 했다.
그렇게 배포가 성공적으로 됐을 때, 같이 환호했으며 배포 방법을 블로그에 포스팅(https://kth990303.tistory.com/335)하고 포키에게 공유하는 시간을 가졌다.
이 때 있었던 일을 포키가 감동 크루 사연으로 접수해주어 감동크루상을 수상받을 수 있었다. 나중에 포키한테 커피 한번 쏴야겠다 ㅎㅎ
2단계 - 장바구니 API 명세 맞추기
1단계가 끝이 아니다. 사실상 2단계부터가 본격적인 시작이다.
다행히 2단계 장바구니, 주문 쪽 코드들은 코치님들이 어느 정도 레거시 코드를 작성해주셨다. 싹 다 갈아엎는 게 빠를 정도로 구현이 이상한 코드였긴 하지만... ㅜㅜ
한 번 굴러보면서, 맞으면서 성장하라는 느낌으로 작성하신 게 한 눈에 보였다...
그리고 그 느낌은 정확히 일치했다 ㅎㅎ 2단계 구현은 생각보다 오랜 시간이 걸렸었다.
1단계 때에도 api 명세 회의를 많이 하긴 했지만, 2단계가 사실상 핵심이었기 때문에 1단계 때보다 회의를 많이, 그리고 오래 진행했었다.
포키가 온라인으로만 가능했었기 때문에 우테코 슬립 게더타운에 모여서 회의하곤 했다.
한 번은 이런 적도 있었다. 온라인으로 회의하되, 잠실캠퍼스로 갈 수 있는 사람들은 잠실캠퍼스에서 게더타운을 켜서 같이 회의하자는 얘기가 나왔어서 잠실캠에 간 적이 있었다. 그런데 잠실캠이 희한하게 너무나도 조용해서 어리둥절했었는데 알고보니 나 빼고 모두 집에서 게더로 들어와있었다 ㅋㅋ 다행히 잠실캠은 아래 사진처럼 빈백이라는 곳에서 누울 수 있는 공간이 있던 덕분에 나도 편하게(ㅎ... 죄송합니다) 회의할 수 있었다
데모데이 1~2일 전에는 다들 db private 인스턴스와 연동하여 aws 배포를 해두고 api들이 원하는대로 잘 돌아가는지 테스트해보는 시간을 가졌다. 우리는 리다이렉션 관련 api 명세를 데모데이 하루전까지 계속 고민하고 바꾸는 과정을 거쳤었기 때문에 시간이 넉넉하진 않았었다. 덕분에 리다이렉션을 프론트와 백엔드에서 각각 어떻게 처리해주는 게 좋을지 생각해보는 시간을 가질 수 있었다.
또한 아무리 인수테스트를 열심히 했다 해도, 우리가 발견하지 못한 버그라든지 json 객체의 필드명 오타 등 버그가 존재할 수도 있기 때문에 데모데이 하루 전까지 서버가 문제없이 돌아가는지 확인하는 시간을 가졌다.
위 슬랙 대화내용을 보면 알 수 있듯이, 데모데이 전날까지 포키는 온라인으로만 서버를 배포할 수 있었다. 원래는 잠실캠퍼스, 선릉캠퍼스에서만 aws 서버 배포를 할 수 있도록 관리가 돼있었는데, 제이슨이 따로 for forky라는 이름으로 배포 허용 장소에 forky's home ip를 등록해주었다ㅋㅋ
아무튼 네 명 모두 문제없이 api가 테스트되는 걸 확인하고 데모데이를 기다렸다.
데모데이 및 회고
데모데이 당일, 그동안 쭉 온라인으로 활동했었던 포키도 오늘은 오프라인으로 나올 수 있었다.
우리 팀도 그렇지만 다른 팀들도 모두 고생했다는 걸 느낄 수 있었다. 그도 그런것이 다들 눈이 쾡~ 해있었기 때문이다.
데모데이 일정은 시간 관계 상 모든 장바구니들을 발표하진 않았고, 일부 팀들의 장바구니 2~3팀 정도만 랜덤으로 발표하는 시간을 가졌었다. 우리가 만든 포항항 장바구니는 모든 기능이 문제없이 다 돌아간 덕분에 발표 걱정은 없었다. 발표를 할까 말까 고민하던 찰나에 다른 팀들이 장바구니를 발표하겠다고 많이들 손들어서 우리 장바구니는 따로 발표하진 않았다. 어떤 팀 장바구니는 디자인적으로 정말 예뻤었고, 어떤 팀 장바구니는 페이먼츠 미션까지 합쳐서 결제화면을 구현한 팀도 있었다. 확실히 다들 열심히 했다는 게 보이는 장바구니들이었다.
끝나고 난 뒤에 회고를 작성해보았다.
내 회고는 위와 같다. 대부분 좋은 점들만 있다. 그도 그럴만한 것이, 협업하는 경험을 이번에 처음이었기 때문이다. 나는 관심있는 분야라면 새로운 것을 시도해보는 것을 좋아하는 편이다. 그 과정 속에서 굉장히 많은 성장이 이루어질 것이라 생각하기 때문이다. 그리고 실제로 나는 이번 미션을 통해서 배포 방법, api 명세 작성 경험, 인증/인가 관련 부분에서 굉장히 많이 성장할 수 있었다!
다른 크루들의 회고는 좋은 점뿐만 아니라 아쉬웠던 점, 느꼈던 점들이 다양하게 있으므로 아래 링크에서 확인하는 것도 재밌을 것이다~
우리가 작성한 회고와 함께, 우테코 4기 크루들이 작성한 장바구니 협업미션 회고는 아래 링크에서 열람 가능하다.
https://github.com/woowacourse/retrospective/discussions/19#discussioncomment-2903205
회고 끝나고 처음으로 다같이 오프라인으로 모이는 거였으므로 맛난 점심을 먹으러 갔다.
이 날 원래 카츠젠 가기로 했는데, 사람 꽉 차있어서 그 옆에 칼국수/돈가스 집으로 가서 맛나게 점심먹는 행복한 시간을 보냈다~
이번 미션은 정말 배운 게 많았다.
- AWS를 이용하여 배포하는 법
- 프론트와 함께 API 명세를 정해보는 소중한 경험 (Json 객체 형태로 보내주기, 필드명 일치의 중요성, request와 response에 넘겨줄 값, 리다이렉션 관련 처리 등)
- swagger를 이용한 api 문서 자동화 (개인적으로는 restdocs가 더 좋은듯?)
- jwt와 Interceptor, ArgumentResolver 이용한 인증/인가
그리고 팀원들도 만족스러웠다. 팀원들 모두 적극적으로 api 명세 관련 의견, swagger 도입, aws 배포 관련해서 열심히 해주었다.
조금 아쉬웠던 점은 백엔드 인원의 수가 프론트 인원에 비해 좀 많다보니, 프론트엔드 크루들이 있을 때에도 백엔드 한정 얘기를 좀 많이 하게 됐다는 점? 다음 팀 프로젝트 때에는 적절히 조율할 수 있게 노력해봐야겠다.
이 미션을 끝으로 레벨2가 마무리되었다. 지금은 잠시 휴식기를 가지고 있다. 크루들과, 그리고 친구들과 못마셨던 술을 행복하게 마시는 시간을 보내고 있다. 쉬면서 심심할 때마다 다른 밀렸던 블로그 포스팅들도 작성해봐야겠다~
'JAVA > 우아한테크코스 4기' 카테고리의 다른 글
[우아한테크코스] 레벨2 레벨로그 인터뷰 후기 (2) | 2022.07.02 |
---|---|
[220614] 우아한테크코스 레벨2 후기 (0) | 2022.06.15 |
[220525] Spring 경로 조회 미션을 하면서 배운 점 (5) | 2022.05.25 |
[220512] Spring - 지하철 노선도 미션을 통해 배운 점 (4) | 2022.05.12 |
[220507] 우아한테크코스 4기 13주차 후기 (9) | 2022.05.08 |