반응형
Notice
Recent Posts
Recent Comments
Link
관리 메뉴

짧은코딩

MSA 초기 아키텍처 본문

MSA 공부

MSA 초기 아키텍처

5_hyun 2025. 6. 21. 18:02
반응형

MSA에 대해서 알게 된 것은 사실 오래되었다.

하지만 MSA를 적용해 본 적은 없다. MSA는 주로 대규모 프로젝트에 적합하다.

그래서 접할 기회가 별로 없었다. 그렇지만 프로젝트에 적합하지 않다고 해서 공부를 아예 하지 않는 것은 좋지 않다고 생각했다.

MSA를 간단하게 적용해 보고 왜 규모가 큰 프로젝트에 MSA가 도입되었는지, 왜 작은 프로젝트엔 적용하는 것이 안 좋은 것인지 직접 공부하면서 깨우쳐 보려고 한다.

아키텍처

내가 설계한 아키텍처는 이렇다.

이렇게 다양한 기술 스택을 도입한 이유는 간단하게라도 모든 기술을 적용해 보면서 익히고 싶기 때문에 적용한 것도 있다.

  • Client
    • 로그인/회원가입, 마이페이지
      • 기술 스택: Vue3
      • 이유: Vue3를 아직 다뤄 본 적이 없기 때문
    • 블로그 글 쓰기/보기
      • 기술 스택: Next15
      • 이유: Next로 아직 프로젝트를 해 본 적이 없기 때문, 블로그 같은 프로젝트는 SSR이 적합하기 때문
  • BFF
    • 기술 스택: Nest
    • 이유: 2개의 서버를 합쳐서 전달해야 하기 때문에 익숙한 JS를 사용하는 것이 적합하기 때문
  • Server
    • 인증/인가
      • 기술 스택: Spring Boot + Spring Security + Redis
      • 이유: Spring Boot를 아직 다뤄 본 적이 없고, Spring Security와 Redis는 검증된 기술이기 때문
    • 블로그 글 쓰기/보기
      • 기술 스택: Nest
      • 이유: Nest를 아직 다뤄 본 적이 없기 때문
  • DataBase
    • 인증/인가
      • 기술 스택: MySQL
      • 이유
        • 사용자 정보(ID, 암호화된 비밀번호, 역할 등)는 관계가 명확하고 정형화된 데이터이고,
        • 복잡한 비정형 데이터나 고급 기능보다는, 빠르고 일관된 트랜잭션 처리가 더 중요
    • 블로그 글 쓰기/보기
      • 기술 스택: PostgreSQL
      • 이유
        • 게시글에는 제목이나 본문 외에도 '태그', '카테고리', '임시저장 데이터', '관련글 정보' 등 다양한 형태의 메타데이터가 붙을 수 있음
        • PostgreSQL의 JSONB 타입을 사용하면, 이러한 비정형 데이터를 스키마 변경 없이 유연하게 저장하고, 내부 필드를 인덱싱하여 빠르게 조회 가능

개발 목표와 순서

-목표

이 프로젝트를 하는 목적은 일단 각 기능들을 최소한의 기능한 만족시키면서 다 완성을 시키는 것이 목표이다.

프로젝트 개발을 다 마치고 난다면 그 이후에 부족한 부분을 고치고, 기능을 추가하고, 테스트 코드를 작성하고 싶다.

 

-순서

  1. 인증/인가, Spring Boot
  2. 블로그 글 쓰기/보기, Nest
  3. BFF, Nest
  4. 로그인/회원가입, Vue3
  5. 블로그 글 쓰기/보기 + 마이 페이지, Nest + Vue3

가장 좋은 방법은 의존성이 없는 가장 깊은 곳(백엔드)부터 개발을 시작하여, 점차 바깥쪽(프론트엔드)으로 나아가는 것이 목표

각 단계가 끝날 때마다 확실한 성과를 눈으로 확인하며 진행하는 것이 중요

반응형
Comments