FIFA2014 홈페이지의 스트리밍 서비스를 담당했던 한 브라질의 회사(http://globo.com)의 서버 아키텍처가 공개되었다. globo 라는 회사가 오픈 소스를 많이 하는 회사이다. (https://github.com/globocom). 처음 보는 회사인데, 대단!!!
FIFA2014 홈페이지의 스트리밍 서비스를 소개한다.
python /rails + nginx(lua) + redis + cassandra를 활용했다.
출처
Cassandra(앞 단에는 redis를 활용) 와 Nginx을 적절히 활용했다.
보통 한국의 스트리밍 서비스는 MS 제품을 활용하는데, 이 회사는 evostream 제품(현재는 오픈소스 화, https://github.com/arut/nginx-rtmp-module)을 활용해서 구현했다.
재미있는 것은 cassandra 성능 관련해서 client에서 타임아웃을 발생하는 시점에 성능이 너무 안나와서 몇가지를 튜닝했더니. 99%의 요청에 대해 10ms 이하로 나왔다고 한다. read latency 체크는 cassandra-graphite plugin(http://www.datastax.com/dev/blog/pluggable-metrics-reporting-in-cassandra-2-0-2)를 활용했다.
1. 데이터를 쪼개고(denormalize),
2. level compaction strategy(
http://www.datastax.com/dev/blog/leveled-compaction-in-apache-cassandra )를 적용하고,
3. durable_writes를 false로 변경
4. start column 사용 (기존에는 몽땅 가져오는 구조였던 것 같음)
5. SSD 사용
그리고, nginx에 lua script를 사용해서 cassandra 에 붙여서 사용했다.
player는 https://github.com/clappr/clappr 를 사용했다.
지역별 모니터링은 logstash와 elasticsearch를 활용했다.
아키텍처 발표자료가 있다. 스페인어로 되어 있지만, 그럭저럭 볼 수 있다.
좋은 자료
'scribbling' 카테고리의 다른 글
'땡큐 대디'의 명대사 (0) | 2015.05.06 |
---|---|
line develop day 2015 (0) | 2015.04.29 |
졸트 어워드 (Jolt Award) 2014 - Best Books (0) | 2015.04.22 |
졸트 어워드 (Jolt Award) 2015 - 코딩 툴 (0) | 2015.04.22 |
[좋은 영화 대사] 킹스맨 (0) | 2015.03.29 |