개요
스터디를 하는 도중에 Integration을 통해서 하드웨어와 통신을 해야하는 상황이 생겼다.
현재 하드웨어 EndPoint는 Oracle에서 제공하는 server에 떠있는 상황이고 -> 곧 aws iot core로 이전 계획이있다. 해당 서버를 통해서 App <-> Backend <-> MQTT Server <-> Hardware의 구조로 데이터를 주고 받을 수 있게 해야하는 상황이다. MQTT 프로토콜에 대한 통신은 Paho libraray가 지원해 주지만 문제는 연결 및 해제 관리가 너무 많다는 것이다. 현재 수집 및 통신해야 하는 데이터도 굉장히 많은데 이를 모두 Paho library로 짠다면 혼자 개발하는데 로드가 너무 커진다…
해결
해서 Integration에 대해서 좀 시간을 가지고 공부한 뒤 이를 적용하려고 한다.
Integration이 뭔디?
- Spring Integration은 spring이 가지는 목표와 원칙이 동일하다.
- Spring이 단순화해 놓은 추상화와 라이브러리를 통해 이식성을 확보 및 생산성을 높일 수 있다.
- 메시지 기반 아키텍쳐를 지원하며 특정 비지니스로직을 실행 및 응답해야 하는 런타임 관심사에서 inversion of control을 사용할 수 있게한다.
- 메시지 라우팅, 메시지 필터링, 메시지 집계등 다양한 방식을 지원한다.
그래도 잘 모르겠는디?
나도 이렇게 써놓으면 잘 모르겠다. 뭐 어차피 책보고 혼자 하는데 정확할 수는 없다. 그래도 document에서는 목표를 이렇게 정의한다.
Sping Integration의 목표
- 복잡한 기능을 해결할 수 있는 통합 솔루션을 제공한다.
- spring application내에서 메시지 기반 비동기 로직을 쉽게 구성할 수 있도록 지원한다.
Sping Integration의 원칙
- 구성 요소들은 모듈화나 테스트를 위해 느슨하게 결합되어야 한다.
- 비지니스 로직과 통합 로직 간의 관심사를 분리해야한다. (원문인데 이해가 잘 안되네)
- 재사용성과 이식성을 위해 확장 포인트는 완전히 추상화 되어 있어야 한다.
그래도 모르겠다
어차피 원문은 잘 모르겠다 그럼 일 딴 좀 더 넘어가 보자! Integration Main Component