Home > 정보마당 > 공개SW 활용 성공사례

공개SW 활용 성공사례

공개SW 활용한 실시간 대용량 처리 플랫폼 구축으로 데이터 관리 효율성 높여

하루 평균 방문자 수만 300만 명에 이르는 아프리카TV 서비스는 개인이 방송을 하고 또 다른 개인이 방송을 시청하는 소셜 미디어 플랫폼으로, 국내에서 높은 인지도를 갖고 있다. 특히 아프리카TV의 방송 특성상 이용자들이 실시간으로 주고받는 다양한 상호작용은 소셜 미디어 플랫폼의 주요 요소로 작용했고, 이와 관련된 많은 연관 데이터들이 발생하게 됐다. 이에 아프리카TV는 대용량의 이용자 데이터를 실시간으로 처리해 보다 다양하고 편리한 서비스를 이어갈 수 있도록 빅데이터 시스템 구축을 계획했다. 근 20년간 내부 시스템에 공개SW를 다양하게 활용해온 경험을 바탕으로, 아프리카TV는 실시간 대용량 처리 플랫폼에도 다수의 공개SW를 도입했고 이를 통한 효율적인 데이터 관리를 토대로 대고객 서비스의 질을 높이기 위한 변화를 이어가고 있다.

- 기     관 아프리카TV
- 수행년도 2013년
- 도입배경 이용자 상호간에 주고받는 행동이나 신호 등에 따라 생성·누적되는 다양한 데이터의 급증에 대응하는 대용량 데이터의 효율적 관리 필요성 대두
- 솔 루 션 엔진엑스(NginX), 주키퍼(Zookeeper), 레디스(Redis), 하둡(Hadoop) 등
- 도입효과 : 공개SW 활용으로 실시간 플랫폼에 걸맞은 빠른 서비스 기술의 개발·적용이 가능해짐으로써 시간 대비 성능 효율적인 대고객 서비스 제공 가능

아프리카TV

특별한 기술이나 장비, 혹은 큰 비용 없이도 PC나 모바일 기기로 실시간 라이브 방송을 할 수 있는 개인 미디어 서비스인 아프리카TV는 보이는 라디오와 스포츠 중계, 게임 중계 등 누구라도 다양한 소재로 부담 없이 방송 콘텐츠를 제공할 수 있는 장점을 내세워 2013년 3월 기준으로 약 1,800만 명의 회원을 보유하고 있다. 현재 이 서비스를 무대로 실시간 방송 5,000여 개가 진행되고 있으며, 동시 시청자 수는 30만 명에 이른다.


또한 이용자가 별풍선과 스티커를 이용해 콘텐츠의 만족도를 표시하고 후결제로 자유롭게 금액을 지불하는 운영체계부터 별점 통계, 즐겨찾기 등 지인끼리의 관계 형성뿐 아니라 방송을 진행하는 BJ와 시청자 사이에 형성되는 독특한 관계 설정에 이르기까지 이용자들 간의 다양한 연관 관계를 생성하는 데 초점을 맞춘 서비스로 평가된다. 이에 더해 조회와 댓글이라는 소셜 플랫폼의 기본 요소와 실시간 채팅이 합쳐져, 엄청난 양의 데이터가 생성되는 것은 어찌 보면 필연적인 일이었다.


아프리카TV서비스
아프리카TV 서비스 플랫폼


실시간 대용량 데이터 처리 프로젝트


이런 상황에서 사용자들이 실시간으로 진행되는 아프리카TV 방송 콘텐츠를 보다 편리하게 이용할 수 있도록 하기 위해서는 무엇보다 이용자들 간의 상호 작용이 원활히 이어질 수 있도록 구현하는 것이 중요했다. 특히 아카이브 방식으로 저장되는 유튜브와는 달리 아프리카TV의 방송들은 실시간으로 이뤄지기 때문에 원하는 콘텐츠에 빠르고 효율적으로 접근할 수 있도록 하는 것이 중요했다. 이에 아프리카TV는 빠른 서비스 속도를 유지하면서, 서로 상호 작용하는 데 있어서도 각 이용자들의 취향에 맞는 콘텐츠와 관심있는 정보를 빠르게 접하고 나눌 수 있도록 실시간 대용량 데이터 처리 플랫폼을 구축해 서비스 질을 향상시킬 방안을 모색했다.


이와 관련해 아프리카TV의 서비스기술연구소 기반기술팀에서는 2012년부터 자체적으로 ‘실대처(실시간 대용량 데이터 처리) 서비스’라고 명명한 프로젝트를 가동하고 대용량 이용자 데이터를 실시간에 준하는 수준으로 처리·응답하는 플랫폼을 구성하기 위해 다양한 공개SW 도입을 검토했다. 특히 효율적인 실대처 서비스를 위해 아프리카TV는 한 곳에서 장애가 발생해도 전체 시스템에는 영향을 미치지 않도록 하는 안정성과 아프리카TV 내의 다양한 시스템과 연계할 수 있는 범용성, 그리고 부하가 발생했을 때 플랫폼 혹은 세부 모듈별로 빠르게 대체 처리할 수 있는 확장성에 주안점을 두고 이에 적합한 솔루션으로 공개SW를 선택했다. 그리고 데이터 흐름이나 서비스의 흐름을 출력, 입력, 연산, 저장, 제어라는 5단계의 지속·반복적인 사이클로 나눠 각 단계별로 공개SW를 활용한 시스템 적용을 이어가기 시작했다.


우선 동시접속에 따른 속도 문제를 해결하기 위해 엔진엑스를 활용하고, 시스템의 소프트웨어 밸런싱을 위해 주키퍼와 연동해 서버 부하에 분산 처리로 대응할 수 있게 됐다. 또한 각각의 모듈들과 연동한 주키퍼를 스케일 아웃, 장애처리, 그리고 각 모듈들의 성능 지표가 되는 동시 접속 현황이나 시스템 리소스 취합 등에 활용해 실시간 데이터 분석의 질을 높였다. 이를 통해 본인의 행동과 타인의 행동에 상호 영향을 주는 데이터들을 효율적으로 수집해 서비스 접근성의 질을 향상시킬 수 있었다. 즉, 다량의 데이터로 생성되는 정보를 분석해 관리자에게 제공하고 이용자들에게는 취향에 따라 관심있을 만한 방송이나 콘텐츠를 제안하는 등의 맞춤형 실시간 데이터 분석·제공 서비스가 이뤄지게 된 것이다.


공개SW 활용과 관련해 아프리카TV 서비스기술연구소 기반기술팀 봉승태 팀장은 내부 관리, 모니터링 등 활용도가 넓고 뚜렷하게 이를 대처할 만한 다른 솔루션이 없다는 이유를 들어 실대처 서비스에서 가장 주요하게 활용되고 있는 공개SW로 주키퍼를 꼽았다. 반면 하둡의 경우에는 도입은 했지만 트러블 슈팅 부분에서 아직 완벽하지 않아 조금 더 보완해야 하는 단계임을 밝혔다.


아프리카TV실대처
실시간 대용량 데이터 처리 시스템 구성도(출력부)


축적된 기술 역량에 기반한 다양한 공개SW 활용


이밖에도 아프리카TV는 안정적인 서비스 속도 향상을 위해 대용량 서비스의 성능을 높여주는 분산 캐시 기술인 Memcached와 레디스를 도입하고, RDB와 NoSQL 등을 활용한 데이터 관리를 위해 몽고DB, 카산드라, SQLite, PostgreSQL의 기술을 적용했다. 또한 검색 엔진에는 루신(Lucene), Sphinx, mroonga를 활용하는 등 다방면에 걸쳐 많은 공개SW를 이용해 아프리카TV의 콘텐츠, 트래픽, 실시간 데이터 등을 처리 및 관리하고 있다.


아프리카TV라는 사명은 기존의 나우콤에서 핵심 서비스였던 아프리카TV의 이름을 내세워 최근 변경한 것이다. 대중적인 플랫폼을 기반으로 온라인과 모바일 게임의 역량을 더해 글로벌 서비스까지 이어가려는 당찬 포부가 아프리카TV라는 통합 브랜드의 탄생으로 이어진 것이기도 하다. 이에 아프리카TV는 자체적으로 갖춘 다양한 콘텐츠를 실시간 방송과 연계해 시너지를 내는 방향으로 사업 방향을 구상하고 있다. 특히 오랜 기간 동안 공개SW를 활용해 오며 지금에 이른 만큼 더욱 다양한 분야에 자체 기술력에 기반한 많은 공개SW를 다수 도입할 계획이다. 실제로도 아프리카TV는 보다 나은 고객 서비스를 위해 지속적인 테스트와 시스템 고도화를 진행 중이며, 좀더 빠른 웹서비스를 위한 새로운 솔루션에도 공개SW 도입을 적극 고려하고 있다.


[인터뷰]


“다양한 공개SW의 이점 얻으려면 필요한 기능 정확히 파악해야”

아프리카TV 서비스기술연구소 기반기술팀 봉승태 팀장

아프리카TV 서비스기술연구소 기반기술팀 봉승태 팀장
▲ 봉승태 팀장

공개SW 활용으로 얻은 주요 이점을 소개한다면

아프리카TV는 실시간 서비스를 제공하는 만큼 시스템 개발에도 시간 관리가 중요하다. 외부 업체들은 정해진 매뉴얼에 따른 기술만을 제공하고 새로운 기능이나 서비스가 필요해도 서로 조율하고 개발하는 데 시간이 많이 소모되지만 공개SW를 활용하면 그런 부분에서 시간을 절약할 수 있다. 또한 반복적인 개발 경험을 통해 자체적인 기술력이 쌓여간다는 것도 이점이다. 새로운 기능의 공개SW를 테스트하고 적용하는 과정은 사업부 쪽에서 생각하지 못했던 기능을 구현해 이를 서비스에 적용하도록 역으로 제안되기도 해 기술적인 관점에서 서비스의 질을 높이는 방향을 제시할 수도 있다.


공개SW 도입 과정에서 고려할 사항에 대해 조언해 달라

여러 공개SW마다 특장점이 있으며 새로운 것이 항상 좋은 것만은 아니라는 점을 명심해야 한다. 그리고 구현하려는 서비스에 필요한 것이 무엇인가를 정확히 파악한 다음 그에 맞는 솔루션을 선택하는 것이 중요하다. 우리가 실제로 실대처 프로젝트를 진행할 때는 각 기능을 구현할 카테고리를 나누고 각각의 부분에 꼭 필요한 기능, 그 솔루션을 개발하는 목적, 적정한 성능 수치 등에 대한 대략적인 계획을 먼저 세웠다. 그 계획에 따라 부분별로 가장 적합한 공개SW들을 나열하고 이후 그 솔루션이 그 부분에 적합한지, 성능은 어떤지, 자체적인 트러블 슈팅이 가능한지 등을 판단했다. 그렇게 몇 개를 간추려 본격적인 분석 테스트를 진행해 실제 서비스까지 이어졌다. 이를 통해 많은 공개SW 중에서도 최적의 선택을 할 수 있었다. 또한 시스템에 활용되지 않더라도 내부 문서화를 통해 경험을 축적하는 것도 중요하다. 빅데이터와 관련해서는 실시간 데이터를 이용한 대용량의 데이터 처리를 통해 실질적인 테스트를 해보는 것이 좋다. 보통 정형화된 데이터만을 이용해 테스트하고 실제 서비스에 적용하는데, 이 경우 향후 성능 문제뿐 아니라 관리에도 문제가 발생할 수 있다. 실제로 유동적인 데이터로 테스트를 하다보면 공개SW의 많은 튜닝 포인트를 발견하게 된다.




- 마이크로소프트웨어 한종진 기자 hjj@imaso.co.kr

- 공개SW 역량프라자
맨 위로
맨 위로