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를 활용했다.





아키텍처 발표자료가 있다. 스페인어로 되어 있지만, 그럭저럭 볼 수 있다. 


Fisl15 Streaming de vídeo ao vivo na globo.com from leandro_moreira



좋은 자료

http://planetcassandra.org/blog/interview/globo-rewinds-redis-for-their-dvr-system-fast-forwards-to-apache-cassandra-for-increased-availability/




'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
Posted by '김용환'
,