Skip to content

rainhyeon/React_SpringBoot_MySQL_MSA_Proj

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

58 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📍 MSA 구조전환으로 Cloud Native 환경 구축 프로젝트

프로젝트 개요

  • 기존 모놀리식(Springboot-JPA-Blog) 구조를 MSA 아키텍처로 전환
  • React (Frontend), Spring Boot (Backend), MySQL (DB) 구성
  • Docker 기반으로 각 서비스 컨테이너화 및 배포 자동화
  • API 중심 설계로 프론트/백엔드 완전 분리

모놀리식의 문제점

  • JSP 기반 모놀리식 구조로, 프론트/백엔드가 강하게 결합
  • 기능 추가/수정 시 전체 빌드 & 배포 필요
  • 사용자 서비스와 게시판 서비스가 단일 DB 의존 → 서비스 독립성 부족

아키테처

image (63)
  • Frontend: React SPA, Nginx 정적 파일 서빙 및 API 프록시
  • User-service: 회원가입, 로그인, 사용자 관리
  • Board-service: 게시글 CRUD
  • Databases: 각 서비스별 독립 MySQL DB

주요 기능

  • 회원가입 / 로그인 (user-service + MySQL)
  • 게시글 작성 / 조회 (board-service + MySQL)
  • React 프론트엔드 → Axios → Nginx → Spring Boot API 연동
  • Docker Compose 기반 멀티 컨테이너 환경 실행

트러블 슈팅

  • Spring Boot/Java 버전 불일치 → Boot 2.x → 3.x 업그레이드
  • JAR 빌드 시 이름 불일치 → pom.xml의 artifactId 수정
  • 서비스 포트 충돌 → Docker 포트 매핑 수정
  • DB 연결 오류 → Docker 네트워크 공유 및 hibernate.dialect 설정 추가
  • Nginx 404 에러 → try_files $uri /index.html; 및 /api/ proxy 설정
  • React Build 시 OpenSSL 오류 → ENV NODE_OPTIONS=--openssl-legacy-provider 적용

Docker 설치 - ubuntu 환경

curl -fsSL https://get.docker.com -o get-docker.sh
chmod +x get-docker.sh
./get-docker.sh

Docker 설치 확인

ip add

image

docker compose로 빌드 및 실행

mv React_SpringBoot_MySQL_MSA_Proj WebSite
cd WebSite
docker compose up -d --build

docker compose로 frontend 만 Build 및 실행

cd WebSite
docker compose build frontend
docker compose up frontend -d

docker compose로 user-service 만 Build 및 실행

cd WebSite
docker compose build user
docker compose up user -d

docker compose로 user-db 만 Build 및 실행

cd 0326_Docker_Toyproj
docker compose build user-db
docker compose up user-db -d

docker log 확인 - frontend

docker ps # NAME 확인
docker logs {frontend NAME}

Docker ps 확인

  • 포트 확인 image

컨테이너 역할

  • user: 로그인/회원가입
  • user-db: 회원 정보 저장 DB (Database: users, Table: users)
  • board: 게시판 글쓰기
  • board-db: 게시판 글 저장 DB (Database: board_db, Table: board)

웹 접속 방법

  • Frontend
http://{localhost}:3000
  • User API
http://{localhost}:8081/api/users
  • Board API
http://{localhost}:8082/api/board

HomePage

image

LoginPage

image

RegisterPage

image

WritePage

image

  • 꼭 회원가입한 username으로 사용자 ID를 작성해야한다

DB에 들어간 데이터 내용 확인

user-db 확인

docker ps # user-db NAME 확인
docker exec -it {user-db NAME} sh
> mysql -u root -ppassword # mySQL 접속
> SHOW DATABASES; # DB 명 확인
> use users; # DB 선택
> SHOW TABLES; # 테이블 명 확인
> select * from users; # 테이블에 저장된 데이터 확인 가능

board-db 확인

docker ps # board-db NAME 확인
docker exec -it {board-db NAME} sh
> mysql -u root -ppassword # mySQL 접속
> SHOW DATABASES; # DB 명 확인
> use board_db; # DB 선택
> SHOW TABLES; # 테이블 명 확인
> select * from board; # 테이블에 저장된 데이터 확인 가능

About

Docker 환경의 MSA 구조로 전환 프로젝트

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published