Amazon Web Service For Startups

최근에 모바일 서비스를 Amazon Web Service(AWS)를 이용해서 개발하고 운영해 보았다. 주변 분들에게 AWS를 이용한다고 하면, 첫 반응은 “비싸지 않나요?” 이다. 비슷한 사양의 서버를 직접 구매할 때와 비교해보면 비싸보이기는 하지만, 다른 측면에서 살펴볼 때 그렇지 않은 점들이 있어서, 간단히 내 생각을 정리해본다.

스타트업이 필요로 하는 것

AWS가 어떤 장점이 있는 지를 알기 위해서, IT 관련 비즈니스를 하는 스타트업은 어떤 어려움이 있는지를 짚어보아야 할 것 같다.

스타트업이 제품을 성공시키기 위해서는 여러 문제들을 극복해야 한다. 수없이 많은 문제들이 있지만, 이러한 문제들은 결국 다음 3가지로 귀결되는 것 같다.

  1. 부족한 인력
    • 언제나 할일에 비해 일할 사람은 턱없이 부족하다.
  2. 부족한 자금
    • 스타트업은 회사 매출이 없는 상황이기 때문에, 창업자가 여유가 되어서 자본을 많이 넣지 않은 이상 자금 사정은 힘들다.
  3. 수시로 변하는 시장상황
    • 좋은 아이디어로 멋진 제품을 들고 나왔는데, 시장 분위기가 완전히 바뀌기도 한다.

스타트업 뿐만 아니라 보통의 회사들 역시 위의 3가지 어려움에서 자유롭지 못하지만, 스타트업의 경우에는 이 3가지를 어떻게 극복하느냐가 초반에 ‘생존’을 결정 짓는 것 같다. 바꾸어 말하면, 스타트업은 살아남기 위해서, 제품을 ‘적은 인력’으로 ‘빠르게’ 개발해서 내놓고 운영할 수 있어야 한다. 이를 위해서는, 해결해야 할 문제를 정확히 정의하고, 그 문제만을 위해서 달려야 한다고 본다. 또, 이 문제를 해결함에 있어서도, 집중해야 할 부분과 그렇지 않은 부분을 잘 구분한 뒤에, 집중해야 할 부분에는 인력을 투입하고, 그렇지 않은 부분은 외부의 도움을 받아야만, ‘적은 인력’으로 ‘빠르게’가 가능하다고 생각한다.

AWS가 도움을 주는 것

AWS의 장점은 application 서버의 개발과 운영하는데에 도움을 받을 수 있는 부분이 생각보다 많다는 점이다. 일반적인 ‘Infrastructure’ 수준에서 virtual server를 제공하는 하는 것을 넘어서서, 개발과 운영에 필요한 여러 시스템을 ‘Platform’ 수준에서 제공한다. 실제로 AWS를 이용하면서, 내가 도움을 받는 것들은 다음과 같다. 괄호안은 AWS에서의 서비스 이름이다.

  • 실시간 서버 할당 (EC2)
  • 물리적으로 분리된 곳에 DB를 설치하고, 문제 발생시 자동 failover (RDS)
  • 대용량 데이터 sharding 처리 (DynamoDB)
  • Message Queue 서비스 설치 및 운영 관리 (SQS)
  • 대용량 데이터 분석을 위한 hadoop 설치 및 운용 (Elastic MapReduce)
  • 로드 밸런스 및 SSL 처리 (Elastic Load Balancer)
  • 서버 모니터링 및 알람(CloudWatch)

위 작업들은 시간이 꽤 드는 일이고, 어떤 것들은 전문적인 노하우가 필요한 것들도 있다. 예를 들어, DynamoDB를 보자. 최근에 대용량 데이터를 처리하기 위해 NoSQL을 사용하는 경우가 많다. 그런데, NoSQL의 하나인 HBase 같은 경우에 성능은 좋지만 설치부터가 꽤나 어렵다. 또, 실제로 운영에 들어가면, 운영 경험 없이는 알 수 없는 문제들이 발생해서, 서비스 장애로 연결되는 경우를 종종 본다. 설치가 쉬운 걸로 알려진 MongoDB의 경우에도 Lock 문제, 데이터 유실 문제 등이 지속적으로 제기되고 있어서, 장애없이 운영하기가 그리 녹녹치 않아 보인다. DynamoDB는 NoSQL을 아마존에서 직접 운영하고, 개발자는 API를 통해서 서비스를 이용할 수 있도록 해준다. 안정적으로 운영하는 역할과 책임은 아마존에서 가져가는 방식이다. NoSQL의 장점을 살려 Application 서버를 개발하되, 운영의 미숙함으로 생기는 위험요소(Risk)는 아마존에 넘길 수 있다.

Application 서버 개발시에, 처리 효율성을 높이기 위해 비동기적으로 처리할 수 있는 것들은 ActiveMQ, RabbitMQ등의 Message Queue(MQ) 솔루션을 이용하곤 하는데, 이러한 소프트웨어도 서버에 설치하고 문제없이 운용하려면 꽤 정성이 필요하다. 그런데, AWS의 서비스 중에 SQS라는 서비스를 이용하면, API를 통해서 바로 MQ 서비스를 이용할 수 있게 된다. DynamoDB와 마찬가지로 운영을 아마존에서 하는 방식이다.

이렇게 platform 레벨에서 제공되는 여러 서비스를 이용하면, 레고 블록을 쌓듯 꽤 빠른 시간 안에 적은 노력을 들여 고객이 원하는 제품을 만들어내고, 운영할 수 있다.

또한, AWS의 특성을 살려 직접적인 서버 비용을 많이 줄일 수 있는 경우도 있다. 대용량 데이터의 병렬 처리를 위해서 많이 사용하는 것이 Hadoop MapReduce이다. 데이터 분석은 보통 일정 주기로 처리가 되는데, AWS의 서비스 중의 하나인 Elastic MapReduce를 이용하면 서버를 항상 구비해둘 필요 없이 분석해야 할 시점에 바로 Map Reduce용 서버 instance를 만들어서 데이터를 처리하고 작업이 끝나면 instance를 삭제하는 것이 가능하다. 그리고, 이 모든 것이 자동화가 가능하다. 24시간 서버를 확보할 필요없이 10분정도만 서버를 사용하고, 사용한 시간에 대해서만 요금을 지불하면 된다.

예전에 FriendFeed의 창업자이고, 후에 회사를 Facebook에 매각해 Facebook의 CTO을 지냈던 Bret Taylor는, FriendFeed를 하면서 했던 가장 큰 실수는 무엇이냐는 질문에 클라우드 서비스를 쓰지 않은 것이라고 했다. 서버를 구매하고 설치하고 관리하느라 시간을 많이 뺐겼기 때문이라고 이유를 밝혔다.

비단 스타트업 뿐만 아니라 큰 회사 중에서도 클라우드를 도입한 사례는 많다. 특히, 미국 내에서 HTTP나 YouTube보다도 트래픽이 많은 Netflix의 경우 본래의 비즈니스에 집중하기 위해, 별도로 서버를 구축하지 않고 AWS를 적극 활용하고 있는 것으로 알려져 있다.

마치며

AWS를 이용해서 2개 서비스를 구축해보았고, 이제 1년 정도 된 것 같다. 그리고 아직 써보지 못하고 잘 알지 못하는 AWS의 기능도 꽤 많다. 발전 속도도 빨라서, 잠깐 신경을 못쓰면 놀라운 기능들이 들어가 있어서 깜짝 놀라곤 한다. 요즘은 AWS를 바라보면서, 기존 서버를 대체하는 정도가 아니라, AWS의 여러 기능을 이용해 예전에는 구현하기 매우 힘들던 것들도 가능하지 않을까 생각하게 된다. 앞으로 엔지니어, 특히 서버엔지니어의 역량은 알고리즘, 네트워크, DB 등을 잘 이해하고 있느냐를 넘어서, 얼마나 AWS를 비롯한 클라우드 서비스를 잘 이해하고 활용할 수 있느냐에 의해 결정되는 것이 아닐까 조심스레 예측해본다.

3 thoughts on “Amazon Web Service For Startups

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s