Spring-MSA 도전기(1)

한준수·2023년 11월 14일
0

Spring

목록 보기
5/8

이번에 학교 동기들과 Kpaas활용 공모전을 참가하기로 하면서, 처음으로 MSA를 도전해보기로 했고, 교수님께 자료를 받았으나 나의 두뇌로는 도저히 이해가 가질 않아 이 곳에 정리글을 남겨볼까 한다.

MSA란?


출처 - https://kr.tmaxsoft.com/info/storyTView.do?seq=345


출처 - https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyFnhk%2FbtrKQQRP2R4%2F8zD1DCKNXMICtMsQKQCdsK%2Fimg.png

마이크로서비스 아키텍처에 대한 정확한 정의는 없다고 한다.
마이크로 서비스란 작고, 독립적으로 배포 가능한 각각의 기능을 수행하는 서비스로 구성된 프레임워크라고 할 수 있다. 마이크로서비스는 완전히 독립적으로 배포가 가능하고, 다른 기술 스택(개발 언어, 데이터베이스 등) 이 사용 가능한 단일 사업 영역에 초점을 둔다고 한다.

✍ Micro Service Architecture

MSA는 API를 통해서만 상호작용이 가능하다.
즉, 마이크로서비스는 서비스의 end-point를 API 형태로 외부에 노출하고, 실질적인 세부사항은 모두 추상화한다.
내부의 구현 로직, 아키텍처와 프로그래밍 언어, DB, 품질 유지 체계와 같은 기술적인 사항들은 서비스API에 의해 철저하게 가려진다
따라서 *SOA(Service Oriented Architecture)의 특징을 다수 공통으로 가진다.

SOA - 대규모 컴퓨터 시스템을 구축할 때의 개념으로, 업무상 일 처리에 해당하는 소프트웨어 기능을 서비스로 판단하고 그 서비스를 네트워크상에 연동하여 시스템 전체를 구축해 가는 방법론이다. 업무 처리 변화를 시스템에 빠르게 반영하고자 하는 수요에 대응하기 위해 2004년부터 IT 업계에서 주목 하고 있다.
출처: https://wooaoe.tistory.com/57 [개발개발 울었다:티스토리]

📌 장점

  1. 배포
    • 서비스별 개별 배포가 가능하다.(배포시 전체 서비스의 중단X)
    • 특정 서비스의 요구사항만을 반영하여, 빠르게 배포 가능
  2. 확장
    • 특정 서비스에 대한 확장성(scale-out)이 유리
    • 클라우드 기반 서비스 사용에 적합
  3. 장애
    • 일부 장애가 전체 서비스로 확장될 가능성이 적다
    • 부분적으로 발생하는 장애에 대한 격려가 수월함
  4. 그 외
    • 새로운 기술을 적용하기에 유연함
    • 각각의 서비스에 대한 구조와 파악 및 분석이 모놀리식 구조에 비해 쉽다.

📌 단점

  1. 설계의 어려움
    • 모놀리식에 비해 상대적으로 많이 복잡하다. 서비스가 모두 분산되어 있기 때문에 개발자는 내부 시스템의 통신을 어떻게 가져가야 할지 정해야하며, 통신의 장애와 서버의 부하등이 있을 경우 어떻게 transition을 유지할지 결정하고 구현해야한다.
  2. 성능
    • 서비스간 호출을 API를 사용하므로, 통신비용이나 지연시간에 대한 이슈가 존재한다.
  3. 테스트/데이터 트랜잭션
    • 모놀리식에서는 단일 트랜잭션을 유지하면 됐지만 MSA에서는 비즈니스에 대한 DB를 가지고 있는 서비스도 각기 다르고, 서비스의 연결을 위해서는 통신이 포함되기 때문에 트랜잭션 유지가 어렵다.
  4. 데이터 관리
    • 데이터가 여러 서비스에 분산되어 있어 조회가 어려움
    • 데이터 관리가 어려움

✍ Monolithic Architecture

소프트웨어의 구성요소가 하나로 통합되어 있는 형태이다.
쇼핑몰을 예시로 들면 장바구니, 결제, 로그인 등등을 하나의 서비스에 묶어 개발 한 형태라고 보면 된다.

📌 단점

  • 부분 장애가 전체 서비스의 장애로 확대될 수 있다.
  • 부분적인 Scale-out(여러 server로 나누어 일을 처리하는 방식)이 어렵다.
  • 서비스의 변경이 어렵고, 수정 시 장애의 영향도 파익이 힘들다.(결합도가 높다.)
  • 배포의 시간이 오래걸린다.
  • 한 프레임워크와 언어에 종속적이다.

제대로 설계된 마이크로서비스는 하나의 비즈니스 범위에 맞춰 만들어지므로 하나의 기능만 수행한다. 즉, 어플리케이션 출시처럼 하나의 목표를 향해 일하지만 자기가 개발하는 서비스만 책임진다. 그리고 여러 어플리케이션에서 재사용할 수 있어야한다.

어플리케이션은 항상 기술 중립적 프로토콜을 사용해 통신하므로 서비스 구현 기술과는 무관하다. 따라서 마이크로서비스 기반의 어플리케이션을 다양한 언어와 기술로 구축할 수 있다는 것을 의미한다.

0개의 댓글

관련 채용 정보