Service Mashups
웹 환경에서 Mashup이라는 개념이 등장하게 되었습니다. 이것은 하나 이상의 Resource로부터 데이터를 수집하고 통합해서 웹 애플리케이션 만듭니다. 최근에는 이 개념이 Service Mashup까지 포함돼서 확장이 되었습니다.
Service Mash-ups Architecture
Service Mashup은 앞에서 배우셨던 OpenAPI를 사용해서 다양한 서비스로부터 콘텐츠와 기능들을 받아 통합함으로써 애플리케이션을 제작합니다. Mashup에는 OpenAPI 뿐만 아니라 RSS와 같은 Web Feed도 많이 활용합니다. 서비스 Mashup을 위한 아키텍처는 일반적으로 세 가지 요소로 구성됩니다.
먼저 Mashup할 콘텐츠를 제공하는 Content Provider가 있습니다. Content Provider는 SOAP, REST, RSS와 같은 API를 통해서 직접 접근 가능합니다. 두 번째 요소는 Mashup Site인데, 이것은 실제 여러 Resource로부터 모아진 콘텐츠를 사용해서 새로운 콘텐츠를 만들어내는 Mashup Application이 됩니다.
이러한 Mashup은 일반적으로 서버에서 이루어지지만 앞에서 OpenAPI를 사용 예에서 보신 것처럼 지도 위에 위치를 표시하는 등 간단한 Mashup은 클라이언트에서도 이루어질 수 있습니다. Mashup 아키텍처의 세 번째 요소는 클라이언트 웹브라우저입니다. 이것은 Mashup을 위한 User Interface를 제공하고, 방금 설명 드린 것처럼 간단한 Mashup을 실행하는 역할을 수행합니다.
Mashup을 쉽게 할 수 있는 여러 가지 도구
여기 보시는 예는 Chicago Crime이라는 Mashup 애플리케이션입니다. 여기서는 Google Maps 위에 시카고 시에서 보유한 범죄관련 데이터를 Visualization함으로써 시카고 시 내에 어느 지역에 어떠한 범죄가 그동안 많이 발생했는지 쉽게 파악할 수 있도록 하는 Mashup 애플리케이션이 됩니다.
그 동안 Mashup을 쉽게 할 수 있는 여러 가지 도구들도 개발이 되었습니다. 대표적인 것 중 하나가 IBM의 Emerging Technologies 팀에서 개발한 Node-RED가 있습니다. 이 도구를 사용하면 OpenAPI 서비스들과 IoT 기기들이 서로 연동합니다.
이걸 통해서 기존의 클라우드 서비스 그리고 IoT들이 연동되는 새로운 Mashup 애플리케이션을 쉽게 개발합니다. Node-RED에 대한 상세한 정보는 Nodered.org에서 얻습니다. Node-RED는 보시는 스크린샷과 같이 웹브라우저에서 실행되는 Flow Editor를 제공합니다.
이 Flow Editor는 Visual한 Mashup을 가능하게 하는 것인데요. 이를 사용해서 사용자는 서비스 노드들을 선택해서 서로 연결함으로써 비즈니스 프로세스와 유사한 Service Flow를 생성해낼 수가 있습니다. 이것은 하나의 애플리케이션으로서 실행되고 저장됩니다.
Node-RED에서 우리는 이미 존재하는 서비스 노드들을 활용할 수 있을 뿐만 아니라 또 우리는 필요한 서비스를 JavaScript Function을 만들어서 새롭게 정의합니다. 이러한 정의된 새로운 서비스를 통해서 Service Flow를 제작합니다.
또한 정의된 Service Flow는 JSON 파일로 저장되었다가 나중에 재사용되거나 또는 다른 사용자와 공유할 수 있습니다. Node-RED는 이러한 Flow Editor뿐만 아니라 여기 그림에서 보시는 것처럼 Service Flow를 실행하기 위한 Light-Weight한 Runtime도 함께 제공합니다.
이것은 Node.js를 기반으로 구현이 됐습니다. 이것을 사용해서 JavaScript로 구현된 서비스 노드들을 실행할 수 있습니다. 또한 개발된 Node-RED Node들을 Packaging해서 Node Package Manager(NPM) Repository를 통해 공유합니다. 이 Repository를 사용하면 Flow Editor의 Node Palette에 보이는 노드를 쉽게 확장합니다.
Node-RED Library
만들어진 Node들과 Service Flow들은 보시는 스크린샷과 같은 Node-RED Library Site를 통해 사용자 간에 공유합니다. Node-RED Library Site의 주소는 Flows.Nodered.org입니다. 이 사이트를 통해 다른 사용자들이 개발한 Service Flow들을 쉽게 검색합니다. Node Package Manager를 사용해서 이것들을 설치해서 활용할 수 있습니다.
마이크로서비스
마이크로서비스는 말 그대로 규모가 작은 서비스입니다. SOA를 구축하기 위한 또 하나의 방법입니다. 이러한 마이크로서비스는 몇 가지 특징이 있습니다.
우선 일반적인 서비스와 같이 연관된 기능들을 모아서 정의가 되지만 그 크기에 있어서는 기존의 일반적인 서비스보다 작고, 또한 특정한 비즈니스 기능에 매우 초점을 맞춰서 개발이 됩니다. 그리고 서로 다른 개발자에 의해 마이크로서비스는 독립적으로 개발되고 또 교환될 수 있습니다.
그리고 마이크로서비스는 API를 통해 직접 접근 가능합니다. 마이크로서비스 아키텍처는 이러한 마이크로서비스로 구성된 SOA입니다. 그리고 마이크로서비스는 각자 각각의 데이터베이스를 가지고 있는 형태로 구성이 됩니다.
마이크로서비스를 서로 연결해서 E-commerce 애플리케이션을 구축한 모습입니다. 마이크로 서비스들은 REST API를 통해 서로 연결되어 있습니다. 각 마이크로서비스는 자신의 기능 제공에 필요한 고유한 데이터베이스를 보유합니다.
마이크로서비스가 조합된 애플리케이션을 통해서 뿐만 아니라 우리는 또한 각 마이크로서비스를 개별적인 API를 통해서 접근 가능합니다.
SOA vs MSA
우선 SOA에서와는 다르게 마이크로서비스는 서로 독립적으로 개발되고 배포됩니다. 그리고 SOAP 기반의 Enterprise Service Bus를 사용하는 것이 아니라 API를 통해 서로 직접 상호작용합니다. 또한 마이크로서비스는 각각 독립적인 데이터베이스를 가지고 있고, 그 크기가 일반적인 서비스보다 작습니다.
'SW > 클라우드 서비스 아키텍처' 카테고리의 다른 글
AWS의 Rust 오픈 소스 프로젝트 17개 (0) | 2023.05.29 |
---|---|
클라우드 컴퓨팅 : 가상 머신을 보호하는 5가지 방법 (0) | 2023.05.15 |
Open API 아키텍처 : 개념, 개요, 설명, 정의 (0) | 2020.06.05 |
클라우드 컴퓨팅 : 개념, 특징, 개요, 설명, 종류 (0) | 2020.06.04 |
REST API 아키텍처 : 개념, 방법, 개요, 설명 (0) | 2020.06.03 |