๋ฐ์ํ
EDA(Event Driven Architecture)?
๋ถ์ฐ๋ ์์คํ
์์ ์ด๋ฒคํธ๋ฅผ ์์ฑ(๋ฐํ)ํ๊ณ , ๋ฐํ๋ ์ด๋ฒคํธ๋ฅผ ์ ์กํ๋ ๊ตฌ์กฐ๋ก ์์ ์๋ ๊ทธ ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ ์ํคํ
์ฒ
๋ถ์ฐ ์ํคํ
์ฒ ํ๊ฒฝ์์ ์ํธ ๊ฐ ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถ๊ธฐ ์ํด ๋น๋๊ธฐ ๋ฐฉ์์ผ๋ก ๋ฉ์์ง๋ฅผ ์ ๋ฌํ๋ ํจํด์ผ๋ก ์ฃผ๋ก Message Broker(Kafka
, RabbitMQ
)์ ๊ฒฐํฉํ์ฌ ๊ตฌ์ฑ๋๋ค.
๊ตฌ์ฑ ์์
- Event Generator(Publisher, Producer, Creater)
ํ์คํ๋ ํ์์ ์ด๋ฒคํธ๋ฅผ ์์ฑํ๋ค. ์์ฑ๋ ์ด๋ฒคํธ๋Event Channel
๋ก ์ ์ก๋๋ค. - Event Channel(Bus)
Event Generator
์์Event Processing Engine
์ผ๋ก ์์ง๋ ๋ฐ์ดํฐ๋ฅผ ์ ํํ๋ ๋งค์ปค๋์ฆ
์ฆ, ์ด๋ฒคํธ๋ฅผ ํ์๋ก ํ๋ ์์คํ ๊น์ง ์ ์กํ๋ ์ญํ - Event Processing Engine (Cunsumer, Processor)
์์ ํ ์ด๋ฒคํธ๋ฅผ ์๋ณ/์ฒ๋ฆฌํ๋ ์ญํ
์ฒ๋ฆฌ ๊ฒฐ๊ณผ์ ๋ฐ๋ผ ์๋ก์ด ์ด๋ฒคํธ๋ฅผ ์์ฑํ ์ ์๋ค.Customer
๋ ์ด๋ฒคํธ์ ์ก์ ์์ ๋ํ ์ ๋ณด๋ฅผ ์ ํ์๊ฐ ์๋ค.
๋์ ๋ฐฉ์
- Message ์์ฑ(Publisher/Subscribe)
- ๋ฉ์ธ์ง ์ข ๋ฅ, ๋ฉ์ธ์ง๊ฐ ์คํํ ํ๋ผ๋ฏธํฐ
- ์ด๋ฒคํธ๊ฐ ์์ฑ๋๋ฉด
Subscriber(์์ ์)
์๊ฒ ์ ๋ฌํ๋ค. - ์ด๋ฒคํธ๋ ๋ฐ๋ณต๋์ด ์ ๋ฌ๋์ง ์์ผ๋ฉฐ, ์์ ์๋ ์ก์ ์์ ์ ๋ณด๋ฅผ ์ ํ์๊ฐ ์๋ค.
- Event Source
Event Processor
์๊ฒ ์ด๋ฒคํธ๋ฅผ ์ ๋ฌํ๋ ์ญํ ์ ํ๋ค.Event Source
๋ 1๊ฐ ์ด์์ผ ์ ์์ผ๋ฉฐ, 1๊ฐ ์ด์์Event Processor
์๊ฒ ์ ๋ฌํ๋ค.
- Event Processor
- ์์ ๋ ์ด๋ฒคํธ์ ๋ํ ์ฌ๋ฌ
Action
์ ์ํํ๋ ์ญํ ์ด๋ค. - ๋จ์ผ ์ด๋ฒคํธ์ ๋ํ์ฌ ํ์ ์คํฌํ๋ฅผ ์ถ๊ฐํ๋ค๊ฑฐ๋, ํ์ ์ด๋ฒคํธ๋ฅผ ๋ง๋๋ ๋ฑ์ ์์ ์ ์ํํ๋ค.
- ์์ ๋ ์ด๋ฒคํธ์ ๋ํ ์ฌ๋ฌ
- Event Consumer
- ์ด๋ฒคํธ์ ๋ํ ์ฒ๋ฆฌ๋ฅผ ํ๋ค. ์ค์ง์ ์ธ Biz Logic์ ์ํํ๋ค.
์ฅ๋จ์
์ฅ์
- Loosely Coupling
๋ถ์ฐ ์์คํ ๊ฐ ๋์จํ ๊ฒฐํฉ๋๋ฅผ ์ ๊ณตํ๋ค. - ๋ถ์ฐ๋ ์์คํ
๊ฐ ์์กด์ฑ ๋ฐฐ์
์ฝ์๋ Message๋ฅผ ํตํด ํต์ ํ๊ธฐ ๋๋ฌธ์ ๋ค๋ฅธ ์์คํ ์ ์ ๋ณด๋ฅผ ์ ํ์๊ฐ ์์ผ๋ฏ๋ก ์์คํ ๊ฐ ์์กด์ฑ์ด ๋ฐฐ์ ๋๋ค. - ํ์ฅ์ฑ, ํ๋ ฅ์ฑ(์ ๋์ฑ) ํฅ์
๋จ์
- Broker Dependency
์์คํ ๊ฐ ์์กด๋๋ ๋ฎ์์ง์ง๋ง ๋ฉ์ธ์ง ๋ธ๋ก์ปค์ ๋ํ ์์กด์ฑ์ด ๋ฐ์ํ๋ค.
๋ง์ฝ ๋ฉ์์ง ๋ธ๋ก์ปค์ ์ฅ์ ๊ฐ ๋ฐ์ํ๋ฉด ํฐ ์ฅ์ ๋ก ๋ฌด์กฐ๊ฑด ์ด์ด์ง๋ค. - Transaction ๋จ์ ๋ถ๋ฆฌ
์ฅ์ ๋ ์ด์ ๋ฐ์ ์ Retry/Rollback์ ๋ํ ๊ณ ๋ ค๊ฐ ํ์ํ๋ค. - ์์คํ Flow ํ์ ์ด ์ด๋ ต๋ค.
- ๋๋ฒ๊น ์ด ์ด๋ ต๋ค.
728x90
๋ฐ์ํ
'๋ด์ผ๋ฐฐ์์บ ํ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
JPA ์ฌํ : Raw JPA (0) | 2023.12.26 |
---|---|
JPA ์ฌํ - ORM(JDBC , JQuery Mapper) (0) | 2023.12.19 |
๊น๋ฐฅ ์ฒ๊ตญ ํ๋ก์ ํธ KPT (0) | 2023.12.12 |
์คํ๋ง ์ฌํ 5์ฃผ์ฐจ : Spring AOP (0) | 2023.11.30 |
์คํ๋ง ์๋ จ 4์ฃผ์ฐจ : ์ง์ฐ ๋ก๋ฉ/์ฆ์ ๋ก๋ฉ (0) | 2023.11.29 |