[땅근마켓 쇼핑몰][당근마켓 클론코딩/토이프로젝트] - 쇼핑몰 MSA 구조로 개발해보기 (Clone Coding/Toy Project)

Intro

평소 클라우드(Kubernetes, Container, IaaS, PaaS, SaaS)에 대해서만 연구 하며, 실제 클라우드 위에서 MSA를 어떻게 구축하고, 서비스를 제공하는지에 대해 관심 있던 와중에 Spring도 공부하고, MSA 구조로 서비스도 구축해 보고 싶어서 시작하게 되었다.


Project

제공 기능

  1. Web UI를 이용해 상품 조회/등록, 채팅기능
  2. Android Application을 통해 상품을 조회하고, 푸시알림을 수신하는 기능
  3. Web UI를 이용해 공지사항/광고 푸시알림을 등록 하고, Android Application으로 푸시가 전송되는 기능
  4. 구축한 Auth 서버를 이용한 회원 가입/로그인 기능

전체 구조 (Architecture)

Project Structure

Modules

Product API Server

Spring Boot & JAVA를 이용하여 구현 완료

github repo

Project API

Notification Server

Spring Boot & Kotlin, Firebase FCM을 이용하여 구현 완료

github repo

Chatting Server

상품별 채팅 기능을 제공, Spring Boot & Kotlin, Embeded Redis, 웹소켓을 이용하여 구현 완료

github repo

chatting feature

Web UI

JavaScript, React를 이용해서 구현 완료

github repo

  • 상품 리스트, 디테일 정보 확인, 상품 등록, 댓글 확인, 등록 등의 상품 관련 기능들이 가능, 회원 가입가능
  • 로그인한 사용자의 Role을 이용하여, 가입 후 로그인 한 사용자만 상품 등록이 가능.
  • 가입 후 ‘Admin’ Role 획득 시 푸시알림 등록이 가능

ui home

ui login

ui product list

Android Application

Flutter를 이용하여 구현 완료

github repo

App을 설치한 사용자들은, 관리자가 Web UI에서 보내는 Notification들을 수신할 수 있다.

[참고 Post - Flutter Android App의 Firebase 연동 & FCM Cloud Messaging Test]

mobile app

API Gateway

Spring Boot, Netflix Zuul, Kotlin를 이용해 구현 완료

github repo

Service Registry (for Service Discovery Pattern)

Netflix Eureka를 이용하여 구현 완료

github repo

mobile app

Auth Server

Keycloak 오픈소스를 이용하여 구현 완료

Install Keycloak using docker & Basic Settings 글

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