Redis와 Kafka를 활용한 대규모 트래픽 처리 시스템 설계하기
강의 소개
강의 소개
Redis와 Kafka를 활용한 대규모 분산 처리 학습 로드맵
현대의 서비스는 수십만 명 이상의 사용자가 동시에 접속하는 대규모 트래픽 환경을 마주하게 된다. 대표적으로 콘서트 티켓팅 서비스나 배달 플랫폼과 같은 서비스에서는 짧은 시간 동안 폭발적인 요청이 발생하며, 이를 안정적으로 처리하기 위한 기술이 필수적이다.
이번 과정에서는 Redis와 Kafka를 중심으로 대규모 트래픽과 분산 환경을 처리하기 위한 핵심 기술들을 학습한다. 단순히 이론만 배우는 것이 아니라 실제 서비스를 구축하고 운영하는 과정까지 경험하면서 실무에 필요한 역량을 쌓는 것을 목표로 한다.
Redis와 Kafka 클러스터 구축
분산 환경을 이해하기 위해서는 먼저 Redis와 Kafka의 기본 개념을 이해해야 한다.
Docker를 활용하여 Redis Cluster와 Kafka Cluster를 직접 구축하고 운영하면서 분산 시스템이 실제로 어떻게 구성되는지 학습한다. 이를 통해 개발 환경뿐만 아니라 실무 환경에서도 Redis와 Kafka를 설치하고 운영할 수 있는 기초 역량을 확보할 수 있다.
Kafka Producer와 Consumer 이해
Kafka는 이벤트 기반 아키텍처의 핵심 구성 요소 중 하나이다.
Kafka의 Producer와 Consumer 동작 방식을 학습하고, Topic 생성 및 메시지 전송 과정을 직접 실습한다. 또한 Kafka UI 도구를 활용하여 메시지 흐름을 시각적으로 확인하면서 Kafka의 내부 동작 원리를 보다 쉽게 이해할 수 있다.
Spring Boot와 Multi Module 기반 서비스 개발
실제 서비스는 하나의 프로젝트로 구성되는 경우보다 여러 모듈로 분리하여 관리하는 경우가 많다.
Multi Module 구조의 Spring Boot 프로젝트를 구성하고 Redis와 Kafka를 연동하여 서비스를 개발하면서 확장 가능한 애플리케이션 구조를 학습한다. 이를 통해 유지보수성과 확장성을 고려한 프로젝트 구조 설계 방법을 익힐 수 있다.
Redis 자료구조 활용
Redis는 단순한 Key-Value 저장소가 아니라 다양한 자료구조를 제공한다.
String, List, Set, Sorted Set, Hash 등 다양한 자료구조를 활용하여 실제 비즈니스 문제를 해결하는 방법을 학습한다. 또한 Postman을 활용한 API 테스트를 통해 Redis의 동작을 직접 확인하면서 실습 중심으로 이해도를 높인다.
Redis 캐싱과 분산 락
대규모 트래픽 환경에서는 성능과 동시성 제어가 매우 중요하다.
Redis를 활용한 캐싱 전략을 적용하여 데이터 조회 성능을 향상시키고, 분산 락을 활용하여 동시성 문제를 해결하는 방법을 학습한다. 또한 테스트 코드를 작성하여 적용 전후의 차이를 비교하고 실제 효과를 검증해본다.
Redis와 Kafka 기반 MSA 프로젝트
학습한 기술을 종합적으로 활용하여 Redis와 Kafka가 적용된 MSA(Microservice Architecture) 서비스를 구현한다.
서비스 목표를 정의하고 요구사항을 세분화하여 실제 프로젝트를 설계하고 개발하는 과정을 경험한다. 이를 통해 단순한 기술 학습을 넘어 서비스 구축 경험까지 얻을 수 있다.
Event Sourcing과 CQRS 적용
최근 대규모 서비스에서 자주 활용되는 아키텍처 패턴인 Event Sourcing과 CQRS를 학습한다.
Kafka를 활용하여 이벤트를 저장하고 전파하는 구조를 구현하며, Command와 Query를 분리하여 시스템의 확장성과 유지보수성을 향상시키는 방법을 실습한다. 이러한 패턴은 실무에서도 자주 등장하는 주제이며 시스템 설계 역량 향상에 큰 도움이 된다.
부하 테스트와 성능 검증
서비스를 개발하는 것만큼 중요한 것이 성능 검증이다.
nGrinder를 활용하여 부하 테스트를 수행하고 TPS(Transaction Per Second), 응답 시간, 성공 및 실패 요청 수 등을 측정한다. 이를 통해 시스템이 실제 대규모 트래픽을 얼마나 안정적으로 처리할 수 있는지 검증할 수 있다.
학습 목표
이번 과정의 궁극적인 목표는 Redis와 Kafka를 활용하여 대규모 트래픽 환경에서 안정적으로 동작하는 서비스를 설계하고 구현할 수 있는 역량을 갖추는 것이다.
단순히 기술 사용법을 익히는 수준을 넘어 분산 시스템의 동작 원리를 이해하고, 실제 서비스에 적용할 수 있는 경험을 쌓는 데 초점을 맞춘다. 최종적으로는 Spring Boot 기반의 분산 처리 프로젝트를 직접 구축할 수 있는 수준의 실무 역량을 확보하는 것을 목표로 한다.