Blog

카프카 적용의 적정선: 효율적인 시스템 구조 설계를 위한 고찰

tag
프로젝트 고찰
날짜
2023/10/28
생성 일시
2023/10/29 11:19
작성자
데이터 통신과 메시지 큐를 사용한 비동기 처리는 현대 웹 서비스에서 중요한 역할을 담당하고 있습니다고 생각합니다. 그중에서도 Apache Kafka는 그 뛰어난 처리 능력과 확장성으로 많은 개발자들에게 선택받고 있습니다. 하지만 모든 서비스에 무조건적으로 Kafka를 적용하는 것이 정말 효율적인 방법일지 프로젝트를 진행하며 의문을 가지게 되었습니다.

Kafka 적용의 고민

모든 서비스에 Kafka를 적용한다면 간단한 작업조차도 Kafka를 거쳐야 하므로 이는 사용자에게 제공되는 전체적인 서비스의 리소스를 낭비할 수 있습니다고 생각됩니다. 특히 간단한 로직이나 데이터 처리에 Kafka를 사용하는 것은 오버헤드를 증가시켜 결국 시스템의 성능 저하를 초래할 수 있습니다.
그래서 생각이 난 접근 방법은, 대용량 트래픽을 처리하는 서비스와 간단한 서비스를 구분하여 처리하는 것입니다.
예를 들어 프론트 서버에서 대용량 트래픽 요청을 처리하는 서비스는 Kafka를 통해 비동기적으로 처리하고, 간단한 로직이나 서비스는 프론트 서버에서 직접 처리하도록 하는 것입니다.
현재 진행중인 프로젝트 내에서 대규모 트래픽이 발생하는 '책 나눔 서비스'를 기반으로 생각해 보겠습니다.
이 서비스에 Kafka를 적용함으로써 메시지 처리의 비동기성과 확장성을 확보할 수 있으며 이는 시스템의 안정성과 빠른 응답 시간을 도모하는데 기여할 수 있을 것이라 추정됩니다.
따라서 '책 나눔 서비스'에 대한 Kafka 적용은 시스템의 확장성과 유지보수성을 향상시키면서 사용자에게 빠른 서비스를 제공할 수 있을 것으로 추정 됩니다.

정리

Kafka는 뛰어난 메시지 처리 능력과 확장성을 제공하지만, 이를 모든 서비스에 무조건 적용하는 것은 비효율적일 수 있다는 생각이 들었습니다.
서비스의 특성과 요구사항을 고려하여, Kafka 적용이 필요한 서비스와 그렇지 않은 서비스를 명확히 구분한다면 좀 더 나은 성능을 낼 수 있지 않을까? 라는 생각이 들었습니다. 이를 통해 리소스의 효율적인 활용과 빠른 서비스 응답 시간을 동시에 달성할 수 있지 않을까? 라는 생각이 들었습니다.