[과제 회고] K사 서버 개발하기
·
Spring/Spring 실습
Redis-Kafka 기반의 개념을 학습한 이후 실전과제를 진행하게 되었다.이번 과제는 큰 제약사항이 없이 중점을 두어야 하는 포인트가 전적으로 나에게 있었던 점을 활용해서 그 범위와 선을 정하는 것이 📄 과제 소개다수 서버 환경에서도 안정적으로 동작하는 커피숍 주문 시스템을 구현하기커피 주문에 필요한 메뉴를 구성하고 조회가 가능해야 합니다.커피 주문은 포인트로 가능합니다.커피 주문내역을 통해 인기 있는 메뉴를 추천합니다.🔥 구현 필요 API 커피 메뉴 목록 조회 API포인트 충전하기 API커피 주문, 결제하기 API인기 메뉴 목록 조회 API실습 과제를 통해 경험했던 부분과 설계 의도를 정리하고자 한다. 🧩 설계 요약멱등성 키 기반 중복 요청 방지DB + 서비스 레벨 이중 방어로 동시성 대응주문 ..
[개념정리] Kafka + Spring 적용방법
·
Spring/백엔드 기초
kafka의 기본 개념을 기반으로 Spring에 적용하고 동작하는 방식을 확인하는 과정을 정리하고자 한다. 앞서 정리했던 개념을 다시한번 간단하게 정리하자면 아래와 같았다. ✅ Kafka 기본 개념Producer, Consumer, TopicProducerKafka로 메시지를 보내는 클라이언트특정 Topic에 메시지를 기록ConsumerKafka에 저장된 메시지를 읽어오는 클라이언트한 개 이상의 Topic을 구독(subscribe)Topic메시지를 저장하는 논리적인 이름 공간로그처럼 메시지가 순서대로 저장된다.Kafka 프로젝트를 진행하기 전에 앞서 우리는 docker-compose 설정을 진행하고, KafkaConfig 설정을 통해 Spring과의 연동을 준비했다. Kafka Cluster (dock..
[개념정리] Kafka 클러스터 구조 이해하기
·
Spring/백엔드 기초
대용량 처리에 용이한 Kafka의 브로커, 소비자 그룹에 대한 이해를 기반으로 마지막으로 Kafka 클러스터 구조에 대한 이해를 갖춰 나아가려고 한다. ☑️ 단일 브로커 구조는 위험성과 한계가 어떻게 될까?단일 브로커의 운영방식으로 인한 구조적 문제에 대한 내용들을 살펴보자면 아래와 같다. 서버에 문제가 생기면 Kafka 전체에도 문제가 발생한다.메시지를 저장할 수 없다.메시지를 소비할 수도 없다.서비스 전체가 중단되어 심각한 장애를 초래한다.확장이 불가능하다.처리량이 늘어나도 단일 서버 한 대가 모든 요청을 감당해야 한다.특정 Partition에 트래픽이 몰리면 병목이 쉽게 발생한다.모든 데이터가 한 서버에 쌓여 위험하다.디스크가 고장나면 메시지 전체가 손실될 위험이 있다.고가용성(High Availa..
[개념정리] Kafka - Broker와 Consumer Group
·
Spring/백엔드 기초
Kafka 기본 개념을 정리했었다.그 이후에 더 알아야 할 브로커와 컨슈머 그룹에 대한 자세한 내용을 정리하고자 한다. ❓ 브로커(Broker)란 무엇인가?브로커는 메시지를 저장하는 Kafka 서버 (혹은 Kafka 프로세스)Producer가 보낸 데이터는 Topic과 Partition 형태로 만들어져 브로커 내부에 저장된다. 브로커의 핵심 역할Producer가 보낸 메시지를 저장한다.Consumer가 메시지를 읽을 수 있도록 제공한다Topic 과 Partition의 파일 구조를 관리한다.→ 브로커는 Kafka 메시지가 실제로 저장되는 창고 역할을 수행한다. ✅ Topic과 Partition은 브로커에서 어떻게 관리되는가?Topic을 생성하면 브로커 내부에 Partition 디렉토리가 자동으로 만들어진다..
[개념정리] Kafka란 무엇인가?
·
Spring/백엔드 기초
정리에 앞서.. 대규모 트래픽 관련 강의주차에 접어들면서 트래픽 증가 시에 반드시 알아야 할 Kafka의 개념과 활용, 그리고 실습 간 깨달았던 점들을 정리하고자 한다. 🔍 왜 Kafka를 사용해야 하는가?일반적으로 서버의 요청 및 처리과정은 아래와 같다.사용자 요청 -> 서버 -> DB/Redis 저장 / 조회 그러나 트래픽이 급격하게 증가하게 되는 경우 다음과 같은 문제가 발생하게 된다. 서버는 모든 요청을 즉시 처리 해야한다.요청이 증가하면 서버는 쉬지 않고 요청을 즉시 처리해야하며, 그 범위를 넘어서는 경우 장애가 발생할 수 있음.DB / Redis 는 동시에 많은 요청을 처리할 수 없다.DB / Redis 의 처리 가능량을 초과하면 병목현상이 발생하게 됨.사용자의 행동 데이터는 매우 빠르게 ..
[프로젝트 회고] 실시간 채팅 프로젝트
·
Spring/Spring 실습
📝 작성하며..2025.12.09 ~ 2025.12.26 까지 진행한 실시간 채팅 프로젝트를 진행하며 담당했던 역할과 수행과정에서 중점적으로 다뤘던 개념과 내용들을 정리하고자 한다. 📌 프로젝트 정보프로젝트명 : 실시간 채팅 프로젝트참여인원 : 4명사용 기술 스택 : Java 17, Spring Boot, Spring Security, JPA, MYSQL, Redis, Docker, AWS EC2, GitHub Actions프로젝트 개요 : 확장 가능한 실시간 채팅 상담 시스템을 구축한다.담당 역할 : 비즈니스 로직 전반 구현 (상품 / 채팅 / 메시지 목록 조회)🌱 프로젝트 설계 💡 구현에 중점을 두었던 사항프로젝트를 진행함에 앞서서 구현을 진행할 때에 오류 사항들이 발생하는 구조가 무엇일지에..