Skip to content
@InspireCampTeam3

InspireCampTeam3

Micro 3

프로젝트 개요

  • 기존 프로젝트를 MSA 환경에 맞게 구성하며, CI/CD를 구축하여 개발부터 배포까지의 사이클 타임을 단축하고자 합니다.
  • 기존 프로젝트의 성능을 측정하여 취약점을 찾아내고, 이를 보완하고자 합니다. 하단 성능 향상 목차를 참고해주세요.

서비스 실행 방법

로컬

  • 실행 방법

    아래의 설명을 참고하여 환경 변수를 .env 파일을 루트 디렉토리(/Kitcha)에 생성한 후, docker-compose.yaml 파일이 있는 디렉토리에서 아래의 명령어를 실행합니다.

    docker compose up -d
  • 환경변수

    • MySQL 관련

      항목 설명
      MYSQL_ROOT_PASSWORD MySQL의 루트 사용자 비밀번호
      MYSQL_DATABASE 생성할 기본 데이터베이스 이름
      MYSQL_USER MySQL 사용자 이름
      MYSQL_PASSWORD 위 MySQL_USER의 비밀번호
    • MongoDB 관련

      항목 설명
      MONGO_DATABASE MongoDB 데이터베이스 이름
      MONGO_USER MongoDB 사용자 이름
      MONGO_PASSWORD MongoDB 사용자 비밀번호
    • 서버 관련

      항목 설명
      VITE_API_BASE_URL 백엔드 서버 Base 주소
      FRONTEND_SERVER 프론트엔드 서버 주소
    • 인증/보안 관련

      항목 설명
      TOKEN_SECRET JWT 토큰 비밀 키
      TOKEN_EXPIRATION_TIME 토큰 만료 시간
    • 외부 API 관련

      항목 설명
      NAVER_CLIENT_ID 네이버 뉴스 Open API Client ID
      NAVER_CLIENT_SECRET 네이버 뉴스 Open API Client Secret
      OPENAI_API_KEY Open API Key
    • AWS 관련

      항목 설명
      AWS_ACCESS_KEY_ID AWS Access Key ID
      AWS_SECRET_ACCESS_KEY AWS Secret Access Key
      AWS_S3_BUCKET AWS S3 Bucket 이름 (게시판에서 생성한 PDF 저장용)
    • 테스트 계정 관련

      항목 설명
      TEST_USER_PASSWORD 테스트용 사용자 계정의 비밀번호
      TEST_ADMIN_PASSWORD 테스트용 관리자 계정의 비밀번호

클라우드 아키텍처

Mini Pjt 2 - Team3 - 프론트

Mini Pjt 2 - Team3 - 백

MSA

서비스 구성 및 서비스 간 호출 흐름

msa-kitcha(micro3)

API 명세서

스프레드 시트 참고

성능 측정

리팩토링 이전

  • 게시글 생성 요청

    Label # Samples Average Min Max Std. Dev. Error % Throughput Received KB/sec Sent KB/sec Avg. Bytes
    Board POST 5880 12 4 451 17.72 89.082% 9.82013 3.86 5.56 402.2
    TOTAL 5880 12 4 451 17.72 89.082% 9.82013 3.86 5.56 402.2
  • 게시글 목록 조회

    Label # Samples Average Min Max Std. Dev. Error % Throughput Received KB/sec Sent KB/sec Avg. Bytes
    Board GET 579395 26 0 4314 113.04 0.054% 967.21071 1328.12 373.84 1406.1
    TOTAL 579395 26 0 4314 113.04 0.054% 967.21071 1328.12 373.84 1406.1
  • 게시글 상세 조회

    Label # Samples Average Min Max Std. Dev. Error % Throughput Received KB/sec Sent KB/sec Avg. Bytes
    Board PathVariable GET 263854 1267 6 30248 1992.70 0.301% 439.06587 793.30 167.15 1850.2
    TOTAL 263854 1267 6 30248 1992.70 0.301% 439.06587 793.30 167.15 1850.2

리팩토링 이후

  • 게시글 생성 요청

    Label # Samples Average Min Max Std. Dev. Error % Throughput Received KB/sec Sent KB/sec Avg. Bytes
    Board POST 5910 7 4 42 3.01 0.00% 9.9/sec 4.76 5.58 493.4
    TOTAL 5910 7 4 42 3.01 0.00% 9.9/sec 4.76 5.58 493.4
  • 게시글 목록 조회

    Label # Samples Average Min Max Std. Dev. Error % Throughput Received KB/sec Sent KB/sec Avg. Bytes
    Board GET 567400 48 0 20063 583.29 0.18% 947.1/sec 1311.39 372.07 1417.8
    TOTAL 567400 48 0 20063 583.29 0.18% 947.1/sec 1311.39 372.07 1417.8
  • 게시글 상세 조회

    Label # Samples Average Min Max Std. Dev. Error % Throughput Received KB/sec Sent KB/sec Avg. Bytes
    Board PathVariable GET 575375 33 2 20041 580.33 0.193% 960.49352 442.23 365.11 471.5
    TOTAL 575375 33 2 20041 580.33 0.193% 960.49352 442.23 365.11 471.5

향후 개선 방향

  • 로깅 각 서비스가 분산되어 있고 독립적이기 때문에 로그를 체계적으로 남기는 것이 중요합니다. ELK나 Zipkin 등을 활용하여 서비스 간 호출, 에러 등을 중앙에서 수집 및 분석할 수 있도록 하고자 합니다.
  • 서킷 브레이커/타임아웃 구성 MSA 특성 상 여러 서비스 간 네트워크 호출로 동작하는데, 어떤 서비스가 느려지거나 실패하면 전체 시스템이 전염처럼 퍼지며 무너질 수 있습니다. 이에 서킷 브레이커를 도입하여 장애 감지와 응답 제한시간을 설정하고자 합니다.
  • Public, Private Subnet 분리 실제 서비스 로직을 가진 이너 서비스들이 Private Subnet에서 실행되도록 하여 보안을 강화하고자 합니다.

Popular repositories Loading

  1. Kitcha Kitcha Public

    Forked from Team4-Kitcha/Kitcha

    랜덤 가챠로 뽑는 맞춤형 뉴스, Kitcha 🍀 (Complete version)

    HTML

  2. Kitcha-Authentication Kitcha-Authentication Public

    Forked from Team4-Kitcha/Kitcha-Authentication

    Java

  3. Kitcha-BE Kitcha-BE Public

    Forked from Team4-Kitcha/Kitcha-BE

    랜덤 가챠로 뽑는 맞춤형 뉴스, Kitcha 🍀

    Java

  4. Kitcha-Board Kitcha-Board Public

    Forked from Team4-Kitcha/Kitcha-Board

    백엔드 게시판 서비스

    Java

  5. Kitcha-FE Kitcha-FE Public

    Forked from Team4-Kitcha/Kitcha-FE

    랜덤 가챠로 뽑는 맞춤형 뉴스, Kitcha 🍀

    JavaScript

  6. Kitcha-Article Kitcha-Article Public

    Forked from Team4-Kitcha/Kitcha-Article

    Java

Repositories

Showing 10 of 10 repositories

Top languages

Loading…

Most used topics

Loading…