본문 바로가기
Conference, 강연

NDC - Kafka를 이용한 비동기 메시지 시스템 구현

by pinok1o 2021. 5. 11.

https://www.youtube.com/watch?v=ALaQ642ZACg

 

Monolithic -> Microservices

**Microservices Architecture 개념의 등장**

  • 서비스 단위로 별도의 프로세서 또는 어플리케이션으로 독립적으로 운용
  • 자기가 필요한 데이터나 서비스는 통신의 개념으로 요청받고 제공한다 (REST ful API)

 

계정 보안 서비스를 만든다...

  • 다른 지역에 로그인이 되었을때 알림, kick out, 계정 잠금

 

필요한 서비스를 정의하고 각각들이 참조할 수 있는 REST ful 플라스크? 에 맞춰 정의했지만..

  • 이 서비스들이 제공하는 서비스에 따라 조건에 따라 처리를 해줘야하는 중앙 제어부가 생김
  • 다른 서비스들이 수정되었을때 중앙 제어부도 수정되어야 한다
  • 마이크로 서비스들의 상호 의존성을 좀 개선하려고 하다가 kafka를 사용하여 구현하게됨

버스 형태 메세지 flow 구현

  1. 최초 로그인에 대한 정보가 생기면
  1. IPChecker가 가장 먼저 소비하고
  1. 그 다음 Logger에 대해 기록이 되고
  1. 그 다음 Security Module에서 보안에 대한 동작이 취해진다
  • 중간에 생성되는 Event를 다른 Service가 같이 가져갈 수도 있다.

이런 구현에 왜 kafka를 사용했냐

  • 이런 queue 서비스들 중에서 가장 빠르다
  • 구조가 간단해서 설치 운용이 편리
  • 분산된 환경에서 운용이 가능, 특정 노드 fail시 안전성

kafka를 업데이트 하려면, 클라이언트 모듈과의 디펜던시가 존재

  • 별도의 Publisher, Consumer App을 둬서 한 계층 분리

자신의 서비스의 정보에 관심이 있는 Service들에게 동시에 message를 전달할 수 있고

특정 서비스 endPoint에서 해당 flow가 끝난다면 message를 굳이 전달하지 않는 것으로 flow 통제 가능

Consuming configuration

  • 어떤 topic을 받을건지, endpoint는?, streaming or단방향 등등의 설정

댓글