Spring/Spring Integration

[Spring Integration] 1장 - Integration, EIP, EAI, ESB 정리

공대키메라 2022. 9. 21. 15:54

오랜만에 글을 적으려고 한다. (노느라 그런거 아니라능... ㅠㅠ)

 

최근에 새로운 프로젝트로 투입이 되었는데 절차가 복잡하고 그 기간도 생각보다 길어질 것 같아서 현재 프로젝트에서 무엇을 쓰는지 알아보았는데, Spring Integration을 사용한다고 한다. 

 

그래서 이에 대한 정보를 정리하려고 하는 데... 

 

읽어보니 이거 선행되어야 하는 지식이 좀 있기 때문에(ㅠㅠ...) Spring Integration 학습 세션을 좀 나누어서 학습하려고 한다. 

 

또한, 한국어로 정리된 내용들 중에 좀 더 깊게, 근본적인 이유에 대해 찾아본 사람은 없기에 필자는 좀 더 왜 이게 필요한지 알아보고자 노력했다.

 

참고 사이트

https://www.enterpriseintegrationpatterns.com/patterns/messaging/

https://blog.oneio.cloud/what-are-enterprise-integration-patterns

https://transportgeography.org/contents/chapter2/geography-of-transportation-networks/point-to-point-versus-hub-and-spoke-network/

 

1. Integartion 이란 무엇인가?

IT integration(통합) 혹은 시스템 integration은 당신의 IT 조직 더 효율적이고, 생산적이며 기민한  데이터, 어플리케이션, API, 그리고 기기들의 연결이다.

 

integration은 IT에서 모든 것들이 함께 일하는 비즈니스 전환 - 시장 이동에 적응하기 위해 어떻게 비스니스를 처리할지에 대한 기본적인 변화 - 을 이야기할 때  핵심이다. 

 

integration은 다른 시스템들과의 연결이 제공된 새로운 기능성들을 통해 연결할 뿐만 아니라 가치를 더한다. 

 

예를 들어, Apache Kafka는 우리 application에서 일련의 데이터들을 통합해서 실시간으로 데이터를 처리할 수 있게 하는 오픈 소스 플랫폼이다. 

 

IT integration은 계속적인 통합(continuous integration - CI)와 같지 않은데, CI는 작동하는 코드의 복사본들이 공유된 중앙 저장소로 하루에 개발자 관행이다. 

 

CI의 목표는 빌드와 검증을 자동화해서 문제들이 더 일찍 감지되게 할 수 있다. 

 

2.  Enterprise Integration Pattern(EIP) 이란? 

Enterprise integeration pattern(EIP)는 시스템, 어플리케이션, 데이터들 사이에 최고의 설정 통합을 위한 일련의 개념과 관행이며 자주 공통적으로 enterprise application integration(EAI)에 언급된다.

 

3. 왜 EIP가 중요한가?

EIP은 엔터프라이즈 인테그레이션 아키텍처(enterprise integration architecture)를 정의하고 EAI를 생성하기 위해 중요한 기초를 형성한다.  이것은 자주 business-critical하고 복잡한 생태계의 데이터와 시스템에서 작동한다. 

 

enterprise architect에서, 이러한 패턴들은 많은 시스템들과 내부적으로 연결된 처리가 있는 시나리오에서 최고의 아키텍트 통합을 돕는다. 

 

4. EAI(Enterprise Application Integeration)는 무엇인가?

EAI(Enterprise application integration)은 비즈니스 어플리케이션과 연동된 database 와 workflow를 통합하는 업무이다.

 

비즈니스가 정보를 한결같이 사용하는지 확인하고 한 어플리케이션에서 만들어진 핵심 비즈니스 데이터의 변화가 정확히 다른 곳에 반영됬는지 확인하기 위함이 목적이다.

 

5. 왜 EAI가 중요한가?

대부분의 비즈니스는 그날그날의 작동에서 다른 벤더들로부터 소프트웨어 제품을 사용한다. 

 

이 어플리케이션들은 다른 사용, 데이터 저장 그리고 작동의 메소드들을 가질 수 있다.

 

이게 data silos를 생성하는데 data silos는 데이터가 데이터베이스들 사이에 복사되어있거나 하나에서는 사용할 수 있지만 다른 곳에서는 아니거나 하는 장소를 말한다. 

 

이것은 사용자가 어플리케이션들 사이에 데이터를 직접 복사하고 붙여야 할 때 데이터 불일치를 야기한다. 

 

사용자들은 또한 매일 주어진 일에서 몇개의 어플리케이션들로 상담할 수 있다.

 

 

EAI는 이러한 서로 전혀 다른 어플리케이션들이 메뉴얼 과정과 에러를 줄이기 위해, 그리고 구조적인 데이터에서 더 나은 시야를 제공하기 위해 데이터와 workflow를 공유하도록 도와주는 방법론이다.

 

과거에는 모든 비즈니스 workflow 들은 메뉴얼이 있었고 서류에 정리되었다. 컴퓨터가 사용자를 위해 작업을 자동화 햇을 때, 그날 그날의 할당 정보들은 빠르게 데이터를 포매팅하는 것이 되었고, 한 시스템에서 다른 시스템으로 정보를 전달하는 것이 되었다. 

 

어플리케이션들 사이에 빠르게 데이터를 사용할 수 있게 만들어야 할 필요성이 더 많은 조직들이 마이크로서비스(microservice), SaaS(Software as a service) 그리고 Paas(Platform as a service) 툴을 받아들일때 오직 상승한다.

 

EAI는 manual step과 user erorr 를 줄이는 데 도움을 줄 수 있다.

 

https://cdn.ttgtmedia.com/rms/onlineimages/microservices-microservices_vs_monolithic_architecture.png

6. EAI의 종류(Types of enterprise application integeration)

Point-to-point integration

EAI의 가장 간단한 형태. 데이터를 한 소스로부터 가져와지고 reformat 된다. 그리고 나서, 다음 어플리케이션에 의해 쓰인다. (중간에 다른 서비스를 거치지 않고 바로 보내고, 바로 받는다) 이것들은 자주 작은 작업 흐름과 몇개의 툴을 위해 구현하기에 간단한다. 

 

하지만, 더 많은 어플레키에신들과 통합들이 더해짐에 따라 빠르게 커지고 관리하기 어려워 질 수 있고, backlog혹은 둔화 때문에 느려질 수 있다.

 

Hub-and-spoke integration

이 접근은 사용중인 어플리케이션들 사이에 데이터와 단계들을 용이하게 중앙화된 프로그램을 사용한다. 

그 프로그램은 data reformatting을 다룰 수 잇고 작업 흐름이 계속해서 어플레키에션 둔화 이벤트에서 움직이도록 한다. 

(중앙에 위치한 허브라는 것을 통해 모든 것을 연결한다)

Hub-and-spoke는 그러므로 point-to-point보다 더 빠르고 믿을만 하지만 설치하고 유지할 노력과 개발 시간을 필요로 한다.

 

https://i0.wp.com/transportgeography.org/wp-content/uploads/2017/10/point_to_point_hub_networks.png?resize=1024%2C503&ssl=1

 

Bus-Integration

hub-and-spoke 디자인 EAI의 진화형이다. 또한 ESB로 불린다. 

https://cdn.ttgtmedia.com/rms/onlineImages/microservices-esb_diagram.jpg

 

흔한 버스 디자인에서, 모든 사용중인 어플리케이션들은 data 혹은 작업 흐름을 보내고 받기 위해 일련의 표준을 사용한다.

 

이는 작업을 이동하는 균일한 수단을 제공하도록 설계되었으며, 간단한 구조 및 비즈니스 정책 규칙을 기반으로 ESB에 연결하고 메시지를 구독할 수 있는 기능을 애플리케이션에 제공한다.

 

Middleware integration

이것은 끝에 사용자와 기저에 있는 어플리케이션 사이에 있는 중간의 프로그램이다.

미들웨어는 인터페이스 통합을 지원하고 이미 존재하는 hub-and-spoke 또는 bus-design을 가질 수 있다. 

 

Microservices

EAI 작동을 지원하는 작은, 하나의 목적을 가진 도구들이 있다. 이것들은 serverless 함수가 될 수 있거나 혹은 쉽고 빠르게 프로그램들을 연결하거나 통합하기 위해 디자인된 앱들을 가리킬 수 있다. 

 

Microservices는 종종 쉽게 cloud 항목에서 제외할 수 있다.

 

사실 integration들의 여러 종류에 따른 장 단점이 많지만, 여기서는 간단하게 무엇이 있는지만 알고 넘어가겠다.

몽말인지 알제?

 


이번 시간에는 Integeration이 무엇인지, 그리고 이와 관련된 것이 무엇이 있는지 간단히 알아보았다.

 

사실 그렇구나... 하지만 내부적으로는 더 복잡한 거 같다.