SlideShare a Scribd company logo
1 of 23
Download to read offline
Twitter의 대규모 시스템 운용 기술
~ 어느 고래 배속에서
최흥배
• 2010년 6월22일에 열렸던 Velocity 2010 행사
• Twitter의 John Adams씨의 발표.
In the Belly of the Whale : Operation at Twitter (고래 배 속:Twitter에서의
운용)
• John Adams씨는 Twitter의 초기 멤버로 애플리케이션 서비스의 리드
엔지니어
• Twitter의 현재(2010년 6월) 종업원 수는 210명
• Twitter로의 액세스는 API 경유가 75%이고 상승 중
• 하루에 6500만 트윗, 1초마다 약 750 트윗
• 최대 부한 순간은 월드컵에서 일본 대표가 득점할 때 초당 2940 트윗,
그러나 며칠 후 NBA에서 2연패를 달성한 레이커스가 우승했을 때 초당 3085
트윗
오퍼레이션 팀의 역할
• Peek 때도 그렇지 않을 때도 운용을 담당하면서 Capacity Planning을 하고,
성능을 개선하고, 고래 모습을 나타나지 않도록 한다.
• Web 사이트 이용자 수가 500에서 수 백만, 수 천만으로 늘어나면 처음에
설계했던 설계는 유효하지 않게 된다.
• 어떤 규모에서 유효한 설계는 그 규모에서만 유효하다라는 것을 배움.
• 사이트 설계를 몇 번이라도 다시 생각하지 않으면 안되었다.
• 이런 상황이므로 현재까지 몇 번이나 다시 하지 않으면 안되었다.
• 오퍼레이션 팀의 최대 역할은 먼저 MTTD(Mean Time To Detect), 문제
발생까지의 시간을 가능한 짧게, 문제를 빠르게 발견하고, MTTR(Mean Time
To Recovery), 복구를 단 시간에 끝내야 한다.
• 주문, 계측, 로그(기록), 과학적 분석, 시스템 개선, 병목 제거를 여러 번
되풀이 한다.
시스템 관리는 ‘Sysadmin 2.0’
• ‘모니터링’은 웹사이트에 어떤 일이 일어났는지 이해하기 위해 중요.
• Twitter는 중요한 metrics를 거의 실 시간으로 모니터하고 있다.
• 시스템 관리자에게 큰 변화가 생긴 것을 발견. 이것을 ‘Sysadmin 2.0’이라고
부른다.
• Sysadmin 2.0은 데이터를 모아서 수학이랑 과학적 방법을 이용하여 이것을
분석하여, 무엇이 일어났는가를 데이터를 기초로 판단하는 역할을 한다.
• 모으는 데이터는 Apache, Ruby 등에 대한 로우 레벨 데이터, 레이턴시,
메모모릭 등. 사용하고 있는 것은 cpdump, tcpdstat, yconalyzer 등.
Rails와 로깅
• 많은 사람들이 Rails의 성능 문제에 대해서 물어보고 싶어 하는 것을 알고
있지만 우리들이 경험한 성능 면에서의 문제에 대해서는 Ruby가 직접
관계된 것은 없었다.
• 가베지 컬렉션, Replication Lag, SQL 문제 대 부분 여기가 문제였다.
• 로그를 얻기 위해 syslog는 높은 부하 환경에서는 도움이 되지 않는 것을
알았다. Syslog 데몬이 다운하며 어떤 데이터도 얻을 수 없게 된다.
• 장애가 발생했을 때 로그를 분석하는 것은 중요하다.
Facebook의 오픈 소스 Scribe와 HDFS로 이행하였다.
대규모 분석은 Hadoop으로 하고 있다.
Dashboard
• Dashboard가 모니터링에서 처음 보는 화면
• 여기에서 무엇이 일어 나고 있는지, 10개 정도의 중요한 metrics에 대해서
보고 있다.
• 잘 한 것으로 쉘 스크립트로 만든 ‘Whale Watcher’ 스크립트.
• Twitter의 에러로 HTTP 503(timeout)이 발생하면 고래가 나타나고, HTTP
500(error) 때는 로봇이 표시. 예전에는 60초 마다 이것들이 얼마나 발생하는
집계하여 그래프화 하였다. 이것은 큰 도움이 되었다.
Darkmode
• 작년에 많은 시간을 들여서 배포 프로세스를 개선하여 코드를 보다 빠르게,
그러면서 에러 발생을 줄여주는 배포를 하였다.
• 코드를 배포할 때는 Release 전에 기능을 블럭하는 ‘Darkmode’를 사용한다.
• Darkmode에는 90개 정도의 기능을 정지하는 스위치가 있다. 이것을 아주
강력한데 예를 들면 프로덕션 상태에 있어도 장해에서 회복하기 위한 기능을
off 하는 것이 가능하다.
서브 시스템 - loony
• 운영 관리상의 최대 문제 중 하나는 어느 머신이 어떤 것인가를 확인하는 것.
• 매니지드 호스팅을 사용하고 있지만 Web100 이라는 호스팅 상의 이름을
우리들의 이름에 매핑하고 있다. 이것을 관리하기 위해서 사용하고 있는 것이
‘loony’로 머신의 센트럴 데이터 베이스 이다.
• loony는 LDAP로도 연결되어 어느 머신이 누가 액세스 하고 있는지도 관리.
리얼타임으로 관리하고 있으므로 서버의 그룹핑, 메일 서버랑 웹서버라는
역할이 다른 서버를 On-Demand로 배포하는 것에 큰 도움
서브 시스템 - Murder
• 머신을 만들 때 사용하는 것이 Murder.
• 오픈 소스 라이브러리로 합법적인 P2P 기술에 의해 소프트웨어를 수 천대
서버에 빠르게 배포해 준다.
서브 시스템 - memcached
• 웹 사이트가 느려질 때 많은 운용 팀이 memcached를 사용한다고 한다.
• 그러나 많은 데이터를 memcached의 캐쉬에 넣음으로서 데이터의
축출(Evictions)이 발생하여 백 링크의 트래픽이 증대해버리는 현상이 발생.
• Memcached를 사용할 때는 세그멘트마다 데이터 량에 주의를 기울여야 한다.
서브 시스템 - Unicorn
• Twitter에 Request하면 로드 밸런서를 통해서 Apache에 도달한다.
• 작년 최대의 성공은 ‘Unicorn Rails Server’로의 이행이다.
서브 시스템 - Unicorn
• Rails Server의 Mongrel과 Unicorn을 비교하면 Mongrel은 슈퍼마켓의
레지에 줄선 많은 열이 있지만 어느 열의 처리가 어느 정도 걸리는지
모르는채로 열을 세우는 것에 비해,
• Unicorn은 처리해 주는 순서를 자동적으로 할당해 주어 긴 열 중에서
기다리고 있도록 해준다.
Unicorn Rails Server에 의해 CPU 부하를 약 30% 줄이는 것이 가능,
메모리 사용량을 줄이는 것도 가능. 또 빠른 request를 바꾸는 것이 가능하여
다운타임이 없는 배포가 가능하게 되었다.
서브 시스템 - Kestrel
• 처리의 효율화를 실현한 것이 비동기화.
• 오픈 소스의 ‘Kestrel’은 memcached와 비슷하지만(같은 프로토콜 사용)
데이터를 캐싱해 주는 서버이다. 이것에 의해 request에 대해 처리를
비동기로 하는 것이 가능, 처리하는 Worker를 줄여지는 것에 의해
파이프라인의 처리가 효율화 되었다.
서브 시스템 - Daemons
• Worker로서의 처리에는 daemon을 사용
• 트윗을 복사하여 메일을 보내고, 새로운 팔로워가 발생했을 때의 처리에
이때까지는 처리마다 다양한 타입의 daemon을 운용하고 있었다.
• 작년 이것을 하나로 모아서 다양한 처리를 할 수 있도록 하여 사이트 전체의
성능을 높일 수 있었다.
서브 시스템 – Flock DB
• 소셜 네트워킹에서 무거운 처리 중의 하나가 누가 누구를 팔로워하고
있는지를 말하는 소셜 그래프 처리
• Flock DB 개발
• 데이터 베이스에는 MySQL을 이용하고 있지만 Sharding 레이어로서
Gizzard를 이용하고 있다.
Caching가 만능은 아니다
• 우리들은 memcached에 트윗을 보존하고 memcached의 오픈 소스에 큰
공헌자이다.
• 그러나 아무리 리얼타임 시스템이라도 데이터 저장소는 필요하다.
• 경험에서 우리들은 ‘Cache Everything’(무엇이라도 캐쉬해라!)은 최고의
정책은 아니라는 것을 발견했다.
• 데이터 베이스의 확장으로서 캐쉬를 사용해야 한다.
• 만약 memcached에 모든 데이터를 넣어 두면 그것을 잃어버리면 몇
시간이나 복구에 소비한다. 과거에 우리들은 그 희생자였다.
데이터 베이스에 넣어 두었다면 로드 할 수 있다.
마지막으로…
• 처음부터 환경 매니지먼트 실행을 추천한다.
• 그리고 가능한 많은 로그를 남겨라.
• 우리들의 케이스에서는 하나의 설계로 모든 사이즈에 맞지 않았다.
몇 번이라도 다시 고치는 것이 발생하였다.
• 도구를 사용하여 분석해라. 로그는 인프라의 문제 해결에 있어서 가장 중요한
것이다.
http://www.youtube.com/watch?v=_7KdeUIvlvw
일본어
http://www.publickey1.jp/blog/10/twittertwitter.htm
http://www.publickey1.jp/blog/10/twittertwitterunicornkestrelflock_db.html
참조

More Related Content

What's hot

NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀승명 양
 
Kafka introduce kr
Kafka introduce krKafka introduce kr
Kafka introduce krJung soo Ahn
 
모바일 메신저 아키텍쳐 소개
모바일 메신저 아키텍쳐 소개모바일 메신저 아키텍쳐 소개
모바일 메신저 아키텍쳐 소개Hyogi Jung
 
파이어베이스 네이버 밋업발표
파이어베이스 네이버 밋업발표파이어베이스 네이버 밋업발표
파이어베이스 네이버 밋업발표NAVER D2
 
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games ConferenceKGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games ConferenceXionglong Jin
 
Google Cloud Next 2017 Seoul Extended 1st Session.
Google Cloud Next 2017 Seoul Extended 1st Session.Google Cloud Next 2017 Seoul Extended 1st Session.
Google Cloud Next 2017 Seoul Extended 1st Session.Harrison Jung
 
FCGI, C++로 Restful 서버 개발
FCGI, C++로 Restful 서버 개발FCGI, C++로 Restful 서버 개발
FCGI, C++로 Restful 서버 개발현승 배
 
아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)
아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)
아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)Brian Hong
 
Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드
Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드
Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드cranbe95
 
SQL Azure 실무 도입하기
SQL Azure 실무 도입하기SQL Azure 실무 도입하기
SQL Azure 실무 도입하기정현 남
 
[오픈소스컨설팅]Kafka message system 맛보기
[오픈소스컨설팅]Kafka message system 맛보기 [오픈소스컨설팅]Kafka message system 맛보기
[오픈소스컨설팅]Kafka message system 맛보기 Chanyeol yoon
 
프라우드넷 사용법 훑어보기
프라우드넷 사용법 훑어보기프라우드넷 사용법 훑어보기
프라우드넷 사용법 훑어보기Hyun-jik Bae
 
AWS와 함께 한 쿠키런 서버 Re-architecting 사례 (Gaming on AWS)
AWS와 함께 한 쿠키런 서버 Re-architecting 사례 (Gaming on AWS)AWS와 함께 한 쿠키런 서버 Re-architecting 사례 (Gaming on AWS)
AWS와 함께 한 쿠키런 서버 Re-architecting 사례 (Gaming on AWS)Brian Hong
 
Dropbox와 같은 시스템은 파일을 어떻게 저장할까?
Dropbox와 같은 시스템은 파일을 어떻게 저장할까?Dropbox와 같은 시스템은 파일을 어떻게 저장할까?
Dropbox와 같은 시스템은 파일을 어떻게 저장할까?nexusz99
 
Cloudera Impala 1.0
Cloudera Impala 1.0Cloudera Impala 1.0
Cloudera Impala 1.0Minwoo Kim
 
신림프로그래머 Kafka study
신림프로그래머 Kafka study신림프로그래머 Kafka study
신림프로그래머 Kafka studyRjs Ryu
 
서버/인프라를 지탱하는 기술
서버/인프라를 지탱하는 기술서버/인프라를 지탱하는 기술
서버/인프라를 지탱하는 기술재훈 정
 
[TD 2015] Microsoft Azure IaaS v2(최정현)
[TD 2015] Microsoft Azure IaaS v2(최정현)[TD 2015] Microsoft Azure IaaS v2(최정현)
[TD 2015] Microsoft Azure IaaS v2(최정현)Sang Don Kim
 
Amazon web service를 활용한 모바일 게임 서버 개발 퍼즐 주주의 사례를 중심으로
Amazon web service를 활용한 모바일 게임 서버 개발   퍼즐 주주의 사례를 중심으로Amazon web service를 활용한 모바일 게임 서버 개발   퍼즐 주주의 사례를 중심으로
Amazon web service를 활용한 모바일 게임 서버 개발 퍼즐 주주의 사례를 중심으로Seok-ju Yun
 
스마트폰 온라인 게임에서 고려해야 할 것들
스마트폰 온라인 게임에서 고려해야 할 것들스마트폰 온라인 게임에서 고려해야 할 것들
스마트폰 온라인 게임에서 고려해야 할 것들Hyunjik Bae
 

What's hot (20)

NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀
 
Kafka introduce kr
Kafka introduce krKafka introduce kr
Kafka introduce kr
 
모바일 메신저 아키텍쳐 소개
모바일 메신저 아키텍쳐 소개모바일 메신저 아키텍쳐 소개
모바일 메신저 아키텍쳐 소개
 
파이어베이스 네이버 밋업발표
파이어베이스 네이버 밋업발표파이어베이스 네이버 밋업발표
파이어베이스 네이버 밋업발표
 
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games ConferenceKGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
 
Google Cloud Next 2017 Seoul Extended 1st Session.
Google Cloud Next 2017 Seoul Extended 1st Session.Google Cloud Next 2017 Seoul Extended 1st Session.
Google Cloud Next 2017 Seoul Extended 1st Session.
 
FCGI, C++로 Restful 서버 개발
FCGI, C++로 Restful 서버 개발FCGI, C++로 Restful 서버 개발
FCGI, C++로 Restful 서버 개발
 
아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)
아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)
아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)
 
Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드
Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드
Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드
 
SQL Azure 실무 도입하기
SQL Azure 실무 도입하기SQL Azure 실무 도입하기
SQL Azure 실무 도입하기
 
[오픈소스컨설팅]Kafka message system 맛보기
[오픈소스컨설팅]Kafka message system 맛보기 [오픈소스컨설팅]Kafka message system 맛보기
[오픈소스컨설팅]Kafka message system 맛보기
 
프라우드넷 사용법 훑어보기
프라우드넷 사용법 훑어보기프라우드넷 사용법 훑어보기
프라우드넷 사용법 훑어보기
 
AWS와 함께 한 쿠키런 서버 Re-architecting 사례 (Gaming on AWS)
AWS와 함께 한 쿠키런 서버 Re-architecting 사례 (Gaming on AWS)AWS와 함께 한 쿠키런 서버 Re-architecting 사례 (Gaming on AWS)
AWS와 함께 한 쿠키런 서버 Re-architecting 사례 (Gaming on AWS)
 
Dropbox와 같은 시스템은 파일을 어떻게 저장할까?
Dropbox와 같은 시스템은 파일을 어떻게 저장할까?Dropbox와 같은 시스템은 파일을 어떻게 저장할까?
Dropbox와 같은 시스템은 파일을 어떻게 저장할까?
 
Cloudera Impala 1.0
Cloudera Impala 1.0Cloudera Impala 1.0
Cloudera Impala 1.0
 
신림프로그래머 Kafka study
신림프로그래머 Kafka study신림프로그래머 Kafka study
신림프로그래머 Kafka study
 
서버/인프라를 지탱하는 기술
서버/인프라를 지탱하는 기술서버/인프라를 지탱하는 기술
서버/인프라를 지탱하는 기술
 
[TD 2015] Microsoft Azure IaaS v2(최정현)
[TD 2015] Microsoft Azure IaaS v2(최정현)[TD 2015] Microsoft Azure IaaS v2(최정현)
[TD 2015] Microsoft Azure IaaS v2(최정현)
 
Amazon web service를 활용한 모바일 게임 서버 개발 퍼즐 주주의 사례를 중심으로
Amazon web service를 활용한 모바일 게임 서버 개발   퍼즐 주주의 사례를 중심으로Amazon web service를 활용한 모바일 게임 서버 개발   퍼즐 주주의 사례를 중심으로
Amazon web service를 활용한 모바일 게임 서버 개발 퍼즐 주주의 사례를 중심으로
 
스마트폰 온라인 게임에서 고려해야 할 것들
스마트폰 온라인 게임에서 고려해야 할 것들스마트폰 온라인 게임에서 고려해야 할 것들
스마트폰 온라인 게임에서 고려해야 할 것들
 

Viewers also liked

What is Game Server ?
What is Game Server ?What is Game Server ?
What is Game Server ?흥배 최
 
MinWin에 대해서
MinWin에 대해서MinWin에 대해서
MinWin에 대해서흥배 최
 
닷넷 Apache avro
닷넷 Apache avro닷넷 Apache avro
닷넷 Apache avro흥배 최
 
[Final]조진현 direct write
[Final]조진현 direct write[Final]조진현 direct write
[Final]조진현 direct write흥배 최
 
Mongodb2.2와 2.4의 신 기능 소개
Mongodb2.2와 2.4의 신 기능 소개Mongodb2.2와 2.4의 신 기능 소개
Mongodb2.2와 2.4의 신 기능 소개흥배 최
 
About Visual C++ 10
About  Visual C++ 10About  Visual C++ 10
About Visual C++ 10흥배 최
 
왜 애플리케이션이 Hang 되어도 OS는 괜찮을까?
왜 애플리케이션이 Hang 되어도 OS는 괜찮을까?왜 애플리케이션이 Hang 되어도 OS는 괜찮을까?
왜 애플리케이션이 Hang 되어도 OS는 괜찮을까?흥배 최
 
[Sdc 3rd] Boost multi_index
[Sdc 3rd] Boost multi_index[Sdc 3rd] Boost multi_index
[Sdc 3rd] Boost multi_index흥배 최
 
Facebook이 대규모 확장성 도전에서 배운 것
Facebook이 대규모 확장성 도전에서 배운 것Facebook이 대규모 확장성 도전에서 배운 것
Facebook이 대규모 확장성 도전에서 배운 것흥배 최
 
닷넷프레임워크에서 Redis 사용하기
닷넷프레임워크에서 Redis 사용하기닷넷프레임워크에서 Redis 사용하기
닷넷프레임워크에서 Redis 사용하기흥배 최
 
Mongodb 관리
Mongodb 관리Mongodb 관리
Mongodb 관리흥배 최
 
Mongodb 개발 포인트
Mongodb 개발 포인트Mongodb 개발 포인트
Mongodb 개발 포인트흥배 최
 
[KGC 2011]Boost 라이브러리와 C++11
[KGC 2011]Boost 라이브러리와 C++11[KGC 2011]Boost 라이브러리와 C++11
[KGC 2011]Boost 라이브러리와 C++11흥배 최
 
C#을 사용한 빠른 툴 개발
C#을 사용한 빠른 툴 개발C#을 사용한 빠른 툴 개발
C#을 사용한 빠른 툴 개발흥배 최
 
MongoDB 모바일 게임 개발에 사용
MongoDB 모바일 게임 개발에 사용MongoDB 모바일 게임 개발에 사용
MongoDB 모바일 게임 개발에 사용흥배 최
 
KGC2015_C# 스크립트를 사용한 게임서버 모니터링 시스템개발
KGC2015_C# 스크립트를 사용한 게임서버 모니터링 시스템개발KGC2015_C# 스크립트를 사용한 게임서버 모니터링 시스템개발
KGC2015_C# 스크립트를 사용한 게임서버 모니터링 시스템개발흥배 최
 
[KGC 2012]Boost.asio를 이용한 네트웍 프로그래밍
[KGC 2012]Boost.asio를 이용한 네트웍 프로그래밍[KGC 2012]Boost.asio를 이용한 네트웍 프로그래밍
[KGC 2012]Boost.asio를 이용한 네트웍 프로그래밍흥배 최
 
잘 알려지지 않은 숨은 진주, Winsock API - WSAPoll, Fast Loopback
잘 알려지지 않은 숨은 진주, Winsock API - WSAPoll, Fast Loopback잘 알려지지 않은 숨은 진주, Winsock API - WSAPoll, Fast Loopback
잘 알려지지 않은 숨은 진주, Winsock API - WSAPoll, Fast Loopback흥배 최
 
multi-thread 어플리케이션에 대해 모든 개발자가 알아 두지 않으면 안 되는 것
multi-thread 어플리케이션에 대해 모든 개발자가 알아 두지 않으면 안 되는 것multi-thread 어플리케이션에 대해 모든 개발자가 알아 두지 않으면 안 되는 것
multi-thread 어플리케이션에 대해 모든 개발자가 알아 두지 않으면 안 되는 것흥배 최
 

Viewers also liked (20)

What is Game Server ?
What is Game Server ?What is Game Server ?
What is Game Server ?
 
MinWin에 대해서
MinWin에 대해서MinWin에 대해서
MinWin에 대해서
 
닷넷 Apache avro
닷넷 Apache avro닷넷 Apache avro
닷넷 Apache avro
 
[Final]조진현 direct write
[Final]조진현 direct write[Final]조진현 direct write
[Final]조진현 direct write
 
Mongodb2.2와 2.4의 신 기능 소개
Mongodb2.2와 2.4의 신 기능 소개Mongodb2.2와 2.4의 신 기능 소개
Mongodb2.2와 2.4의 신 기능 소개
 
About Visual C++ 10
About  Visual C++ 10About  Visual C++ 10
About Visual C++ 10
 
왜 애플리케이션이 Hang 되어도 OS는 괜찮을까?
왜 애플리케이션이 Hang 되어도 OS는 괜찮을까?왜 애플리케이션이 Hang 되어도 OS는 괜찮을까?
왜 애플리케이션이 Hang 되어도 OS는 괜찮을까?
 
[Sdc 3rd] Boost multi_index
[Sdc 3rd] Boost multi_index[Sdc 3rd] Boost multi_index
[Sdc 3rd] Boost multi_index
 
Facebook이 대규모 확장성 도전에서 배운 것
Facebook이 대규모 확장성 도전에서 배운 것Facebook이 대규모 확장성 도전에서 배운 것
Facebook이 대규모 확장성 도전에서 배운 것
 
닷넷프레임워크에서 Redis 사용하기
닷넷프레임워크에서 Redis 사용하기닷넷프레임워크에서 Redis 사용하기
닷넷프레임워크에서 Redis 사용하기
 
Mongodb 관리
Mongodb 관리Mongodb 관리
Mongodb 관리
 
Mongodb 개발 포인트
Mongodb 개발 포인트Mongodb 개발 포인트
Mongodb 개발 포인트
 
[KGC 2011]Boost 라이브러리와 C++11
[KGC 2011]Boost 라이브러리와 C++11[KGC 2011]Boost 라이브러리와 C++11
[KGC 2011]Boost 라이브러리와 C++11
 
C#을 사용한 빠른 툴 개발
C#을 사용한 빠른 툴 개발C#을 사용한 빠른 툴 개발
C#을 사용한 빠른 툴 개발
 
MongoDB 모바일 게임 개발에 사용
MongoDB 모바일 게임 개발에 사용MongoDB 모바일 게임 개발에 사용
MongoDB 모바일 게임 개발에 사용
 
KGC2015_C# 스크립트를 사용한 게임서버 모니터링 시스템개발
KGC2015_C# 스크립트를 사용한 게임서버 모니터링 시스템개발KGC2015_C# 스크립트를 사용한 게임서버 모니터링 시스템개발
KGC2015_C# 스크립트를 사용한 게임서버 모니터링 시스템개발
 
[KGC 2012]Boost.asio를 이용한 네트웍 프로그래밍
[KGC 2012]Boost.asio를 이용한 네트웍 프로그래밍[KGC 2012]Boost.asio를 이용한 네트웍 프로그래밍
[KGC 2012]Boost.asio를 이용한 네트웍 프로그래밍
 
잘 알려지지 않은 숨은 진주, Winsock API - WSAPoll, Fast Loopback
잘 알려지지 않은 숨은 진주, Winsock API - WSAPoll, Fast Loopback잘 알려지지 않은 숨은 진주, Winsock API - WSAPoll, Fast Loopback
잘 알려지지 않은 숨은 진주, Winsock API - WSAPoll, Fast Loopback
 
NLog 소개
NLog 소개NLog 소개
NLog 소개
 
multi-thread 어플리케이션에 대해 모든 개발자가 알아 두지 않으면 안 되는 것
multi-thread 어플리케이션에 대해 모든 개발자가 알아 두지 않으면 안 되는 것multi-thread 어플리케이션에 대해 모든 개발자가 알아 두지 않으면 안 되는 것
multi-thread 어플리케이션에 대해 모든 개발자가 알아 두지 않으면 안 되는 것
 

Similar to Twitter의 대규모 시스템 운용 기술 어느 고래의 배속에서

[211]대규모 시스템 시각화 현동석김광림
[211]대규모 시스템 시각화 현동석김광림[211]대규모 시스템 시각화 현동석김광림
[211]대규모 시스템 시각화 현동석김광림NAVER D2
 
클라우드 이야기1 2 20160823-신인철_slideshare
클라우드 이야기1 2 20160823-신인철_slideshare클라우드 이야기1 2 20160823-신인철_slideshare
클라우드 이야기1 2 20160823-신인철_slideshareIn Chul Shin
 
Big Data Overview
Big Data OverviewBig Data Overview
Big Data OverviewKeeyong Han
 
Scalable web architecture and distributed systems
Scalable web architecture and distributed systemsScalable web architecture and distributed systems
Scalable web architecture and distributed systemseva
 
Scalable web architecture and distributed systems
Scalable web architecture and distributed systemsScalable web architecture and distributed systems
Scalable web architecture and distributed systems현종 김
 
빅데이터 기술 현황과 시장 전망(2014)
빅데이터 기술 현황과 시장 전망(2014)빅데이터 기술 현황과 시장 전망(2014)
빅데이터 기술 현황과 시장 전망(2014)Channy Yun
 
알람몬으로 알아보는 Node.js 트러블 슈팅 케이스 스터디
알람몬으로 알아보는 Node.js 트러블 슈팅 케이스 스터디알람몬으로 알아보는 Node.js 트러블 슈팅 케이스 스터디
알람몬으로 알아보는 Node.js 트러블 슈팅 케이스 스터디Chiung Choi
 
MSA와 infra
MSA와 infraMSA와 infra
MSA와 infraJe Hun Kim
 
(GameTech2015) Live Operation by Adbrix의 Node.js와 MongoDB를 이용한 멀티테넌트 인프라 구축사례
(GameTech2015) Live Operation by Adbrix의 Node.js와 MongoDB를 이용한 멀티테넌트 인프라 구축사례(GameTech2015) Live Operation by Adbrix의 Node.js와 MongoDB를 이용한 멀티테넌트 인프라 구축사례
(GameTech2015) Live Operation by Adbrix의 Node.js와 MongoDB를 이용한 멀티테넌트 인프라 구축사례Jeongsang Baek
 
서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)수보 김
 
쿠키런 1년, 서버개발 분투기
쿠키런 1년, 서버개발 분투기쿠키런 1년, 서버개발 분투기
쿠키런 1년, 서버개발 분투기Brian Hong
 
진화하는 소셜 큐레이션 서비스와 관련 기술
진화하는 소셜 큐레이션 서비스와 관련 기술진화하는 소셜 큐레이션 서비스와 관련 기술
진화하는 소셜 큐레이션 서비스와 관련 기술Taegon Kim
 
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018devCAT Studio, NEXON
 
안정적인 서비스 운영 2014.03
안정적인 서비스 운영   2014.03안정적인 서비스 운영   2014.03
안정적인 서비스 운영 2014.03Changyol BAEK
 
Daum’s Business Analytics Use-cases based on Bigdata technology (2012)
Daum’s Business Analytics Use-cases based on Bigdata technology (2012)Daum’s Business Analytics Use-cases based on Bigdata technology (2012)
Daum’s Business Analytics Use-cases based on Bigdata technology (2012)Channy Yun
 
AWS 기반의 마이크로 서비스 아키텍쳐 구현 방안 :: 김필중 :: AWS Summit Seoul 20
AWS 기반의 마이크로 서비스 아키텍쳐 구현 방안 :: 김필중 :: AWS Summit Seoul 20AWS 기반의 마이크로 서비스 아키텍쳐 구현 방안 :: 김필중 :: AWS Summit Seoul 20
AWS 기반의 마이크로 서비스 아키텍쳐 구현 방안 :: 김필중 :: AWS Summit Seoul 20Amazon Web Services Korea
 
서버 아키텍쳐 입문
서버 아키텍쳐 입문서버 아키텍쳐 입문
서버 아키텍쳐 입문중선 곽
 
NRISE 개발스택
NRISE 개발스택NRISE 개발스택
NRISE 개발스택Moon Soo Kim
 
AWS CLOUD 2017 - Amazon Redshift 기반 DW 와 비지니스 인텔리전스 구현 방법 (김일호 솔루션즈 아키텍트)
AWS CLOUD 2017 - Amazon Redshift 기반 DW 와 비지니스 인텔리전스 구현 방법 (김일호 솔루션즈 아키텍트)AWS CLOUD 2017 - Amazon Redshift 기반 DW 와 비지니스 인텔리전스 구현 방법 (김일호 솔루션즈 아키텍트)
AWS CLOUD 2017 - Amazon Redshift 기반 DW 와 비지니스 인텔리전스 구현 방법 (김일호 솔루션즈 아키텍트)Amazon Web Services Korea
 
Open infradays 2019_msa_k8s
Open infradays 2019_msa_k8sOpen infradays 2019_msa_k8s
Open infradays 2019_msa_k8sHyoungjun Kim
 

Similar to Twitter의 대규모 시스템 운용 기술 어느 고래의 배속에서 (20)

[211]대규모 시스템 시각화 현동석김광림
[211]대규모 시스템 시각화 현동석김광림[211]대규모 시스템 시각화 현동석김광림
[211]대규모 시스템 시각화 현동석김광림
 
클라우드 이야기1 2 20160823-신인철_slideshare
클라우드 이야기1 2 20160823-신인철_slideshare클라우드 이야기1 2 20160823-신인철_slideshare
클라우드 이야기1 2 20160823-신인철_slideshare
 
Big Data Overview
Big Data OverviewBig Data Overview
Big Data Overview
 
Scalable web architecture and distributed systems
Scalable web architecture and distributed systemsScalable web architecture and distributed systems
Scalable web architecture and distributed systems
 
Scalable web architecture and distributed systems
Scalable web architecture and distributed systemsScalable web architecture and distributed systems
Scalable web architecture and distributed systems
 
빅데이터 기술 현황과 시장 전망(2014)
빅데이터 기술 현황과 시장 전망(2014)빅데이터 기술 현황과 시장 전망(2014)
빅데이터 기술 현황과 시장 전망(2014)
 
알람몬으로 알아보는 Node.js 트러블 슈팅 케이스 스터디
알람몬으로 알아보는 Node.js 트러블 슈팅 케이스 스터디알람몬으로 알아보는 Node.js 트러블 슈팅 케이스 스터디
알람몬으로 알아보는 Node.js 트러블 슈팅 케이스 스터디
 
MSA와 infra
MSA와 infraMSA와 infra
MSA와 infra
 
(GameTech2015) Live Operation by Adbrix의 Node.js와 MongoDB를 이용한 멀티테넌트 인프라 구축사례
(GameTech2015) Live Operation by Adbrix의 Node.js와 MongoDB를 이용한 멀티테넌트 인프라 구축사례(GameTech2015) Live Operation by Adbrix의 Node.js와 MongoDB를 이용한 멀티테넌트 인프라 구축사례
(GameTech2015) Live Operation by Adbrix의 Node.js와 MongoDB를 이용한 멀티테넌트 인프라 구축사례
 
서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)
 
쿠키런 1년, 서버개발 분투기
쿠키런 1년, 서버개발 분투기쿠키런 1년, 서버개발 분투기
쿠키런 1년, 서버개발 분투기
 
진화하는 소셜 큐레이션 서비스와 관련 기술
진화하는 소셜 큐레이션 서비스와 관련 기술진화하는 소셜 큐레이션 서비스와 관련 기술
진화하는 소셜 큐레이션 서비스와 관련 기술
 
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
 
안정적인 서비스 운영 2014.03
안정적인 서비스 운영   2014.03안정적인 서비스 운영   2014.03
안정적인 서비스 운영 2014.03
 
Daum’s Business Analytics Use-cases based on Bigdata technology (2012)
Daum’s Business Analytics Use-cases based on Bigdata technology (2012)Daum’s Business Analytics Use-cases based on Bigdata technology (2012)
Daum’s Business Analytics Use-cases based on Bigdata technology (2012)
 
AWS 기반의 마이크로 서비스 아키텍쳐 구현 방안 :: 김필중 :: AWS Summit Seoul 20
AWS 기반의 마이크로 서비스 아키텍쳐 구현 방안 :: 김필중 :: AWS Summit Seoul 20AWS 기반의 마이크로 서비스 아키텍쳐 구현 방안 :: 김필중 :: AWS Summit Seoul 20
AWS 기반의 마이크로 서비스 아키텍쳐 구현 방안 :: 김필중 :: AWS Summit Seoul 20
 
서버 아키텍쳐 입문
서버 아키텍쳐 입문서버 아키텍쳐 입문
서버 아키텍쳐 입문
 
NRISE 개발스택
NRISE 개발스택NRISE 개발스택
NRISE 개발스택
 
AWS CLOUD 2017 - Amazon Redshift 기반 DW 와 비지니스 인텔리전스 구현 방법 (김일호 솔루션즈 아키텍트)
AWS CLOUD 2017 - Amazon Redshift 기반 DW 와 비지니스 인텔리전스 구현 방법 (김일호 솔루션즈 아키텍트)AWS CLOUD 2017 - Amazon Redshift 기반 DW 와 비지니스 인텔리전스 구현 방법 (김일호 솔루션즈 아키텍트)
AWS CLOUD 2017 - Amazon Redshift 기반 DW 와 비지니스 인텔리전스 구현 방법 (김일호 솔루션즈 아키텍트)
 
Open infradays 2019_msa_k8s
Open infradays 2019_msa_k8sOpen infradays 2019_msa_k8s
Open infradays 2019_msa_k8s
 

More from 흥배 최

Twitter의 snowflake 소개 및 활용
Twitter의 snowflake 소개 및 활용Twitter의 snowflake 소개 및 활용
Twitter의 snowflake 소개 및 활용흥배 최
 
Go web framework 비교[번역 정리]
Go web framework 비교[번역 정리]Go web framework 비교[번역 정리]
Go web framework 비교[번역 정리]흥배 최
 
Bash on Ubuntu on Windows
Bash on Ubuntu on WindowsBash on Ubuntu on Windows
Bash on Ubuntu on Windows흥배 최
 
KGC 2016 오픈소스 네트워크 엔진 Super socket 사용하기
KGC 2016 오픈소스 네트워크 엔진 Super socket 사용하기KGC 2016 오픈소스 네트워크 엔진 Super socket 사용하기
KGC 2016 오픈소스 네트워크 엔진 Super socket 사용하기흥배 최
 
Wtl 개요와 설치
Wtl 개요와 설치Wtl 개요와 설치
Wtl 개요와 설치흥배 최
 
Modern C++ 프로그래머를 위한 CPP11/14 핵심
Modern C++ 프로그래머를 위한 CPP11/14 핵심Modern C++ 프로그래머를 위한 CPP11/14 핵심
Modern C++ 프로그래머를 위한 CPP11/14 핵심흥배 최
 
[0602 박민근] Direct2D
[0602 박민근] Direct2D[0602 박민근] Direct2D
[0602 박민근] Direct2D흥배 최
 
.NET에서 Twitter 프로그래밍
.NET에서 Twitter 프로그래밍.NET에서 Twitter 프로그래밍
.NET에서 Twitter 프로그래밍흥배 최
 

More from 흥배 최 (8)

Twitter의 snowflake 소개 및 활용
Twitter의 snowflake 소개 및 활용Twitter의 snowflake 소개 및 활용
Twitter의 snowflake 소개 및 활용
 
Go web framework 비교[번역 정리]
Go web framework 비교[번역 정리]Go web framework 비교[번역 정리]
Go web framework 비교[번역 정리]
 
Bash on Ubuntu on Windows
Bash on Ubuntu on WindowsBash on Ubuntu on Windows
Bash on Ubuntu on Windows
 
KGC 2016 오픈소스 네트워크 엔진 Super socket 사용하기
KGC 2016 오픈소스 네트워크 엔진 Super socket 사용하기KGC 2016 오픈소스 네트워크 엔진 Super socket 사용하기
KGC 2016 오픈소스 네트워크 엔진 Super socket 사용하기
 
Wtl 개요와 설치
Wtl 개요와 설치Wtl 개요와 설치
Wtl 개요와 설치
 
Modern C++ 프로그래머를 위한 CPP11/14 핵심
Modern C++ 프로그래머를 위한 CPP11/14 핵심Modern C++ 프로그래머를 위한 CPP11/14 핵심
Modern C++ 프로그래머를 위한 CPP11/14 핵심
 
[0602 박민근] Direct2D
[0602 박민근] Direct2D[0602 박민근] Direct2D
[0602 박민근] Direct2D
 
.NET에서 Twitter 프로그래밍
.NET에서 Twitter 프로그래밍.NET에서 Twitter 프로그래밍
.NET에서 Twitter 프로그래밍
 

Twitter의 대규모 시스템 운용 기술 어느 고래의 배속에서

  • 1. Twitter의 대규모 시스템 운용 기술 ~ 어느 고래 배속에서 최흥배
  • 2. • 2010년 6월22일에 열렸던 Velocity 2010 행사 • Twitter의 John Adams씨의 발표. In the Belly of the Whale : Operation at Twitter (고래 배 속:Twitter에서의 운용) • John Adams씨는 Twitter의 초기 멤버로 애플리케이션 서비스의 리드 엔지니어
  • 3. • Twitter의 현재(2010년 6월) 종업원 수는 210명 • Twitter로의 액세스는 API 경유가 75%이고 상승 중 • 하루에 6500만 트윗, 1초마다 약 750 트윗 • 최대 부한 순간은 월드컵에서 일본 대표가 득점할 때 초당 2940 트윗, 그러나 며칠 후 NBA에서 2연패를 달성한 레이커스가 우승했을 때 초당 3085 트윗
  • 4. 오퍼레이션 팀의 역할 • Peek 때도 그렇지 않을 때도 운용을 담당하면서 Capacity Planning을 하고, 성능을 개선하고, 고래 모습을 나타나지 않도록 한다. • Web 사이트 이용자 수가 500에서 수 백만, 수 천만으로 늘어나면 처음에 설계했던 설계는 유효하지 않게 된다. • 어떤 규모에서 유효한 설계는 그 규모에서만 유효하다라는 것을 배움. • 사이트 설계를 몇 번이라도 다시 생각하지 않으면 안되었다. • 이런 상황이므로 현재까지 몇 번이나 다시 하지 않으면 안되었다. • 오퍼레이션 팀의 최대 역할은 먼저 MTTD(Mean Time To Detect), 문제 발생까지의 시간을 가능한 짧게, 문제를 빠르게 발견하고, MTTR(Mean Time To Recovery), 복구를 단 시간에 끝내야 한다. • 주문, 계측, 로그(기록), 과학적 분석, 시스템 개선, 병목 제거를 여러 번 되풀이 한다.
  • 5.
  • 6. 시스템 관리는 ‘Sysadmin 2.0’ • ‘모니터링’은 웹사이트에 어떤 일이 일어났는지 이해하기 위해 중요. • Twitter는 중요한 metrics를 거의 실 시간으로 모니터하고 있다. • 시스템 관리자에게 큰 변화가 생긴 것을 발견. 이것을 ‘Sysadmin 2.0’이라고 부른다. • Sysadmin 2.0은 데이터를 모아서 수학이랑 과학적 방법을 이용하여 이것을 분석하여, 무엇이 일어났는가를 데이터를 기초로 판단하는 역할을 한다. • 모으는 데이터는 Apache, Ruby 등에 대한 로우 레벨 데이터, 레이턴시, 메모모릭 등. 사용하고 있는 것은 cpdump, tcpdstat, yconalyzer 등.
  • 7. Rails와 로깅 • 많은 사람들이 Rails의 성능 문제에 대해서 물어보고 싶어 하는 것을 알고 있지만 우리들이 경험한 성능 면에서의 문제에 대해서는 Ruby가 직접 관계된 것은 없었다. • 가베지 컬렉션, Replication Lag, SQL 문제 대 부분 여기가 문제였다. • 로그를 얻기 위해 syslog는 높은 부하 환경에서는 도움이 되지 않는 것을 알았다. Syslog 데몬이 다운하며 어떤 데이터도 얻을 수 없게 된다. • 장애가 발생했을 때 로그를 분석하는 것은 중요하다. Facebook의 오픈 소스 Scribe와 HDFS로 이행하였다. 대규모 분석은 Hadoop으로 하고 있다.
  • 8. Dashboard • Dashboard가 모니터링에서 처음 보는 화면 • 여기에서 무엇이 일어 나고 있는지, 10개 정도의 중요한 metrics에 대해서 보고 있다. • 잘 한 것으로 쉘 스크립트로 만든 ‘Whale Watcher’ 스크립트. • Twitter의 에러로 HTTP 503(timeout)이 발생하면 고래가 나타나고, HTTP 500(error) 때는 로봇이 표시. 예전에는 60초 마다 이것들이 얼마나 발생하는 집계하여 그래프화 하였다. 이것은 큰 도움이 되었다.
  • 9.
  • 10.
  • 11. Darkmode • 작년에 많은 시간을 들여서 배포 프로세스를 개선하여 코드를 보다 빠르게, 그러면서 에러 발생을 줄여주는 배포를 하였다. • 코드를 배포할 때는 Release 전에 기능을 블럭하는 ‘Darkmode’를 사용한다. • Darkmode에는 90개 정도의 기능을 정지하는 스위치가 있다. 이것을 아주 강력한데 예를 들면 프로덕션 상태에 있어도 장해에서 회복하기 위한 기능을 off 하는 것이 가능하다.
  • 12. 서브 시스템 - loony • 운영 관리상의 최대 문제 중 하나는 어느 머신이 어떤 것인가를 확인하는 것. • 매니지드 호스팅을 사용하고 있지만 Web100 이라는 호스팅 상의 이름을 우리들의 이름에 매핑하고 있다. 이것을 관리하기 위해서 사용하고 있는 것이 ‘loony’로 머신의 센트럴 데이터 베이스 이다. • loony는 LDAP로도 연결되어 어느 머신이 누가 액세스 하고 있는지도 관리. 리얼타임으로 관리하고 있으므로 서버의 그룹핑, 메일 서버랑 웹서버라는 역할이 다른 서버를 On-Demand로 배포하는 것에 큰 도움
  • 13. 서브 시스템 - Murder • 머신을 만들 때 사용하는 것이 Murder. • 오픈 소스 라이브러리로 합법적인 P2P 기술에 의해 소프트웨어를 수 천대 서버에 빠르게 배포해 준다.
  • 14. 서브 시스템 - memcached • 웹 사이트가 느려질 때 많은 운용 팀이 memcached를 사용한다고 한다. • 그러나 많은 데이터를 memcached의 캐쉬에 넣음으로서 데이터의 축출(Evictions)이 발생하여 백 링크의 트래픽이 증대해버리는 현상이 발생. • Memcached를 사용할 때는 세그멘트마다 데이터 량에 주의를 기울여야 한다.
  • 15. 서브 시스템 - Unicorn • Twitter에 Request하면 로드 밸런서를 통해서 Apache에 도달한다. • 작년 최대의 성공은 ‘Unicorn Rails Server’로의 이행이다.
  • 16. 서브 시스템 - Unicorn • Rails Server의 Mongrel과 Unicorn을 비교하면 Mongrel은 슈퍼마켓의 레지에 줄선 많은 열이 있지만 어느 열의 처리가 어느 정도 걸리는지 모르는채로 열을 세우는 것에 비해, • Unicorn은 처리해 주는 순서를 자동적으로 할당해 주어 긴 열 중에서 기다리고 있도록 해준다. Unicorn Rails Server에 의해 CPU 부하를 약 30% 줄이는 것이 가능, 메모리 사용량을 줄이는 것도 가능. 또 빠른 request를 바꾸는 것이 가능하여 다운타임이 없는 배포가 가능하게 되었다.
  • 17.
  • 18. 서브 시스템 - Kestrel • 처리의 효율화를 실현한 것이 비동기화. • 오픈 소스의 ‘Kestrel’은 memcached와 비슷하지만(같은 프로토콜 사용) 데이터를 캐싱해 주는 서버이다. 이것에 의해 request에 대해 처리를 비동기로 하는 것이 가능, 처리하는 Worker를 줄여지는 것에 의해 파이프라인의 처리가 효율화 되었다.
  • 19. 서브 시스템 - Daemons • Worker로서의 처리에는 daemon을 사용 • 트윗을 복사하여 메일을 보내고, 새로운 팔로워가 발생했을 때의 처리에 이때까지는 처리마다 다양한 타입의 daemon을 운용하고 있었다. • 작년 이것을 하나로 모아서 다양한 처리를 할 수 있도록 하여 사이트 전체의 성능을 높일 수 있었다.
  • 20. 서브 시스템 – Flock DB • 소셜 네트워킹에서 무거운 처리 중의 하나가 누가 누구를 팔로워하고 있는지를 말하는 소셜 그래프 처리 • Flock DB 개발 • 데이터 베이스에는 MySQL을 이용하고 있지만 Sharding 레이어로서 Gizzard를 이용하고 있다.
  • 21. Caching가 만능은 아니다 • 우리들은 memcached에 트윗을 보존하고 memcached의 오픈 소스에 큰 공헌자이다. • 그러나 아무리 리얼타임 시스템이라도 데이터 저장소는 필요하다. • 경험에서 우리들은 ‘Cache Everything’(무엇이라도 캐쉬해라!)은 최고의 정책은 아니라는 것을 발견했다. • 데이터 베이스의 확장으로서 캐쉬를 사용해야 한다. • 만약 memcached에 모든 데이터를 넣어 두면 그것을 잃어버리면 몇 시간이나 복구에 소비한다. 과거에 우리들은 그 희생자였다. 데이터 베이스에 넣어 두었다면 로드 할 수 있다.
  • 22. 마지막으로… • 처음부터 환경 매니지먼트 실행을 추천한다. • 그리고 가능한 많은 로그를 남겨라. • 우리들의 케이스에서는 하나의 설계로 모든 사이즈에 맞지 않았다. 몇 번이라도 다시 고치는 것이 발생하였다. • 도구를 사용하여 분석해라. 로그는 인프라의 문제 해결에 있어서 가장 중요한 것이다.