토픽/소프트웨어공학

MSA(Micro Service Architecture)

예쁜꽃이피었으면 2022. 5. 10. 08:29

http://clipsoft.co.kr/wp/blog/%EB%A7%88%EC%9D%B4%ED%81%AC%EB%A1%9C%EC%84%9C%EB%B9%84%EC%8A%A4-%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98msa-%EA%B0%9C%EB%85%90/

 

마이크로서비스 아키텍처(MSA) 개념 소개 - CLIPSOFT

작성자 : 이응호 과장   마이크로서비스 아키텍처(MSA) 개념 소개   프리랜서로 일하고 있는 지인이 최근 구직을 하고 있었습니다. 그러면서 하는 말이 요즘 IT업계 구직시장에서 최고의 화두가 M

clipsoft.co.kr

1. MSA란

단일 프로그램을 각 컴포넌트 별로 나누어 작은 서비스의 조합으로 구축하는 방법

 

2. MSA의 장점

각 컴포넌트는 서비스 형태로 구현되고 API를 이용하여 타 서비스와 통신하게 된다. 각 서비스는 독립된 서버로 타 컴포넌트와 의존성이 없기 때문에 독립된 배포를 하게 된다. 또한 각 컴포넌트가 독립된 서비스로 개발되어 있기 때문에 부분적인 확장이 가능하다. 온라인 쇼핑몰에서 주문 서비스에 트래픽이 증가한다면 해당 서버만 확장을 해주면 된다.

 

3. MSA의 단점

모노리틱 아키텍처가 서비스간의 호출이 하나의 프로세스 내에서 이루어지기 때문에 속도가 빠르지만 MAS의 경우 서비스간 호출을 API통신을 이용하기 때문에 속도가 느리고, 통신에 사용하기 위해 값을 데이터 모델로 변환시켜주는 오버헤드가 발생하기도 한다.

 

4. MSA의 특징

1) 데이터 분리

데이터 저장 시 하나의 DB에 중앙집중화를 하지않고 서비스 별 별도의 데이터 베이스를 사용한다. DB의 종류를 별도로 가져갈 수도 있고, 같은 DB를 사용하더라도 나누어서 사용하게 된다. 데이터가 분산되어 있기 때문에 다른 서비스 컴포넌트에 대한 의존성이 없이 서비스를 독립적으로 개발 및 배포/운영 할 수 있지만, 다른 컴포넌트의 데이터를 API통신을 통해 가져와야 하기 때문에 성능상의 문제가 발생할 수도 있고, 트랜젝션으로 묶을 수 없는 문제가 발생하기도 한다.

2) API Gateway

각 서비스가 다른 서버에 분리 배포되어 있기 때문에 서버 URL이 각기 다를 수 밖에 없다. 이때 API Gateway는 API서버 앞 단에서 모든 API서버들의 end-point를 단일화해 묶어주는 역할을 한다. 또한 거미줄처럼 복잡한 서비스간의 API호출 구조도 단순화 시켜준다. 그 외에 라우팅, 로드밸런싱, 인증 역할 등등 여러 역할을 수행한다.

3) 팀의 변화

기존의 팀모델은 역할별로 구분했다. 인력관와 운영에 유연성을 부여하지만 팀간의 커뮤니테이션이 원할하지 않고 협업에 걸리는 시간이 지연되기도 한다.

MSA에서는 서비스 별로 팀을 나누고 서비스 기획에서부터 설계, 개발, 운영이 팀 내에서 이루어지기 때문에 다른 팀에 대한 의존성이 사라진다. 역할별 요청과 피드백이 빨라지고, 유연하고 지속적인 운영과 개발을 함께 하게 된다.

이 때의 단점은 인력 리소스관리에 어려움이 생기고, 각 팀의 역할 담당자들은 기본적인 업무 성숙도를 가지고 있어야 한다. 개발자들은 인프라 핸들링도 가능해야 한다.


http://blog.skby.net/msa-micro-service-architecture/

 

MSA (Micro Service Architecture) > 도리의 디지털라이프

I. 대용량 분산 웹 서비스 위한, MSA의 개념 소프트웨어를 독립적으로 배치 가능 단위로 분리하여 시스템을 구성하는 아키텍처   II. MSA 구성요소 가. MSA 구성도 API G/W는 API 통신 중계, 공통 기능

blog.skby.net

MSA 구성요소

API G/W – 라우팅
– 로드밸런싱
– 상호 독립적 API 서비스 중계
– 인증/로깅, 공통기능 추상화
API
Servers
– 비즈니스
  기능 분리
– 배포 가능한 단위로 분리
– 개별 서비스를 API형태 구현
Database – RDB, SQL
– NoSQL 등
– 각 API 서버에서 사용
– 다양한 기술 기반 DB
I/F 및
통신
– HTTP
– REST, JSON
– 표준 기반 경량 인터페이스
– 표준 기반 통신 규약
Client – Web
– Mobile
– 클라이언트 Application
– MSA의 API 서비스 소비

MSA 장단점

장점 최적 언어
선택
– 각 모듈은 독립적
– 모듈 최적 언어 선택
무제약
DB 선택
– 모듈 별 독립DB 보유
– 제약없는 DB 선택 가능
효율적
자원사용
– 모듈 별 서비스 특성
– 특성에 맞는 자원 할당
단점 추적성
부족
– 대규모 프로젝트 기반
  서비스 추적성, 감시 어려움
속도
저하
– 단일 프로세스 간 통신에 비해
서비스 간 통신 처리 추가 필요
디버깅
어려움
– 연속 서비스 호출 관계
– 오류 탐지 및 디버깅 어려움

https://velog.io/@tedigom/MSA-%EC%A0%9C%EB%8C%80%EB%A1%9C-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-1-MSA%EC%9D%98-%EA%B8%B0%EB%B3%B8-%EA%B0%9C%EB%85%90-3sk28yrv0e

 

MSA 제대로 이해하기 -(1) MSA의 기본 개념

lego-708086_1920.jpg 마이크로 서비스 아키텍쳐를 한마디로 다음과 같이 표현할 수 있습니다. "하나의 큰 어플리케이션을 여러개의 작은 어플리케이션으로 쪼개어 변경과 조합이 가능하도록 만든 아

velog.io

 

small services, each running in its own process(스스로 돌아 갈 수 있는 작은 서비스)

independently deployable(독립적 배포 가능) 

반응형