MSA (Micro Service Achitecture)
서비스를 작은 단위로 분리하여 전체 어플리케이션을 만드는 방식.
이의 선구자 영국의 마틴폴러는 HTTP상에서의 REST API 같은 가벼운 통신 방식을 사용하는 아키텍처라고 정의했다.
여러개로 나뉜 서비스 API와의 통신
클라이언트가 요청한 서비스를 API 게이트웨이가 기능별로 분류하여,
각 서비스를 담당하는 API 엔드 포인트를 호출하고 그에 대한 응답을 API 서버에서 받아오는 구조라고 한다.
장점으로는 MSA의 각 Service가 서로 약한 결합 형태로 연결되어 종속성을 줄여,
서로의 간섭을 최소화하고 빠르게 개발하고 효율적으로 유지보수할 수 있다.
이렇게 작게 나뉘어진 서비스는 개별적으로 개발, 테스트, 배포가 가능하기에,
CI (Continuous Integration, 지속적인 개발) 과 CD (Continuous Delivery) 에 적합하다.
MSA가 회자될 무렵,
모든 기능은 API 형태로 정의가 되고 다양한 형태의 클라이언트와 서버가 퍼블릭 클라우드와 같은 형태로 존재했다.
이 둘을 연결하는 인터페이스를 REST API 방식으로 전달하고 이의 중간역할이 API 게이트웨이가 담당한다.
♥
REST API
(Representational State Transfer - Application Programming Interface)
시스템과 상호작용을 하여 정보검색을 하거나 기능을 수행하고자 할 때
API는 사용자가 원하는 것을 시스템에 전달해주고 시스템이 이 요청을 이해하고 수행할 수 있도록 지원
API의 이해
RESTful API를 통해 요청이 수행될 때 RESTful API는 리소스 상태에 대한 표현을 요청자에게 전송한다.
Http url을 통해 자원을 명시하고 GET/POST 방식을 통해
해당 자원에 대한 CRUD(create, read, update, delete)기능을 적용하는 것.
Server로부터 스크립트를 받아 Client에서 실행하는 구조를 사용.
장점
- HTTP 프로토콜의 인프라를 그대로 사용해서 편리하다.
- 다양한 포맷(json, xml 등)의 자원으로 통신할 수 있다.
- REST 기반으로 시스템을 분산하여 확장성과 재사용성을 높임.
단점
- http 메소드(get, post)만 사용가능 (put, delete는 구형 브라우저에서 지원 x)
- push state 미지원
'MSA' 카테고리의 다른 글
[스프링부트 (2)] SpringMVC(1) Controller 생성하기 (0) | 2023.04.01 |
---|---|
spring Eureka 구축방법 (0) | 2023.03.30 |
[Spring Cloud] Eureka 개념 및 예제 (0) | 2023.03.30 |
msa api 게이트웨이 구현방법 알려줘 java (0) | 2023.03.30 |
[Spring Cloud 를 활용한 MSA 기초] 3. Cloud Native 이해 (0) | 2023.03.30 |
댓글