MSA(Micro Services Architecture)

장재영·2024년 12월 19일
0

정의:

  • 각 기능별로 독립적인 서비스로 분리하여 개발하고 운영하는 분산 서버 아키텍처

특징:

  • 독립적인 서비스:

    • 각 서비스는 특정 기능을 담당하며 독립적으로 개발되고 배포됨
    • 서비스 간에는 최소한의 의존성을 유지합니다
  • 서비스 단위 확장

    • 특정 서비스만 별도로 확장할 수 있음
    • 한 시스템을 위해 전체 시스템을 확장할 필요가 없음
  • 다양한 기술 스택

    • 각 서비스 별로 서비스마다 최적화된 언어, 프레임워크를 선택하여 구현 가능
  • SPOF(단일지점장애) 회피

    • Gateway에 로드밸런서, 헬스체크 시스템을 도입
    • Distributor에 메시지 브로커 클러스터링
      • RabbitMQ, Kafka, pub/sub등
    • 위 두개 지점만 해결해줄경우 SPOF 회피

단점:

  • 복잡성 증가:

    • 분산 시스템 관리, 서비스 간 통신, 데이터 일관성 관리 등이 필요
  • 네트워크 지연:

    • 서비스 간 API 호출로 인해 네트워크 지연 문제가 발생
  • 운영 비용 증가:

    • 서비스 모니터링, 로깅, 배포 자동화 등
    • 운영비용을 줄이는 대신 복잡성을 더욱더 증가 시킬 수 있음

프로젝트에서 진행해본 MSA기반 서버 아키텍쳐

서버

  • Dedicated: 게임기능을 담당
  • G_Master: 데디 서버를 생성 또는 참가시키는 ㅓ버
  • Session: 세션관리 서버
  • Lobby: 게임 진입 전 로비 서버
  • Account: 회원 관리를 담당하는 서버
  • Distributor: 서버간의 통신을 위한 서버
  • Gateway: 클라이언트와 서버간의 통신을 위한 서버

문제점

  • 복잡한 구조로 인해 기초 다지는데 고민되는 시간이 오래 걸렸음
  • 전체적인 구조가 어느정도 완성이 될 때 까지 어디서 어떤 문제가 일어난건지 확인이 힘들었음
  • 기초가 부실하게 잡힌 상태에서 서비스만 확장될 경우 유지보수가 매우 힘들어짐
  • 현 시점에서 SPOF 회피를 위한 로드밸런서나 헬스체크 시스템을 도입하지 못해 게이트웨이에 문제가 발생 할 경우 모든 기능이 정지됨
  • 데디케이트 서버를 따로 생성시키면 모를까 데디케이트서버도 게이트웨이와 연결시켜 게이트웨이 부담 증가, 레이턴시 증가

좋은점

  • 다양한 기술에 대한 이해
    • MSA 서버를 만들기 위해 여러 기술들(pub/sub, Turborepo, Esbuild 등)이 사용됨
  • 분산 서버에 대한 이해

결론

  • 약 6주라는 짧은 시간안에 구현하려 하다보니 장점보다는 단점이 부각되어 괜히 MSA를 한다고했다 했지만 분산서버에 대한 이해와 다양한 기술에 대해 사용 해봤다는 점에서 좋은 경험이었다고 생각

  • 합칠때부터 반대했지만... 데디케이트 서버 만큼은 합치면 안됐다고 생각합니다.

profile
개발 하고 싶은 비버

0개의 댓글