Kafka 느낀점

이진수·2022년 1월 10일
0

kafka

목록 보기
1/2
post-thumbnail

Kafka 느낀점

대략적 Kafka 소개 (다 내머리 속에서 나온거)

(내가 이해한 kafka에 대한 내용은 좀 더 자세하게 다른 파일에서 서술할듯)

  • Kafka는 간단하게 Message Queue 이다.
  • 여러 domain에서 사용되고 있는데 가장 많이 쓰이는 분야는 edge computer에서 실시간 데이터를 중심(데이터 저장소)로 보내는 곳이다. (카더라 통신에 따르면, 하지만 제일 그럴싸 하다.)
  • 비즈니스 도메인 즉 MSA에서는 분산되어 있는 여러 서비스 간 통신 매개체로 쓰인다.

장점

오직 내가 써보고 느낀거에 대한

  • MSA에서 여러 분산 서비스 간 통신 매개체로 쓰인다고 했는데 이는 서비스 간 장애 전파를 막을 수 있다. 이러한 통신을 Pub/Sub이라고 하는데 비동기 통신이라고도 한다. 비동기 통신은 비단 kafka만을 이용해서 할 수 있는 통신 방법은 아니다. (대안으로 Rabbit MQ도 존재). 여튼 비동기 통신은 동기 통신과는 다르게 자신이 보낸 요청에 대한 응답을 받지 않아도 된다. 이는 각 서비스의 도메인에 집중 할 수 있다는 뜻이기도 하다.
  • 요청에 대한 응답을 받지 않아도 된다고 했는데 이는 장애 전파 차단에도 도움이 된다. 기존 동기 통신에서는 요청한 서비스는 정상인데 응답 서버에 장애가 발생하면 요청 서비스 또한 장애가 발생하는데 비동기 통신에서는 요청 서비스와 응답 서버가 완전히 분리 되어 있기 때문에 한 서비스의 장애가 다른 서비스에 영향을 끼치지 않는다.
  • 이건 비단 Kafka에 장점이라고 하긴 그렇지만 여러 언어를 지원하여 Polyglot한 서비스 모델을 만들 수 있다는 장점이 있다. (이건 비단 pub/sub 통신의 장점이 아닌 req/res 통신에서도 통신 규약이 정해지면 뭐든 polyglot한 서비스를 만들 수 있다.)

단점

단점 또한 내가 써보고 느낀것

  • 간단한 서비스를 만들기엔 굉장히 쉬우나 비즈니스 로직이 들어가는 순간 복잡해 진다.
  • 정보의 유실성을 어느 정도 감안을 하거나 정보 유실성에 대한 예외 처리를 진짜 확실히 해야한다.
  • 카프카의 파티션이 늘어났을때 데이터의 순서성이 보장되기 어렵다. (순서성을 보장하기 위해선 많은 로직이 들어가야됨)
  • 2PC(2 phase commit)에 대한 대안책이 필요하다. (SAGA 패턴) 2PC 뿐만 아니라 kafka publish logic이나 sub logic이 DB와 묶여있다면 DB transaction과 묶어줘야한다.
  • 아직 그럴듯한 monitoring tool이 없다. (confluent사가 만든 모니터링 툴이 있긴하나 유료 이다. 오픈소스 monitoring tool이 있긴하나 아직 1버전이 나오지 않은 상태이다. 물론 쓸만하긴 하다. )
profile
개린이

0개의 댓글