[MSA] Microservice 개념

hanana·2023년 12월 11일
0

본 포스팅은 인프런 Hyounsub Lee님의 Java 마이크로서비스(MSA) 프로젝트 실습 강의를 참고하여 작성하였습니다.

아키텍쳐

프로그램 안에 있는 각 서비스들 개발 할 때
어떻게 쉽게 유지보수를 할 수 있을까? 를 고려하려 설계하는것이 좋은 아키텍쳐


소프트웨어 아키텍쳐

  • 1. N-계층 아키텍쳐
    애플리케이션에 고유의 기능들을 여러 계층으로 나눈 아키텍쳐
    MVC, MVVM 패턴등이 여기에 해당
  • 2. 모놀로스 아키텍쳐
    모든 UI, 비지니스 로직을 하나의 Application으로 패키징한 아키텍쳐
  • 3. 마이크로서비스 아키텍쳐
    규모가 작은 분산된 서비스. 대규모 application을 분리함으로 각 서비스마다 책임이 명확해지도록 진행된 아키텍쳐
    무중단 운영도 지원하지만, 업데이트 작업시 모놀로스 아키텍쳐에 비해 좀 더 불안감 없이 수행이 가능

MSA 장단점

장점

  • 서비스간 코드 간섭이 없다.
    * 특정 소스 변경시 변경된 소스의 영향이
    appliation 전체에 영향을 주는것이 아닌 해당 Service에만 영향을 미침
  • 원하는 서비스를 무중단 스케일링이 가능
    * 모놀로스 아키텍쳐 배포시 기존 시스템을 중단 -> 패치 -> 재실행 과정이 필요
    특정기능 업데이트시 사용자가 이용하지 않는 점심시간, 퇴근시간 이후 패치가 불가피
    MSA 사용시, Gateway를 활용하여, 서버 중지없이 패치가 가능
  • 서비스별 백업, 복구가 편리
  • 서비스간 영향도가 적어 배포를 쉽게 할 수 있다.

단점

  • 트랜잭션 관리의 어려움
  • 여러 서비스를 파악하는데 어려움
    서비스를 너무 작게 분산할 경우, 어느 서비스에서 문제가 발생하는지 파악하기 힘듬
  • 서비스 분리를 어떻게 하느냐에 따라 성능 저하를 유발
profile
성숙해지려고 노력하지 않으면 성숙하기까지 매우 많은 시간이 걸린다.

0개의 댓글