백엔드(BackEnd) 5

[Kafka] API 게이트웨이 중심 접근법

개요Kafka에 대해 공부하면서 MSA구조에서의 활용 방안에 대해 많이 고민하게 되었다. 즉 내린 결론은 API-Gateway 기반의 MSA구조에서 Kafka를 사용한 방식이 큰 도움을 줄 수 있다는 결론에 다다랐다. API 게이트웨이 중심 접근법에서는 실제로 컨트롤러 로직이 API 게이트웨이에 집중되고, 마이크로서비스는 핵심 비즈니스 로직에만 집중하게된다. 이로 인해 얻을 수 있는 이점은 다음과 같다. 관심사 분리:외부 API 인터페이스와 내부 비즈니스 로직의 명확한 분리각 계층이 단일 책임에 집중할 수 있음API 관리 용이성:모든 API가 한 곳에서 관리되어 일관성 유지 가능공통 검증, 인증, 로깅 등을 중앙에서 처리 가능마이크로서비스 단순화:마이크로서비스는 HTTP 처리 없이 순수 비즈니스 로직에 ..

[Kafka] 상황별 응답 처리

개요Kafka는 다음과 같은 다양한 응답 패턴에서 유용하게 작동한다.응답이 불필요한 비동기 처리부터 응답이 필요한 동기/비동기 처리와 일관성과 순서가 중요한 처리 모두 처리할 수 있다.따라서 Kafka는 비동기 처리뿐만 아니라, 적절한 결과 반환 메커니즘과 함께 사용하면 즉시 응답이 필요한 API 시나리오에서도 효과적으로 활용할 수 있다. 주요 이점은 시스템 간 결합도 감소, 부하 분산, 확장성 향상이다. 처리 결과를 클라이언트에게 알려야 하는 경우 별도의 결과 확인 API 제공, WebSocket 등을 통한 실시간 알림, 콜백 URL 사용 방법이 존재한다. 이는 요청의 처리 시간에 따라 구현 방법이 다양하다. 이는 응답 시간 요구사항, 시스템 복잡성, 확장성 요구사항에 따라 달라진다. Kafka에 대한..

[Kafka] 메시지 구조, 연결 모델

개요Kafka의 연결 모델과 producer/consumer의 작동 방식에 대해 명확히 알아보자 Kafka는 HTTP가 아닌 TCP 소켓 연결을 사용한다. TCP 연결 모델:Kafka 클라이언트(Producer/Consumer)는 브로커와 TCP 소켓 연결을 수립연결은 한번 수립되면 유지됨(persistent connection)매 메시지마다 새 연결을 생성하지 않음바이너리 프로토콜:Kafka는 효율성을 위해 자체 바이너리 프로토콜 사용HTTP보다 오버헤드가 적고 성능이 우수함장기 연결 유지:Producer와 Consumer 모두 브로커와의 TCP 연결을 장시간 유지연결 중단 시 자동 재연결 메커니즘 제공 HTTP vs Kafka 프로토콜매번 HTTP 요청으로 Kafka에 접근하는 것은 비효율적이다. ..

[Kafka] 메시지 추적 및 상태 유지

개요Kafka가 의도치 않게 종료되었다면 이전까지 읽은 데이터를 어떻게 추적할 수 있을까? 생각을 해보면 인입된 메시지 정보는 이전 개요에서 말했듯 로컬 스토리지에서 관리가 되기 때문에 브로커 서버가 내려가기 전 까지 인입된 메시지는 모두 보존되어 있을 것이고, 당연 어디까지 읽었는지 추적하는 무언가가 존재하기 때문에 데이터 영속성을 보장할 수 있을 것이다. 메시지 지속성Kafka는 모든 메시지를 로컬 디스크에 저장하므로 파티션당 하나 이상의 로그 세그먼트 파일이 존재한다. 따라 서버가 재시작되어도 데이터가 유지된다. 이는 인덱스 파일로 관리가 되며 타임스탬프 기반 검색을 위한 검색이 가능하다./var/lib/kafka/data/my-topic-0/ ├── 00000000000000000000.log..

[Kafka] Apache Kafka 개요

개요Apache Kafka는 대용량 실시간 데이터 스트리밍을 위한 분산 플랫폼이다. LinkedIn에서 개발되어 2011년 Apache 재단에 오픈소스로 기증 되었다. Kafka는 고성능 메시지 처리가 가능하여 초당 수백만 개의 메시지를 처리할 수 있는 높은 처리량을 제공한다. 메시지를 디스크에 순차적으로 저장하여 빠른 읽기/쓰기 성능을 보장한다.여러 서버에 걸쳐 데이터를 분산 저장하므로 단일 장애점이 없고, 수평적 확장이 가능하여 분산 아키텍처에 어울린다.메시지를 디스크에 영구 저장하고 복제본을 유지하여 데이터 손실을 방지하여 내구성과 신뢰성이 있다. 위와 같은 특성으로 인해 실시간 로그 수집, 이벤트 스트리밍, 마이크로서비스 간 비동기 통신, 데이터 파이프라인 구축, 실시간 분석을 위한 데이터 스트리..

728x90