SlideShare a Scribd company logo
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
박준형 | 리디북스
인프라 관점에서 접근하는
신규 서비스 개발기
발표자 소개
박준형
6년차 개발자
C / C++ 빠
마소 빠
윈도우 최고
지금까지 손댄것
Linux 응용프로그램
MFC 응용프로그램
WPF 응용프로그램
Reverse proxy
리디북스
리디스토리
이야기할 서비스는 이렇게 생겼어요
뒤에서 보면 좀 복잡해 보이네요
서비스 개발 시작
회원: 개발자 2명
- 만들고 있는 사이트를 테스트 해보자.
- WAS
- DB
회원: 개발자 3명
- 서울 Region에 Zone 이 두개니까 이중화를 하자.
- WAS2개
- DBMulti-AZ
회원: 팀원 4명
- 비동기 작업
- 이메일 발송이나 시간이 오래 걸리는 작업은 비동기로 하자.
- Celery 를 인스턴스에서 같이 돌리자.
- Queue는 Rabbit MQ를 쓰려고 하는데, 이중화랑 Failover가 어렵네.
- Session 때문에 Redis 쓸꺼니까 Redis에 Queue 역할도 주자.
- Redis Failover는 Sentinel 로 하자.
- WAS2개,Redis2개
- DBMulti-AZ
회원: 팀원 4명
회원: 팀원 6명
- DB 분리
- Main DB는 소중하니까 Slave를 붙이자.
- DB req는 가능하면 Slave로 가도록 개발하자.
- Log 데이터나 읽은 기록 데이터는 서비스와 무관하니까 죽더라도 혼자 죽
으라고 DB를 분리하자.
- 물론 Log, 읽기 기록은 장애가 있어도 서비스 이용에 차질이 없도록 개발하
자.
- WAS2개,Redis2개
- MainDBMulti-AZ,MainDBSlave1개,LogDB,ReadingDB
회원: 팀원 6명
회원: 사내 10명
- 뷰어서버
- 뷰어 테스트를 위해 뷰어 서버를 추가하자.
- 기존의 리디북스 서버를 가져와서 개조하자.
- 부하가 별로 없을것 같긴 한데 다른 언어니까 따로 서버를 두자.
- 객체 저장
- 책파일 과 미디어(이미지, 동영상) 저장을 S3에 하자.
- 책파일은 중요하니까 미디어와 Bucket을 분리 하자.
- WAS2개,ViewWAS 2개,Redis2개
- MainDBMulti-AZ,MainDBSlave1개,LogDB,ReadingDB
- S3
회원: 사내 10명
회원: 사내 15명
- CDN
- 미디어는 노출되도 상관 없고 전송이 빨라야 하니까 앞에 CDN을 두자.
- JS랑 CSS도 CDN을 이용하자.
- TTL 관리 하기 어려우니 모든 파일은 불변으로 간주하자.
- WAS2개,ViewWAS2개,Redis2개
- MainDBMulti-AZ,MainDBSlave1개,LogDB,ReadingDB
- S3,CloudFront
회원: 사내 15명
드디어 서비스 오픈
회원: 5,000명
- Worker
- 기다리면 무료, 최신편 알림 등이 비동기 Queue에 쌓여서 가끔 늦게 되네.
- 실시간성 작업들은 전용 Worker에서 돌리자.
- Cron도 그 Worker가 돌리자.
- 모니터링
- CloudWatch에 연결하자.
- 배포전 테스트
- Staging서버 하나 만들자.
- WAS2개,Worker1개,Staging1개,ViewWAS2개,Redis2개
- MainDBMulti-AZ,MainDBSlave1개,LogDB,ReadingDB
- S3,CloudFront,CloudWatch
회원: 5,000명
회원: 1만명
- 조회 전용 DB
- DB가 자꾸 죽네.
- 운영, 재무팀에서 서비스 분석을 위해 엄청난 Query를 날리고 있네.
- DB인스턴스가 여러개라서 분석이 불편하네.
- 조회 전용 DB를 만들어서 서비스와 분리 하고 모든 DB를 Replication하자.
- WAS2개,Worker1개,Staging1개,ViewWAS2개,Redis2개
- MainDBMulti-AZ,MainDBSlave1개,LogDB,ReadingDB,ReadDB
- S3,CloudFront,CloudWatch
회원: 1만명
회원: 5만명
- 뷰어서버 개선
- 설날에 차례지내다가 뷰어 서버 죽었네.
- 가끔 가끔 뷰어 서버 죽네.
- 만화 서비스 해야 하는데 이대로 가면 안되겠네.
- 책파일은 불변이니까 뷰어서버가 파싱한 데이터를 S3에 저장하고 CDN
태우자.
- 인증 기능은 CloudFront의 Private contents(signed-cookies) 기능을 사용
하자.
- WAS2개,Worker1개,Staging1개,ViewWAS2개,Redis2개
- MainDBMulti-AZ,MainDBSlave1개,LogDB,ReadingDB,ReadDB
- S3,CloudFront,CloudWatch
회원: 5만명
회원: 10만명
- ElasticCache
- 가끔 Redis 연결이 끊기고 운영하기 번거롭네.
- 운영비용(내 인건비 포함)도 많이 차이 안나니까 ElasticCache 가자.
- Push Worker
- 전체 Push 보내려니까 너무 느리다 → 대량발송은 SNS쓰자.
- 사람 많아지니까 기다리면 무료 알림발송도 빡세다 → Push 전용 Worker.
- 서비스 Scale out
- 전체 Push 자주 보내니까 DB부하가 커지네 → Slave추가.
- DB Slave추가하니까 WAS죽네 → WAS 증가.
- WAS증가하니까 로그 보기 어렵다 → 로그 수집기 추가.
- WAS8개,Worker2개,Staging2개,ViewWAS2개,로그수집기
- MainDBMulti-AZ,MainDBSlave2개,LogDB,ReadingDB,ReadDB
- S3,CloudFront,CloudWatch,ElasticCache,SNS
회원: 10만명
회원: 20만명
- 이미지 최적화
- 이미지 다운로드가 가끔 느린게 있네.
- 헉! 30MB짜리 썸네일(?)이다.
- 운영팀에서 압축하고 올린다고 했지만, 실수 할 수 있으니 따로 해주자.
- 모든 이미지를 미리 변환하지 말고, 필요할 때 적절하게 변형할 수 있도록 하자.
- 이럴때 Lambda를 쓰면 최고.
- WAS8개,Worker2개,Staging2개,ViewWAS2개,로그수집기
- MainDBMulti-AZ,MainDBSlave2개,LogDB,ReadingDB,ReadDB
- S3,CloudFront,CloudWatch,ElasticCache,SNS
- Lambda,API Gateway
회원: 20만명
현재
- TDD
- 배포만 하면 오류 나고 장애가 발생하네.
- 테스트에 시간도 오래 걸리고, 누락되는 테스트도 있고.
- CI 랑 API tester 추가하자.
- CDN 이중화
- WAS8개,Worker2개,Staging2개,ViewWAS2개,로그수집기
- API tester,Travis CI
- MainDBMulti-AZ,MainDBSlave2개,LogDB,ReadingDB,ReadDB
- S3,CloudFront,CloudWatch,ElasticCache,SNS
- Lambda,APIGateway
현재
회원: 100만명 되기 전에 할일
- 밤에 사람 안오니까, 혹은 엄청나게 올 수 있으니 Auto
scailing
- 배포가 더 쉬워져야 하니까 Front & Backend 나누고 Docker!
- 회원수 증가로 DB 데이터가 더 쌓기 전에 Sharding 준비
- 개발자님 모시기
정리를 하자면
- 이중화 및 Auto-failover 는 필수 입니다.
- RDS를 쓴다면 Multi-AZ 꼭 사용하세요.
- AWS에서 제공하는 서비스들은 따로 구축하지 말고 사용하세
요.
- 가능하면 Serverless로 구성하세요.
감사합니다.

More Related Content

PDF
AWS 기반의 마이크로 서비스 아키텍쳐 구현 방안 :: 김필중 :: AWS Summit Seoul 20
PDF
마이크로서비스를 위한 AWS 아키텍처 패턴 및 모범 사례 - AWS Summit Seoul 2017
PDF
Basics for understanding the cloud
PDF
마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)
PDF
AWS re:Invent 특집(2) – 서버리스(Serverless) 마이크로서비스를 위한 일곱 가지 모범 사례 (윤석찬)
PPTX
[SW 아키텍처 컨퍼런스] 클라우드 아키텍처 개론
PDF
컴플라이언스를 위한 고급 AWS 보안 구성 방법-AWS Summit Seoul 2017
PPTX
AWS 12월 웨비나 │성공적인 마이그레이션을 위한 클라우드 아키텍처 및 운영 고도화
AWS 기반의 마이크로 서비스 아키텍쳐 구현 방안 :: 김필중 :: AWS Summit Seoul 20
마이크로서비스를 위한 AWS 아키텍처 패턴 및 모범 사례 - AWS Summit Seoul 2017
Basics for understanding the cloud
마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)
AWS re:Invent 특집(2) – 서버리스(Serverless) 마이크로서비스를 위한 일곱 가지 모범 사례 (윤석찬)
[SW 아키텍처 컨퍼런스] 클라우드 아키텍처 개론
컴플라이언스를 위한 고급 AWS 보안 구성 방법-AWS Summit Seoul 2017
AWS 12월 웨비나 │성공적인 마이그레이션을 위한 클라우드 아키텍처 및 운영 고도화

What's hot (20)

PDF
가상 데이터 센터 만들기 VPC 기본 및 연결 옵션- AWS Summit Seoul 2017
PDF
Amazon Aurora 성능 향상 및 마이그레이션 모범 사례 - AWS Summit Seoul 2017
PDF
AWS Cloud Design Pattenr (Korean) - CDP Seminar in Korea
PDF
Amazon ECS를 통한 도커 기반 콘테이너 서비스 구축하기 - AWS Summit Seoul 2017
PDF
Amazon EC2 Container Service 자세히 보기 - 김상필 (AWS 솔루션즈 아키텍트)
PDF
AWS 클라우드로 천만명 웹 서비스 확장하기 - 윤석찬 백승현 - AWS Summit 2016
PDF
Microservice Architecture
PDF
AWS CLOUD 2017 - AWS 기반 하이브리드 클라우드 환경 구성 전략 (김용우 솔루션즈 아키텍트)
PDF
Lambda를 활용한 서버없는 아키텍쳐 구현하기 :: 김기완 :: AWS Summit Seoul 2016
PDF
AWS 엣지 서비스를 통한 글로벌 서비스 관리 전략 - AWS Summit Seoul 2017
PDF
EC2 컨테이너 서비스 고객사례 Vingle - 조휘철 소프트웨어 엔지니어 :: AWS Container Day
PDF
Cloud-Barista 제4차 오픈 컨퍼런스 : CB-Ladybug - 멀티클라우드 애플리케이션 서비스 통합 운용 및 관리 (Integr...
PDF
쉽게 알아보는 AWS 클라우드 보안 :: 임기성 & 신용녀 :: AWS Summit Seoul 2016
PDF
Amazon kinesis와 elasticsearch service로 만드는 실시간 데이터 분석 플랫폼 :: 박철수 :: AWS Summi...
PPTX
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
PDF
Amazon Aurora 100% 활용하기
PDF
AWS CLOUD 2017 - 클라우드 마이그레이션 어떻게 할 것인가? (이병윤 이사)
PDF
Data Center to Cloud - AWS 마이그레이션 자동화 방법 및 도구 - AWS Summit Seoul 2017
PDF
AWS 기반 고급 하이브리드 IT디자인 - AWS Summit Seoul 2017
PDF
AWS X-Ray를 통한 서버리스 분산 애플리케이션 추적하기 - 윤석찬 (AWS 테크에반젤리스트)
가상 데이터 센터 만들기 VPC 기본 및 연결 옵션- AWS Summit Seoul 2017
Amazon Aurora 성능 향상 및 마이그레이션 모범 사례 - AWS Summit Seoul 2017
AWS Cloud Design Pattenr (Korean) - CDP Seminar in Korea
Amazon ECS를 통한 도커 기반 콘테이너 서비스 구축하기 - AWS Summit Seoul 2017
Amazon EC2 Container Service 자세히 보기 - 김상필 (AWS 솔루션즈 아키텍트)
AWS 클라우드로 천만명 웹 서비스 확장하기 - 윤석찬 백승현 - AWS Summit 2016
Microservice Architecture
AWS CLOUD 2017 - AWS 기반 하이브리드 클라우드 환경 구성 전략 (김용우 솔루션즈 아키텍트)
Lambda를 활용한 서버없는 아키텍쳐 구현하기 :: 김기완 :: AWS Summit Seoul 2016
AWS 엣지 서비스를 통한 글로벌 서비스 관리 전략 - AWS Summit Seoul 2017
EC2 컨테이너 서비스 고객사례 Vingle - 조휘철 소프트웨어 엔지니어 :: AWS Container Day
Cloud-Barista 제4차 오픈 컨퍼런스 : CB-Ladybug - 멀티클라우드 애플리케이션 서비스 통합 운용 및 관리 (Integr...
쉽게 알아보는 AWS 클라우드 보안 :: 임기성 & 신용녀 :: AWS Summit Seoul 2016
Amazon kinesis와 elasticsearch service로 만드는 실시간 데이터 분석 플랫폼 :: 박철수 :: AWS Summi...
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
Amazon Aurora 100% 활용하기
AWS CLOUD 2017 - 클라우드 마이그레이션 어떻게 할 것인가? (이병윤 이사)
Data Center to Cloud - AWS 마이그레이션 자동화 방법 및 도구 - AWS Summit Seoul 2017
AWS 기반 고급 하이브리드 IT디자인 - AWS Summit Seoul 2017
AWS X-Ray를 통한 서버리스 분산 애플리케이션 추적하기 - 윤석찬 (AWS 테크에반젤리스트)
Ad

Viewers also liked (11)

PDF
[Partner TechShift 2017] AWS 마켓플레이스 등록을 위한 테크니컬 체크리스트
PDF
[Partner TechShift 2017] AWS 마켓플레이스를 통한 글로벌 소프트웨어 판매하기
PDF
Amazon ECS/ECR을 활용하여 마이크로서비스 구성하기 - 김기완 (AWS 솔루션즈아키텍트)
PPTX
Apache MXNet으로 배워보는 딥러닝(Deep Learning) - 김무현 (AWS 솔루션즈아키텍트)
PDF
[Partner TechShift 2017] EXEM의 AWS 마켓플레이스 실전 경험 공유
PDF
[Partner TechShift 2017] APN 컨설팅 파트너사와 함께 하는 클라우드 소프트웨어 사업
PDF
[2017 AWS Startup Day] AWS 비용 최대 90% 절감하기: 스팟 인스턴스 Deep-Dive
PDF
[2017 AWS Startup Day] 서버리스 마이크로서비스로 일당백 개발조직 만들기
PDF
[2017 AWS Startup Day] 스타트업이 인공지능을 만날 때 : 딥러닝 활용사례와 아키텍쳐
PDF
[2017 AWS Startup Day] VC가 바라보는 스타트업의 기술과 개발역량
PDF
2017 스타트업을 위한 AWS 브로셔
[Partner TechShift 2017] AWS 마켓플레이스 등록을 위한 테크니컬 체크리스트
[Partner TechShift 2017] AWS 마켓플레이스를 통한 글로벌 소프트웨어 판매하기
Amazon ECS/ECR을 활용하여 마이크로서비스 구성하기 - 김기완 (AWS 솔루션즈아키텍트)
Apache MXNet으로 배워보는 딥러닝(Deep Learning) - 김무현 (AWS 솔루션즈아키텍트)
[Partner TechShift 2017] EXEM의 AWS 마켓플레이스 실전 경험 공유
[Partner TechShift 2017] APN 컨설팅 파트너사와 함께 하는 클라우드 소프트웨어 사업
[2017 AWS Startup Day] AWS 비용 최대 90% 절감하기: 스팟 인스턴스 Deep-Dive
[2017 AWS Startup Day] 서버리스 마이크로서비스로 일당백 개발조직 만들기
[2017 AWS Startup Day] 스타트업이 인공지능을 만날 때 : 딥러닝 활용사례와 아키텍쳐
[2017 AWS Startup Day] VC가 바라보는 스타트업의 기술과 개발역량
2017 스타트업을 위한 AWS 브로셔
Ad

Similar to [2017 AWS Startup Day] 인프라 관점에서 접근하는 리디스토리 개발기 (20)

PPTX
MSA와 infra
PDF
넥슨 글로벌 플랫폼 구축 이야기 : DB Migration case study (임현수 플랫폼인프라실 Technical Manager, 넥...
PDF
[211]대규모 시스템 시각화 현동석김광림
PDF
[스마트스터디]모바일 애플리케이션 서비스에서의 로그 수집과 분석
PDF
AWS없이 만든 AWS와 유사한 데이터 파이프라인
PPTX
리스펙토링 6월 세미나, AWS로 개인서버 구축하기
PDF
Tdc2013 선배들에게 배우는 server scalability
PPT
Redis Overview
PDF
[17.01.19] docker introduction (Korean Version)
PDF
AWS 활용한 Data Lake 구성하기
PDF
레코벨의 추천 서비스 고군 분투기 - AWS Summit Seoul 2017
PDF
2014.4.30 프라이머 개발자 모임 - 서버 장애 예방 및 대응 방법 공유
PPTX
AWS의 하둡 관련 서비스 - EMR/S3
PDF
안정적인 서비스 운영 2014.03
PPTX
내 맘대로 Lambda 사용기
PPT
Rhea_MMO_SNG_Convergence_Server_Architecture
PDF
Twitter의 대규모 시스템 운용 기술 어느 고래의 배속에서
PPTX
프라우드넷 사용법 훑어보기
PDF
OLAP for Big Data (Druid vs Apache Kylin vs Apache Lens)
PDF
20181108 HBSmith에서는 이렇게 AWS IaC로 배포한다
MSA와 infra
넥슨 글로벌 플랫폼 구축 이야기 : DB Migration case study (임현수 플랫폼인프라실 Technical Manager, 넥...
[211]대규모 시스템 시각화 현동석김광림
[스마트스터디]모바일 애플리케이션 서비스에서의 로그 수집과 분석
AWS없이 만든 AWS와 유사한 데이터 파이프라인
리스펙토링 6월 세미나, AWS로 개인서버 구축하기
Tdc2013 선배들에게 배우는 server scalability
Redis Overview
[17.01.19] docker introduction (Korean Version)
AWS 활용한 Data Lake 구성하기
레코벨의 추천 서비스 고군 분투기 - AWS Summit Seoul 2017
2014.4.30 프라이머 개발자 모임 - 서버 장애 예방 및 대응 방법 공유
AWS의 하둡 관련 서비스 - EMR/S3
안정적인 서비스 운영 2014.03
내 맘대로 Lambda 사용기
Rhea_MMO_SNG_Convergence_Server_Architecture
Twitter의 대규모 시스템 운용 기술 어느 고래의 배속에서
프라우드넷 사용법 훑어보기
OLAP for Big Data (Druid vs Apache Kylin vs Apache Lens)
20181108 HBSmith에서는 이렇게 AWS IaC로 배포한다

More from Amazon Web Services Korea (20)

PDF
[D3T1S01] Gen AI를 위한 Amazon Aurora 활용 사례 방법
PDF
[D3T1S06] Neptune Analytics with Vector Similarity Search
PDF
[D3T1S03] Amazon DynamoDB design puzzlers
PDF
[D3T1S04] Aurora PostgreSQL performance monitoring and troubleshooting by use...
PDF
[D3T1S07] AWS S3 - 클라우드 환경에서 데이터베이스 보호하기
PDF
[D3T1S05] Aurora 혼합 구성 아키텍처를 사용하여 예상치 못한 트래픽 급증 대응하기
PDF
[D3T1S02] Aurora Limitless Database Introduction
PDF
[D3T2S01] Amazon Aurora MySQL 메이저 버전 업그레이드 및 Amazon B/G Deployments 실습
PDF
[D3T2S03] Data&AI Roadshow 2024 - Amazon DocumentDB 실습
PDF
AWS Modern Infra with Storage Roadshow 2023 - Day 2
PDF
AWS Modern Infra with Storage Roadshow 2023 - Day 1
PDF
사례로 알아보는 Database Migration Service : 데이터베이스 및 데이터 이관, 통합, 분리, 분석의 도구 - 발표자: ...
PDF
Amazon DocumentDB - Architecture 및 Best Practice (Level 200) - 발표자: 장동훈, Sr. ...
PDF
Amazon Elasticache - Fully managed, Redis & Memcached Compatible Service (Lev...
PDF
Internal Architecture of Amazon Aurora (Level 400) - 발표자: 정달영, APAC RDS Speci...
PDF
[Keynote] 슬기로운 AWS 데이터베이스 선택하기 - 발표자: 강민석, Korea Database SA Manager, WWSO, A...
PDF
Demystify Streaming on AWS - 발표자: 이종혁, Sr Analytics Specialist, WWSO, AWS :::...
PDF
Amazon EMR - Enhancements on Cost/Performance, Serverless - 발표자: 김기영, Sr Anal...
PDF
Amazon OpenSearch - Use Cases, Security/Observability, Serverless and Enhance...
PDF
Enabling Agility with Data Governance - 발표자: 김성연, Analytics Specialist, WWSO,...
[D3T1S01] Gen AI를 위한 Amazon Aurora 활용 사례 방법
[D3T1S06] Neptune Analytics with Vector Similarity Search
[D3T1S03] Amazon DynamoDB design puzzlers
[D3T1S04] Aurora PostgreSQL performance monitoring and troubleshooting by use...
[D3T1S07] AWS S3 - 클라우드 환경에서 데이터베이스 보호하기
[D3T1S05] Aurora 혼합 구성 아키텍처를 사용하여 예상치 못한 트래픽 급증 대응하기
[D3T1S02] Aurora Limitless Database Introduction
[D3T2S01] Amazon Aurora MySQL 메이저 버전 업그레이드 및 Amazon B/G Deployments 실습
[D3T2S03] Data&AI Roadshow 2024 - Amazon DocumentDB 실습
AWS Modern Infra with Storage Roadshow 2023 - Day 2
AWS Modern Infra with Storage Roadshow 2023 - Day 1
사례로 알아보는 Database Migration Service : 데이터베이스 및 데이터 이관, 통합, 분리, 분석의 도구 - 발표자: ...
Amazon DocumentDB - Architecture 및 Best Practice (Level 200) - 발표자: 장동훈, Sr. ...
Amazon Elasticache - Fully managed, Redis & Memcached Compatible Service (Lev...
Internal Architecture of Amazon Aurora (Level 400) - 발표자: 정달영, APAC RDS Speci...
[Keynote] 슬기로운 AWS 데이터베이스 선택하기 - 발표자: 강민석, Korea Database SA Manager, WWSO, A...
Demystify Streaming on AWS - 발표자: 이종혁, Sr Analytics Specialist, WWSO, AWS :::...
Amazon EMR - Enhancements on Cost/Performance, Serverless - 발표자: 김기영, Sr Anal...
Amazon OpenSearch - Use Cases, Security/Observability, Serverless and Enhance...
Enabling Agility with Data Governance - 발표자: 김성연, Analytics Specialist, WWSO,...

[2017 AWS Startup Day] 인프라 관점에서 접근하는 리디스토리 개발기

  • 1. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 박준형 | 리디북스 인프라 관점에서 접근하는 신규 서비스 개발기
  • 2. 발표자 소개 박준형 6년차 개발자 C / C++ 빠 마소 빠 윈도우 최고
  • 3. 지금까지 손댄것 Linux 응용프로그램 MFC 응용프로그램 WPF 응용프로그램 Reverse proxy 리디북스 리디스토리
  • 5. 뒤에서 보면 좀 복잡해 보이네요
  • 7. 회원: 개발자 2명 - 만들고 있는 사이트를 테스트 해보자. - WAS - DB
  • 8. 회원: 개발자 3명 - 서울 Region에 Zone 이 두개니까 이중화를 하자. - WAS2개 - DBMulti-AZ
  • 9. 회원: 팀원 4명 - 비동기 작업 - 이메일 발송이나 시간이 오래 걸리는 작업은 비동기로 하자. - Celery 를 인스턴스에서 같이 돌리자. - Queue는 Rabbit MQ를 쓰려고 하는데, 이중화랑 Failover가 어렵네. - Session 때문에 Redis 쓸꺼니까 Redis에 Queue 역할도 주자. - Redis Failover는 Sentinel 로 하자. - WAS2개,Redis2개 - DBMulti-AZ
  • 11. 회원: 팀원 6명 - DB 분리 - Main DB는 소중하니까 Slave를 붙이자. - DB req는 가능하면 Slave로 가도록 개발하자. - Log 데이터나 읽은 기록 데이터는 서비스와 무관하니까 죽더라도 혼자 죽 으라고 DB를 분리하자. - 물론 Log, 읽기 기록은 장애가 있어도 서비스 이용에 차질이 없도록 개발하 자. - WAS2개,Redis2개 - MainDBMulti-AZ,MainDBSlave1개,LogDB,ReadingDB
  • 13. 회원: 사내 10명 - 뷰어서버 - 뷰어 테스트를 위해 뷰어 서버를 추가하자. - 기존의 리디북스 서버를 가져와서 개조하자. - 부하가 별로 없을것 같긴 한데 다른 언어니까 따로 서버를 두자. - 객체 저장 - 책파일 과 미디어(이미지, 동영상) 저장을 S3에 하자. - 책파일은 중요하니까 미디어와 Bucket을 분리 하자. - WAS2개,ViewWAS 2개,Redis2개 - MainDBMulti-AZ,MainDBSlave1개,LogDB,ReadingDB - S3
  • 15. 회원: 사내 15명 - CDN - 미디어는 노출되도 상관 없고 전송이 빨라야 하니까 앞에 CDN을 두자. - JS랑 CSS도 CDN을 이용하자. - TTL 관리 하기 어려우니 모든 파일은 불변으로 간주하자. - WAS2개,ViewWAS2개,Redis2개 - MainDBMulti-AZ,MainDBSlave1개,LogDB,ReadingDB - S3,CloudFront
  • 18. 회원: 5,000명 - Worker - 기다리면 무료, 최신편 알림 등이 비동기 Queue에 쌓여서 가끔 늦게 되네. - 실시간성 작업들은 전용 Worker에서 돌리자. - Cron도 그 Worker가 돌리자. - 모니터링 - CloudWatch에 연결하자. - 배포전 테스트 - Staging서버 하나 만들자. - WAS2개,Worker1개,Staging1개,ViewWAS2개,Redis2개 - MainDBMulti-AZ,MainDBSlave1개,LogDB,ReadingDB - S3,CloudFront,CloudWatch
  • 20. 회원: 1만명 - 조회 전용 DB - DB가 자꾸 죽네. - 운영, 재무팀에서 서비스 분석을 위해 엄청난 Query를 날리고 있네. - DB인스턴스가 여러개라서 분석이 불편하네. - 조회 전용 DB를 만들어서 서비스와 분리 하고 모든 DB를 Replication하자. - WAS2개,Worker1개,Staging1개,ViewWAS2개,Redis2개 - MainDBMulti-AZ,MainDBSlave1개,LogDB,ReadingDB,ReadDB - S3,CloudFront,CloudWatch
  • 22. 회원: 5만명 - 뷰어서버 개선 - 설날에 차례지내다가 뷰어 서버 죽었네. - 가끔 가끔 뷰어 서버 죽네. - 만화 서비스 해야 하는데 이대로 가면 안되겠네. - 책파일은 불변이니까 뷰어서버가 파싱한 데이터를 S3에 저장하고 CDN 태우자. - 인증 기능은 CloudFront의 Private contents(signed-cookies) 기능을 사용 하자. - WAS2개,Worker1개,Staging1개,ViewWAS2개,Redis2개 - MainDBMulti-AZ,MainDBSlave1개,LogDB,ReadingDB,ReadDB - S3,CloudFront,CloudWatch
  • 24. 회원: 10만명 - ElasticCache - 가끔 Redis 연결이 끊기고 운영하기 번거롭네. - 운영비용(내 인건비 포함)도 많이 차이 안나니까 ElasticCache 가자. - Push Worker - 전체 Push 보내려니까 너무 느리다 → 대량발송은 SNS쓰자. - 사람 많아지니까 기다리면 무료 알림발송도 빡세다 → Push 전용 Worker. - 서비스 Scale out - 전체 Push 자주 보내니까 DB부하가 커지네 → Slave추가. - DB Slave추가하니까 WAS죽네 → WAS 증가. - WAS증가하니까 로그 보기 어렵다 → 로그 수집기 추가. - WAS8개,Worker2개,Staging2개,ViewWAS2개,로그수집기 - MainDBMulti-AZ,MainDBSlave2개,LogDB,ReadingDB,ReadDB - S3,CloudFront,CloudWatch,ElasticCache,SNS
  • 26. 회원: 20만명 - 이미지 최적화 - 이미지 다운로드가 가끔 느린게 있네. - 헉! 30MB짜리 썸네일(?)이다. - 운영팀에서 압축하고 올린다고 했지만, 실수 할 수 있으니 따로 해주자. - 모든 이미지를 미리 변환하지 말고, 필요할 때 적절하게 변형할 수 있도록 하자. - 이럴때 Lambda를 쓰면 최고. - WAS8개,Worker2개,Staging2개,ViewWAS2개,로그수집기 - MainDBMulti-AZ,MainDBSlave2개,LogDB,ReadingDB,ReadDB - S3,CloudFront,CloudWatch,ElasticCache,SNS - Lambda,API Gateway
  • 28. 현재 - TDD - 배포만 하면 오류 나고 장애가 발생하네. - 테스트에 시간도 오래 걸리고, 누락되는 테스트도 있고. - CI 랑 API tester 추가하자. - CDN 이중화 - WAS8개,Worker2개,Staging2개,ViewWAS2개,로그수집기 - API tester,Travis CI - MainDBMulti-AZ,MainDBSlave2개,LogDB,ReadingDB,ReadDB - S3,CloudFront,CloudWatch,ElasticCache,SNS - Lambda,APIGateway
  • 30. 회원: 100만명 되기 전에 할일 - 밤에 사람 안오니까, 혹은 엄청나게 올 수 있으니 Auto scailing - 배포가 더 쉬워져야 하니까 Front & Backend 나누고 Docker! - 회원수 증가로 DB 데이터가 더 쌓기 전에 Sharding 준비 - 개발자님 모시기
  • 31. 정리를 하자면 - 이중화 및 Auto-failover 는 필수 입니다. - RDS를 쓴다면 Multi-AZ 꼭 사용하세요. - AWS에서 제공하는 서비스들은 따로 구축하지 말고 사용하세 요. - 가능하면 Serverless로 구성하세요.