한때는 슈퍼컴퓨팅에 관련된 일을 하다가, 그리드 컴퓨팅에 잠시 발 담궜다가 지금은 클라우드 컴퓨팅에 관련된 일을 하면서 든 생각…
“슈퍼컴퓨팅하고 그리드 컴퓨팅하고 클라우드 컴퓨팅이 뭐가 달라요?” 라고 누군가 나한테 질문을 하면 도대체 뭐라고 대답을 해야할까? 어떤 점에서는 다 비슷한 듯 하면서 완전히 다른 이야기인 듯 하고 – 클라우드 컴퓨팅은 가상화 기반의 모바일 컴퓨팅이어요… 도 맞는 말이니까 – 진정 공통점은 “뜬구름 잡는 이야기” 외에는 없을까?
그리드 컴퓨팅이 처음 IT 업계를 휘저었던 2000년대 초반의 모토가 “전기를 끌어쓰듯 컴퓨팅 리소스를 원하는 대로 가져다 쓰는 것”이라고 예를 들었던 적이 있었다. 그런데 이렇게만 말을 하면 “유틸리티” 컴퓨팅하고는 뭐가 다른거지? 그러면 2005년부터 한 2~3년간 널리 써였던 “종량제”는 그리드 컴퓨팅하고 유틸리티 컴퓨팅하고 무슨 차이가 있을까?
이제부터 발상의 전환을 통해 원래의 Grid 와 Utility 용어가 사용되었던 “전기”를 예를 들어서 한번 각각의 예를 맞춰보면 어떨까?
우리가 현재 전기를 공급받고 달달이 전기요금을 내고 있다는 것은 당연한 사실이다. 그런데, 우리가 사용하는 전기를 생산하는 “발전소”를 한번 분류해 보자. (전기 전공자분이 보면 완전히 틀린 이야기일 수 있지만, 어차피 IT 업계 사람은 다 비슷하게 생각한다는 가정하에 내맘대로 분류한 것임을 미리 말해둔다)
1. 원자력 발전소
장점) 대규모 투자를 통해 엄청난 양의 양질의 전기를 저렴한 비용으로 생산한다.
단점) 아무곳에나 만들수는 없고, 입지조건이 양호한 곳에만 집중적으로 건설한다.
2. 화력 발전소 및 열병합 발전
장점) 중소규모의 투자를 통해 양질의 전기를 적당한 비용으로 생산한다.
단점) 전기 생산에 들어가는 비용이 상대적으로 많이 들고 환경오염, 유지보수 등 side effect 가 발생한다.
3. 소규모 발전 (예를 들면 선박엔진 등을 발전기로 이용하는 경우)
장점) 원하는 곳에 저렴한 비용으로 설치하여 전기를 생산할 수 있다.
단점) 양질의 전기 생산보다는 필요한 전기를 겨우(!) 생산해서 쓸수 밖에 없다.
물론 1~3의 카테고리 이외에도 다양한 전기 생산 방식이 있겠지만 위와 같이 분류한 것은 대, 중, 소의 적절한 예로 나름대로 생각한 것이다. 그런데 동일한 전력 소비자가 전기를 끌어쓰기 위해서 1~3까지의 발전소를 이용하고자 할 경우 필요한 요소가 무엇일까?
단적으로 생각해서 원자력 발전이 주가 되는 곳은 최종 소비자까지 전력을 공급하기 위해서 송배전 시설을 체계적으로 깔 수 밖에 없을 것이다. 물론 화력발전을 하게 된다면 이러한 송배전 시설은 원자력 발전에 비해서는 현저히 줄어들겠지만, 생산비는 상승할 수 밖에 없다. 반면 오지나 후진국(용어는 미안~)에서 자주 사용되는 소규모 발전기는 동네 마을 한귀퉁이에 두고 기름넣고 전기를 생산하는 것은 좋지만 고장나면 고치러 올 때 까지는 전기를 사용하기는 힘들것이다. (두산중공업 CF를 기억하시라!!!)
이제 1~3의 내용을 슈퍼컴퓨팅 또는 그리드 컴퓨팅에 한번 적용해 보자.
1. 대규모 슈퍼컴
장점) 대규모 투자를 통해 엄청난 양의 컴퓨팅 리소스를 저렴한 비용으로 제공한다.
단점) 아무곳에나 만들수는 없고, 슈퍼컴퓨팅 센터나 특정 기관, 대기업 등이 구축할 수 있다.
2. 중소규모의 슈퍼컴퓨팅
장점) 중소규모의 투자를 통해 필요한 만큼의 컴퓨팅 리소스를 적당한 비용으로 제공한다.
단점) 컴퓨팅 리소스 제공에 들어가는 비용이 상대적으로 많이 들고 유지보수 및 관리 비용이 높다.
3. 소규모 클러스터 컴퓨팅
장점) 원하는 곳에 저렴한 비용으로 구축하여 컴퓨팅 리소스를 사용할 수 있다.
단점) 양질의 컴퓨팅 리소스 제공보다는 겨우 필요한 컴퓨팅 리소스만 제공된다.
앞의 발전소와 마찬가지로. 대규모 슈퍼컴퓨팅 자원을 최종 소비자까지 효율적으로 공급하기 위해서 자원분배 (Job Scheduler) 및 네트웍 망, 접속 솔루션 등을 체계젹으로 구축해야만 편리하게 컴퓨팅 리소스를 사용할 수 있을 것이다. 물론, 기업이나 연구소에서 자체적으로 중규모의 슈퍼컴퓨팅 자원을 구축해서 제공하게 된다면, 이러한 솔루션을 자체적인 요구사항에 적합하도록만 구축할 수 있으므로 투입 자원이 대규모 슈퍼컴에 비해서는 현저히 줄어들겠지만, 관리 및 유지 보수 비용 등은 상승할 수 밖에 없다. 반면 랩이나 소규모 기업에서는 PC나 서버 몇 대로 자신들이 사용할 클러스터를 구축해서 사용한다면 편리하고 좋을 수 있겠지만 오지의 발전기처럼 고장나거나 관리해주는 인력이나 솔루션이 없다면, 오지의 발전기와 동일한 문제를 겪게 될 것이다.
자, 그러면 이제 우리 주변의 컴퓨팅 리소스가 필요한 곳을 한번 돌아보고 우리가 필요한 전기(아니 컴퓨팅 리소스)가 어떠한 형태로 공급되는 것이 가장 시급한지 한번 생각을 해보자.
대한민국의 IT Resource는 분명 원자력발전소가 필요한 곳도 있고, 화력발전소가 필요한 곳도 있을 것이며, 선박엔진이라도 좋으니 제발 전기만 나오게 해주세요라고 하는 곳도 있을 것이다. 그러면, 슈퍼컴퓨팅, 그리드 컴퓨팅 및 클라우드 컴퓨팅을 도입하기에 앞서 우리의 현실이 뭔지 보면 뭐가 제일 맞을까?
다 필요한 거는 맞는데, 우리가 지금 선박엔진을 가져다 줘야할 곳에 송배전시설도 없이 원자력 발전소를 지었으니 전기를 가져다 쓰라고 하지는 않은가? 아니면 원자력 발전소를 짓고 옆에다가 바로 전기를 필요로하는 곳이 필요한데도 선박엔진을 가져다 주거나 화력발전소로 버텨보라고 하고 있는 것은 아닐까?
한편, 지금까지 우리는 지금까지 소비자에게 전기를 안정적으로 공급할 방안을 고민하기 보다는 발전소를 많이 짓거나 더 효율좋은 발전기만 짓는데 매달렸던 것은 아닐까?
마지막으로 클라우드 컴퓨팅의 관점에서 한번 살펴보자. 선박엔진을 가져다 준 마을에는 처음에는 밤에 전기를 공급할려고 했는데, 낮에는 그 발전기를 쓸 수가 없을까? 그러면 그 엔진을 낮에는 열심히 돌려서 농사짓는데 필요한 양수기용 전기를 공급하고 밤에는 전기를 공급하도록 해주면 어떨까?
비슷한 방식으로 낮에는 서버에서 가상머신을 통해 업무용 서버를 제공하고 퇴근한 후에는 컴퓨팅 자원으로 활용한다면 하나의 발전기를 그때 그때 필요한 자원으로 사용할 수 있지 않을까? 동일한 시스템으로!
그리드가 흩어져 있는 발전소를 필요에 의해서 한번에 묶어서 대량의 전기를 만드는 것으로 비유할 수 있다면, 클라우드 컴퓨팅은 전기가 많이 필요한 곳에다가 순식간에(가능하다면) 선박엔진을 배달하고, 거기서 필요 없어지면 빨리 이걸 다른 곳에다가 재배치하는 것처럼 생각할 수 있지 않을까?
결론적으로 말해서 슈퍼컴퓨팅, 그리드컴퓨팅, 클라우드컴퓨팅이 지향하는바는 모두 동일하다고 볼 수 있을 것이다. 그러나, 양질의 컴퓨팅 리소스를 어떻게 최종 소비자에게 전달할 것인가 하는 방식에서는 다양한 방식의 차이가 있지 않을까 하는 생각에서 장황한 잡설을 써봤다.