카프카 스케일링 2

카프카(Kafka)를 사용하는 이유

누구나 모놀로식 아키텍처로 개발을 해온 사람이라면 피해갈 수 없는 문제가 있다. 바로 커플링(Coupling)이다. 무수히 많은 로직들이 엉켜 결국 유지보수하는데 많은 시간을 소비해본 경험이 있을 것이다. 카프카를 이용해 DDD패턴으로 설계하면 이와 같은 문제를 해결할 수 있다. 카프카 카프카를 사용하는 주된 목적은 커플링을 줄이기위해 발신자와 수신자를 서로 의존하지 않는 상태로 서비스 아키텍처를 가져가기 위해 사용된다. 기존에는 하나의 소스 시스템에 여러 타겟 시스템이 붙어 수신해야했다. 이 때문에 타겟 시스템별 데이터 수신 차이가 발생했다. 이를 극복하기 위해 소스 시스템을 늘리면 구조가 복잡해지고 각 시스템들 사이의 데이터 포맷과 처리방식이 달라 확장 및 소비에 어려움이 있었다. 이런 문제를 깔끔하..

벡엔드/MSA 2024.03.26

Kafka Scaling 카프카 스케일링

Kafka Scaling 카프카에서 Topic을 생성하면 기본적으로 partition은 1개 생성된다. 이때 카프카에서 하나의 파티션은 반드시 하나의 Consumer가 매칭되어 메시지를 소비하게 되는데 partition 수보다 동일한 GroupId를 가진 Consumer의 수가 더 많다면 일부 Consumer가 partition에 매칭되지 못해 message를 Polling하지 못한다. 주문이벤트가 발행되면 policy에 의해 재고가 감소하는 Inventory 서버가 있다고 가정해보자. cd inventory mvn spring-boot:run // 8082로 실행 cd inventory mvn spring-boot:run -Dspring-boot.run.arguments=--server.port=808..

벡엔드/MSA 2024.03.20