티스토리 뷰

반응형

- MSA의 개념과 특징, 장단점
- 성공적인 MSA를 위한 아키텍처 패턴
- 이벤트 주도 아키텍처의 개념과 장단점
- 대용량 시스템을 위한 DB 아키텍처 및 NoSQL
- 글로벌 서비스의 REST API 문서 분석 해보기

 

 

 

 

What is MicroServices

1. 하나의 어플리케이션을 다수의 독립적인 서비스들의 집합으로 구성하는 것

 

2. 각자의 서비스가 별도의 프로세스에서 실행되며

HTTP API 같은 가벼운 매커니즘으로 통신하는 작은 애플리케이션

작은 서비스들은 각자의 비즈니스 기능을 담당하고

완전 자동화 된 절차에 따라 독립적으로 배포

각 서비스는 서로 다른 프로그래밍 언어서로 다른 데이터 저장 기술을 사용 할 수 있다

-마틴 파울러

 

 

 

전통적 개발 방법 Monolithic

전체 기능을 단일 코드베이스로 개발

 

 

 

단점

  • 스케일 아웃 시 전체 시스템을 확장해야 하는 비효율
  • 빌드/배포 시간 오래 걸림
  • 작은 수정에도 전체 시스템 빌드/배포 해야 함
  • 하나의 버그에 전체 시스템이 실패할 수 있음

 

 

단점의 원인

  • 기능들 간의 결합도가 일반적으로 높음
  • 기능 변경 시 영향도 파악 어려움

ex) 코드 의존 관계, 데이터 의존 관계

결과적으로 코드가 운영환경에 민첩하게 배포 되기 어려움

 

 

 

 

장점

  • 상대적으로 운영하기 용이                                                                                                                                           
  • ex) 코드 관리, 장애 관리, 로그 관리, 모니터링
  • 내부 메소드 호출로 성능 문제 없음                                                                                                                             
  • ex) MSA는 Network를 통한 Interface 호출
  • 트랜잭션 관리 용이

 

 

 

 

MSA의 장점

  • 작은 서비스 단위로 확장 가능
  • 일부의 장애가 시스템 전체 장애로 이어지지 않음
  • 서비스 단위로 자율적 배포 가능
  • 결과적으로 빠르게 변화하는 비즈니스 환경에 민첩하게 대응 가능
  • 빠른 Delivery
  • 탄력적이고 선택적인 확장

 

 

MSA의 단점

  • 운영 관리가 어려움
  • 모니터링 대상 증가
  • DB 트랜잭션 처리 어려움

 

 

MSA를 잘 분리하는 것을 판단하는 요소

서비스마다 얼마나 독립적이고 응집도가 높은지

분산된 Monolitic Architecture가 되지 않게 주의해야한다

 

 

 

MSA 분리하는 방법

행위가 아닌 주요한 개념(명사) 위주로 분리

  • 클래스 설계와 유사

변경이 낮고 중요한 행위인 경우에는 행위 기반 분리도 가능

  • 파일 업로드 서비스
반응형

'프로젝트 > SmileGate윈터데브캠프' 카테고리의 다른 글

웹 크롤링에 대해서  (0) 2023.02.11
개인프로젝트 피드백  (0) 2023.01.14
메시지 브로커란?  (0) 2022.12.16
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/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
글 보관함