✔️ 마이크로 서비스 아키텍처
마이크로 서비스 아키텍처란?
- 소프트웨어 개발 기법 중 하나로, 애플리케이션 단위를 목적으로 나눔
- MSA가 도입되기 전,
Monolithic 아키텍처 방식의 개발에서는 모든 기능을 하나의 어플리케이션에서 비즈니스 로직을 구성해 운영하였음
따라서 개발을 하거나 환경설정에 있어서 간단한 장점이 있어 작은 사이즈의 프로젝트에서는 유리하지만,
시스템이 점점 확장되거나 큰 프로젝트에서는 단점들이 존재- 빌드/테스트 시간의 증가로 인한 유지보수의 힘듦
- 작은 문제가 시스템 전체에 문제를 일으켜 모든 서비스 이용이 불가
- 서비스마다 이용률이 다르더라도 하나의 서비스를 확장하기 위해 전체 프로젝트를 확장해야 함
- MSA는 좀 더 세분화 시킨 아키텍처로, 기능(목적)별로 컴포넌트를 나누고 조합할 수 있도록 구축함
그리고 각 컴포넌트는 API를 통해 다른 서비스와 통신하며, 모든 서비스는 각각 독립된 서버로 운영하고 배포하기 때문에
서로 의존성이 없어 하나의 서비스에 문제가 생겨도 다른 서비스에는 영향을 끼치지 않으며, 서비스 별로 부분적인 확장이 가능 - 이로 인해 서비스 별로 개발팀이 꾸려지면 다른 팀과 의존없이 팀 내에서 피드백을 빠르게 할 수 있고,
비교적 유연하게 운영이 가능해지게 됨 - 대신 서비스 별로 호출할 때 API로 통신하므로 속도가 느리며 서비스 별로 통신에 맞는 데이터로 맞추는 과정이 필요함
- 따라서, 서비스 별로 분리를 하면서 얻을 수 있는 장점도 있지만 그만큼 체계적으로 준비돼 있지 않으면
오히려 프로젝트 성능이 떨어질 수 있다는 점을 알고 있어야 하며
프로젝트의 목적, 현재 상황에 맞는 아키텍처 방식이 무엇인지 설계할 때부터 잘 고민해서 선택해야 함
'Tech Interview > Software Engineering' 카테고리의 다른 글
[Software Engineering] 목차 (0) | 2024.02.02 |
---|---|
[Software Engineering] 서드 파티 (0) | 2024.02.02 |
[Software Engineering] 데브옵스 (0) | 2024.02.02 |
[Software Engineering] 함수형 프로그래밍 (0) | 2024.02.01 |
[Software Engineering] 객체 지향 프로그래밍 (0) | 2024.02.01 |