# 마이크로 서비스 개념
PUblic Interface 데이터 캡슐화
- 각 서비스에 접근 할 때는 API 를 통해서만 접근이 가능하다. 그렇기에 interface를 가지고 데이터가 캡슐화 되어있다
# 특징
- 여러 개의 작은 서비스 집합으로 개발하는 접근 방법
- 각 서비스는 개별 프로세스에서 실행
- API와 같은 가벼운 수단을 사용해서 통신
- 서비스는 비즈니스 기능 단위로 구성 -- 중앙 집중적인 관리 최소화(지방 자치를 진행)
- 각 서비스는 서로 다운언어, 데티어, 저장 기술을 사용 할 수 잇음 -- 플리그럿(Polyglot): 효율성을 위해 여러 언어로 작성 -- 규칙만 잘 지킨다면 언어, 저장소를 원하는 걸로 사용해도 됨
# SOA
- MSA와는 다르게 서비스는 분리하되, 저장소는 통합 가능
- 서비스의 재사용성을 강조하여 저장소는 신경을 안씀
- DB를 통합했다는건 도메인 테이블 조인을 허용한다는 의미인데.. 테이블이 변경되면 각 서비스 영향이 감
- SOA의 이러한 단점을 MSA는 저장소를 격리함으로써 해결하였음
- MSA는 어떻게 보면 SOA 범주 안에 포함됨
- SOA는 서비스의 재사용성을 강조하지만, 단점 이 확실 했음 -- 공통 서비스를 여러 서비스에서 호출하는데 어떻게 보면 의존성이 생기게 됨. 즉, 어떠한 서비스 때문에 공통 서비스를 변경하게 되면 다른 서비스도 영향을 받게됨 -- MSA는 재사용성보다는 이 공통 부분을 독립적인 배포나 변경을 위해서는 각 서비스마다 있는게 더 바람직하다 라는게 MSA의 관점 그렇다 하더라도 공통적인 부분을 최대한 빼내려고 하지않고 중복을 어느정도 허용하더라도 서비스들 간에 독립성을 보장해서 구성하는걸 추구하고 있다