마이크로서비스는 애플리케이션 구축을 위한 아키텍처 기반의 접근 방식이다. 아키텍처 프레임워크인 마이크로서비스는 분산되어 있고 느근하게 결합되어 있으므로 한 팀에서 변경한다 해도 전체 애플리케이션이 분할되지는 않는다. 마이크로서비스 사용의 이점은 개발팀이 애플리케이션의 새로운 구성 요소를 신속히 빌드하여 변화하는 비즈니스 요구를 충족할 수 있다. - Red Hat
다음 특징을 갖는 서비스들의 조합으로 이뤄진 설계
마이크로서비스 아키텍처의 각 구성 요소 서비스는 다른 서비스의 기능에 영향을 주지 않으면서 개발, 배포, 운영을 하고 확장을 할 수 있다.
마이크로서비스는 Stateless 방식으로 서로 통신할 수 있고, 이러한 방식으로 구축된 애플리케이션은 내결함성이 높고 단일 ESB에 대한 의존성은 더 낮다. 또, 마이크로서비스가 프로그래밍 언어에 구속받지 않는 애플리케이션 프로그래밍 인터페이스(API)이기 때문에 개발팀이 자체 툴을 선택할 수도 있다.
소규모 팀 조직에서 더 독립적이면서 신속하게 업무를 수행할 수 있다. 덕분에 개발 주기 시간이 단축된다.
각 서비스가 지원하는 애플리케이션 기능의 수요를 충족하도록 해당 서비스를 독립적으로 확장할 수 있다.
CI/CD를 통해 새로운 아이디어를 손쉽게 시험하고 문제 발생시 간단히 롤백할 수 있게 해 준다.
각각의 팀별로 적합한 도구를 선택할 수 있다.
하나의 큰 애플리케이션을 더 작은 조각으로 분할했기 때문에 개발자들이 각 조각을 파악하고 업데이트하며 개선하기가 용이해졌다.
예전에는 기술적 계층에 따른 팀 분류가 되었다. 예를 들면
현재의 팀을 나누는 기준은 비즈니스 수행 능력에 따른 팀 분류이다. 이 중 비즈니스 수행능력을 나누는 기준은 업무 도메인에 따라 나눈다.
쇼핑몰로 예를 들면
소프트웨어 스택, 데이터베이스 선택, 프로젝트 관리등이 팀 별로 독립적.
서비스(엔드포인트)는 일을 하게 하고, 통신(파이프라인)은 최대한 단순하게 한다.
서비스와 서비스 사이는 느슨하게, 응집성은 높게.