SlideShare a Scribd company logo
웹 서비스 확장 전략
강대명
charsyam@naver.com
오늘의 주제
웹 서비스 확장전략?
왜?
그냥 장비 더 넣으면
되지 않나요?
그래도 됩니다.
그래도 됩니다.
다만 돈이 더 많이 들뿐
그래도 됩니다.
다만 시간이 더 들뿐
올바른(?) 확장 방법에
대해서 알아봅시다.
웹 서비스
웹,모바일
간단한 서비스
최소로 MVP만 구현
출시 우선
Client
Buisness
Logic
Storage
서비스 초창기 구조: 1대
Client WEB DB(Mysql)
바꿔 말하면…
장애를 대비하면…
Client WEB#1 DB(Master)
시작은 대충 이런 모습
DB(Slave)
WEB#2
WEB#3
잘 되는 건 운…
서비스가 잘된다면?
확장이 필요합니다.
어디가 가장
문제가 될까요?
Client
Buisness
Logic
Storage
Client?
Client
Buisness
Logic
Storage
Buisness Logic?
Client
Web
App Server
Storage
Storage?
서비스마다 다르고
같은 서비스라도
상황마다 다릅니다.
가정 #1
매번 천만 팩토리얼을
계산하는 서비스면?
대부분 CPU 작업
Client
Buisness
Logic
Storage
Buisness Logic이 뻥
Client WEB DB(Mysql)
CPU 작업이 많으면…
Client WEB DB(Mysql)
CPU 작업이 많으면…
WEB 확장
WEB 확장
추가로…
Web 단이 늘어나면?
Client는 어떻게 알까?
DNS를 이용
Client WEB #1
DNS Round Robin
WEB #2
WEB #3
Client WEB #1
DNS Round Robin
WEB #2
WEB #3
DNS
api.factorial.com
WEB #2
DNS RR은 서버 장애시
전파 시간의 단점이 존재
Load Balancer 를 이용
Client WEB #1
LB
WEB #2
WEB #3
Load
Balancer
하드웨어 LB
비쌉니다.
소프트웨어 LB
이중화 등이 필요…
로직 단의 확장은,
대체로 쉬운편…
가정 #2
매번 내 친구들의 목록을 가
져오는 서비스라면?
Client
Web
App Server
Storage
Storage
DB 작업이 많으면?
Client WEB DB(Mysql)
이런 확장이 도움이 될까?
WEB 확장
WEB 확장
Client WEB DB(Mysql)
도움이 안됨…
WEB 확장
WEB 확장
DB가 할수 있는 일은 동일
그렇다면?
Client WEB DB(Mysql)
DB 작업이 많으면…
DB 확장
그런데 DB 확장은
쉽지가 않네요.
잠시 확장을 위한
선택 방법
Scale Up
VS
Scale Out
Scale Up
Scale Up
성능이 더 좋은 장비로…
초당 1000 TPS
초당 3000 TPS
3배 처리 가능한 서버를 투입
Scale Up
CPU 4 -> 24
Mem 4G -> 32G
Scale Out
Scale Out
장비를 더 늘리자.
초당 1000 TPS
초당 2000 TPS
초당 3000 TPS
일반적으로는 Scale Up 이
더 쉽고 Scale Out 이 비
용이 적게 든다.
그러나 가능하면 일단은
Scale Up 을 시도해보자.
메모리, CPU, SSD 등의
간단히 업그레이드
가능한 것들…
하드웨어 가격이 점점
싸져서, Scale Out 도
좋은 전략
돌아가기 전에…
확장이 필요한건 어떻게?
메모리 사용량
CPU 사용량
CPU Load
(웹, DB) 서버 로그
다시 돌아가서…
스토리지의 확장
두가지 질문…
어떤 부하가 많은가?
읽기 VS 쓰기
어떻게 원하는 데이터를
쉽게 찾을 것인가?
어떤 부하가 많은가?
읽기, 쓰기의 비율에 다른
다른 조치가 필요.
일반적인 서비스 부하
200 writes/s
800 reads/s Read > Write
Read 가 80% 정도면?
Read 가 80% 정도면?
Read를 분산하자.
DB의 Slave 에서
읽기를 수행
일반적인 DB 구성
DB(Master)
DB(slave)
Write
Read
Replication
Failover
모든 요청을 Master 가 처리, Slave는 장애 대비
Read 분산 DB 구성
DB(Master)
DB(slave)
Write
Read
Replication
Failover
Master는 쓰기만 처리, 읽기는 전부 Slave에서
200
writes/s
800
reads/s
200
writes/s
400
reads/s
200
writes/s
400
reads/s
Read/1 Server Read/2 Server
Slave 만 계속 추가하면
읽기는 계속 늘어날까요?
Write가 늘어날 수록
성능은 떨어집니다.
Write의 증대로 인한 I/O 상황
700
writes/s
50
reads/s
700
writes/s
50
reads/s
700
writes/s
50
reads/s
700
writes/s
50
reads/s
700
writes/s
50
reads/s
Write 를 분산하자.
Write 비율이 높거나
데이터가 무지막지하게
많아서 한 서버에
안 들어간다면…
Write가 나눠지면
데이터를 어떻게 찾을 것
인가로 다시 귀결됨
(두번째 질문)
일반적인 DB 구성
DB #1
Read #1
Write #1
Read #2
Write #2
DB별로 해당하는 Key들의 리퀘스트만 보냄.
DB #2
어떻게 해당 서버를 찾지?
어떤 Key(속성) 이
찾기에
적당할 까?
인스타그램을
생각해봅시다.
특정 유저를 어떻게 찾을까?
특정 사진을 어떻게
찾을까?
User ID
사진 ID
둘다 숫자라고 가정
User 관련 정보
User 관련 정보
많아도 한 서버에서
처리 가능
1k * 10,000,000
1k * 10,000,000
= 10G
그런데 1억명이면?
한 서버당 100G?
그럼 10억명이면?
그럼 10억명이면?
1TB?
User 관련 정보
60억 다 있어도 그렇
게 크지는 않음.
그러나 사진은?
Instagram
64 bits
Instagram ID
Instagram
자신이 들어갈 서버의 주소가
Logical Shard ID로 존재
서비스 별로 다양한
정책을 취함.
Range,
Modular,
Indexed
Range
Range
1~백만: 1번
백만1~2백만: 2번
Range
Range가 너무 크면
서버별 사용 리소스가
크게 차이날 수 있다.
Range
서버 추가 시에
Range 조절이 없으면
데이터 이동이 없다.
Range
User #1
User #10
User #1000000
User #1000001
User #1000100
User #2000000
User #2000001
User #2000200
User #3000000
ServerUser #1000005
2
Modular
Modular
Id % 서버대수 = k
Modular
서버 대수에 따라서
데이터 이동이 많아짐.
Modular
가능하면 2배씩 증
가하는 게 유리.
Modular
Logical Shard
Physical Shard
Modulo
User #1
User #4
User #7
User #2
User #5
User #8
User #3
User #6
User #9
ServerUser #1
1
Indexed
Indexed
해당 데이터가 어디 존
재하는지 Index 서버
가 따로 존재
Indexed
해당 데이터가 어디 존
재하는지 Index 서버
가 따로 존재
Indexed
Index 변경으로 데이터
이동이 자유롭다.
Indexed
Index 서버에 대한
관리가 추가로 필요.
Indexed
User #1
User #2000
User #1000000
User #2
User #2001
User #10000
User #3
User #6
User #5000
ServerUser #5000
3
Index Server
User 5000 is in 3
결국은 서비스 확장은
데이터 확장의 이슈
서비스에 적합한 방
법은 서비스별로 다름
현재의 트렌드
BO: Shared Nothing
DB: Sharding
Elastic webservice

More Related Content

PDF
Scalable webservice
PDF
Webservice cache strategy
PDF
webservice scaling for newbie
PDF
Internet Scale Service Arichitecture
PDF
Data Engineering 101
PDF
Redis edu 5
PDF
How to build massive service for advance
PDF
How to name a cache key
Scalable webservice
Webservice cache strategy
webservice scaling for newbie
Internet Scale Service Arichitecture
Data Engineering 101
Redis edu 5
How to build massive service for advance
How to name a cache key

What's hot (20)

PDF
Why GUID is needed
PDF
파이어베이스 네이버 밋업발표
PDF
Dynamodb 삽질기
PDF
[Gaming on AWS] AWS 위에서의 Dev & Test, 그리고 비용 - 위메이드
PDF
Amazon Aurora Deep Dive (김기완) - AWS DB Day
PDF
[Gaming on AWS] AWS와 함께 한 쿠키런 서버 Re-architecting 사례 - 데브시스터즈
PDF
[Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례
PPT
스타트업과 개발자를 위한 AWS 클라우드 태권 세미나 : VCNC 사례 발표
PPTX
Amazon web service를 활용한 모바일 게임 서버 개발 퍼즐 주주의 사례를 중심으로
PDF
DynamoDB를 이용한 PHP와 Django간 세션 공유 - 강대성 (피플펀드컴퍼니)
PDF
[Line Developer Day 2014] 라인 글로벌 게임 서버 개발하기
PDF
아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)
PDF
Amazon Aurora 100% 활용하기
PDF
AWS를 활용하여 Daily Report 만들기 : 로그 수집부터 자동화된 분석까지
PDF
AWS 9월 웨비나 | Amazon Aurora Deep Dive
PDF
Cloudera Impala 1.0
PDF
AWS와 함께 한 쿠키런 서버 Re-architecting 사례 (Gaming on AWS)
PDF
AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석
PDF
아마존 닷컴의 클라우드 활용 사례 - AWS Summit Seoul 2017
PPTX
[AWSKRUG&JAWS-UG Meetup #1] 태양광발전소 원격 감시 시스템의 대량데이터 해석【株式会社fusic】
Why GUID is needed
파이어베이스 네이버 밋업발표
Dynamodb 삽질기
[Gaming on AWS] AWS 위에서의 Dev & Test, 그리고 비용 - 위메이드
Amazon Aurora Deep Dive (김기완) - AWS DB Day
[Gaming on AWS] AWS와 함께 한 쿠키런 서버 Re-architecting 사례 - 데브시스터즈
[Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례
스타트업과 개발자를 위한 AWS 클라우드 태권 세미나 : VCNC 사례 발표
Amazon web service를 활용한 모바일 게임 서버 개발 퍼즐 주주의 사례를 중심으로
DynamoDB를 이용한 PHP와 Django간 세션 공유 - 강대성 (피플펀드컴퍼니)
[Line Developer Day 2014] 라인 글로벌 게임 서버 개발하기
아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)
Amazon Aurora 100% 활용하기
AWS를 활용하여 Daily Report 만들기 : 로그 수집부터 자동화된 분석까지
AWS 9월 웨비나 | Amazon Aurora Deep Dive
Cloudera Impala 1.0
AWS와 함께 한 쿠키런 서버 Re-architecting 사례 (Gaming on AWS)
AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석
아마존 닷컴의 클라우드 활용 사례 - AWS Summit Seoul 2017
[AWSKRUG&JAWS-UG Meetup #1] 태양광발전소 원격 감시 시스템의 대량데이터 해석【株式会社fusic】
Ad

Viewers also liked (20)

PDF
Redis trouble shooting_eng
PPTX
The Four Horsemen of Storage System Performance
PDF
Techplanetreview redis
PDF
Redis acc 2015
PDF
Redis on AWS
PDF
Redis trouble shooting
PDF
KGC2015_C# 스크립트를 사용한 게임서버 모니터링 시스템개발
PDF
Troubleshooting redis
PDF
닷넷프레임워크에서 Redis 사용하기
PDF
Internet scaleservice
PPTX
Redis data design by usecase
PDF
사물인터넷 박상지
PDF
Future Web and WoT(Web of Things)
PDF
NLog 소개
PPTX
Redis data modeling examples
PPTX
이것이 레디스다.
PPTX
Redis Use Patterns (DevconTLV June 2014)
PDF
Hi beacon 제안서_api사업팀_(2014년04월)
PDF
Syrup_표준 영업 제안서_LE 대상v_배포
PDF
Web bluetooth API 와 Physical Web
Redis trouble shooting_eng
The Four Horsemen of Storage System Performance
Techplanetreview redis
Redis acc 2015
Redis on AWS
Redis trouble shooting
KGC2015_C# 스크립트를 사용한 게임서버 모니터링 시스템개발
Troubleshooting redis
닷넷프레임워크에서 Redis 사용하기
Internet scaleservice
Redis data design by usecase
사물인터넷 박상지
Future Web and WoT(Web of Things)
NLog 소개
Redis data modeling examples
이것이 레디스다.
Redis Use Patterns (DevconTLV June 2014)
Hi beacon 제안서_api사업팀_(2014년04월)
Syrup_표준 영업 제안서_LE 대상v_배포
Web bluetooth API 와 Physical Web
Ad

Similar to Elastic webservice (20)

PDF
Massive service basic
PDF
나에게 맞는 AWS 데이터베이스 서비스 선택하기 :: 양승도 :: AWS Summit Seoul 2016
PPT
Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드
PDF
관계형 데이터베이스의 새로운 패러다임 Amazon Aurora :: 김상필 :: AWS Summit Seoul 2016
PDF
안정적인 서비스 운영 2014.03
PDF
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
PDF
안정적인 서비스 운영 2013.08
PDF
레코벨의 추천 서비스 고군 분투기 - AWS Summit Seoul 2017
PPTX
Ndc14 분산 서버 구축의 ABC
PDF
넥슨 글로벌 플랫폼 구축 이야기 : DB Migration case study (임현수 플랫폼인프라실 Technical Manager, 넥...
PDF
[Games on AWS 2019] AWS 사용자를 위한 만랩 달성 트랙 | Aurora로 게임 데이터베이스 레벨 업! - 김병수 AWS ...
PDF
ASP.NET과 C#으로 개발하는 대규모 소셜 게임
PDF
NET 최선단 기술에 의한 고성능 웹 애플리케이션
PDF
Things Happend between JDBC and MySQL
PPTX
자바가 디비와 사귀기 까지 벌어지는 일들
PDF
게임을 위한 최적의 AWS DB 서비스 소개 Dynamo DB, Aurora - 이종립 / Principle Enterprise Evang...
PDF
대규모 서비스를 가능하게 하는 기술
PDF
WAS의 동작과 WEB, Servlet, JSP_Wh apm
PDF
All about JDBC Performance Tuning_Wh apm
PPTX
04.웹시스템 이해 하기
Massive service basic
나에게 맞는 AWS 데이터베이스 서비스 선택하기 :: 양승도 :: AWS Summit Seoul 2016
Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드
관계형 데이터베이스의 새로운 패러다임 Amazon Aurora :: 김상필 :: AWS Summit Seoul 2016
안정적인 서비스 운영 2014.03
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
안정적인 서비스 운영 2013.08
레코벨의 추천 서비스 고군 분투기 - AWS Summit Seoul 2017
Ndc14 분산 서버 구축의 ABC
넥슨 글로벌 플랫폼 구축 이야기 : DB Migration case study (임현수 플랫폼인프라실 Technical Manager, 넥...
[Games on AWS 2019] AWS 사용자를 위한 만랩 달성 트랙 | Aurora로 게임 데이터베이스 레벨 업! - 김병수 AWS ...
ASP.NET과 C#으로 개발하는 대규모 소셜 게임
NET 최선단 기술에 의한 고성능 웹 애플리케이션
Things Happend between JDBC and MySQL
자바가 디비와 사귀기 까지 벌어지는 일들
게임을 위한 최적의 AWS DB 서비스 소개 Dynamo DB, Aurora - 이종립 / Principle Enterprise Evang...
대규모 서비스를 가능하게 하는 기술
WAS의 동작과 WEB, Servlet, JSP_Wh apm
All about JDBC Performance Tuning_Wh apm
04.웹시스템 이해 하기

More from DaeMyung Kang (20)

PPTX
Count min sketch
PDF
PDF
Ansible
PDF
How to use redis well
PPTX
The easiest consistent hashing
PDF
Integration between Filebeat and logstash
PDF
How To Become Better Engineer
PPTX
Kafka timestamp offset_final
PPTX
Kafka timestamp offset
PPTX
Data pipeline and data lake
PDF
Redis acl
PDF
Coffee store
PDF
Number system
PDF
Bloomfilter
PDF
Redis From 2.8 to 4.x(unstable)
PDF
Redis From 2.8 to 4.x
PDF
Soma search
PDF
Redis 2017
PDF
Using spark data frame for sql
PPTX
How to study
Count min sketch
Ansible
How to use redis well
The easiest consistent hashing
Integration between Filebeat and logstash
How To Become Better Engineer
Kafka timestamp offset_final
Kafka timestamp offset
Data pipeline and data lake
Redis acl
Coffee store
Number system
Bloomfilter
Redis From 2.8 to 4.x(unstable)
Redis From 2.8 to 4.x
Soma search
Redis 2017
Using spark data frame for sql
How to study

Elastic webservice