AWS와 같은 IaaS 는 스타트업에게 빠른 시간에 비교적 저렴한 가격으로 하드웨어 인프라를 구성하게 해주었습니다. 어찌 보면 IT산업에 있어 축복일 수도 있겠습니다.
이글에서는 개발서버는 왜 클라우드에 있으면 안되는지 저의 아주 지극히 개인적인 의견을 적어 보려고 합니다. 다르게 생각 하시는 분들도 많겠습니다만, 각자의 관점 아닐까 합니다.
첫째, Infra dependency
AWS와 같은 클라우드는 상상을 초월할 정도의 서비스와 기능을 자랑합니다. 그래서 조금씩 빠져들게 됩니다. 처음엔 비용도 걱정할 수준이 아닙니다. 그러나 시간이 점점 지나면서 비용이 기하 급수적으로 늘어나고, 이전을 하거나 차라리 on-premise로 구축하는게 낫겠다 싶을때쯤에는 이미 거대한 늪에 빠져, 나올 수가 없다는 것을 알게 됩니다.
개발 서버가 클라우드에 있지 않게 되면, 개발시에 1이라도 infra independency를 고민하게 되어 있습니다. 예를 들어, 파일을 저장할때 S3에 무조건 저장하는 루틴을 작성하는게 아니라, FileRepositoryRouter 같은것을 만들게 되고, 환경에 따라 file system에 넣거나 S3 에 넣거나, 원한다면 scp로 원격지에 넣는 Strategy Pattern으로 작성할 가능성이 더 높습니다(혹은 jCloud와 같은 layer를 고려할 수도…). 같은 성능을 훨씬 저렴한 비용으로 Azure 가 제공한다면 Azure로 갈아타지 않을 이유가 없지 않겠습니까?
둘째, 개발시의 비용
개발서버는 항상 켜져 있지를 않습니다. 보통은 개발자가 출근하면 사용되고 퇴근하면 사용되지 않습니다. 물론 scheduling 을 하면 되겠죠. 그러나 대부분은 그냥 켜둘게 뻔합니다. 우리들의 개발 사이클은 일정하지가 않거든요 ^^;
우리는 개발서버에 엄청난 stress test를 때려야 합니다. 클라이언트 10대쯤 load-runner 로 연결하여 백만 부하를 일으켜야 합니다(물론 로컬호스트에서 ab로 부하를 일으킬 수도 있겠습니다만). 이런 테스트에도 애플리케이션이 살아 남는지, long lasting 하는지 Instrument/Profiler를 켜두고 일주일씩 돌려봐야 할 수도 있습니다. 데이터베이스에는 Fake 레코드 천만건씩 넣어봐야 합니다. 요금 폭탄을 맞겠죠. 제가 생각 하기에, 아마도 개발 서버가 클라우드에 있는 기업은 이런 테스트를 하지 않을 거라고 생각 하고 있습니다. 아마존 청구서를 받은 경영자가 가만있지 않을테니까요.
셋째, ESXi, Xen, Open Stack.
Bare metal 한대로 OS하나 올리던 시대가 이제 아닙니다. 비교적 저렴한 하드웨어 한대(혹은 여러대)로 리소스만 충분히 갖춰준다면 VM으로 얼마든지 private cloud를 on-premise 에 구축할 수 있습니다. TOC야 계산기 두드려 봐야 하겠지만, 오늘만 살고 죽을 거 아니라면, 충분히 비용을 감쇄할 수 있을 거라고 보고 있습니다. 서비스를 클라우드에 올리는 장점은 많이 있습니다. auto-scaling을 할 수있고, 강력한 네트웍 인프라가 제공됩니다. 하지만 이런것들은 개발서버에서는 필요 없는 것들입니다. 사내에서 개발시에만 접속되면 되기 때문입니다.
물론 단점도 있겠습니다. 운영서버의 환경을 테스트 해볼 수 없기 때문에 그만큼 위험도 있을 것입니다. 그런 상황이라면 릴리즈 직전 full test를 위해 클라우드에 스테이징 서버를 올렸다 내리는것도 고민해 볼 수 있을 것입니다.
EOF.
