티스토리 뷰

마이크로서비스 아키텍처 

<설명>

- 서비스 기능 단위로 시스템을 묶어 기능을 구현한다.

- 작은 단위의 컴포넌트로 구성

- 서비스 전체 기능을 독립된 작은 단위로 나누어 분리, 각각의 컴포넌트는 독립된 시스템 형태로 개발 및 운영한다.

- 서버용량이 다양하고 여러 언어로 구성된 다양한 애플리케이션이 있다.


 

<특징>

- 잘 분리된 마이크로서비스로 인한 탈중앙화

- 대규모 시스템을 위한 아키텍처

- 가벼운 네트워크 프로토콜

- 느슨한 결합

- 서비스 지향 아키텍처


<장점>

1. 독립성

  • 하나의 비즈니스 기능을 담당하므로 다른 서비스와 간섭이 최소화된다.

2. 대용량 데이터를 저장 및 처리에 자유롭다.

  • 서비스마다 독립된 데이터베이스를 가지고 있기 때문에 성능적인 부분에서 우세

3. 시스템 장애에 견고하다.

  • 서비스가 느슨하게 결합되어 있고 독립되어 있기 때문에, 해당 서비스에 장애가 발생 시 다른 서비스에는 이상 없이 서비스된다.

4. 서비스 배포 주기가 빠르다.

  • 모놀리식은 모든 기능이 하나의 코드베이스에서 개발되기 때문에, 배포 일정을 맞추어야한다.
  • 하지만 마이크로서비스는 기능별로 분리되어 있기 때문에 해당 서비스 먼저 배포 가능하다.

5. 확장성이 좋아진다.

6. 사용자 반응에 민첩하게 대응 


<단점>

1. 개발이 어렵다

  • 분리된 데이터, 네트워크를 통한 데이터 통합을 고려해야 한다.
  • 데이터가 분리되어 있기 때문에 Transaction을 사용할 수 없다.
  • 커넥션 비용이 비싸고, 패킷 누락 및 네트워크 지연이 발생할 수 있다.

2. 운영이 어렵다.

 

비행기표를 예약한다 -> 인증 서버를 통해 확인 -> 항공 정보에 예약을 시도 -> 유효성 검사 후 해당 좌석을 예약 상태로 변경 -> 예약 기록을 남긴다. 

이러한 과정이 이상 없이 처리되어야 한다.

중간에 요청이 처리되지 않았다면 개발자는 어느 단계에서 에러가 발생했는지 찾아야 한다.

 

3. 설계가 어렵다.

 

기능과 성격에 맞게 잘 분리되어야 한다. 너무 작게 혹은 크게 설계하면 안 된다.

-> 하나의 기능에 집중되어 모놀리식 아키텍처 시스템과 다른 점이 없어질 수 있다. 

 

4. 데이터를 네트워크를 통해 전송한다.

 

기능이 복잡하고 처리량이 많은 시스템에 적합하며, 기능이 복잡한 시스템을 편리하게 개발하고 운영하기 위함

각각의 기능은 느슨하게 결합하고 기능별 독립된 데이터베이스를 사용한다.

컴포넌트들이 API를 통해 데이터를 주고받는다. -> 네트워크 프로토콜이 성능 저하의 원인이 될 수 있다.

직렬화, 역직렬화를 최적화하여 사용해야 한다. -> CPU, 메모리 시스템의 성능 저하 발생가능


MSA 대표 키워드

대규모 시스템, 분산 처리 시스템, 컴포넌트들의 지합, 시스템 확장  (서비스 지향 아키텍처와 유사)

 


모놀리식 아키텍처

<설명>

  • 하나의 시스템이 서비스 전체 기능을 처리하도록 설계한 것
  • 모놀리식은 하나의 애플리케이션만 있다.

<장점>

  • 하나의 Web Application Server(WAS)에서 모든 기능을 처리하도록 구성한다. 
  • 하나의 데이터 저장소를 사용한다. -> Transaction에 대한 기능을 쉽게 사용할 수 있다. (영속할 때 일관성 유지)
  • 간단한 구조 덕분에 시스템 운영과 개발이 편리하다.
  • 버그를 발견하기 편하다 -> 로그를 하나의 파일에 기록할 수 있음
  • 테스트코드를 작성하기 편하다.  
  • 개발하기 편리하다는 장점이 있다. 

<단점>

  • 하나의 서버에서 여러 기능을 제공하므로 서비스 기능이 많아지면 더욱 복잡해질 수 있다. (스파게티 코드가 되기 쉽다)
  • 성질이 다른 코드가 하나의 파일에 존재할 수 있다 -> 버그를 수정할 때 서버를 다시 실행해야 한다.
  • 서비스 규모가 커지면 git 브랜치 충돌 가능성이 높아진다.
  • 소규모 개발팀이 간단하고 작은 기능을 제공하는 서비스를 개발한다면 모놀리식 아키텍처가 효율적이다.
  • 빠른 시간 안에 개발할 수 있고, 운영과 유지 보수가 편함 -> 서비스 규모가 커지면 확장에 한계가 있음 (서비스 고도화의 한계)
  • 처리량이 높은 엔터프라이즈 시스템들은 기본적으로 분산 시스템 아키텍처를 사용한다 (넷플릭스, 아마존) -> MSA

이 중 3개 이상의 상황에 처해 있다면 MSA로 전환을 고려해 볼 만하다

  1. 클라이언트 요청이 많아지고 로드 밸런서로 확장해도 한계가 있을 때
  2. 데이터베이스 성능을 높여도 더 이상 성능 개선의 여지가 없을 때
  3. 기능 확장 요구가 많지만 현재 시스템 구조로 불가능할 때
  4. 소스 코드가 너무 복잡해서 리팩터링이 필요할 때
  5. 기능 중 하나라도 변경되면 전체 QA를 해야 할 때
  6. 기능을 수정하면 다른 기능에 연쇄적으로 버그가 발생할 때
  7. 개발자는 늘었는데, 개발 속도는 이전 같지 않을 때

 

 

 


출처

https://www.yes24.com/Product/Goods/115306377

 

스프링 부트로 개발하는 MSA 컴포넌트 - 예스24

마이크로서비스 아키텍처 환경에서컴포넌트를 개발할 때 무엇이 필요한지 알아보고,이때 필요한 스프링 부트 사용법을 익힌다!마이크로서비스 아키텍처는 대규모 서비스의 ‘정답’처럼 여겨

www.yes24.com

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함