KAISTIZEN님의 블로그에 재미있는 글이 올라와서 해당 글에 대해서 제 개인적인 의견을 몇 자 적어봅니다.
대용량도 아닌 거대 용량 아키텍처
저의 경우 말씀하신 사양 정도의 크기는 아니더라도 어느 정도 규모의 시스템을 SE로써 프로젝트 기간 동안 설계 및 운영을 해본 적이 있습니다. 단지 제가 설계를 했던 부분은 기간계 시스템이 아닌 정보계 시스템임으로 상황은 많이 다를 것으로 판단이 되지만 그래도 제 짧은 지식을 동원해서 이야기를 해보자고 합니다.
말씀하신 내용이 맞는다면 이베이의 설계자는 MVC 모델에 입각을 해서 철저하게 설계를 한 것으로 생각이 됩니다. 다시 말해 Logic 부분은 절대로 데이터 부분에서 처리를 하지 않는다는 것이죠. 이 부분이 전 개인적으로 중요하다고 생각하는데, 그렇게 생각하는 이유는 회사의 사정이나 기타 이유로 인해 데이터베이스를 바꿀 경우 데이터 부분을 단순 마이그레이션만으로 전환을 할 수 있는 장점이 있기 때문입니다.
일반적으로 볼 때 대부분의 웹사이트는 개인이 소규모로 시작하거나 작은 기업이 운영하는 경우가 많습니다. 그러다가 사용자가 증가해서 케즘(Chasm)을 넘어서게 되면 갑자기 데이터베이스의 용량이 폭주를 해서 엄청난 규모를 처리할 수 있는 데이터베이스 - 혹은 분산파일 시스템 - 으로 전환이 진행되어야 합니다. 이럴 경우 만약 데이터베이스 부분에 핵심적인 코딩을 해놓은 경우라면 낮은 처리용량을 가진 데이터베이스에서 상위 처리용량을 가진 데이터베이스로 전환 시에 상당한 어려움이 존재를 하게 됩니다. 심지어는 새로 시스템을 구축해야 할 정도의 문제도 발생할 수 있다고 생각합니다.
이러한 문제가 발생하는 이유는 일반적으로 미들웨어의 경우는 확장성을 고려해서 설계를 할 경우, 어플리케이션 서버나 추가적인 미들웨어를 도입할 것을 예상하여 병렬처리방안을 설계 시에 고려하면 추후 용량이 증가될 시에 추가적인 하드웨어 증설 등을 통해 어느 정도의 운영의 묘를 살릴 수가 있지만, 데이터베이스의 경우는 현재의 기술로는 복수의 데이터베이스를 운영하기가 상당히 어렵기 때문입니다. (최근에 일부 데이터베이스의 경우 여러 대의 서버를 이용해서 하나의 데이터베이스를 운영할 수 있다고 하지만, 대규모 시스템의 경우에는 검증되지 않은 기술인 최신의 기술을 함부로 적용하는 것은 아직 시기상조라 생각이 됩니다. 게다가 아직 실제적으로 어느 정도 수준까지 지원이 가능한지 잘 모르겠습니다.)
따라서, 추가적인 증설이 가능한 미들웨어나 어플리케이션 서버에 로직을 설계하고 용량에 제한이 있는 데이터베이스 서버는 최대한 부하가 걸리지 않는 방식으로 처리를 해야 합니다. 이렇게 설계된 경우 데이터베이스는 단순한 파일저장소 정도의 역할만 수행을 하게 되고, 거의 대부분의 수행은 어플리케이션에서 수행이 됨으로 데이터베이스는 기본기능 이외에 기능은 거의 사용되지 않게 됩니다.
보통 정보계에서 Sorting 기술을 사용하는 것은 병렬처리를 보다 효율적으로 진행을 하기 위해서인데, 대규모 데이터를 정렬시켜 적당한 중간단위로 데이터를 쪼개는 것이 병렬처리에는 필수적이기 때문입니다. 기간계가 정보계와는 많이 다른 방식으로 설계 및 운영이 되기는 하지만 아마도 병렬처리를 위해서 Sorting을 하지 않았나 추정해봅니다.
추신: 제가 이베이 정도의 시스템 사이징(System Sizing)을 해 본 적은 없다는 것을 미리 밝혀둡니다. 따라서, 제가 말씀 드린 내용이 맞을 수도 있고 틀릴 수도 있으므로 제가 드린 말에 잘못된 부분이 존재하면 코멘트나 트랙백을 달아주시면 감사하겠습니다.
'IT이야기' 카테고리의 다른 글
| 데이터 모델링(Data Modeling) vs. 데이터 교환(Data Exchange) (0) | 2007/06/12 |
|---|---|
| 파워(Power) 블로거의 조건 (0) | 2007/06/05 |
| 거대 용량 아키덱처 설계 시의 데이터베이스의 역할 (6) | 2007/05/31 |
| 연봉의 경제학 - 프로그래머의 적정연봉은 얼마인가? (16) | 2007/05/24 |
| UCC(User Created Contents)에 대한 유감 (6) | 2007/05/21 |
| 기업이 Linux를 택하지 않는 이유 (18) | 2007/05/16 |

TAG Application Server,
Architecture,
IT,
middleware,
MVC Model,
System Sizing,
거대 용량 아키덱쳐,
데이터베이스,
미들웨어,
시스템 사이징,
어플리케이션 서버
이올린에 북마크하기
이올린에 추천하기




댓글을 달아 주세요
답글 써주셔서 감사합니다. 덕분에 저도 생각을 다듬어 볼 기회가 생겼습니다. 미흡하지만 글을 하나 더 썼습니다. (트랙백이 깨져서 링크 답니다. ^^)
2007/05/31 20:31http://kaistizen.net/EE/index.php/weblog/comments/design_issues_of_super_big_size_system/
제 글에 오타가 있어서 댓글에 수정을 부탁드렸습니다. 그런데, 트랙백이 왜 깨졌는지 잘 모르겠습니다... ㅠㅠ
2007/06/01 08:14시간되시면 다시 한번 걸어주시면 감사하겠습니다.
http://kldp.org/node/82799 에 관련해서 몇 자 적었는데 저희는 트랙백을 지원하지 않으므로 수동으로 남깁니다... :-)
2007/05/31 21:19글을 읽어보니 운영상의 고민이 많으신 것 같습니다. 해결하실 수 있는 좋은 방안을 찾으시면 추후라도 저에게 알려주시면 감사하겠습니다... ^^
2007/06/01 08:29추신: 권순선님의 글을 읽다가 갑자기 생각이 난 것인데, 사이트를 운영하시면서 튜닝을 하신 결과를 공개하시면 어떨까 생각을 해 봅니다. 일반적으로 기업은 튜닝결과를 공개하지 않기 때문에 튜닝에 대해서 많은 분들이 배우기가 어려운 것 같습니다. 어떤 문제점이 있을 때 그 문제를 해결하신 결과를 같이 공유를 한다면 오픈소스로 사이트를 운영하시고 있는 분들에게 많은 도움이 될 것이라고 생각합니다.
대용량 데이타 관리는 구글을 따라갈 수 없다고 생각합니다.
2007/10/29 13:51검색엔진 베이스로 쌓아온 그들의 데이타 관리 능력을 국내 업체는 따라잡을 수 있을까요 ?
제 생각엔 꼭 불가능하지는 않을 것이라고 생각합니다. 물론, 쉽지는 않겠지만 한국 사람들만큼 위기상황에 대해 문제를 해결하는 능력이 뛰어난 사람들이 없으니까요... ^^
2007/10/29 14:13