[땅근마켓 쇼핑몰][당근마켓 클론코딩/토이프로젝트] - 쇼핑몰 MSA 구조로 개발해보기 (Clone Coding/Toy Project)
Intro
평소 클라우드(Kubernetes, Container, IaaS, PaaS, SaaS)에 대해서만 연구 하며, 실제 클라우드 위에서 MSA를 어떻게 구축하고, 서비스를 제공하는지에 대해 관심 있던 와중에 Spring도 공부하고, MSA 구조로 서비스도 구축해 보고 싶어서 시작하게 되었다.
Project
제공 기능
- Web UI를 이용해 상품 조회/등록, 채팅기능
- Android Application을 통해 상품을 조회하고, 푸시알림을 수신하는 기능
- Web UI를 이용해 공지사항/광고 푸시알림을 등록 하고, Android Application으로 푸시가 전송되는 기능
- 구축한 Auth 서버를 이용한 회원 가입/로그인 기능
전체 구조 (Architecture)
Modules
Product API Server
Spring Boot & JAVA를 이용하여 구현 완료
Notification Server
Spring Boot & Kotlin, Firebase FCM을 이용하여 구현 완료
Chatting Server
상품별 채팅 기능을 제공, Spring Boot & Kotlin, Embeded Redis, 웹소켓을 이용하여 구현 완료
Web UI
JavaScript, React를 이용해서 구현 완료
- 상품 리스트, 디테일 정보 확인, 상품 등록, 댓글 확인, 등록 등의 상품 관련 기능들이 가능, 회원 가입가능
- 로그인한 사용자의 Role을 이용하여, 가입 후 로그인 한 사용자만 상품 등록이 가능.
- 가입 후 ‘Admin’ Role 획득 시 푸시알림 등록이 가능
Android Application
Flutter를 이용하여 구현 완료
App을 설치한 사용자들은, 관리자가 Web UI에서 보내는 Notification들을 수신할 수 있다.
[참고 Post - Flutter Android App의 Firebase 연동 & FCM Cloud Messaging Test]
API Gateway
Spring Boot, Netflix Zuul, Kotlin를 이용해 구현 완료
Service Registry (for Service Discovery Pattern)
Netflix Eureka를 이용하여 구현 완료
Auth Server
Keycloak 오픈소스를 이용하여 구현 완료
DB
Amazon RDS 이용
상품 사진 Storage
Amazon S3를 이용
사용 기술 요약
- 언어: Java, Kotlin, Javascript, CSS, HTML
- 프레임워크: Spring Boot, Flutter, React
- 이용 서비스: Amazon RDS, Amazon S3, Amazon Lightsail, Amazon Route 53
- 기타: Gradle, NPM, Docker, Redis
TODO List
[ ] 다중 API 서버 동작 시 Product, Comment 자원 관리 고려
[ ] Circuit breaker
[ ] configuration server
Leave a comment