기획 의도 및 기능
Plant(환경/사회) + Amplify(통합)
=> 가치있는 결제의 시작, 플랜티파이(PlantiFy)
주요 기능
•
Pay - 페이 결제 시스템
◦
PlantiPay: 나만의 페이, 피피 / 한 번의 터치로 한 번의 결제
•
Funding - 온라인 펀딩 참여 / 내 참여 내역
◦
PlantiFunding: 손쉬운 기분 펀딩, 피프 / 쌓여있는 포인트로 언제 어디서나
•
Forest - 캐시로 나만의 숲 꾸미기
◦
PlantiForest: 나만의 숲 꾸미기, 피포 / 자유롭게 꾸미는 내 손 안의 숲
•
Card - 카드 추천 서비스 / 더 큰 혜택 찾기
◦
PlantiFit: 다양한 혜택 한 번에, 피핏 / 숨겨진 카드 혜택까지 모두 모아
•
Chat - 사용자 맞춤 기부 펀딩 추천
◦
PlantiPick: 기부 도우미, 피픽 / 나눔의 길을 안내하는 길잡이
역할
•
PM / BE(SpringBoot, FastAPI) / Design(Figma)
•
기능명세서/ API 명세서/ ERD / 개발 아키텍처
•
백엔드 개발(MSA) - Spring Security, Jasypt
◦
플랜티파이 서비스
▪
auth service
•
Kakao Login, JWT
▪
admin service
•
관리자 페이지
▪
item service
•
GraphQL
▪
cash service
▪
funding service
▪
chat service
•
gRPC, WebFlux + Netty
▪
apiUser service
▪
notification service
•
SSE
▪
card service(FastAPI)
◦
결제 서비스 - 2PC, 분산락(Redis)
▪
pay service
•
JWT
▪
transaction service
▪
payment service
•
AWS EKS, Docker, Helm, FluxCD, Git Actions -> 서버 배포
구현
회고
•
결제 시스템(Pay-Transaction-Payment)
◦
결합도
◦
외부 클라이언트
◦
실제 결제할 때 한 번 더 확인?
◦
포인트 및 실결제
◦
계좌 예외 처리
◦
취소 및 환불
•
Acitivity History
•
관리자
•
코드 분리
•
아이템(GraphQL)
•
채팅방(gRPC, WebFlux + Netty)
이번 개발에는 단순 구현보다 트러블 슈팅과 기술의 필요성에 대해 집중해서 개발했다.
도메인에 대한 깊은 이해가 필요하다는 것을 느꼈다. 특히, 결제 로직을 구현하면서 여러 방법 중 2PC를 선택했는데 다음에는 Saga패턴을 사용해 개발하고 두 서비스를 비교하고 개선하는 작업을 해보고 싶다.
또한, 고도화 작업도 중요하지만, 버전별로 나눈 작업의 필요성을 깨달았다.