MSA, EDA, Reactive 패러다임

MSA, EDA, Reactive 패러다임

EDM 아키텍처를 통한 통합 거래 및 이상 거래 탐지 시스템 구축(PT 발표 자료 및 스크립트)

금융 서비스에서 EDM 아키텍처를 도입하여 얻을 수 있는 이점에 대해 발표하기 위해 작성한 PPT 자료와 그 스크립트 입니다.. EDM 소개 Event-Driven MicroService, EDM 이란 시스템을 다수의 독립적인 서비스로 분할하는 MSA에서 각 MS가 상태의 변화를 이벤트로 표현하고, 이를 중앙화된 이벤트 브로커를 통해 주고받는 것을 통해 시스템의 통합을 수행하는 아키텍처 패턴입니다. 이는 기존의 MSA가 가진 한계를 극복하여 상용화가 가능하게 된 주요한 기술 중 하나입니다. 이와 같이 event 개념을 통해 MSA를 구성할 때의 이점에 대해 간단히 말씀드리겠습니다. 기존의 Rest 통신을 사용하는 구조는 그 특성상 Rest 통신의 특성상 서비스간 강한 결합 발생하고 동기 - 차단 방식의 ..

MSA, EDA, Reactive 패러다임

Node.js기반 Express VS java기반 Spring WebFlux

Spring mvc는 분명 "multi Thread, sync, Blcoking" 방식을 통해 Node.js 대비 이점이 존재하지만, 단점 역시 존재한다. 그리고 이러한 단점이 요즘의 애플리케이션 개발 트렌드에 적합하지 않기에 Spring webflux등의 Reactive Stack을 통한 리액티브 프로그래밍을 통해 이러한 단점을 극복하도록 지원한다. 하지만, Spring의 Reactive Stack와 유사하게, express 기반의 Node.js 역시 async, non-blocking, event-driven 방식을 사용한다. 이번 글에선 스프링 webflux와 유사하게 async, non-blocking, event-driven 방식을 사용하는 Node.js를 비교분석해보겠다. 1) Spring w..

MSA, EDA, Reactive 패러다임

(EDM) Event Driven MicroService 기초 지식 정리

MSA MSA(MicroService Architecture)는 소프트웨어 개발 기법의 하나이다. MSA는 단일 애플리케이션을 작은 서비스 모음으로 개발하는 접근 방식으로, 각 서비스는 자체 프로세스에서 실행이 되고 느슨한 연결(Loosely-coupled) 구조로 만들어 HTTP 리소스인 REST와 같은 경량 메커니즘과 통신한다. 한마디로 "하나의 큰 애플리케이션을 여러 개의 작은 애플리케이션으로 쪼개어 변경과 조합이 가능하도록 만든 아키텍처" 이다. Monolothic(모놀로식) 아키텍처는 ui - Business Logic - DataLayer 등으로 나누어져 1개의 서비스를 개발하는 것으로, 과거 많이 사용하던 방법이다. 최근 넷플릭스가 MSA로 전환을 성공하고, 넷플릭스 OSS라고 불리는 오픈소..

MSA, EDA, Reactive 패러다임

Reactive System과 event-driven Architecture

Reactive 패러다임 리액티브(Reactive) 패러다임은 비동기적인 데이터 흐름과 변경에 반응하는 프로그래밍 패러다임이다. 이 패러다임은 데이터 스트림에 대한 관찰과 반응을 중심으로 한다. 리액티브 시스템에서는 데이터의 변화나 이벤트를 발생시키는 작업들이 스트림 형태로 표현된다. 이 스트림은 연속적으로 도착하는 데이터나 이벤트의 시퀀스를 나타내며, 이러한 데이터 스트림에 대한 관찰과 처리가 중요한 역할을 한다. 리액티브 패러다임의 핵심 개념은 다음과 같다. 1) 데이터 스트림 (Data Streams): 데이터 스트림은 시간에 따라 연속적으로 도착하는 데이터나 이벤트의 흐름을 나타낸다 이러한 데이터 스트림은 비동기적으로 처리되며, 변화에 따라 업데이트될 수 있다. 2) 옵저버블 (Observable..

MSA, EDA, Reactive 패러다임

Request-Respone(Rest 통신) VS 비동기 메세지 통신(Pub-Sub)

Request-Response VS Event-Driven Application Request-Response 요청/응답 통신방법은 동기 통신에 단일 통신 방법으로, 요청자는 응답자의 주소를 알고 있어야 통신이 가능합니다. 이런 방식을 Point to Point 방식이라 한다. 이 방식은 서비스가 늘어나고, 복잡해 질수록 기억해야 주소가 늘어난다. 복잡하게 서비스들끼리 연결되어있다고 하여 스파게티 네트워크(Spaghetti network) 라고도 불린다. 동기 통신이기 때문에 응답 서비스가 항상 떠있어야 하고, 응답서비스에서 오랜 시간을 소비하면 그만큼 응답이 늦어지기진다. 또한 요청 채인이 길어지면 장애전파(Fault Spread)의 위험성이 있다. 장점: 명확한 요청과 응답: 클라이언트는 서버에게 필..

MSA, EDA, Reactive 패러다임

reactive programing [이론 정리]

리액티브 프로그래밍 리액티브 프로그래밍은 비동기적인 데이터 스트림을 다루기 위한 프로그래밍 패러다임이다. 이 패러다임은 데이터의 흐름을 중심으로 개발을 진행하며, 데이터의 변경에 반응하여 비동기적으로 처리합니다. 리액티브 프로그래밍은 확장성과 반응성이 중요한 애플리케이션에서 유용하게 활용된다. 리액티브 프로그램의 필요성 1년 치 구독료를 지불하였는데 배달이 오지 않고 1년 치 신문이 모두 준비되면 그제야 배달을 시작한다면 어떻게 될까? 실제로는 기사가 최신일 때 독자가 읽을 수 있도록 출간 후 가능한 빨리 배달된다. 또한 독자가 기사를 읽는 동안 기자는 새로운 다음 기사를 작성한다. 이 모든 것은 병행으로 진행된다. 이처럼 애플리케이션 코드를 개발할 때는 명령형(imperative)와 리액티브(react..

MSA, EDA, Reactive 패러다임

WebFlux VS Spring MVC

이번 글에선 이론적으로 WebFlux가 Spring MVC에 대비해 어떤 이점이 있는지 분석하고, 외부의 performance Test를 이러한 이론을 증명하겠습니다. WebFlux를 사용하는 이유는? - aync & Non-blocking방식으로 인해 cpu, Thread, memory등의 리소스 낭비 없이 효율적으로 동작한다. - 서비스간 호출이 많은 MSA에 적합하다. spring webmvc vs webflux webmvc - Blocking & sync - 사용자의 요청이 들어올 때 마다 Thread를 생성하여 처리(multi thread) - Thread Pool에서 미리 스레드를 일정 갯수 생성하고 사용(스레드 생성, 삭제 비용의 절감) - 요청이 들어오면 Queue 에 쌓고 순서에 따라서 ..

MSA, EDA, Reactive 패러다임

Spring reactive Stack VS Servlet Stack

Spring에서 Reactive Stack과 Servlet Stack의 차이점과 장단점은 다음과 같다. Servlet Stack: Servlet Stack은 전통적인 방식으로 웹 애플리케이션을 처리하는 기술 스택이다. Servlet 컨테이너를 기반으로 동작하며, 요청마다 쓰레드를 생성하여 처리한다. 각 쓰레드는 독립적으로 요청을 처리하고 응답을 반환한다. 장점: - 잘 알려진 기술 스택: Servlet은 오랜 기간 동안 사용되어온 기술로, 많은 개발자들이 익숙하다. - 간편한 개발: Servlet API를 사용하여 간단한 웹 애플리케이션을 구축할 수 있다. - 기존 라이브러리와의 호환성: 많은 서드파티 라이브러리들이 Servlet 기반으로 개발되어 있으며, 기존에 작성된 코드를 쉽게 통합할 수 있다. 단..

코앤미
'MSA, EDA, Reactive 패러다임' 카테고리의 글 목록