대용량 트래픽 처리를 위한 데이터베이스 첫 걸음: 100만 유저를 견디는 서버 구축 가이드
Online
대용량 트래픽 처리를 위한
데이터베이스 첫 걸음
100만 유저를 견디는 서버 구축 가이드
기본 정보
∙ 6개 대주제, 146여개 강의 클립 (약 39.5시간 분량)
∙ 난이도 : 입문 - 실전 활용
∙ 실습 환경 : Mac OS, Window 실습 가능
기본 정보
∙ 수강료 1회 결제로 평생 소장
∙ 부가 학습 자료 제공
수강대상
| 선수 지식 : Java/Spring 및 JPA에 대한 기초 지식
| 수강 대상
∙ 다양한 데이터베이스를 활용한 웹개발을 경험하고 싶은 0~3년차 개발자
∙ 대용량 트래픽과 데이터 경험을 우대하는 채용공고에 대비하고자 하는 취업/이직 준비자
∙ 기존 패스트캠퍼스 대용량 트래픽 & 데이터 처리 강의가 어려웠던 분
Advanced Backend Projects
미들 · 시니어 개발자로 거듭나기 위한 유일무이 프로젝트
프로덕트 시리즈 강의 묶음 PASS
시리즈 더 구경하기 →
스타트업부터 네카라쿠배 등 대부분의 IT 회사에서 주니어 백엔드 개발자에게도 요구하는 그 역량,
[ 대용량 트래픽 처리 ]
데이터 처리 속도와 성능은 데이터베이스에 달렸다!
대용량 트래픽 처리의 첫 걸음은 [ 데이터베이스 입문 ] 이어야 합니다!
대용량 데이터 처리를 위한 DB 로드맵
백엔드 개발자의 꽃 데이터베이스!
데이터베이스에 강한 백엔드 개발자로 거듭나기 위한 초-격차 구성
그래서 준비했습니다.
DB 역량 풀스탯에 도달하기 위한 4가지 포인트와 3가지 혜택!
6개의 데이터베이스 기초 개념부터 시작하고, 초기 스타트업 단계부터 MAU 1,500만 대서비스 개발까지 실전 프로젝트로
Point 1
유저수 1에서 100만까지
5번 Scale-out, 6단계 서비스 규모 체험!
서비스 단계에 따라 적재적소에 DB를 활용하는 MAU 1,500만 중고마켓 게시판 구현 프로젝트!
서비스 단계에 따라 적재적소에 DB 활용 능력을 키워줄 실전 프로젝트를 진행해요.
5번 성장하는 중고마켓 프로젝트
유저 1명부터 10 배의 트래픽 증가 상황에도 100만 배의 증가 상황에도 서버를 지킬 수 있도록!
대용량 트래픽으로 인한 서버 다운 위기 상황에 5번의 Scale-out을 경험해 보세요.
-
Check 1 Scale Out!
초보를 위한 DB 선택 및 scale-out 가이드서버가 다운될 수 있는 이슈 5가지에 따라 DB를 선택하고 추가하여 한 단계 한 단계 levep-up하며 문제를 해결해 보세요!
-
Check 2
주니어를 위한 DB 튜닝 오답노트DB 자체를 튜닝하거나 다룰 때 자주 실수하거나 헷갈려하는 부분 있으시죠? sharding 등 개념을 적용한 실습을 통해서 문제를 해결 해 보세요!
Level 1. MySQL을 활용하여 가장 기본적인 게시판 기능 개발
오답노트
Q. 인덱스 수정하려다 사고쳤다면?
A. Online DDL을 통한 무중단으로 테이블 수정으로 해결
Q. 데이터가 중복되지 않으려면?
A. Transaction 처리 실습으로 해결
서버 다운 위기 1 : 다양한 검색 조건으로 인해 index가 많아질 시 INSERT, UPDATE 쿼리 속도가 저하되고 DB에 과도한 부하 발생
Level 2. Elasticsearch 도입 및 sharding으로 부하분산 해결
오답노트
Q. DB 부하를 더 줄여주려면?
A. index 걱정 없는 inverted index, sharding 방식으로 해결
Q. DB 응답속도를 더 빠르게 하려면?
A. mapping/setting 수정 후 신규 index로 빠르게 데이터 복제
Q. 흔하게 겪는 brain split과 re-indexing 문제로 머리를 쥐어 싸매고 있다면?
A. reindex 를 통한 mapping 변경으로 해결
서버 다운 위기 2 : 다량 데이터가 빈번하게 mySQL에서 조회되면서 mySQL에 부하 집중되고 transaction lock이 발생
Level 3. 싱글스레드 Redis에 캐시로 저장
오답노트
Q. DB 부하를 더 줄여주려면?
A. 응답속도가 빨라야 하는 데이터를 Redis에 캐시로 저장하여 해결
Q. 서버를 무조건 좋은걸 쓰면 성능이 좋아질까 궁금하다면?
A. 작은 사이즈의 서버를 여러개 쓰는게 효율적임을 Redis를 학습하며 해결
서버 다운 위기 3 : 유저 및 데이터가 늘면서 MySQL에 적재하기 부담스러워지고 테이블 수정 필요 시 Online DDL로도 변경이 불가능함
Level 4. MongoDB 도입으로 동적인 스키마(NoSQL)를 활용하여 다양한 데이터 수집
오답노트
Q. DB 부하를 더 줄여주려면?
A. 응답속도가 빨라야 하는 데이터를 Redis에 캐시로 저장하여 해결
Q. 서버를 무조건 좋은걸 쓰면 성능이 좋아질까 궁금하다면?
A. 작은 사이즈의 서버를 여러개 쓰는게 효율적임을 Redis를 학습하며 해결
서버 다운 위기 4 : 10만명의 유저가 동시에 서비스에 접속한다면 서버나 DB들이 auto-scaling되기 전에 대량의 트래픽을 버티지 못함
Level 5. RabbitMQ 도입으로 비동기 방식 메시지 브로커 처리 도입
오답노트
Q. 왜 메시지 브로커가 확장성과 유연성을 제공하는지 궁금하다면?
A. 실습을 통해 직접 활용하여 대량의 알림을 천천히 발송하고 만약 실패 시 자동으로 재시도 처리하는 프로세스를 직접 경험하며 체득!
Q. 계정은 1개지만 사용 기기는 여러 개를 쓰는 경우 알림을 어떻게 처리할지 모르겠다면?
A. 앱/웹 Push 알림 동작 원리(FCM)를 이해하고 그에 맞는 데이터/DB 설계를 통해 해결!
서버 다운 위기 5 : RabbitMQ가 감당할 수 없는 수를 처리할 때 장애가 발생하거나 실시간, 스트림 데이터를 처리해야되는 요건 발생
Level 6. kafka 도입으로 더 대량의 메세지 저장 및 실시간 데이터 처리
오답노트
Q. 다양한 데이터를 저장해야 하고 매번 DB 스키마를 변경하는 게 힘들다면?
A. Message broker를 활용하여 대량의 알림을 천천히 발송하고 만약 실패한다면 자동으로 재시도 처리
Q. message broker 로 많이 사용되는 3가지 오픈소스를 비교하자면?
A. Redis, RabbitMQ, Kafka의 각 메시지 브로커로써의 역할을 비교하며 해결
Q. RabbitMQ의 처리량보다 더 큰 용량의 데이터를 해결해야 한다면?
A. 메세지 브로커의 장점을 살려 무중단으로 RabbitMQ에서 Kafka로 DB를 바꿔보며 해결
Point 2
백엔드 개발자라면 이정도는 해줘야죠!
대용량 데이터 & 트래픽 처리에 필수적인 6가지 데이터베이스 마스터
초보자를 위한 주요 개념 학습부터 실무에서의 활용법까지 한 번에 마스터하세요!
-
Table Index
가장 일반적으로 사용되는 대표 RDBMS
MySQL
| 비교 학습
MySQL을 기준으로 나머지 DB를 비교 및 학습하여, 효율/비효율적인 특징을 꼼꼼히 설명합니다.
| 실무 활용
모든 데이터를 조회하고 분석하는 가장 기본적인 DB이며, 트랜잭션이나 관계형 데이터를 빠르게 다룰 수 있기에, 주로 기본 사용자 데이터를 다룰 때 사용합니다. -
Primary Replica Shard Index
데이터 부하 분산에 능한 검색엔진 DB 1위
elasticsearch
| 비교 학습
주니어 개발자들이 헷갈려하는 MySQL과 비교하며 내부 구조와 데이터 처리 방식의 차이점을 설명합니다.
| 실무 활용
데이터 기반으로 정확한 검색결과가 도출되도록 하는 document 기반의 검색엔진이며, queryDSL 대신 게시글 검색 최적화를 위해 사용합니다. -
Cluster Sentinel
빠른 데이터 조회를 위한
Redis
| 비교 학습
기본적인 MySQL 내부구조와 비교하며 다중서버로 변경 시 유리한 이유를 설명합니다.
| 실무 활용
인기글/광고를 빠르고 화질 좋게 노출시키기 위해 캐시 품질을 높이는 key/value 방식 DB이며, 빠른 광고 데이터를 조회하는 데에 사용합니다.
-
Primary Secondary Query Router
대량 데이터 저장에 능한 NoSQL
MongoDB
| 비교 학습
MySQL의 빠른 속도와 MongoDB의 비정형 데이터의 장점을 비교하며 각 DB의 적절한 사용용도를 설명합니다.
| 실무 활용
동적인 스키마를 제공하므로 json 형태의 데이터를 저장할 수 있고 매우 빠른 처리 속도를 가지고 있기에, 광고 노출/클릭수에 대한 로그 저장 용도로 사용합니다. -
Broker Queue Message
부하분산을 위해 사용하는 메시지 브로커
RabbitMQ
| 비교 학습
kafka랑 rabbitmq 의 내부구조를 비교하며 처음에 rabbitmq부터 사용하는지 설명합니다.
| 실무 활용
DB가 견딜 수 있는 정도로 천천히 처리하는 역할을 가지고 있는 message broker 이며,대규모 Push 알림 기능 개발시 사용합니다. -
Broker Topic Shard
국내 99개 기업이 채택한 TOP 데이터 처리 스택!
Kafka
| 비교 학습
Redis(queue)와 RabbitMQ를 비교하며 kafka가 더 대량의 메세지를 저장할 수 있는지를 설명합니다.
| 실무 활용
message뿐 아니라 streaming 데이터도 다룰 수 있고 더 큰 용량의 트래픽을 처리할 수 있는 플랫폼입니다. 대규모 Push 알림 기능 개발시 사용합니다.
위 6가지 필수 데이터베이스를 배워둔다면
데이터 특성과 트래픽에 따라 데이터베이스를 알맞게 선택할 수 있고 마침내 대용량 데이터 처리에 능숙해집니다.
여기서 끝이 아니에요!
프로젝트에서 26가지 기술스택을 사용해,
실전처럼 다양한 트래픽 & 데이터을 경험할 수 있어요!
대용량 데이터 처리를 할 줄 아냐 모르냐의 차이는
백엔드 개발자의 실력을 가르는 문제가 되었습니다.
서비스를 출시한지 얼마되지 않은 초기의 스타트업이 아닌 이상,
대용량 데이터 처리는 백엔드 개발자에게 필수불가결한 요소 중에 하나입니다.
SQL만 쓸 줄 알아도 취업이 되던 시절과는 다르게
최근에는 오픈소스 DB의 종류도 늘어나고 버전도 빠르게 올라가고 있거든요.
그리고 ORM이 도입되면서 SQL을 몰라도 Java나 Python 코드로도 DB를 조회할 수 있게 되었구요.
쉽게 말자하면 DB를 더 편하게 쓸 수 있는 상황인거죠.
따라서 백엔드 개발자에게 요구되는 DB 업무 수준이 더 많이 높아진 것이 현실입니다.
단순히 생각하면 이런겁니다. API 개발을 하기 위해서 새로운 DB로 도입하고
그 DB를 사용하기 위한 인터페이스도 직접 개발하고 최적화까지 다 해놓고, DB 운영을 남한테 맡길 순 없겠죠?
그렇게 모두 DevOps 엔지니어가 되는거랍니다.
by. 김한성 | SK텔레콤 Data & AI DevOps팀
Point 3
진짜 ‘대용량 트래픽 처리’가 되는지 실무처럼 확인하고 싶다면?
부하 테스트로 실제로 서버를 시험해보고, DB 운영까지 마무리 지으세요.
직접 테스트 실습을 함께 하고 실전 노하우를 들려 드립니다.
-
성능/부하 테스트
클라우드 위에서 실습하는 3가지 부하/스트레스 테스트 -
클라우드 환경에서 DevOps
백엔드 개발자의 Next Step 3가지 환경 기반 DevOps 방식 소개 및 비교
성능을 평가하고 확인하는 부하테스트와 스트레스 테스트
실습으로 100만 트래픽을 견디는 서버 구축하기
-
부하 테스트 X1
부하 테스트는 적절한 부하를 발생하여 동시접속수가 급증하더라도 서버가 제대로 동작하는지 확인하는 과정입니다. AWS 클라우드 환경을 구축하고 Locust를 활용해 실습을 진행합니다.
AWS EBS EC2에 Docker 설치 아키텍처 분석 ... -
스트레스 테스트 X2
스트레스 테스트는 동시접속자가 점차 증가하는 상황에서 locust를 활용하여 증가하는 트래픽을 부하분산합니다. 1번의 테스트 후 장애포인트에 따라 DB를 튜닝 후 테스트를 다시 한번 더 진행합니다.
장애포인트에 대한 DB 설정 변경 CPU memory ...
5번 scale-out하여 확장한 서버에 locust를 활용하여 부하 테스트를 진행하여 서버가 잘 동작하는지 확인합니다.
이후 동시접속자가 10배 증가할 때 서버가 견디는지 스트레스 테스트를 진행하고 발생한 장애 포인트에 따라 DB 설정을 변경한 뒤,
다시한번 스트레스 테스트를 진행하여 동시접속자가 100배 증가하여도 정상적으로 작동하는 서버를 완성하게 됩니다.
로컬 환경에서 처음으로 AWS 컨테이너 환경으로 나아가는 분들을 위한 DevOps 가이드
DevOps 방식별 차이점을 비교해보며, Step by Step으로 DevOps의 노하우를 익혀가세요!
-
클라우드 위 DevOps가 처음인 분들을 위한!
AWS EC2 기반 -
aws에 맞는 최적화를 위한!
AWS Managed Service 기반 -
오픈소스 활용으로 비용을 줄이기 위한!
AWS EC2 기반
강사님의 한 마디
ORM, DevOps 등 기술의 발전이 빨라지면서 백엔드 개발자도 DB나 인프라에 대한 지식이 필요해졌습니다.
그리고 기본적인 인프라나 DB 지식이 있다면 Kafka, Redis 등도 결국 그 기초를 기반으로 만들어지기 때문에 다양한 DB를 도입할 때 빠르게 도입할 수 있죠. 특히 마지막 부하테스트를 통해서 대용량 트래픽도 감당할 수 있는 성장한 서비스의 최종적인 모습을 볼 수 있습니다.
Point 4
기술 스택만 안다고 끝이 아니죠.
DB를 더 잘 이해하기 위한 Special Clip까지 준비했습니다!
딱! 개발자가 알아야 할 만큼만! 풍부한 시각 자료를 통해 알기 쉽게 설명 드립니다.
Check 1 DB 관련 필수 & 어려워하는 개념 풀이!
-
개념 1
데이터 모델링관계형 및 비관계형 데이터 모델 설계 방법
-
개념 2
데이터베이스 내부 구조다양한 데이터베이스에 있는 데이터 구조의 구현과 장단점 이해
-
개념 4
파티셔닝데이터를 효과적으로 분할하여 DB 부하를 관리하는 기법
-
개념 5
복제 (Replication)일관되고 탄력적인 복제를 위해 다양한 복제 모델과 전략 이해
-
개념 6
분산 시스템분산 시스템의 기본 원리와, 장애 감지 문제 및 해결법
Check 2 시각화한 자료와 함께 복잡한 개념도 쉽게!
Check 3 개념들이 실무에서 적용된 다양한 사례까지!
Point 5
SK에서 데이터베이스를 다양하게 활용한 경험과
온라인/오프라인 강의 경험이 풍부한 강사진 2인!
직접 테스트 실습을 함께 하고 실전 노하우를 들려 드립니다.
“ 다양한 DB를 겪어보시고 실무에 가서 직접 적용하므로써 여러분들의 성장과 좋은 성과까지 이어지길 바랍니다. ”
현재 SK텔레콤에서 Data와 AI관련 아키텍처 설계/구축 그리고 Backend 개발 및 운영을 하고 있는 김한성입니다.
기본적인 MySQL부터 현업에서 많이 사용하는 ElasticSearch, Redis, MongoDB, RabbitMQ, Kafka 등을 직접 구축하고 실무레벨에서 많이 겪는 운영 이슈나
라이센스 관련된 내용까지 다뤄볼 예정입니다.
직접 부하테스트까지 진행하면서 어떻게 부하 분산을 하고 다양한 DB를 활용할 수 있는지까지 모두 만나볼 수 있습니다.
배정호
부록. 백엔드 개발자를 위한 데이터베이스
CS 지식 모음집
| 이력 |
현) SK C&C (2009~)
교육 활동
∙ SK 사내 SQL 강사
∙ SK 사내 Blockchain 강사
“ 차근차근, 함께 해 봅시다. ”
4차 산업 시대에 데이터가 폭발적으로 증가했고, 기존의 RDBMS 영역과 합리적인 비용으로 대용량 데이터를 분석, 처리 할 수 있는 다양한 DBMS 가 출시되었습니다.
대부분의 프로젝트에서도 다양한 DBMS를 복합적으로 구성하여 적용하고 있습니다.
금번 강의에서는 백엔드 개발자들이 DBMS의 핵심을 쉽게 이해하고, 각각의 DBMS를 잘 활용할 수 있도록 알려드리겠습니다.
끝나지 않았습니다.
실습에 필요한 쿠폰까지 전부 다! 드립니다.
프로젝트 진행 중 질문이 생긴다면?
언제든지 질문 가능한 질의응답 게시판에서 해결!
패스트캠퍼스 질의응답 게시판에서 강사님, 그리고 다른 수강생들과 함께 문제 해결!
더하여, 빠르게 답변을 받을 수 있도록 AI 캐미가 먼저 답변을 작성해드려요.
(*질의응답 게시판은 2024년 6월 18일부터 2026년 5월 19일까지 운영됩니다.)
가성비
겨우 DB 1개, 프로젝트 1개만 다루는 타사 강의와 다릅니다!
DB 6개, 5단계의 Scale-out로 이어지는 유기적인 프로젝트 6개까지!
데이터베이스 개념부터 핵심 접근 기술 활용, 실제 서비스 개발과 실무반영 scale-out까지 만나보세요!
타 강의 별도 구매보다 1/5배 싸게 살 수 있는 절호의 기회!
월 1만 원대로 이 모든 내용을 평생 소장 & 무한 수강!
*런칭가 159,000원 기준 (12개월 할부시 월 1만 원대)
커리큘럼
아래의 모든 강의를 이 강의 하나로 모두 들을 수 있습니다.지금 한 번만 결제하고 모든 강의를 평생 소장하세요!
Part 1 : 초기 프로젝트 세팅을 위한 MySQL 기본
Part 2 : 동접자 1,000명의 부하를 견디기 위한 ElasticSearch 기본
Part 3 : 동접자 1만명에게 컨텐츠를 0.1초로 보여주기 위한 Redis 기본
Part 4 : 전체 유저 10만명의 광고 집계를 위한 MongoDB 기본
Part 5 : 전체 유저 10만명에게 대량 Push 알림을 보내기 위한 RabbitMQ 기본
Part 6 : 대규모 트래픽에도 무너지지 않는 서버를 위한 DevOps 노하우
부록 : 백엔드 개발자를 위한 데이터베이스
이 강의도 추천해요.