System Compleat.

'Techs'에 해당되는 글 113건

  1. Rules and Scalability 2
  2. Rackspace published Openstack reference site
  3. IaaS 구현에 필요한 진실 6
  4. Session Clustering 2
  5. IaaS

Rules and Scalability

Techs
( younjin.jeong@gmail.com, 정윤진 )


한동안 바쁘기가 그지 없었다. 스토리지 클라우드 인프라의 아키텍팅, 자동화 코드 작성, 그리고 새로 시작한 고객사에서의 생활 등, 삶의 또 다른 한 사이클이 왔나 싶을 정도의 격한 생활을 지낸지 얼추 두어달 정도 되는 듯 하다.

이렇게 살면서 가장 힘든일이 무엇인가 생각해 보면, 각 기업에서 기존에 수행하던 방식의 모든 인프라 구성 방법과 다른 것이 바로 클라우드이다 하는 사실을 조직에 받아 들이게 하는 것이 가장 힘든 일이 아닌가 생각해 본다.  아주 간단한 호스트 이름을 짓는 방법 부터,  IP 할당 계획을 수립하는 것, 그에 따른 네트워크 구조를 만들어 내는 것 모두가 클라우드의 방식을 따르자면 모두 함께 Scale-out 을 고려 해야 하는데, 여기에 기존에 수십대의 서버를 사용하는 환경에서 사용하던 룰을 적용 하려는 경우가 많아 어려움을 겪는 경우가 많다. 

Lighter Side of Cloud 이미지는 내용과 관계 없음

Image From : http://www.cloudtweaks.com

이는 비단 한 두명의 관리자 때문만은 아니며, 클라우드 솔루션을 만들어 납품해야 하는 대상, 즉 또 다른 고객이 이 새로운 환경에 대해 준비가 되어있지 않기 때문에, 인프라 구성에 있어 기존의 패턴을 요구하기 때문에 발생하는 연쇄적이고 뿌리가 깊은 사이클에 기인하는 것으로 보여진다. 이 기존의 패턴이라는 것은 바로 고사양의 하드웨어에 치밀한 이중화를 준비 해 두어야만 데이터센터에 수용이 가능하다 라는 요구조건과 비슷한 것이 된다. 

하지만 클라우드는 이러한 기존의 패턴으로는 비용 효율성 측면에서 난관에 봉착하게 될 것임을 인지해야 한다. 한가지 더, 고비용의 시스템을 준비한다고 해서 획기적으로 좋은 성능을 만들어 낼 수는 없다. 클라우는 원래 생겨먹은게 가능한 "많은" 자원을 가지고 문제를 해결해야 한다. 그런데 이러한 것들은 모두 기존의 관리 패턴과 충돌하는 것이기 때문에 도입이 쉽지 않아진다. 대규모 클라우드를 처음부터 대규모로 만들 수 있는 것은 거대한 자본을 가진 기업만이 가능하다. 하지만 아무리 거대한 자본을 가진 기업일지라도 현재 시장의 표준이 되고 있는 아마존 클라우드보다 비용이 높아지게 되면 서비스의 중요성이 아무리 높다 한들 사업부의 동의를 구하기 힘들어지게 된다. 기존의 패턴에 의존할 확율이 높은 거대 기업이 자본을 믿고 고사양의 시스템으로 클라우드를 구축했다가 어이쿠 하고 빠지는 경우를 종종 보게 된다. 개인적으로 보기엔 이러한 이유들이 가장 크게 작용하고 있기 때문이라 생각되며, 따라서 클라우드 환경에 맞는 올바른 인식을 가지고, 그 그림을 공유하는 것이 성공적인 서비스 구성으로 가는 지름길이 아닐까 생각 해 본다. 

예를 들어 컴퓨팅 클라우드의 컴퓨트 노드, 즉 하이퍼바이저 노드의 경우, 이는 엄청난 숫자로 서버가 확장될 가능성이 있으며, 따라서 기존에는 아무것도 아닌 것 같은 NTP, DNS, DHCP, TFTP, 각종 서비스 설치에 필요한 Mirror Site 등의 자원에 대한 내부 구성이 중요해 진다. 더군다나 여기에 관리용 도메인/호스트 네임의 할당과 이와 관련된 IP 적용 규칙등을 모두 복합적으로 함께 고려하고, 이를 클라우드 제반 시스템 내부로 수용해야만 한다. 따라서 컴퓨트 클라우드는 단순히 하이퍼바이저의 집합이 아니라, 빌링과 자동화된 배포, 로깅, 모니터링 등을 처리해야만 하는 잘 조직된 관리용 서버 팜과, 이 컴퓨트 클라우드에서 사용될 이미지등이 저장될 스토리지 클라우드, 그리고 컴퓨트 클라우드 자체의 구성, 이 세가지가 모든 측면에서 고려되어야 한다.

위에 열거된 대부분의 내용은 바로 올바른 규칙의 설정에 그 핵심이 있다. 네트워크는 수평적으로 확장이 가능해야 하고, 기하 급수적으로 증가하는 서버를 일정한 규칙을 통해 배포하는 것이 중요하다. 여기에 필요한 규칙을 만드는 것, 그것이 바로 클라우드를 만드는 첫걸음이 아닌가 생각해 본다.

호스트명을 예로 들어 보자. 별도의 매핑 시스템이 존재하는 경우가 아니라면 클라우드에서는 호스트명 그 자체로 이 서버가 지역적으로, 그리고 물리적으로 데이터센터 내에서 어디에 위치하는지 즉각적으로 식별이 가능하도록 작성할 필요가 있다. 이는 서브도메인을 사용하는 방법과 호스트명에 직접 표기하는 두가지 방법이 있을 수 있는데, 이는 다음과 같다. 

* 서울 데이터 센터의 3층에 위치한 랙 40번의 아래에서 5번째 위치한 서버. 도메인은 a.com 이라 하자. 
예1) seoul-f3-r40-05.a.com 
예2) f3-r40-05.seoul.a.com 

* 위 예의 fqdn 을 가지고 서버의 IP 를 즉각적으로 유추해 내도록 망을 설계 할 수도 있다.
서울 : 10.
3층 : 10.3
랙 : 10.3.40
순서: 10.3.40.5

이는 극단적으로 단순한 예이다. 데이터 센터는 1개 층밖에 사용하지 못하는데 층을 기반으로 IP 할당 계획을 세운다면 IP가 모자르게 될 가능성도 있다. 따라서 가장 많이 증가 할 수 있는 자원을 기반으로 적절하게 서브네팅과 IP 계획을 세워 줄 필요가 있다. 이는 일견 간단해 보이지만, 직접 해 보면 쉽지 않은 일임을 알 수 있다. 하지만 이러한 예가 의미하는 바는 바로 약속이다. 이 약속의 내용을 알고 있다면 가급적 최대한 쉽게 식별이 가능하도록 만드는 것이 매우 중요하다는 말이다.

사실 이러한 내용은 그저 많은 약속 중의 단 하나일 뿐이다. 이러한 제한 조차 감당하기 어려운 경우에는, 별도의 호스트명 - IP 의 맵핑 로직을 만들어야 한다. 따라서 몇몇 대규모 클라우드 호스팅 업체의 경우 호스트명으로 아예 MAC 을 사용하는 경우도 있다.

랙 한두개로 클라우드를 모방하는 것은 기술적인 측면에서나 서비스적인 측면 모두에서 사실 별 일은 아니다. 이는 그저 시작일 뿐이며, 자그마한 유닛을 가지고 PoC 정도를 수행하는 것에 지나지 않는다. 물론 이러한 작업조차 하지 않는 경우가 대부분이긴 하지만, 수백, 수천대, 또 지역적으로 글로벌하게 서비스해야 하는 클라우드를 설계하는 경우라면 이러한 작은 차이들이 보다 수월한 자동화와 관리 시스템을 만들어 낼 가능성이 높다.

가장 중요한 것은, 이것은 기존의 방식과는 다르다 라는 것을 인지하는 것이 아닐까 한다. 하드웨어의 선정과 네트워크 구성은 절대 기존의 방식을 따라서는 안되며, 나아가 확장을 기본적으로 염두해 두지 않는다면 비용/관리/운영 모든 측면에서 눈덩이처럼 불어나는 이슈들을 감내하기가 분명 쉽지 않을 것이다.

Flat 네트워크나 Open vSwitch 와 같은 기술적인 내용의 수용에 앞서, 이러한 기본적인 내용을 이해하는 것이 무엇보다 중요하지 않을까 한다. 물론, 내가 지향하는 방법과 다른 방법이 분명 있을 수 있고, 그 방법이 보다 효율적이라면 따르지 않을 이유가 없지만 이러한 구성들은 한번 고려해 봄직 하지 않나 싶다.  

졸립고 피곤한데 뭔가 한마디 쓰고 싶어 끄적인게 또 두서없이 길어져 버렸다. 쓰다보니 이런 글이 과연 도움이 될까 싶은 의문이 드는 밤이다. 

( younjin.jeong@gmail.com, 정윤진 )  

Rackspace published Openstack reference site

Techs
( younjin.jeong@gmail.com, 정윤진 )


AWS와 함께 클라우드 서비스의 강력한 주자인 Rackspace 가 Openstack 을 사용한 클라우드 구현에 있어 필요한 내용들을 간단하게 정리한 레퍼런스 사이트를 오픈했다. 

http://www.referencearchitecture.org

이 블로그에서는 그동안 OpenStack 에 대한 내용은 한번도 언급하지는 않았지만, 모 기업에서 현재 서비스 중인 스토리지 클라우드
 구현에 참여한 적이 있어 익히 알고 있다. 참여 하였다고는 해도 실제 코드를 반영하거나 했던 부분은 없으며, 주로 인프라 관련 문제의 트러블 슈팅에 참여 했었기에 전반적인 아키텍처라던가 구현의 방법, 자주 발생하는 문제는 어떠한 것들이 있는지에 대해 나름대로 경험을 가지고 있다고 생각한다. 

위의 사이트는 Rackspace가 겪었던 모든 경험을 말해주지는 않는다. 나 역시 주로 기업과의 계약관계에서 일을 하기 때문에 무엇이 어떻다 하고 말하기가 곤란한 경우가 더러 있다. 따라서 가장 중요한 것은 경험해 보는 것이며, 오픈스택이 다른 도구들에 비해 어떠한 장점과 단점을 가지고 있는지, 그리고 단점은 어떻게 다른 솔루션들을 통해 극복 해 낼 수 있는지에 대해서는 구현하고자 하는 서비스의 Use Case 에 따른 충실한 테스트와 튜닝이 함께 고려되어야 할 것이다. 

오픈 스택은 Rackspace 와 NASA 가 공동으로 참여하고 있는 오픈소스 프로젝트이며, 이는 크게 Nova 라 불리우는 컴퓨팅 클라우드의 구현 도구와 Swift 라 불리우는 오브젝트 스토리지, 그리고 Glance 라 불리는 이미지 서비스로 구성되어 있다. 이미지 서비스는 사진과 같은 이미지가 아니라, 클라우드에서 사용되는 VM 의 원본 템플릿을 지칭하는 말이다. 

클라우드에 관심이 있으신 분들이라면 이 오픈 스택에 대해 한번쯤은 들어 보았을 것이며, 이와 비슷한 도구들에도 경험이 있으리라 생각한다. 하지만 이 오픈 스택의 경우 인터넷을 통한 자료를 찾아 내는 것이 보통 어려운 일이 아닐 것이다. Zone 이 무엇인지, Multi-Node 클러스터는 어떻게 만들어야 하는지에 대한 위키페이지는 제공이 되고 있지만, 실제 이 Zone 을 몇개로 구성해야 하는지, 하드웨어 스펙은 어떻게 잡아야 하는 지에 대한 내용들은 찾아 내기가 쉽지 않을 것이다.

위의 사이트는 그러한 부분들에 대한 욕구를 일정 부분 충족 시켜 줄 것이며, 만약 Private 클라우드를 구현 하고자 한다면 도움이 될 수 있다. 다만, 여러분은 이 레퍼런스 페이지와 오픈 스택 사이트의 위키를 참조하더라도, 프로덕션 레벨의 서비스 구현에 있어서는 매우 큰 난관을 겪을 수도 있다. 이는 여러가지의 설정값이나 아키텍처의 선정에 있어서 고려해야 하는 부분이 매우 많으며, Python 으로 개발된 도구이기에 가지는 한계도 일부 발생 할 수 있다. 더군다나 운영의 측면에 있어서도 리눅스에 익숙하지 않다면 고난을 겪을 가능성이 다분히 있다.

오픈 스택 프로젝트는 델에서 지원하고 있다. 이는 Rackspace 와 Dell 이 매우 긴밀한 관계이기 때문인 것으로 보여지는데, 이러한 이유에서인지 델에서는 Crowbar 라 불리는 오픈스택 설치 도구를 최근에 배포하였다. 

http://content.dell.com/us/en/enterprise/by-need-it-productivity-data-center-change-response-openstack-cloud

이는 PXE 부팅과 Chef 를 통한 자동화된 도구이다. 따라서 간단하게 사용하기에는 나쁘지 않을 것으로 생각된다. 사용 방법이나 대해서는 위의 페이지를 참고하며, 개념에 대해서는 다음의 링크를 살펴보는 것도 좋다. 

http://robhirschfeld.com/2011/03/14/how-openstack-installer-works/

나는 지금 국내의 모 기업을 위한 클라우드 프로젝트에서 동일한 부분을 처리하는 코드를 만들고 있다. 이는 Crowbar 와 유사한 형태의 도구이지만, 보다 고객사에 최적화 되어 있다고 생각한다.

사실 델은 다른 HP 나 IBM 보다는 이런 부분에서 보다 빨리 움직이고 있는 듯 하다. DevOps 라 불리우는 사람들이 클라우드 인프라 개발에 있어 매우 중요한 역할을 하지만, 전 세계에서 오픈스택을 통해, 아니 클라우드 인프라 개발을 경험한 사람들은 극소수이다. 
이는 전 세계를 통틀어도 3백명 이하의 인원들 뿐일 것이며, 따라서 클라우드를 구현하고자 하는 기업들에게 저러한 도구의 지원은 좋은 시작점이 될 수 있다. 물론 저러한 도구를 상용 서비스에서 직접 사용하는 것은 사용자의 판단에 달려있다는 말을 빼 놓으면 안될 것 같다. 

델이나 HP, IBM 하드웨어를 보면 전부 OEM 투성이다. 거기에 각 기업들의 관리 소프트웨어 또는 하드웨어와 서포트를 함께 파는 형국인데, 클라우드에 있어서 특히 저렴한 가격 경쟁력을 가지려는 클라우드 구현에 있어서는 저러한 하드웨어로는 비용이 높아 질 수 밖에 없다. 우분투를 쓰는것이 가장 좋은 시절이 올 줄은 몰랐지만, 아무튼 "우리는 우분투 따위의 리눅스는 지원하지 않습니다" 하는 벤더를 선정하게 되면 골치가 아플 것이다. 가장 범용적으로 많이 사용되고, 가장 많은 사용자들이 선택하는 하드웨어를 선정하는 것, 여기에 약간의 벤더를 지원하는 하드웨어라면 대다수의 기업에서도 만족하지 않을까 생각한다. 저렴하고, 지원되고, 델과 IBM, HP 에 팔리는 서버의 원형을 만드는 회사의 제품이라면 말이다. 


아무튼. 위의 내용들은 클라우드 구현에 관심이 있다면 한번 쯤 살펴보는 것이 남는 것이라 생각한다. 


( younjin.jeong@gmail.com, 정윤진 ) 

 

IaaS 구현에 필요한 진실

Techs
( younjin.jeong@gmail.com, 정윤진 )


IaaS 의 구조설계를 하게되는 경우, 전체 아키텍처에 가장 크게 영향을 미치지만 사실 별로 필요 없는 것이 2가지가 있다. 이 2가지는 많은 고객들이 아마존을 통해 경험한 사용성에 근간을 두고 있지만, 실제 아마존에서도 바로 이 부분 때문에 심각한 장애를 겪고 있다는 사실을 인지하고 있는 사람은 드물다. 이 2가지가 무얼까? 바로, Live Migration 과 EBS 서비스이다.

이 두가지는 IaaS 구현에 있어 각 클러스터의 크기를 제한하는 역할을 한다. 이 크기의 제한에 대한 핵심은 바로 이 두가지의 기능이 "Shared Storage" 를 필요로 하기 때문에 발생하는 것이다. Compute 클라우드 구현에 있어 이는 엄청나게 중요한 가치를 가지는데, 바로 이 부분 때문에 스토리지에 대한 비용이 급상승하고, 전체 클라우드 구성이 제한을 갖게 되며, 심각한 경우에는 일부 고객의 VM이 특정 하이퍼바이저 클러스터에만 생성되는 문제를 야기하기도 한다.

첫번째로, Live Migration 에 대해 살펴보자. 이 개념은 바로 가상화 기반의 Compute 클라우드에 위치한 VM이 어떠한 이유에서든 물리적으로 다른 위치 또는 클러스터 내의 다른 서버로 옮겨주는 기능을 말한다. 이는 서비스에서 "언제나" VM이 365일 24시간 죽지 않아야 한다는, 일종의 Availability 개념으로 이해 될 수 있다. 또한, 클라우드 내의 어떠한 서버에서든지 VM의 "이동"이 자유로워야 한다는 요구사항 때문에 발생한 것이기도 하다.


Live Migration

image from: http://vcommevirtuel.typepad.com/blog/

서비스 운영 중 하이퍼바이저가 사망하시는 경우는 충분히 발생 할 수 있다. 어떠한 이유에서든 하이퍼바이저를 동작하는 가상 서버의 사망은, 곧장 그 서버 위에서 동작하는 모든 VM들이 타격을 입게 된다는 말과 동일하다. 따라서 고객은 이러한 경우를 대비하여 Live Migration 을 IaaS 구현 요구사항에 넣는다.

결론부터 말하자면, 이는 완전히 잘못된, 또는 엄청난 제한을 가지게 되는 아키텍처를 만들어 낸다. 이 제약 사항 이라는 것은 바로 공유 스토리지가 필요하다 라는 부분이며, 이로 인해 얼마나 큰 사이즈의 스토리지를 어떠한 형태로 얼마나 많은 서버에 공유해야 하는가 하는 문제에 당면하게 된다. VM 하나, 하이퍼바이저 서버의 장애 한대를 피하기 위해 공유 스토리지가 붕괴하면 더 많은 수의 하이퍼바이저가 붕괴하는 구조의 선택이 필요해 지게 된다는 말이 된다는 것이다. 이제는 다시 공유 스토리지를 이중화 해야 하나 하는 고민에 빠지게 되며, 더 심각한 것은 (수 대의 하이퍼바이저 + 공유스토리지 ) 로 이루어진 하이퍼바이저 클러스터 한 덩이가 장애 대응의 최소 유닛이 된다는 점이다. 

한가지 더, 대부분의 하이퍼바이저는 Live Migration 을 위해 양쪽 서버가 모두 정상적으로 동작해야 한다는 요구사항을 가진다. 사실 서버가 잘 동작하고 있는데 VM을 옮겨야 하는 이유는 전체 서비스 퍼포먼스를 위한 오케스트레이션 밖에 없다. 이는 무슨 말인가? Live Migration 의 전제조건은 클러스터 내의 모든 서버가 정상인 상태에서만 정상적으로 동작하는 기능이다 라는 말이다. 

따라서 최초의 요구사항이었던 Availability 관점에서, 이는 필요 없는 기능이 된다. 애초에 모든것이 정상 동작하는 경우라면 Live Migration 을 해야 할 이유가 없다. 오케스트레이션은 클라우드 스택의 VM 분배 알고리즘이 충분히 똑똑하다면 Provisioning 단계에서 적절히 분산하여 처리해 주면 되는 일이다. 결론적으로, Live Migration 은 필요 없는 기능이 된다. 

서비스를 구현할 때 이보다 더 중요한 것은, 바로 VM은 언제나 잘못 될 수 있다 라는 생각을 가지는 것이다. 잘못되면 동일한 역할을 하는 VM을 새로 만들고, 기존의 VM을 중지시켜 지워버리면 될 일이다. 이게 보다 클라우드에 맞는 서비스 구조 설계가 된다. 




두번째로, EBS 와 같은 기능이다. 사실 아마존은 처음부터 EBS 서비스를 내놓지는 않았다. 기본적으로 클라우드의 VM은 몇대의 가상 서버를 사용하여 원하는 형태로 구성된 VM이 동작하는 환경과는 완전히 다른데, 그 중의 하나가 바로 이 디스크의 사용에 대한 부분이다. EBS 를 사용하지 않는 일반 VM의 디스크는 마치 메모리처럼 휘발성을 가진다. "영원히" 저장되는 기존의 물리 서버의 로컬 디스크와는 완전히 다른 것이다. 따라서 이러한 사용성을 보완하기 위해 개발한 것이 바로 EBS 서비스가 된다. 

이 EBS가 아니다.



아마존의 EBS 서비스는 DRBD를 기반으로 한 것으로 보인다. 실제 어떠한 구현 기술이 사용되었건 간에, 이는 기본적으로 하이퍼바이저와 네트워크로 연결된 별도의 (가상화된)스토리지에 데이터를 쓰는 것이다. 가상화란 무엇인가. 물리 서버 한대로 구성할 것을 여러대의 가상 서버를 사용하는 것이기에, 네트워크, 디스크, 프로세서 등 모든 자원을 나누어 사용한다. 따라서 일반 Public 클라우드를 사용할 때 누구인지는 모르지만 다른 사람의 VM이 나의 VM과 동일한 하이퍼바이저에서 동작하고, 둘 다 EBS를 사용하는 경우는 필연적으로 발생한다. 헌데 만약 이 다른사람이 서비스를 클라우드에 올려보려고 디스크에 대한 벤치마킹을 dd 같은 도구를 사용하여 진행 중이라면, 그 하이퍼바이저 내의 모든 EBS 사용 고객은 심각한 성능 문제를 겪게 될 수 밖에 없다. 

아마존은 이러한 사실을 알면서 왜 이 기능을 EBS에 넣었을까? 바로 Legacy 패턴, 즉 VM을 기존의 물리적 서버와 동일한 환경으로 사용하고 싶어하는 고객들이 많았기 때문이다. 따라서 그들은 각 고객의 인스턴스와 가상화된 볼륨의 매핑을 위해서 제법 복잡한 시스템을 구현하여 서비스에 성공했지만, 이로 인한 장애도 빈번하게 발생하게 된다.

EBS는, 역설적으로 데이터의 중요성이 높다면 반드시 사용하지 말아야 하는 서비스가 된다. 어떠한 데이터가 반드시 영원히 저장되어야 하고, 자주 변경된다면, 이러한 데이터는 EBS를 통해 저장하면 안된다. 아마존은 EBS를 기반으로 RDS 서비스도 구현하고 있기는 하지만, 이들 역시 성능과 사이징에 대한 제한이 있다. 이는 주제를 벗어난 좀 다른 이야기이지만, 클라우드에서 RDS와 같은 서비스를 사용하고자 한다면 반드시 Sharding 과 같은 기술을 고려해야 한다. IaaS 입장에서 RDS와 같은 서비스를 구현하고자 한다면, 이는 기존의 Compute 클라우드와 구분된 별도의 PaaS 형태로 독립적으로 구축해야 할 것이다. 


아무튼, EBS를 IaaS 구현시 고려사항에 넣게 되면 문제가 매우 복잡해 진다. 사실 EBS가 필요한 이유는 인스턴스에서 "영원히 데이터가 저장되어야 하는 로컬디스크" 때문이다. 하지만 인스턴스 자체가 영원하지 않다고 생각해 버리면, 구현과 운영이 힘들며 아키텍처에 심각한 제한 사항을 유발하는 EBS 와 비슷한 기능을 구현해야 할 이유가 별로 없다. 

이런식으로 생각 할 필요가 있다. 인스턴스를 처음 만들때 필요한 정보를 다운로드 받아 구성하도록 하고, 여기에 문제가 발생했을때 인스턴스를 그냥 없애버린다. 그리고 새로 만들면 된다.  이런 기능을 위해 이미지 서비스가 존재하고, Chef 나 Puppet, 또는 일반 스크립트등을 적절히 사용하면 된다. 아울러 무언가 지속적으로 저장되어야 하는 데이터들, 이를테면 AD 서버나 Exchange 서버를 클라우드에 올리고 싶은 경우도 있을 것이다. I/O 가 중요하거나, 저장되어야 하는 데이터가 매우 중요하다면 EBS를 쓰지 말고 하이브리드 형태로 구현하는것을 권고한다. AD나 Exchange는 그 사용량이 폭발적으로 늘어날 가능성이 있는 서버들이 아니다. 중요하고, 항상 동작해야 하는 Oracle 과 같은 서비스들은 클라우드가 지향하는 인프라의 개념과는 완전히 다름을 인지해야 한다. 

오히려 클라우드가 필요한 부분은 이미지 서비스, 영상 서비스, 미들웨어와 같은 언제든 사용량이 폭발적으로 증가 할 수 있는 서비스여야 한다. 이러한 서비스들은 클라우드에 매우 적합하며, 바로 넷플릭스스 서비스가 성공할 수 있는 이유이기도 하다. 렌더링이나 인코딩과 같은 기존의 병렬 또는 분산처리 시스템을 클라우드에 올리는 것도 좋다. 이들은 계산을 위해 "임시로" 로컬 디스크를 사용하지만, 더 중요한 것은 프로세싱 파워이기 때문에 I/O 로 인한 문제가 발생할 확률이 적다.

이러한 클라우드의 사용성에 비추어 보면, EBS는 Compute 클라우드와 직접 밀착되어야 하는 무엇은 아니다. Live Migration 과 EBS는, 함께 일하는 클라우드 아키텍트의 말을 빌리자면 "Fancy" 한 기능 이상의 무엇도 아니다.  클라우드의 컨셉에 맞는 서비스 설계는 이러한 사항들로 인해 매우 중요하다. 별로 빠르지도고, 그다지 안전하지도 않은 EBS 비슷한 시스템의 구현은 완전히 다른 방법으로 접근해야 하는 것이다. 

강력한 프로세싱 파워를 원하는 고객을 위해, 아마존은 HPC 클라우드를 별도로 제공한다. 마찬가지로, 강력한 I/O 를 원하는 부분은 분명히 있다. 그렇기에 지속적인 저장공간을 Compute 용 인스턴스에 반드시 붙여야 한다면,  I/O를 위한 별도의 서비스 오퍼링을 만드는 것이 훨씬 현명할 것이다. 높은 I/O 성능이 필요한 서비스는 보통 높은 프로세서 성능과, 많은 메모리를 함께 요구하게 되는 경우가 많다. 따라서 하이퍼바이저에 얼마만큼의 인스턴스를 올려 줄 것인가 하는 고민과 함께, EBS형태의 서비스가 필요한 고객 또는 서비스를 위한 별도의 고비용 아키텍쳐를 준비하는 것이 옳다고 생각한다. 


( younjin.jeong@gmail.com, 정윤진 ) 




 



Session Clustering

Techs
(younjin.jeong@gmail.com, 정윤진)

친구랑 술을 먹다가, WebLogic 과 Jboss 의 클러스터링 기능 때문에 매년 일정 라이센스 비용을 내고 서비스를 구축한다는 친구의 이야기를 들었다. 그녀석의 조직은 오픈소스를 워낙 겁내서, lighttpd 로 구현한 단순 static 파일 전송용 이미지 서버가 잘 돌아가지 않을까봐 걱정하는 조직에 몸담고 있다.

일이 이정도 되면, apache 를 왜 서비스에 사용하냐고 물어 볼 염두 조차 나지 않게 된다. 당연하겠지만 이런 대부분의 조직의 경우, 지원이 없는 제품을 굉장히 겁내곤 한다. 아... 생각해 보면 굳이 내 돈 들여서 라이센스 구매하는 것도 아닌데 왜 친구랑 박터지게 소맥을 마셔가며 언쟁을 했는지도 모를일이다.

아마도, 내가 웹 개발자가 아니어서 그런 듯.

세션 데이터의 특징을 보자.

1. 한번 쓰여지고, 자주 참조 된다.
2. 만료 시간이 되면 삭제해도 무방하다.
3. 여러대의 서버에서 참조될 가능성이 있다.
4. 데이터의 구조가 간단하다.
5. 전체 데이터를 잃어도 서비스에 크나큰 해악을 끼치는 경우가 드물다.

stateless 가 주가 되는 현대의 많은 웹 서비스들이 있지만, 그렇다고 세션 처리가 필요 없어지는 것은 아니다. 세션을 처리하는 방법에는 다음과 같은 것들이 있다.

1. L4 장치의 도입
2. Cluster 옵션 또는 라이센스가 제공되는 프레임웍 또는 WAS 의 사용
3. memcached / repcached 를 사용하여 각 페이지의 코드레벨에서 세션을 저장, 참조 하는 방법.

memcached

image from: http://wiki.eol.org/display/ITPUB/Memcached+System+Synchronization


대부분의 국내 웹 사이트에서는 L4 를 사용한다. 클라우드에서는 apache 의 모듈 또는 nginx 와 같은 서버가 제공하는 proxy 를 사용하는 경우가 대부분이다. 이런 1~3번 구조와 같은 것들은 이미 그 구성을 다이어그램으로 그리기 조차 민망한 지경이라고 할까.

다만 3번의 경우, 많은 업장에서 그 효용성을 모르는 듯 하다. 지난번의 오픈소스 관련 포스팅에도 썼지만, 3번과 같은 방법을 꺼리는 가장 큰 이유는 보안도 아니고 코딩의 어려움도 아니고 바로 고장나면 누가 고쳐줄건데 의 인식이 제일 큰 듯 하다.

묻고 싶다.

L4 에서 persistent 또는 sticky 로 클라이언트 별 session 을 이미 기억하고, 클라이언트가 접근했던 웹서버로 이미 던져주고 있는데, 왜 WAS 레벨의 session clustering 이 필요한가. 만약 동작중인 WAS 가 사망했을 경우, L4 의 healthcheck 에 의해서 지정한 retry 와 지정한 timeout 이후에 고객은 '다시 로그인' 외에 다른 행위가 없을 텐데. 만약 세션에 기반한 장바구니와 같은 기능을 구현하고 있었다면, 저렴한 WAS의 N 대 만큼의 고객만 다시 로그인 하면 될 일이다.

만약 3번을 통해 구현했다면, L4 에서 굳이 비용을 들여 session state 를 저장할 필요가 없지 않겠는가.

repcached 사용시 multi-master session cache 로서의 사용은 논의가 필요한 부분이라고 볼 수 있다. heartbeat 을 사용한 repcached 의 구현과 같은 것들이 있을 수 있다고 본다. 다만 안타까운 것은, 상용이 아니면 불가능하다고 생각하고, 만약 오픈소스로 구현 했을 때 문제가 발생한 경우 1빠로 '전에 오픈소스로 바꾼거 그게 문제 아냐?' 라고 생각하는 어간없는 상식이 문제가 아닐까.

세션이 은행의 DB 트랜젝션 만큼 중요하다면 돈을 아낌없이 투자해도 할 말은 없다만, 단지 세션때문에 L4 구매하고, WAS의 클러스터 라이센스를 구매하고 있다면 해 줄 말이 없다. 1인 블로그 만들려고 오라클 엔터프라이즈 구매하는 경우랄까..

Cache 를 쓰는 방법에는 여러가지가 있지만, session 이라는 데이터 특성을 잘 고려해 보는 것이 필요할 수 있다. 물론 내가 틀렸을 수도 있지만, 국내의 잘 나가는 쇼핑몰의 세션 공유 처리에 잘 들 사용하는 것을 보면 많이 잘못 되지도 않은 것 같다.

JSP 는 많이 다를까?

음...
 

repcached

image from: http://wiki.eol.org/display/ITPUB/Memcached+System+Synchronization

위와 같은 repcached 의 사용은 애플리케이션 별 검증이 필요하다.

한가지 더, memcached, memcachedb, repcached 등은 단순 세션 처리에만 사용되는 것은 아니다.
그리고, nodejs 짱이더라... 

NCache
http://cgeers.com/2010/07/11/ncache-distributed-in-memory-object-cache/

Nginx Subsystem, NCache
http://code.google.com/p/ncache/
http://code.google.com/p/ncache/wiki/HowToNcacheV3
http://code.google.com/p/ncache/wiki/HowToNcacheV2

Repcached
http://repcached.lab.klab.org/

Memcached
http://memcached.org/

Consistent Hashing
http://weblogs.java.net/blog/tomwhite/archive/2007/11/consistent_hash.html

Terracotta
http://www.terracotta.org/

Java EE scaling article
http://www.theserverside.com/news/1320914/Scaling-Your-Java-EE-Applications-Part-2

Hazelcast ( In Memory Grid )
http://www.hazelcast.com/documentation.jsp

memcached-session-manager
http://code.google.com/p/memcached-session-manager/

PHP session memcached
http://www.ducea.com/2009/06/02/php-sessions-in-memcached/

EHCache
http://ehcache.org/



(younjin.jeong@gmail.com, 정윤진)


IaaS

Techs
(younjin.jeong@gmail.com, 정윤진)


항상 무언가를 만들기 위해서는 많은 시간이 소요된다. 혼자 만들던, 여럿이 만들던, 회사에서 만들던지간에, 새롭게 무언가를 창조하는 것은 힘든일이다. 그래서 우리는 대부분 '모방'의 방법을 사용하고, '모방'의 대상을 찾아 낸다. 사진을 찍을때는 유명한 작가의 작품에 나온 구도, 노출등을 따라해 보고, 스포츠를 배울때는 유명한 운동선수의 폼을 따라 해 보기도 한다.


모방의_올바른_예_JPG



'창의'와 '모방'은 필시 다른 말일게다. 하지만 대부분의 경우에서 그렇듯, 좋은 '모방'은 종종 새로운 '창의'의 모태가 되기도 한다. 너무나도 당연한 말이지만, 모방을 넘어 창의로 닿는 사람들은 그 창의가 '소용'에 다르지 못해 또 고민한다. 이러한 일련의 피라미드와 같은 구조는 역설적이게도 '소용'에 대한 필요에 의해 '모방'을 촉구하기도 한다. 그것이 바로 한국의 IT 산업, 바로 그것일 게다.

매번 기술의 패러다임이 쉬프팅 하게 될 때 문제가 발생한다. 사람들이 PC를 가지기 시작한 시절에 제일 높은 효용의 가치인 '워드'를 배우기 위해 단축키 표를 놓고 '아래아 한글'을 배워대고, 다시 '인터넷'이 발전하는 시절에는 '스타크래프트'를 즐기기위해 혈안이 된다. 이제 인터넷을 기반으로 기존에 하던 '개인사업' 들이 웹으로 움직이기 시작하면서 부터는, '전자상거래' 나 '인터넷 쇼핑몰' 을 만드는데 정력을 쏟는다. 나아가, 애플이 만들어낸 기계들에서 발생한 '사용자 편의성' 과 '인터넷'의 조합은 어디서나 필요한 모든 정보를 할아버지 할머님도 글자만 읽을 수 있으면, 또 손자 손녀의 친절한 도움만 있다면 사용 할 수 있는 또 한번의 거대한 쉬프팅이 발생하도록 했다.

아저씨도_스마트폰_유저_JPG


"데이터 폭발의 원천"

문제는, 이러한 쉬프팅이나 흐름의 주도권을 잡지 못한다는데 있다. 블로그의 많은 포스팅, 트위터의 많은 글들을 보면 왜 우리나라에는 스티브 잡스 어쩌고 하는 글들이 널려있다. 개중에는 공감이 가는 글도 있고, 아닌 것들도 많다.

각 분야의 전문가가 아니라면, 통상 알기 힘든 영역이 반드시 존재한다. 차에 관심이 많은 사람일 지라도 독일 메이저 3사의 자동차 브랜드가 많은 파츠를 동일한 제품을 사용하는 것은 모르는 사람도 많다. 또한, 이러한 파츠들을 국산 브랜드가 어떤 부분에서는 수입해서 그대로 적용하는 것도 흔한 일이다. 그런데, 동일한 파츠를 사용한다고 해서 매번 동일한 '소용'이나 '효용' 또는 나아가 '품질'이 발생하는 것이 아닌가 보다. 만약 그렇다면 독일 메이저 3사나 국내의 차량 브랜드들이 서로 가격차이와 주행 품질에 차이가 있을리가 만무하지 않겠는가.


이런 애들 다 부품은.... 

BOSCH SPARK PLUG / AUDI / FIAT & ETC..

 

이러한 일반인들의 눈에 보이지 않는것, 다른 분야의 저변에는 어떠한 것이 깔려있는지 모르겠지만, 앞서 말했던 IT의 쉬프팅에서는 매번 '인프라스트럭쳐'의 변화가 있어왔다. 인프라라는 것이 일견 제품을 찍어낼 수 있는, 또는 서비스를 구성하는 '저변의 무언가' 로 통하기는 하지만, 나는 여기에 '시대적 환경'을 함께 언급하고 싶다. 이 시대적 환경에서 발생하는 기술의 변화는, '저변의 무언가'를 필연적으로 변화 시키는 힘이 되기 때문이다. 

IaaS 라면 이미 전산 바닥에 계신 분들은 귀에 딱지가 앉을 정도로 많이 들어보셨을 약어이다. Infrastructure as a Service, 전산의 인프라를 서비스로서 제공하는 이 개념은, 엄밀하게 이야기하면 예전부터 있어왔던 개념이다. 여러분은 인터넷 쇼핑몰을 만들고 싶은 경우 그저 호스팅 업체 또는 관련 사업을 제공하는 업체에 가입을 하고, 비용을 지불하여 쇼핑몰의 프레임을 만들고, 거기에 판매가 가능한 컨텐츠를 올릴 수 있으며, 카드 결재 연동을 위한 인프라를 서비스로서 제공받아 왔다. 제공 받아서 장사를 해 보다가, 만약 잘 안되서 접어야 하면 서비스 사용을 중지 신청 하면 되는 것이다. 이러한 용도로 사용되는 서비스의 내부 구조는 이를테면 잘 짜여진 IaaS, 또는 조금 더 발전적으로 생각한다면 PaaS, 즉 Platform as a Service 였다고도 할 수 있을테다. 쇼핑몰이나 웹을 그대로 서비스로 제공 했으니 말이다. 

출처 : IBM Site

이게 요즘 들어와 귀에 딱지가 앉도록 들리는 이유는 이 블로그에서도 수차례 언급한 적이 있는 클라우드 때문이다. 인터넷 기반 서비스의 기본 이라고 하면, 바로 서버와 스토리지, 그리고 인터넷에 연결될 수 있는 네트워킹, 바로 이 세가지를 서비스로서 제공하는 것을 클라우드에서 IaaS 라고 부른다. 이것이 IaaS 로 불리우듯, 새로운 기반 기술은, 모든이가 IT서비스를 통해 삶의 질을 높이는 시대의 요구가 빛어낸 데이터 폭발로 인해 모든 사업자에게 필요할 가능성이 높은 것이 되어버렸다. 이를테면, 할머니 할아버지가 페이스북에 송아지 사진, 두살바기 애엄마의 아이 사진과 걸음마 동영상, 고딩이 미팅때 찍은 퀸카의 얼굴등 기존의 Feature Phone에서는 그저 개인 전화기의 사진 폴더나 아는 사람간의 컨텐츠 전송등을 통해 극히 일부 공유되던 것들이, 이제는 서비스 레벨에서 공유가 되고 있기 때문이다. 

사진_위치_공유_JPG



이러한 공유를 처리하기 위해 이전과는 다른 형태의 인프라가 필요하게 되었고, 해외에서 촉발된 인프라의 변형은 그 사용성이 검증되어 국내에서도 다루지 않으면 안되는 상황이 되어버린 것이다. 

문제는, 전술 했듯이 우리가 시대의 흐름이나 또는 데이터의 소용에 대한 필요충분 조건을 먼저 만들어 내지 못했으므로, 이러한 인프라 기술의 이동에 대해서도 무지한 경우가 많다는 것이다. 오히려, 사업을 검토하고 그 필요를 먼저 깨닫는 것은 회사의 고위 임원이고, 하위의 엔지니어들이 그게 뭐에요 하고 되묻는 현상조차 발생하는 웃지못할 사태가 발생하게 된다는 것이다. 하지만 뭐, 이런 상황은 기술이 고착되면 또다시 순환되기 때문에, 큰 문제라고 생각하지는 않는다. 다만, 지금의 문제는 이러한 변화가 해외에서는 오랜기간 누적된 기술을 바탕으로 이루어지는데, 국내에서는 이 누적된 기술을 보유하고 있는 기술자가 드물어 '내재화'에 매우 어려움을 겪고 있다는 사실이다. 

우리나라에서 최근 벤처로서 성공하여 화두가 된 기업은 '카카오톡' 말고는 들어 본 바가 없다. 하지만 미국은 어떤가. '페이스북', '플리커', '티켓몬스터', 심지어 '애플' 등 그들의 벤처 순환고리는 도대체 실리콘 밸리 내에서 끊임이 없다. 물론 그들 중 대부분이 없어지고, 또 생겨나고, 다시 투자 받고 하지만, 우리나라는 정말로 그런 예가 별로 없다. 대부분 대기업과 공생관계, 또는 해외 본사의 파트너 뿐이다. 물론, 내가 지적하고 싶은건 이러한 기업 인프라가 아니라, '기존의 것'에 유착하여 '기존의 기술'을 판매해 왔기 때문에, 스스로 새로이 무언가를 만들다 실패할 때 발생하는 '저렴한 원가를 통한 서비스의 개발'이 별로 이루어 지지 않고 있다는 점이다. 



국내의 많은 대기업은 IaaS 를 만들고 싶어 한다. 이미 각 텔코에서는 구현에 성공한 기업도, 또 한번 구현 했다가 말아먹은 기업도, 이제 슬슬 시작하려고 하는 기업도 있다. 문제는, '저렴한 원가를 통한 서비스의 개발' 의 다른말인 '오픈소스를 통핸 서비스의 개발' 을 충분히 숙련자라 할 만큼 다루어 본 기술자가 부족하기 때문에, 이 새로운 해외 기술의 내재화에 시간이 걸리고 있다는 것이다. 더 나아가, 이 새로운 기술에 국내 벤더는 이름조차 올릴 곳이 없다. 나름 핵심적인 '가상화' 부분은 더 절망적이다. 뭐 그 문제는 해외에서는 사장되려는 PC용 OS 만들다 말아먹은 모 회사에 망쪼가 들던 시점에 이미 SaaS의 개념이 발생했던 것을 뼈아픈 예로 치고 고만하자. 

아무튼, 현재의 관계자들은 대부분 이런말을 한다. '그거 오픈소스 배우는데 얼마나 걸린다고. 이미 다 공개 되어 있으니 시간을 조금만 들이면 누구나 할 수 있는거 아닙니까.' 맞다. 맞는 말이다. 그런데 나는 이렇게 이야기 하고 싶다. 그 조금만 들이면 누구나 할 수 있는 시간을, 누구는 십수년 전 부터 베타 테스터로 참여하고, 버그를 레포트하고, 코드를 푸쉬하는 형태로 살아온 '성당과 시장' 의 시장의 사람들은 없지 않냐 라고. 전체 바닥을 통틀어 오픈소스 커뮤니티에 하나라도 가입하여 테스트나 버그 레포트를 해 본 경험이 있는 사람들, 생각보다 없다. 금방 배우고 설치해서 사용은 할 수 있겠지만, 문제가 발생하면 구글도 아니고 네이버에서 찾는 사람들이 '배워서' IaaS 를 구현할 꺼에요라고 말한다면 나는 '시간이 오래 걸릴거에요' 라고 말해줄 테다. 

예를 들어, '부트스트래핑' 에는 여러가지 방법이 있다. 베어메탈 박스가 주어졌을때, 또 매번 동일한 박스를 세팅한다고 했을때, 가장 간단한 방법은 이미지의 사용이다. 두번째가 복합적인 코드 레포지트리를 사용한 패키지 인스톨 정도가 될 수 있겠고, 세번째로는 이렇게 설치된 박스의 업데이트 지원에 대한 방법까지 고려한 내용이 있을 수 있다. 이러한 조촐한 세단계 조차 구현의 경험이 없거나 심지어 사용해 본 경험도 없다면 당장 머리에 그 구조가 떠오를리 만무하지 않을텐가. 

이아저씨가_떠오른다면_안습_JPG



한가지 더 재미있는 사실은, 바로 국내에서는 그다지 데이터 폭발이 많이 발생하지 않기 때문에 IaaS를 만들어 두었지만 잘 팔리지 않는다는 사실이다. 아니, 엄밀하게 말하면 '네트워크 인프라에 대한' 폭발은 발생 했으나, 모바일 기반 클라우드 서비스는 국내에 별로 없기 때문에 IaaS 가 인기가 없다는 사실이다. 이는, 아마존을 근간으로 많은 서비스를 내어 놓고있는 수많은 미국의 벤처들과는 달리, 국내에는 벤처 자체가 이미 별로 없기 때문에 IaaS 가 인기가 별로 없다. 그저 대학과 일부 업계의 관심있는 사람들이 이용할 뿐이다. 때문에 텔코들은 기존의 기업들을 자신의 IaaS로 끌어들이려 한다. 하지만 기존 기업의 관리자들은 이러한 새로운 환경이 전술했던 이유로 인해 어색하기만 할 뿐이고, 위에서는 비용 문제로 검토해 보라 하지만 도무지 기존의 상식으로는 긍정적인 대답이 나오지가 않는다. 그래서 IaaS를 구현한 업체들은, 대부분의 장비를 놀린다. 글쎄, 이러한 부분이 실제로 악순환이 될 지, 아니면 언젠가는 새로운 환경에 익숙해 져서 사용에 거리낌이 없어질 지는 잘 모르겠지만, 어쨌든 분명한건 있어도 잘 못쓴다는 것이다. 만들지도 못하고, 만들어 줘도 잘 쓰지 못한다. 그런데 준비도 안된 사람들이 만들겠다 하는 경우는 많다. 

어머나_터져버렸네_JPG



우리나라에서 Flickr 같은 서비스를 만들면 투자 받고 성공 할 수 있을까? 또는, Vimeo 같은 서비스를 만들면 어딘가에서 인수 해 줄까? 또는, 앞으로 등장할 새로운 무언가를 클라우드 기반의 서비스로 만들면, 투자를 받아서 사업을 키우거나 또는 동일한 사업을 하는 보다 큰 기업에 인수 합병 될 수 있을까? 모든 대답이 부정적이다. 작은 기업에서 만들면 큰 기업에서는 내부에 얼른 똑같은거 만들어라 지시하고, 자본력으로 '소녀시대'와 같은 모델을 앞세워 홍보해서 자사의 서비스를 만들 뿐이다. '페이스북' 의 영화에서 주커버그 처럼 남의 아이디어를 가지고 서비스를 만들었다면, 성공한 이후에 법정 싸움에서 정당한 비용을 뱉어낼 수 있어야 한다. 글쎄, '올레 톡'이나 '마이피플'이 '카카오톡' 에 비용을 과연 지불 할까? 하긴, '카카오톡' 조차 핵심 아이디어를 어딘가에서 가져오지 않았다는 부분에서는 자유로울 수 없으니 그저 서로들 쉬쉬 하면 되는 것일까. 



아무튼, 이 모든 이유로 인해 IaaS는 만들기도 쉽지 않거니와, 또 만들었을때 사용할 고객도 별로 없다. 다만, 대기업의 기존 인프라의 대규모 마이그레이션이 뒤따를 뿐이지 않겠는가. 그럼에도 불구하고 이렇게들 부나비처럼 만들고자 하는 것은, 바로 시대의 흐름이기 때문이며, 기술의 쉬프팅이 여기서 이루어지고 있기 때문일 것이다. 이러니 저러니 해도, 분명 먼저 구현해 낸 기업은 그들만의 내재화를 먼저 시작했다고 볼 수 있을 것이며, 이렇게 진행되고 발전된 내재화 뒤에는 '역량'이 쌓이게 되므로, 많은 인프라가 IaaS 위에서 동작 할 수 있을 것이라고 기대해 본다. 또한, 이런 내재화를 이룬 사람들, 즉 클라우드를 경험하고, 만들어 보고, 사용해 본 사람들이 나중에 신규 서비스 제작에 투입될 경우에 발생하는 인력에 대한 재교육 등의 미래 사건을 통해, 점차 사용자는 점진적으로 늘어나지 않을까 싶다. 

IaaS 세미나를 진행하는 모 담당자에게 자료를 전달했다. IaaS 를 구현할때 각 포인트에서 기술적으로 중요한 부분과, 이를 해결하기 위해서는 컨설팅을 받는것이 좋다, 라는 내용의 어찌 보면 회사 입장을 대변하는 뭐 그런 내용의 자료였단다. 모 담당자의 연락은, '내용이 부실하니 보충했으면 좋겠다, 혹시 샘플 없는가' 라는 입장이었다. 컨설팅이란게 계약 전에 구체적인 내용을 제시하는 것이 맞는지는 잘 모르겠지만, IaaS의 경우 구현하려는 목적과 사이징에 대한 정보도 없이 내부 개발자에게 'Quick Install' 에 가까운 해답을 원하는 것이라면, 글쎄, IaaS란 여태 서술한 대로 '카톡 잡아 먹듯이' 해서 만들 수 있는게 아닙니다 일테다. 그나마 그마저도 어도비 Air를 사용해서 데스크탑용을 구현 했으니, phonegap 이나 appcelarator 를 알고 있는 자들에게는 얼마나 웃을일일텐가. 


옛다_샘플_JPG




길고 구질구질하게 썼지만, 인프라에 발생하는 기술이동은 완전 새로운 것들로 이루어지는 것이 아니다. 따라서, 이러한 잘알려진 패키지들의 조합을 통한 새로운 인프라의 구성에 내재화가 필요하다는 말은, 돌려 말하면 '오픈소스'의 사상과 이에대한 기술이 뛰어난 인재들을 기업 내부에 키워야 하며, 이들을 통해 오픈소스에 기여할 때 우리가 원했던 시대적 흐름이 발생할 가능성이 높아질 것일테다. 


클라우드 IaaS 를 만들기 위해 필요한 가장 첫 단추는, 발전된 시각에서의 Amazon / Rackspace 서비스의 분석이다. Compute 와 Storage 는 시작이 될 수는 있겠지만, 실제 고객이 구성하려는 서비스에는 부가적인 많은 것들, 이를테면 DB, Queue, Load Balancing 등이 필요하게 된다. IaaS 는 '가상화' 라는 단순한 내용으로 접근하는 것이 아니라, 장기적으로 어떠한 인프라들을 서비스로 제공할 지에 대해 명확하게 깨닫지 않고, '샘플 없나요?' 따위로 접근하게 된다면 심각한 문제가 된다. 저런 멘트를 던지는 담당자는 필시 프로젝트에 손을 대지 못하게 하는 것이 정답. 

처음에 말했지만, 클라우드 구현은 '모방' 이 필요한 부분이다. 헌데, 가만히 보면 각 구성요소는 무엇인지 알겠는데 이것들을 어떻게 '조합' 했는지는 참 모를일이다. 바로, 이게 기술인 것이다. 우리의 현대 자동차나 독일의 메이저 3사가 가지고 있는, 그들만의 조합의 방법이 바로 기술이 되는 것이다. 부품의 베이스는 Bosch 와 같은 업체 또는 각 국가의 내부 인프라에 속한 기업들이 생산해 내는것으로 동일하겠지만, '완성차' 라는 것은 각 브랜드 별로 그 색깔과 기능이 확인히 다르게 된다. 바로 이부분이 모방하기 힘들기 때문에 노련한 사람들, 그리고 경험있는 사람들의 분석을 바탕으로 한 '창의'스러운 '모방' 이 필요한 것이다. 물론, 우리가 보다 좋은 인프라, 즉 오픈소스의 수많은 컨트리뷰터를 가지고 있다면 이런 고민 하지 않아도 된다. 굳이 우리 현대차를 중국산 차량과 비교하지 않는 것과 마찬가지의 맥락에서 말이다. 하지만, 우리는 분명 먼저 서비스를 만들지 못한 후발주자 이며, 인력을 확보하지 못한 모방자라는 사실, 그리고 이해 없이 단순히 우리도 만들어야 하지 않을까 와 같은 접근은 매우 실망스러운 결과를 가져 올 수 밖에 없을 것이다.  

 





매번 느끼는 거지만, 오픈소스는 정말 이제는 거부할 수 없는 흐름이다. 원래 이쪽을 보기는 했지만, 이제는 무엇을 검색하더라도 오픈소스가 걸리지 않는 경우는 드물다. 심지어 겜보이 조차 오픈소스로 만들어대는 세상이니 말이다. 따라서, 누가 많은 오픈소스를 알고 있느냐의 싸움이 아니다. 누가 이 환경에 익숙하며, 필요한 것을 빨리 경험해서 자신의 것으로 만드는가의 싸움 일 것이다. 


DIY Open Source Game-boy



우주선도 만들겠다. @_@ 

( younjin.jeong@gmail.com, 정윤진 )