본문 바로가기

우아한 테크코스 5기

[우아한 테크코스] 레벨 2 - 쇼핑 주문(협업) 미션 회고

회고글은 굉장히 오랜만에 쓰네요

LEVEL 2동안 새로운 개념들을 허겁지겁 익히기만 하고 제대로 정리하지 못한 거 같아 불안한 감정이 듭니다

 

쇼핑 주문(협업) repository

https://github.com/Ohjintaek/jwp-shopping-order

 

GitHub - Ohjintaek/jwp-shopping-order

Contribute to Ohjintaek/jwp-shopping-order development by creating an account on GitHub.

github.com

 

 

🙄 무엇을 했지?

쇼핑 주문
  • 우테코 LEVEL 2 두 번째 미션이었던 '쇼핑 장바구니'에서 주문 기능과 재화 관련 주문, 주문 목록 확인 기능을 추가하는 미션이다. 특히 재화 관련 기능은 백엔드 크루들끼리 진행하는 것이 아닌 한 팀으로 선정된 프론트엔드 크루들과 협의하여 어떤 기능을 구현할지 정했다.
  • 백엔드 크루 3인이 구현은 각자 하지만 하나의 DB를 사용하기로 했다. 협업이 미션의 중요한 목표 중 하나라고 생각했기 때문에 DB설계를 셋이 같이 하는 시간을 가졌다.
협업
  • 처음으로 백엔드 크루가 아닌 우테코 크루들과 같이 진행한 미션이다. 프론트엔드 크루 두 분과 같은 팀이 되어 여러 번의 회의도 가지며 미션을 진행했다.
  • 첫 회의 때는 감사하게도 프론트엔드 크루 분들이 먼저 잠실 캠퍼스로 와 주셔서 4시간 가량 회의 겸 모각코를 진행했다. 사실 회의라기보다는 1단계 미션을 위해 서로의 서버가 잘 연결되는지를 확인하고 CORS 문제를 잘 해결할 수 있는지를 확인하는 자리를 가졌다.
  • 두 번째 회의 때는 백엔드가 선릉 캠퍼스로 가서 어떤 기능을 구현할지와 구체적인 API 설계에 대해 얘기를 나누었다. 기능 구현을 위해 프론트엔드 분들과 얘기를 나누다 보니 프로그래밍 외적으로 나오는 얘기들이 꽤나 많은 것이 재밌었다. 특히 사용자 경험을 위해 어떻게 해야 할지 고민하기, 실제 성공한 서비스들을 참고해보기 등의 경험이 새로웠다.
배포
  • LEVEL 2에서 웹 프로그래밍을 배우면서 항상 로컬 환경에서만 테스트를 했었는데 이번에 우테코에서 AWS EC2 인스턴스를 지원해줘서 실제 서버를 배포하는 경험을 해 보았다.
  • 배포 과정에서 사용하는 명령어들을 미리 작성하는 쉘 스크립트, EC2 인스턴스 사용방법, 적용하진 않았지만 로깅(Swagger, Restdocs), CI/CD(Jenkins, Github Actions) 등 다양한 개념 및 사용법에 대해 학습해보았다.

 

 

 

👍 좋았던 점

더욱 넓어진 고민의 폭
  • 사실 LEVEL 2동안 가장 고민을 많이 했던 부분은 Architecture Layer의 적용이었다. LEVEL 1 미션을 진행할 때는 Service 레이어가 아직까지는 불필요하다는 생각으로 적용하지 않았었다. 하지만 데이터베이스를 사용한 뒤부터는 영속성 계층을 관리해주어야 하는 계층을 만들어야 했고, 컨트롤러는 웹 요청을 받아들이기 위한 역할을 해야 했다. (전에는 컨트롤러를 마치 도메인 로직을 관리하는 서비스처럼 사용하고 있었다.) 자연스럽게 Service 레이어뿐만 아니라 DAO, Entity 등 다양한 개념들을 접하게 되었는데 어떻게 사용해야될지 개인적인 기준을 잡기 힘들었던 기간이었다.
  • 하지만 협업을 진행하면서 완전히 새로운 고민들이 떠오르기 시작했다. 프론트엔드 크루들과 같이 API 상세를 설계하는데 이건 도대체 어떻게 문제를 해결해야 하지 하는 문제들이 많이 생각났다. 당장은 능력부족이라 고민만 기록해둔 채로 미션을 진행했지만 LEVEL 3 이후로부터 계속해서 고민해야 부분들일 것이다. 떠오른 문제들은 다음과 같다.
    • 서버 부하 관련 처리 : 너무 많은 요청량이 들어올 경우 어떻게 처리해야 할까?
    • 동기화 관련 처리 : 프론트 측 서버와 백엔드 측 서버의 동기화를 어느 시점에 처리해주어야 할까?
점점 익숙해지는 테스트코드 작성
  • 이전에는 Junit5와 assertj를 이용한 assertThat()을 주로 사용해서 테스트 코드를 작성했었는데 스프링을 사용하고나서부터는 RestAssured나 mockito와 같은 또 다른 도구들을 익혀야했다. 사용법이 익숙지 않아 초반 미션들에서는 내가 기능들을 제대로 테스트하는지도 확신하기 힘들었고, 테스트하고 싶은 내용이 있음에도 사용법을 몰라 제대로 된 테스트코드를 작성하지 못 하는 경우가 많았다.
  • 하지만 점점 미션을 진행해가면서 다른 크루들이 어떻게 사용하는지 페어 프로그래밍을 하면서 배우니 점점 더 익숙해졌다. 특히 테스트 코드 작성이 너무 느려서 미션을 진행하는데 시간이 오래 걸렸었는데, 그래도 이번 미션에서는 특히 테스트 코드 작성이 빨라진 것을 스스로 느낄 수 있었던 점이 좋았다.

 

 

🤔 아쉬웠던 점

새로 배운 개념의 정리 미흡
  • LEVEL 2에서는 노션에 거의 기록을 하지 않았다. 이전에 회고를 쓸 때 거의 노션에 기록한 내용에 의존해서 썼기 때문에 자연스레 회고 작성도 미루게 되었다. 그래서 이번 회고도 쇼핑 주문에 대한 회고가 아닌 LEVEL 2 전체에 대한 느낌으로 작성하게 되었다.
  • 사실 더 심각한 문제는 내가 배운 개념을 내가 제대로 알고 있는지 알기가 힘들다는 것이다. 이 부분은 레벨 로그를 작성하면서 조금이라도 채워나가야 하지 않을까 싶다. 나에게 블로깅을 통해 성장하는 것은 잘 맞지 않다고 느끼더라도 계속해서 기록하는 습관을 가져가고 싶었는데 벌써 무너지고 있는 것이 아쉬운 부분이다.

 

 

 

🏃‍♂️ 소감/앞으로의 계획

  • LEVEL 2 시작한지가 엊그제같은데 어느새 방학을 앞둔 시점이 되었다. 개인적으로는 정말 힘들었다고 생각한다. 스프링을 처음 익혀야 했는데 끊임없이 들이닥치는 파도를 눈앞에 둔 심정이었다. 그래도 익혀야 할 거 잘 익히고, 어느 정도 익숙해졌다고는 생각하니 중간의 빈 부분들은 앞으로 조금씩 채워나가면 어떻게든 되지 않을까 싶다.
  • 그래도 고무적인 건 마지막 협업 미션을 진행하면서 기능 구현을 위해 팀끼리 주도적으로 회의한 경험이 아주 재밌었다는 것이다. 처음 개발자가 되기로 마음먹었을 때 무언가를 스스로의 힘으로 만들어낸다는 느낌이 좋았기 때문이었는데 다시 한 번 그 감정을 느껴서 들떴던 것 같다. 앞으로의 우테코 생활이 좀 더 기대가 된다!!
  • 노션을 좀 더 부지런히 들어가고 싶다. 기록을 습관화하기 위해 어떻게 해야 할지 좀더 고민해봐야겠다. 블로그에 글을 쓸 때 검색하면 쉽게 찾을 수 있는 글은 안 쓰려고 했는데 LEVEL 2동안은 '꾸글쓰' 활동을 위해 거의 대부분 번역한 것을 많이 올렸었다. 프로젝트 진행하면서 트러블슈팅한 내용들을 최대한 작성해보도록 하자.