/bunjang

Primary LanguageJava

bunjang

소개

  • https://ec2-13-125-245-57.ap-northeast-2.compute.amazonaws.com 에 배포 (현재 aws 프리티어 사용기간 종료로 어플리케이션 서버, 젠킨스 서버 모두 종료한 )
  • 중고물건 거래 플랫폼 번개장터의 백엔드 API 클론 프로젝트 입니다.
  • 번개장터 웹/앱의 기능들을 사용해보며 구현했습니다.
  • 평소 자주 이용하던 어플인 번개장터의 도메인에 관심이 있던차 객체지향적인 공부를 위해 프로젝트 진행의 필요성을 느껴 시작하게 되었습니다.
  • 객체지향적이고 클린한 코드를 작성하며 드는 고민들을 경험하려고 노력했습니다.
  • 현재는 V1으로 전체적인 기능 구현에 초점을 맞추었고 V2는 각 기능에 대한 기술도입을 생각 중입니다. (채팅서비스 구현을 위한 웹소켓 기술도입, 검색기능 개선을 위한 엘라스틱 서치 등등)

기술

백엔드

  • Java
  • Spring boot
  • Spring Data Jpa
  • QueryDsl
  • Mysql
  • Gradle
  • Aws S3

데브옵스

  • Aws EC2
  • Jenkins
  • NGINX

기능

  • 서비스 로직과 테스트 로직 모두 최대한 가독성을 생각하며 구현했습니다.
  • 책임과 역할에 집중해 객체간 결합도를 낮추고 응집력을 높혀보려 노력했습니다.
  • 혼자 진행했지만 여러 개발자와 협언한다는 가정하에 git flow를 지키려고 노력하며 개발했습니다.
  • TDD방식으로 기능구현을 진행해보며 개인적인 TDD의 장단점을 느꼈습니다.
  • DB설정의 경우 db.yml파일의 버전을 local, dev, live로 개발환경에 맞게 나눠서 구현했습니다.
  • 검색기능의 경우 데이터가 많기 때문에 검색 컬럼들의 카디널리티를 기준으로 결합인덱스를 설정했습니다.
  • 배포환경의 경우 Jenkins를 통한 CI/CD 구축과 배포시 서비스에 중단이 생기는 단점을 해소하고자 무중단배포 방식으로 구현했습니다.

아쉬운점

  • TDD를 지키며 테스트 커버리지를 높은 수준으로 가져가려고 했으나 무조건 TDD를 고집하기보단 필요할때 사용하는게 제일 효율적인것 같다 느꼈습니다.
  • 더 좋은 코드와과 좋은 테스트에 대한 공부의 필요성을 많이 느끼게 되어 현재는 디자인패턴을 공부하고 있습니다.
  • 많은 기술들을 당장 도입해보지 못해 아쉽습니다. 토이프로젝트로 코드개선도 꾸준히 하고 공부한 기능을 하나씩 늘려나갈 생각입니다.(ex. Flyway, 엘라스틱 서치, 채팅서비스등등)
  • 혼자 백엔드 API만 구현하다 보니 응답에 대한 처리가 애매해졌고 프론트엔드 개발자와 협업하는 과정의 필요성을 느껴 지금은 팀프로젝트를 하나 진행하고 있습니다.
  • jwt 인증-인가 방식에 대해 고민하며 다중 서버에서 jwt의 역할과 구현방식을 다시 고민해보고 session에 대한 학습의 필요성이 느껴졌습니다.