Skip to content
@newspace-msa

newspace-msa

🧱☁️ Newspace MSA & Cloud Deployment Project

25.03.27 ~ 25.04.02

LG CNS AM Inspire Camp 1기

미니프로젝트 2 - 9조

Avatar
현민영(팀장)
95hyun's GitHub stats
Monolithic -> MSA 리팩토링
Prometheus, Grafana 구현
Grafana Alert Discord Webhook
Avatar
구동혁
dhku's GitHub stats
백엔드 Jenkins 파이프라인 구성 및 CI/CD,
블루-그린 무중단 배포,
docker-compose, AWS ECR 배포 연동
Avatar
김지수
js4939's GitHub stats
프론트엔드 Jenkins 파이프라인 구성 및 CI/CD,
요구사항 명세서 작성,
프론트엔드 & 백엔드 연동
Avatar
박상욱
woogieon8on's GitHub stats
Config 서버 + RabbitMQ,
docker 일부 AWS 전환 + EC2 + RDS
Avatar
유영서
Y0ungse's GitHub stats
프론트엔드 배포,
서비스 아키텍처 다이어그램 작성,
PPT



📌 프로젝트 개요

Newspace는 확장성과 유연성을 중심으로 설계된 모듈형 뉴스 플랫폼입니다.
Spring Cloud 기반의 마이크로서비스 아키텍처(MSA)와 React 프론트엔드를 사용하여,
각 서비스가 독립적으로 배포·운영 가능한 구조로 구성되어 있습니다.

CI/CD는 GitHub → Jenkins → Docker Compose 기반으로 자동화되어 있으며,
프론트엔드는 S3에 배포되고 CloudFront를 통해 정적 자원을 빠르게 서빙합니다.
API 요청은 CloudFront를 통한 리버스 프록시 방식으로 처리되어, 쿠키 기반 인증도 안정적으로 동작합니다.

백엔드는 Eureka 기반의 Service Discovery와 Spring Cloud Gateway를 통해 유기적으로 연결되며,
각 마이크로서비스는 Blue-Green 배포 전략을 적용해 무중단 배포를 지원합니다.
데이터는 AWS RDS(MariaDB)에 저장되며,
뉴스 서비스는 Spring AI를 통해 Groq 기반의 Deepseek LLM과 연동되어 뉴스 요약 기능을 제공합니다.

또한 Prometheus와 Grafana를 통해 서비스 상태를 실시간으로 모니터링할 수 있도록 구성되어 있습니다.


🛠️ 기술 스택

🖥️ Frontend

⚙️ Backend

☁️ DevOps & Infra

📊 Monitoring

🧪 API & Collaboration


🚀 배포 주소

👉 NewSpace 프론트엔드 배포 링크

위 링크를 통해 실제 서비스된 프론트엔드 앱을 확인할 수 있습니다.


📽️ CI/CD 파이프라인 시연 영상

Jenkins AWS EC2 블루 그린 무중단 배포 유튜브 링크
Jenkins 프론트엔드 CI/CD 파이프라인 시연 영상 유튜브 링크
Jenkins 백엔드 CI/CD 파이프라인 시연 영상 유튜브 링크


📂 Repository Overview

🔧 Infrastructure

🧩 Domain Services

🌐 Frontend

🚀 Deployment


🏗️ 시스템 아키텍처

기존 모놀리식 시스템 아키텍처

image

  • 단일 홈서버(ubuntu 172.21.1.22)에서 모든 서비스 동작
  • 프론트/백 DB가 단일 Docker 환경에 혼합되어있음
  • 포트 포워딩을 통한 접근, 보안/확장성에 한계
  • MariaDB 하나에 모든 서비스가 의존
  • Jenkins도 동일 서버 내 위치
  • 로드밸런싱 및 무중단 배포 미지원

MSA 구성도

image

  • 마이크로서비스 기반 설계 (user-service, news-service, notice-service)
  • 서비스 별 Docker 컨테이너 이중화 (Blue/Green) -> 무중단 배포
  • 서비스 간 통신 : API Gateway + Eureka 기반 동적 라우팅
  • 프론트엔드 : React 정적 파일 -> S3 + CloudFront 배포로 완전 분리
  • 설정 관리 : Spring Cloud Config + RabbitMQ 브로드캐스트
  • 데이터베이스 : 서비스별 독립 RDS 인스턴스 구성
  • 모니터링 : Prometheus + Grafana로 실시간 상태체크
  • Jenkins + Docker + ECR + EC2 기반 CI/CD 파이프라인 구축

최종 구성도

image

  • 서버비, 트러블 슈팅 등 문제로 EC2 인스턴스, RDS 축소 및 통합
  • EC2 기존 대비 비용 약 50% 감소, RDS 기존 대비 비용 약 66% 감소
  • 오토 스케일링(스케일아웃)을 대비한 0번 포트 서비스들간의 오케스트레이션 부재 문제 해결

🗺️ 서비스 간 통신 흐름

사용자의 요청은 다음과 같은 흐름으로 처리됩니다:

1. 클라이언트 요청

  • 사용자는 브라우저(React/Vite 프론트엔드)에서 /api/* 경로로 API를 요청합니다.
  • 해당 요청은 CloudFront를 통해 전달되며, 리버스 프록시 설정을 통해 API Gateway로 전송됩니다.

2. API Gateway

  • Spring Cloud Gateway는 클라이언트 요청을 받아 내부 마이크로서비스로 라우팅합니다.
  • 라우팅 기준은 Eureka에 등록된 서비스 이름과 경로(prefix)를 기반으로 결정됩니다.

3. Service Discovery

  • Gateway는 Eureka Service Discovery를 통해 각 마이크로서비스 인스턴스를 조회합니다.
  • 모든 마이크로서비스는 자신의 상태와 포트를 Eureka에 주기적으로 등록 및 갱신합니다.

4. 도메인 서비스 처리

  • 요청은 해당 도메인의 Spring Boot 기반 마이크로서비스로 전달되어 비즈니스 로직을 처리합니다.
예시 요청 처리 서비스
사용자 로그인 user-service
공지 목록 조회 notice-service
뉴스 데이터 요청 news-service

5. AI 요약 처리

  • 뉴스 요약 요청의 경우, news-service는 내부적으로 Spring AI를 통해
    Groq + Deepseek 기반 LLM과 연동하여 요약 결과를 생성합니다.

6. 응답 반환

  • 처리된 응답은 다시 API Gateway를 거쳐 프론트엔드로 전달됩니다.
  • 사용자의 브라우저에서 결과가 렌더링되어 표시됩니다.

📚 Notion

https://www.notion.so/LG-CNS-2-9-1c35254cd71680b490c6f7d3a8a0b2e6

Popular repositories Loading

  1. newspace-config-service newspace-config-service Public

    Java

  2. newspace-user-service newspace-user-service Public

    Java

  3. newspace-config newspace-config Public

  4. newspace-notice-service newspace-notice-service Public

    Java

  5. newspace-news-service newspace-news-service Public

    Java

  6. newspace-gateway newspace-gateway Public

    Java

Repositories

Showing 10 of 10 repositories

Top languages

Loading…

Most used topics

Loading…