마이크로 서비스는 대형 소프트웨어 프로젝트의 기능들을 작고 독립적이며 느슨하게 결합 된 모듈로 분해하여 서비스를 제공하는 아키텍처. SOA와는 조금 다른 개념
모두 하나에 들어가있는 개념은 모널리틱 아키텍처.
1. IDE 과부하, 개발자의 생산성을 저하.
2. 하나의 war or ear에 모든 것을 넣었기에 기술 스택을 변경하는거에 주저하게 된다. 때문에 리펙토링도 힘들다.
3. 어플리케이션 특정 오류가 전체에 영향을 끼친다. 특정 함수의 영향이 어플리케이션 전체에 피해
4. 스케일아웃 시에 모든 리소스를 배포해야한다.
5. 어플리케이션이 커질 수록 작은 단위로 작업 축소 불가.독립적으로 배포할 수 없다.
마이크로 서비스
아키텍처의 중요 포인트는 바로 확장성이다. 어플리케이션 이 수평적이라 스케일하는데 큰 문제가 없다. 분해와 해채를 독립적으로 할 수 있다.
장점 :
1. 단일 모듈 장애를 전체 어플리케이션에서 크게 영향을 받지 않는다.
2. 각 개별 서비스의 신규 기술 스택을 시험하고자 한다면 바로 시작 가능. 유연하게
3. 기능 단위로 서비스하기에 개발자가 더 쉽게 이해 가능
단점
1. 분산 시스템 개발을 일반 개발보다 복잡하다. 모든 것이 독립적 서비스이기때문에 모듈 간에 인터페이슬르 신중해야한다. 응답하지 않을 경우 방어코드도 작성해야한다.
2. 멀티플 데이터베이스 트랜젝션 관리가 어려울 수 있다.
3. 마이크로 서비스 기반의 어플리케이션을 테스트하는것은 번거로울 수 있다. 테스트 시작 전 의존성 있는 서비스를 확인해야함.
4. 배포가 복잡할 수 있다.
-> 자동화 도구를 통해 극복 가능
'IT이론 > 소프트웨어 아키텍처' 카테고리의 다른 글
확장 가능한 분산 시스템이란 (0) | 2022.03.05 |
---|---|
3계층 구조란 (0) | 2022.03.05 |
RESTful API의 Resource 원형과 Method란 무엇일까? (0) | 2021.01.14 |
RESTful API는 뭘까 (0) | 2021.01.12 |
댓글