2010년 12월 25일 토요일

[MySQL 성능 최적화] 역자 서문

---------------------------------------------------------------------
- 역자 서문 (이성욱)
---------------------------------------------------------------------


구글, 페이스북, 트위터, 유튜브, ...
이미 인터넷을 접해본 대 부분의 사람들은 모두 잘 알고 있을 정도의 웹 서비스들이다.
사용자들이 작성한게시물들은 데이터베이스시스템을 통해서관리, 검색 및 필요에
따라서 정렬되어져서 다시 여러 사용자들의 화면으로전달되어지게 된다.
또한 각각의 데이터의 특성에따라서 각 벤더별 데이터베이스시스템들을
선정하여 사용하게 되지만, 그 중에서도 상당히 많은 부분의 데이터들이 MySQL을
통해서 관리되고 있는 것으로 알려져 있다. 이러한 전체적인 과정에서 DBA의 데이터
모델링과 시스템 관리 그리고 쿼리의 튜닝 능력에 의해서 서비스 품질이 결정되게된다.


이미 웹 서비스 회사들은 대 부분 아주 대용량(기가를 넘어 테라나 페타 단위의)의
데이터들을 가지고있으며, 이러한 데이터들을사용자의 요청에 맞게 빠르게 처리하기
위한 방법을 찾기 위해서 많은 노력을 기울이고 있다. 트위터의 Timeline이라는
기능을 예로 본다면, 유명인의 트윗 한번으로 억 단위의 레코드가 생성되어야 할 정도이다.
즉 이 이야기는 유명인의 게시물 하나로 데이터를 위한 디스크 공간이 2~30G가 필요하며,
현재의 컴퓨팅 파워로는 분산 처리만이 유일한 해결책이라는 것을 의미한다.
MySQL 이외의 대부분 DBMS는 이미 데이터 량 대비 관리 비용의 문제로 적용이 불가능하며,
이런 종류의 부하를 위해서 NoSQL이라는 새로운 개념의 소프트웨어들이 시장에 모습을
드러내고 있지만 전문적인 커스터마이징없이 적용은 거의 불가능한 것이 현실이다.
MySQL은 독특한 아키텍쳐로 인해서제 3의 소프트웨어 회사들이 쉽게 새로운 기술들을
적용할수 있도록 구현되어 있으며, 이미 Sphinx Technologies나 TokuTek과 같은
많은 회사들이 이러한 방법으로 여러 가지 해결책들을 제시하려고 노력을 기울이고 있다.


지금까지 우리가 사용해오던 기술들과 방법론 또한 우리가 선택한 아이템들은 자기도
모르게 신뢰하고 사용하게 된다. 하지만, 파고 들어가보면 왜 그 방법론을 또는 왜 그
기술을 선택했는지 모호한 것들이 상당히 많다. 다들 지금 당장 맡은 일들로 바쁘기
때문에 그것이 당연한 것으로 생각들을 하고 있는 것 같다.
만약, 성능을 3배 향상시킬 수 있는 아주 획기적인 기술에 대한 힌트를 얻었을 때,
여러분은 이 기술을 바로 여러분의 운영 서비스에 적용할 것인가 ?
아니면, 다른 사람들이 사용해보고 후기를 올리고 레퍼런스가 생겨 안정성이 검증될
때까지 기다렸다가 적용할 것인가?
이 이야기는 DBA나 시스템엔지니어로써 벤치마킹과 그 결과의 판독 능력이 얼마나
중요한지를 설명하고자 한 것이다.


지금까지 적어도 DBA에게 가장 중요하다고 판단되는
3가지(기본적인 모델링과 관리 능력, 지속적인 신기술에 대한 학습, AS-IS 또는
TO-BE 기술들에 대한 검증)를 나누어서 간단한 예로 적어보았다.
이 책은 벌써 초판이 인쇄된지 10년이 지나가고 있지만, 위 3가지 내용을 충분히
전달해줄 수 있으리라 생각했기에이 책의 번역에 늦게나마 참여하게 된 것이다.
또한, MySQL은 전문적인 DBA가 필요치 않은 DBMS로 많이들 생각하고 있어서 그런지
MySQL의 적용에 상당히 많은 허점들이 보이기도 한다.
지금까지 시중에 출판된 서적중에서 MySQL이 주제인 서적은 거의 본적이 없다는것도
나를 번역에 참여시키게된 이유이다.


번역 전에 개인적 학습을위해 2번, 팀내 강의용으로 1번, 번역하면서 읽은 회수까지
대략 10번을 넘어 가는것 같다. 하지만, 나는 이 책에서 매번 읽을 때마다 새로운 것을
배울 수 있었다. 역시 내가 알고 있는 수준의 것들만 보이는 것임을 절감했다.
나는 여러분들이이 책을 선택했다면, 적어도 2번은 정독할 것을, 그리고 사무실의
책꽂이에서 제일 좋은 자리에꽂아 둘것을 권장한다. (충분히 그 정도의가치는 있다)


마지막으로,
이 책은 현재 MySQL 뿐만 아니라 다른 DBMS의 DBA에게도 많은 시스템 또는
방법론적인 지식들을 제공해줄 수 있을것이라 생각하며, 처음으로 MySQL을 관리하게된
DBA나 개발자에게도 상당히 많은 시스템적인 기본 지식을 전달해줄 수 있을 것이라고 자부한다.


MySQL을 관리하게 되었는데, 무엇을 어떻게 해야 할지 모르겠다면,
이 책에서 많은 질문들의 답을 찾을 수 있을 것이라고 생각한다.
혹시, 이 책으로 MySQL을 공부하거나 사용 중에 이해 안되거나 모르는 부분이 있다면,
개인적으로 운영하고 있는 사이트(http://intomysql.com)로 문의하면 최대한 알고
있는 내용을(모르면 공부를해서) 알려 드리도록 하겠다.

댓글 없음:

댓글 쓰기