본문 바로가기

Home > 열린마당 > 공개SW 소식

공개SW 소식

트위터, 빅데이터 처리 노하우 공개

OSS 게시글 작성 시각 2012-04-10 15:10:15 게시글 조회수 6498

2012년 04월 10일 (화)

ⓒ 블로터닷넷, 이지영 기자 izziene@bloter.net


‘백지장도 맞들면 낫다’라는 것을 보여주려는 것일까. 트위터가 자사 트윗 데이터 처리 방법 기술을 오픈소스로 공개하기로 발표했다. 지난해 실시간 스트림 데이터 처리 솔루션을 오픈소스로 공개한 데 이어 이번엔 데이터베이스(DB)와 스토리지 쪽이다.


트위터는 4월9일(현지기준) 자사 공식 블로그를 통해 “트윗 저장을 위해 사용한 MySQL 기술을 공개하겠다”라며 “보다 많은 사람이 참여해 쉽고 빠르게 데이터를 저장할 수 있게 됐으면 좋겠다”라고 밝혔다. 혼자서 하기보다는 여럿이 함께할수록 빛난다는 오픈소스의 가치를 몸소 실천하고 있는 셈이다.



트위터의 이번 시도는 어떻게 하면 오픈소스 DB로 알려진 MySQL로도 효과적으로 데이터를 저장할 수 있는지 그 기술을 알 수 있다는 점에서 의미가 있다. 카산드라처럼 대용량 데이터 처리와 저장을 위한 NoSQL은 시중에 많이 나와 있다. 그러나 이들 오픈소스는 개발자라도 섣불리 사용하기 어렵다는 단점을 갖고 있다.


같은 오픈소스라도 MySQL은 처지가 좀 다르다. 우선 인터넷 생태계를 만들어주는 기본적인 플랫폼으로 알려진 오픈소스 4인방 ‘LAMP(Linux, Apache, MySQL, PHP/Python)’에 이름을 올릴만큼 개발자들에게 친숙하다. 또 관계형 데이터베이스 관리에 대표적으로 사용돼 개발자들이 익숙하게 다룰 수 있다.


단점이 있다면 MySQL은 확장성과 복잡한 트랜잭션 처리에는 적합하지 않다. 빅데이터라고 부르는 대용량 데이터 시대를 맞아 NoSQL이 뜨는 이유다. 아무리 MySQL이 사용하기 쉽고 익숙하다고는 하지만 기능이 안 되는데 억지로 쓸 순 없는 노릇 아닌가.


트위터는 달랐다. 하루 평균 트위터가 저장하고 처리하는 트윗은 약 2억5천만건으로, 이를 어떻게 하면 MySQL 이점을 살리면서도 확장성을 갖출 수 있는지를 연구하기 시작했다. 과거 트위터는 이 트윗 데이터를 날짜 기준으로 분할해 관리하는 방법을 사용했다. 그 결과 오래된 트윗은 트래픽은 높지 않지만 점점 서버 용량을 차지했고, 새로운 트윗을 정리하기 위해 서버를 추가로 구입하는 상황이 벌어졌다. 트위터 설명에 따르면, 약 3주에 한 번씩 서버를 추가하는 꼴이었다고 한다.


이 문제를 해결하기 위해 트위터는 데이터 분산도구로 기저드(Gizzard), 데이터 저장소로는 MySQL, 아이디 생성에는 스노우플레이크라는 오픈소스 도구로 새롭게 데이터 분산 환경을 재구성했다. 그 작업물을 이번에 오픈소스로 공개했다.


제레미 콜과 데비 아르노 트위터 DBA와 DB개발자 팀원은 “이번에 공개한 MySQL 오픈소스는 로딩이 많은 데이터처리 엔진인 InnoDB 안에서 시스템을 모니터링하고 워크로드를 관리할 수 있으며, 서버 예상보다 오래 실행되는 쿼리를 취소할 수 있는 기능을 갖추고 있다”라며 “시스템 메모리 할당을 최적화할 수 있는 기능과, SSD 기반 시스템에도 최적화 됐다는 게 강점이다”라고 설명했다.


IT전문지 기가옴은 “MySQL 확장성 문제를 해결하기 위해 토쿠테크나 스케일베이스, 오라클MySQL이 작업한 사례는 있지만, 결과물을 완벽히 오픈소스로 공개한 것은 이례적인 일”이라며 “트위터가 공개한 오픈소스는 라이선스 비용이나 유지보수 지원 계약 없이 사용할 수 있다”라고 전했다.


트위터는 4월12일 ‘페르코나 라이브 MySQL 컨퍼런스‘에서 이번 오픈소스 공개에 대해 보다 자세히 설명할 예정이다. 공개된 오픈소스는 저자 이름만 제대료 표기해주면 코드를 수정한 후 공개하지 않고 상업적 이용이 가능한 BSD 라이센스를 따른다고 한다.


※ 본 내용은 (주)블로터 앤 미디어(http://www.bloter.net)의 저작권 동의에 의해 공유되고 있습니다.


[원문출처 : http://www.bloter.net/archives/104962]

맨 위로
맨 위로