brunch

You can make anything
by writing

C.S.Lewis

by 스도리 Oct 31. 2017

스타트업 CEO를 위한 짧고 굵은 개발 지식

3. 어디에 서버를 구축할 것인가

아니 이게 무슨 소리인가? 서버를 구축하라니. 예쁘고 아기자기한 핸드폰 앱을 만드는데 시커먼 서버가 필요하다는 사실만큼 개발을 모르는 CEO에게 공포스러운 말은 없다. 그러나 크게 걱정하지 않아도 된다. 스타트업을 위한 작고 가벼운 서버들이 많이 있기 때문이다. 


웹서버, DB서버, 파일서버 할 것 없이 스타트업의 선택지는 클라우드 서버 단 한가지이다. 수백에서 수천만원에 달하는 비싼 하드웨어를 구매할 필요 없이 월 5 ~ 10만원 수준이면 클라우드 서버를 사용할 수 있기 때문이다. 스타트업들은 물론이고, 대부분의 회사들이 대중적으로 사용하는 클라우드에는 아마존 AWS, 마이크로 소프트의 Azure, 구글 클라우드 등이 있다. 다른 회사들이 많이 사용한다는 사실은 매우 중요하다. 많은 사용자가 있을수록 여러분이 문제에 봉착했을 때에 비슷한 문제를 이미 풀어낸 다른 사용자의 해결 방법을 찾아내기 쉬워지기 때문이다. 앞에서 언급한 클라우드 업체를 사용한다면 구글이나 스택오버플로우에서 검색해보는 것만으로도 문제 상황에 대한 해결책을 찾아낼 수 있을 가능성이 높다. 또한 이러한 업체들은 대개 잘 갖추어진 API와 개발 문서를 가지고 있기 때문에 시스템 구축에 필요한 것들을 직접하지 않고도 이미 갖추어진 것들을 사용할 수 있다.


웹서버를 하나 구축한다고 가정해보자. 클라우드 서버를 사용한다면, 생각보다는 짧은 여정이 될 것이다. 물론 서버를 구축해본 경험자가 없다면 조금 험난할 수도 있겠지만, 서버를 직접 구매하는 것보다는 훨씬 빠른 해결책이 될 수 있다. AWS를 기준으로 설명한다면, 우선 간단한 가입절차를 거쳐서 EC2라고 불리우는 범용 클라우드 서버를 하나 생성하면 된다. 


amazon web service의 EC2는 가장 쉽게 생성할 수 있는 클라우드 서버이다


EC2는 원하는 성능에 따라서 여러 종류의 instance들이 있는데, 우리는 이것들 중에서 가장 성능이 떨어지는 것, 혹은 두번째 정도를 선택하면 된다. 두번째로 성능이 떨어지고 값싼 이 instance는 구형 노트북 수준의 CPU 클럭과 겨우 1GB의 메모리를 가지고 있을 뿐이지만 1분에 500회 정도의 요청은 가볍게 처리할 수 있는 성능을 보여준다. 이 성능은 동영상 인코딩이나 복잡한 연산 같은 특별한 처리가 필요한 것이 아니라면 일반적인 스타트업의 서비스를 처리하는데 충분한 성능이다. 이 서버가 트래픽을 감당하지 못하고 다운된다면 서비스가 궤도에 진입했다는 뜻이며, 여러분의 서비스가 이렇게 될 확률은 상당히 낮으니 미리 걱정할 필요는 없다.


하지만 걱정하는 상황이 벌어진다면 어떻게 해야할까? 직접 서버를 운영하는 상황이라면 매우 난감한 상황에 봉착할 것이다. 서버를 새로 발주를 넣어야하고, 그 서버가 도착하는데도 꽤나 시간이 필요할 것이다. 서버를 증설하는 동안 서비스는 계속해서 불안정한 상황에 놓여있게 될 것이며, 사용자들의 불만은 폭주할 것이다. 그러나 클라우드 서버를 사용하고 있었다면 이런 상황을 걱정할 필요가 없다. 간단한 설정 변경으로 서버를 더 높은 성능을 가진 instance로 변경할 수 있으며, 서버의 instance를 이미지로 만들어서 똑같은 서버를 복제할 수도 있다. 수강신청이나 티케팅처럼 단기간에 많은 트래픽이 몰리는 경우에 대비해서 다이나믹하게 서버를 증설, 감설할 수 있는 load balancing 기능도 사용할 수 있다.


위에서 살펴본 것처럼 클라우드 서버를 사용하지 않을 이유는 없다. 비용 역시 스타트업에게도 부담스럽지 않은 수준이어서, 웹서버, 파일서버, DB서버를 모두 사용하더라도 월 10만원이 안되는 수준에서 운영할 수가 있다.


이 서버들이 정말 다 필요하다고?


여기서 하나의 의문이 생길 수 있다. 웹서버, 파일서버, DB서버, 관리서버가 정말 모두 필요한 것일까? 정답은 '그럴 수도 있고, 그렇지 않을 수도 있다'이다. 사실 모든 시스템을 하나의 서버에 집어 넣는 것도 가능하다. 흔히 개발 중에는 편의상 한 곳에 몰아서 개발을 한 뒤에, 서비스 오픈 전에 기능에 따라 분리하는 방법을 쓰기도 한다. 하지만 시간이 지남에 따라서 언젠가는 분리가 필요해진다는 것은 피할 수 없는 사실이다. 특히 파일 서버의 경우 대부분의 클라우드 서비스에서 웹서버 용도로 제공하는 instance의 용량이 10GB 이하여서, 동영상이나 이미지 혹은 음악 같은 컨텐츠를 다루는 서비스라면 사용자가 조금만 증가해도 서버의 용량은 가득찰 것이 분명하다. (어느 정도 접속자가 있는 서비스라면 웹서버에서 생성하는 로그만으로도 10GB는 금방 채울 수 있다) 파일 서버 챕터에서 더 자세하게 다루겠지만 가장 위협적인 공격은 파일 업로드를 통해서 이루어지기 때문에 보안 측면에 있어서도 웹서버와 파일 서버의 분리는 반드시 생각해봐야 하는 문제이다.

작가의 이전글 스타트업 CEO를 위한 짧고 굵은 개발 지식
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari