Backend
home
✏️

1. 프로젝트 소개

생성일
2025/02/13 10:38
태그

프로젝트 내용

스프링부트로 직접 코드를 작성하며 서버 애플리케이션 개발
대규모 데이터와 트래픽을 고려할 때, 어떻게 고민하고 어떤 방법과 도구로 해결하는지를 알아봄

대규모 시스템의 정의

절대적인 기준을 명확하게 정의할 수는 없지만, 다음과 같은 특성 고려
복잡한 시스템을 다루는 방법
병렬 처리
병목 지점 최소화
확장성 있는 구조

프로젝트 요구사항

게시글 조회, 생성, 수정, 삭제, 목록 조회
댓글 조회, 생성, 삭제, 목록 조회
계층형
최대 2 depth
무한 depth
게시글 좋아요
좋아요 수
게시글 조회수
사용자별 10분에 1회 집계

프로젝트 요구사항

인기글
일 단위 상위 10건 인기글 선정
매일 오전 1시 업데이트
댓글수/좋아요 수/조회수 기반 점수
최근 N일 인기글 내역 조회
게시글 조회 최적화 전략
게시글 단건 조회 최적화 전략
게시글 목록 조회 최적화 전략
캐시 최적화 전략
대규모 데이터와 트래픽을 지탱할 수 있는 시스템을 고려

배울 수 있는 것

대규모 시스템에 적용할 수 있는 방법론 및 개발 전략
서버 애플리케이션을 개발하며 적절한 도구를 활용하는 것이 주 목적
Relational Database의 이해 및 활용
MySQL 테이블 및 인덱스 설계, 쿼리 최적화, 데이터베이스 이론
In-memory Database의 이해 및 활용
Redis에서 지원하는 다양한 연산과 자료구조
Message Broker의 이해 및 활용
Kafka의 동작 원리
분산 이벤트 스트리밍 및 비동기 처리 애플리케이션 구축
어떻게 고민하면서 어떤 코드를 만드는가?

시스템 가정

MySQL, Redis, Kafka 도구에 대해선
고성능, 안정성, 고가용성을 위한 분산 시스템이 구성되어 있다고 가정
각 도구가 무엇이고, 어떻게 대규모 시스템을 지탱할 수 있는지 학습