Skip to content

장호정, 양현진, 박경희, 노다민, 윤채연, 김시우

Notifications You must be signed in to change notification settings

beyond-sw-camp/be09-2nd-iiiiii-savepig

Repository files navigation

🐷 Save Pig (세이브 피그)

표지

1조: 장호정, 양현진, 박경희, 노다민, 윤채연, 김시우


기획 배경

기획 소개 - 현재 소비 트랜드 (1)

평균 점심 식사 가격 만원 시대! 들어오는 나의 급여, 용돈은 적은데.. 합리적인 소비를 할 수 있는 방법이 없을까? 있다면 어디에서 찾을 수 있을까?
=> 같은 목적(절약하고자 하는 의지)을 가진 유저들끼리 모여 착한 소비를 찾아 실천해보자!

• 서비스 소개 및 차별점

서비스 소개 - 차별점 (1)

그룹을 만들어 서로의 가계부 공유한다

  • 비슷한 목적을 가진 회원들끼리 그룹을 만들어 다른 그룹원의 착한 소비를 구경할 수 있습니다.

착한가격업소 목록을 지도에서 찾기

  • 행정안전부에서 제공하는 착한가격업소 목록을 확인하여 착한 가격의 가게를 검색할 수 있습니다.

다른 사람의 남긴 가게 리뷰 확인하기

  • 가게에 대한 리뷰를 작성할 때 총 인원수/총 지출금액/한줄리뷰를 남길 수 있고, 세이브피그는 입력한 리뷰를 바탕으로 1인당 평균 소비를 계산하여 지도에 표시합니다.
  • 각자 자신 만의 판단하에 적절한 금액이라고 생각되는 가게를 찾아볼 수 있습니다.

☑️ DDD - Bounded Context

Domain-Driven Design (도메인 주도 설계)

  • 이번에는 기획 단계에서 도메인 주도 설계 기법을 도입하여 세이브피그에 사용되는 도메인을 추출하였습니다.

• 회원, 자산, 고정지출 Context

image

  • 회원: 세이브피그의 유저들
  • 자산: 가계부를 작성할 때 이용된 유저의 자산 (계좌, 카드 등)
  • 고정지출: 고정으로 지출되는 항목 (OTT 서비스 구독료, 주거 관리비 등)

• 가계부 내역, 가계부 카테고리, 가계부 댓글 Context

image

  • 가계부: 회원의 수입/지출/이체 내역
  • 가계부 카테고리: 수입 카테고리 - 급여, 금융이자, 지출 카테고리 - 식비/관리비/통신비 (회원마다 본인의 가계부 카테고리를 꾸려나갈 수 있습니다.)
  • 가계부 댓글: 가계부에 달린 댓글 (그룹 멤버가 남긴 댓글 or 본인이 메모성으로 남긴 댓글)

• 가게, 가게 리뷰, 리뷰 첨부파일 Context

image

  • 가게: 세이브피그에서 관리하는 가게 목록 (착한가격 업소도 포함)
  • 가게 리뷰: 가게에 작성된 회원들의 리뷰
  • 리뷰 첨부파일: 리뷰 작성 시 사용된 파일

• 그룹, 그룹 게시글, 댓글, 첨부파일 Context

image

  • 그룹: 가계부를 공유할 수 있는 회원 모임의 단위
  • 그룹 게시글: 그룹 멤버들끼리 공유되는 작은 게시판(커뮤니티)
  • 그룹 게시글 댓글: 그룹 게시글에 달린 댓글 (대댓글 포함)
  • 그룹 게시글 첨부파일: 그룹 게시글에 사용된 파일

• 커뮤니티 게시글, 댓글, 첨부파일 Context

image

  • 커뮤니티 게시글: 세이브피그의 전체 회원들에게 공유되는 게시판(커뮤니티)
  • 커뮤니티 댓글: 커뮤니티 게시글에 달린 댓글 (대댓글 포함)
  • 커뮤니티 첨부파일: 커뮤니티 게시글에 사용된 파일


☑️ DDD - 연관 관계

image



WBS

KakaoTalk_Photo_2024-09-05-15-33-14

☑️ 개념 모델링

image



☑️ 논리 모델링

공유가계부_논리모델링



☑️ 물리 모델링

공유가계부_물리모델링


☑️ 테이블 DDL

테이블 DDL 보러가기 ↗️


☑️ 개발적 측면 특징들

1. 서버 구조

Slide 16_9 - 26

  • 회원/가계부/나머지 도메인 3개의 마이크로서비스
  • MariaDB 데이터베이스
  • Eureka 서버와 Gateway 서버

2. 공통으로 사용될 응답(Response) 클래스

Slide 16_9 - 19

  • API 응답을 내보낼 때 정해진 틀로 응답을 보내기 위한 클래스
  • 추후 유지보수 관점에서 용이하다 생각되어 제작

3. 커스텀 예외(Exception) 클래스

Slide 16_9 - 22

  • 예외 상황 케이스 별로 Exception 클래스를 제작하여 추후 오류 발생에 대한 빠른 대응 가능
  • 이 또한 유지보수 관점에서 용이하다 생각되어 제작

4. FeignClient를 통한 다른 마이크로서비스와의 통신

Slide 16_9 - 30
Slide 16_9 - 32

  • 가계부 등록 기능을 구현할 때 FeignClient를 이용하여 다른 마이크로서비스의 조회 Controller를 호출

☑️ API TEST

1. 회원가입

1 회원가입

2. 로그인

2 로그인

3-a. 회원정보 조회

3 회원정보조회

3-b. 회원정보 조회(with empty token)

3-a 회원정보조회(with empty token)

4. 자산 등록

4 자산등록(계좌)

5-a. 가계부 카테고리 등록(지출)

5-a 가계부카테고리등록(지출)

5-b. 가계부 카테고리 등록(수입)

5-b 가계부카테고리등록(수입)

6. 존재하는 가게 목록 조회

존재하는 가게 목록 조회

7-a. 가계부 작성(9월 5일 지출)

6-a 가계부작성(9월5일지출)

7-b. 가계부 작성(9월 5일 수입)

6-b 가계부작성(9월5일수입)

7-c. 가계부 작성(9월 15일 지출)

6-c 가계부작성(9월15일지출)

8. 가게가 추가되었는지 확인

가게가 추가되었는지 확인

9. 회원의 자산 조회

7 유저의자산조회

10. 가계부 1개 상세조회

8 가계부1개상세조회

11. 특정 날짜의 가계부 목록 조회(9월 5일)

9 특정날짜의가계부목록조회(9월5일)

12. 가게 리뷰 작성

10 가게리뷰작성

13. 가게의 리뷰 목록 조회

11 가게의리뷰목록


☑️ 동료 평가

<<장호정>> 님이 받은 동료 평가

  • 양현진: 개발에 대해 처음에는 조금 어려워 보이시는 듯 했으나 점점 개발이 진행되면서 능숙해지시는 모습이 멋졌습니다! 주말에도 시간을 할애하여 열심히 Pull Request를 보내주시는 모습에 감동받았습니다. 굉장한 노력파이시고 닮고 싶은 부분입니다 ㅎㅎ
  • 박경희: DA#을 이용한 물리 모델링을 해주셨고 발표 때 프로젝트 구조에 대한 설명을 자세히 해주셔서 프로젝트 구현에 큰 도움이 되었습니다.
  • 노다민: DA#을 이용해서 논리 모델링을 작성해 주셨습니다. 백엔드 개발에서 자산 도메인과 커뮤니티 도메인을 구현해 주셨고, 1차 발표에서 개념/논리/물리 모델링 파트를 맡아 발표해 주셨습니다. 필요한 메서드를 요청드렸을 때 빠르게 구현해 주셔서 감사했습니다!
  • 윤채연: 모델링 정리부터 코드 개발까지 정말 열심히 참여해주셨습니다 ! 깃허브에 에러가 생겨서 해결하는데 어려움이 있었는데 도움을 주셔서 감사했습니다 ! 맡은 부분 외의 코드 개발도 먼저 나서서 열심히 해주신 덕분에 일찍 마무리할 수 있었습니다 !
  • 김시우: 자산 및 커뮤니티 기능을 구현해 주셨습니다. GitHub 전체적인 세팅 및 논리 모델링을 바커 표기법으로 작성해주셨습니다.

<<양현진>> 님이 받은 동료 평가

  • 장호정: 항상 리더처럼 개발 방향을 이끌어 주시면서, 분리한 서버들을 하나의 파일로 합쳐 테스트까지 하시느라 고생 많으셨습니다.
  • 박경희: 팀원들의 의견을 잘 취합하셨고 서비스 패키지 구조 등을 잘 구성해 주셔서 프로젝트 완성도를 높이는데 큰 도움이 되었습니다.
  • 노다민: 프로젝트 초반에 예외 클래스, 설정 클래스 등을 세팅해 주셔서 개발을 편리하게 진행할 수 있었습니다. 백엔드 개발에서 가게 도메인을 맡아서 구현해 주셨고, MSA 분리작업을 주도적으로 진행해 주셔서 프로젝트가 잘 진행될 수 있었던 것 같습니다. 또한 2차 발표에서 프로젝트 구조와 시연을 발표해 주셨습니다. 프로젝트를 진행하면서 모르는 부분을 질문했을 때 많은 도움을 주셨고, 팀을 잘 이끌어 주셔서 많은 점들을 배울 수 있었던 것 같습니다!
  • 윤채연: 프로젝트 전 기간동안 팀원들을 정말 잘 이끌어주셨고 진행 과정에서 새로운 방법을 시도하려고 많이 노력해주셔서 덕분에 다양한 경험을 할 수 있었습니다! 뿐만 아니라 현재 팀의 상황, 앞으로 해야할 일 등을 명확하게 인지하고 다음 단계로 잘 이끌어주셔서 방황하지 않고 잘 마무리할 수 있었습니다 !
  • 김시우: 전체적으로 프로젝트의 방향성을 제시해주셨고 (Slack 활용하는 등) 의견을 내어 잘 이끌어 주셨습니다. 최종 발표시 postman을 통한 시현 과정을 잘 설명해 주셨습니다.

<<박경희>> 님이 받은 동료 평가

  • 장호정: 빠른 개발 속도로 여러 파트를 개발하시는 게 대단하다고 느꼈고, 항상 개발 팁을 공유해 주셔서 감사했습니다.
  • 양현진: 개발 속도가 정말 빨라서 저희의 이슈 목록 정리에 큰 도움을 주셨습니다. 그리고 개발 중간 중간에도 기획적으로 오류가 없는지 생각해주셔서 기획 단계에 생각하지 못했던 부분도 찾아낼 수 있었습니다!! 묵묵히 개발 열심히 하는 모습도 너무 감동입니다. 그동안 고생하셨습니다!!
  • 노다민: 백엔드 개발에서 가계부 커뮤니티, 그룹, 가계부 카테고리 등 다양한 도메인을 맡아서 개발해 주셨습니다. 또한 지원 도메인의 DDL 작성 등 놓치기 쉬운 부분을 작성해 주셨습니다!
  • 윤채연: 모델링 설계 및 전반적인 코드 작성 과정에서 다양한 의견을 주셔서 덕분에 오류를 잡을 수 있었고, 꼼꼼하게 모델링을 검토해주신 덕분에 이전에 생각해보지 못한 부분도 고려할 수 있었습니다. !
  • 김시우: 가계부 카테고리 및 그룹 기능을 구현해주셨습니다.기획 단계에서 놓친 부분이나 모순 점에 대해서 의견을 많이 내 주셨습니다.

<<노다민>> 님이 받은 동료 평가

  • 장호정: 우리 프로젝트의 핵심 기능을 너무 잘 개발해 주셨고, 시연 발표를 위해 서버 테스트까지 하시느라 고생 많으셨습니다.
  • 양현진: 개발 에이스라고 생각합니다. 그리고 수업 때 배우지 않은 Spring 스케줄러를 이용하여 이슈를 해결하시는 모습이 너무 멋졌습니다. 다음 번에도 만나면 좋을 팀원 입니다!!ㅎㅎ
  • 박경희: 팀원들의 의견을 꼼꼼히 정리하셨고 발표도 잘 해주셔서 프로젝트 진행에 도움이 되었습니다.
  • 윤채연: 개인적으로 이해하지 못한 부분에 대해 잘 설명해주셔서 도움을 많이 받았습니다 ! 제가 코드 개발을 어려워해서 초반에 막막했는데 설명을 잘 해주신 덕분에 많이 이해했고 잘 마무리할 수 있었습니다 .!
  • 김시우: 가계부 기능을 구현해주셨습니다. Slack 세팅과 Swagger를 사용하는 방법을 잘 알려주셔서 빠르게 진행할 수 있었던 것 같습니다.

<<윤채연>> 님이 받은 동료 평가

  • 장호정: 기획을 시각화하여 발표하시느라 고생하셨고, 맡은 기능에 대해 확실히 이해하신 후 잘 개발해 주셔서 감사했습니다.
  • 양현진: 개발을 어려워하시는 모습을 보이시긴 했으나 다른 팀원의 코드를 참고해서라도 끝까지 자신의 임무(?)를 마치는 모습이 책임감 있어서 너무 좋았습니다!! 짱!! 그리고 매 발표 때마다 피피티를 만들어 주셨는데 제가 유치하게 만든 피피티 초안을 너무 고급스럽게 만들어주셔서 발표하는 데에 힘을 얻었습니다. 감사합니다!!
  • 박경희: 발표때마다 ppt를 예쁘게 만들어 주셨고, 발표도 잘 해주셔서 프로젝트가 사람들에게 잘 소개가 되었습니다.
  • 노다민: 1차 발표를 맡아 프로젝트 설명/기획 파트를 발표해 주셨습니다. 또한 백엔드 개발에서 가게 리뷰 파트를 맡아서 구현해 주셨습니다!
  • 김시우: 리뷰기능을 구현해 주셨습니다. 저희 프로젝트의 표지(Readme)로고 제작 및 중간발표&발표 ppt를 완성해 주셨습니다.

<<김시우>> 님이 받은 동료 평가

  • 장호정: 회원가입과 로그인 기능을 개발하는 게 어려웠을텐데, 책임지고 열심히 개발하셔서 결국 잘 해내신 게 정말 대단하다고 생각했습니다.
  • 양현진: 스프링 시큐리티라는 어려운 부분을 하나 맡아서 진행해주셨는데 혼자 공부하셔서 결국엔 해내시는 모습이 너무 멋졌습니다!! 앞으로 Spring Security에 대해 궁금한 게 있으면 물어볼 예정입니다 ㅎㅎ
  • 박경희: 프로젝트 기능 중 어려운 부분을 잘 구현해 주셔서 프로젝트 시현이 원활하게 진행이 되었습니다.
  • 노다민: Spring Security 파트를 맡아 회원가입, 로그인, 회원정보 조회 등을 구현해 주셨습니다! 또한 모놀리식 아키텍처 구조를 MSA로 변경하는 작업을 수행할 때, Member Server를 분리하는 작업을 수행해 주셨습니다.
  • 윤채연: 다양한 아이디어를 내주셔서 수월한 진행이 가능했고 개발 단계에서 복잡한 로그인 부분을 잘 구현해주셨습니다. 개발 중간에 오류가 생기면 먼저 도와주셔서 도움을 많이 받았습니다. ! ! !

About

장호정, 양현진, 박경희, 노다민, 윤채연, 김시우

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages