본문으로 바로가기
반응형

최근 "마이크로 서비스 아키텍처 알아?" 라는 질문을 받았습니다. 물론 대답을 잘 못했고 알아보기 위해 포스팅을 해보려고 합니다. 사실 아키텍처라는 단어도 저한테는 생소했습니다. 자주 들어보지 못했고 대학교 교육과정에서나 들어봤기 때문입니다.

 

아키텍처란(Architecture)?

아키텍처는 비즈니스 요구 사항을 만족하는 시스템을 구축하기 위해서 전체 시스템에 대한 구조를 정의한 문서. 시스템을 구성하는 컴포넌트와 그 컴포넌트 간의 관계. 그리고 컴포넌트가 다루는 정보를 정의한다.

 

마이크로 서비스 아키텍처 정의

참조 : https://martinfowler.com/articles/microservices.html 

 

"the microservice architectural style is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API. These services are built around business capabilities and independently deployable by fully automated deployment machinery."

1. 단일 애플리케이션을 소규모 서비슬로 개발하는 방법

2. 독립적인 배포

위 2가지로 마이크로 서비스 아키텍처를 설명해주고 있습니다.

 

작고 독립적으로 배포 가능한 각각의 기능을 수행하는 서비스로 구성된 프레임워크.

마이크로 서비스는 완전히 독립적으로 배포 가능하고 다른 기술 스택이 사용 가능한 단일 사업 영역에 초점을 둠.

 

마이크로 서비스 아키텍처는 왜 나왔을까?

기존에 사용한 Monolithic Architecture의 문제점

  1. 서비스/프로젝트가 커지면 커질수록, 영향도 파악 및 전체 시스템 구조의 파악에 어려움이 있음.
  2. 빌드 시간 및 테스트시간, 그리고 배포시간이 기하급수적으로 늘어나게 됨.
  3. 서비스를 부분적으로 scale-out 하기가 힘듬.
  4. 부분의 장애가 전체 서비스의 장애로 이어지는 경우가 발생.

위와 같은 문제점은 서비스/프로젝트가 커지면서 나타나는 문제입니다. 일정 규모의 서비스/프로젝트 즉 소규모 프로젝트에서는 Monolithic Architecture가  합리적입니다.

 

Monolithic Architecture vs Microservices Architecture 

https://www.redhat.com/ko/topics/microservices/what-are-microservices

마이크로 서비스 아키텍처 장단점

장점

  1. 약한 결합도, 강한 응집도
  2. 서비스별 배포
  3. 특정 서비스에 대한 확정성 용이.
  4. 장애시 부분적.

단점

  1. 서비스 간 독립적이기 떄문에 호출 시 통신 비용이나, 네트워크 응답시간이 늘어남.
  2. 트랜잭션이 처리.
  3. 각각의 어플리케이션 에러에 대한 처리.
  4. 테스트가 많고 어려워짐.
  5. 데이터가 여러 서비스에 걸쳐 분산되기 때문에 한번에 조회하기 어려움.
  6. 데이터 무결성 주의.

<참조 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>

반응형