CODEOK.NET

Page history of 스타트업을 위한 기술 스택



Title: 스타트업을 위한 기술 스택 | edited by Youngrok Pak at 5 years, 4 months ago.

필자가 스타트업 개발자들에게 가장 많이 받는 질문은 기술 스택을 어떻게 구성할 것인가이다. 심지어 개발자가 아닌 창업자들도 기술 스택에 대해 자문을 구해오곤 한다. 그래서, FAQ 삼아 스타트업에게 적합한 기술 스택을 정리해보기로 했다.

본론으로 들어가기에 앞서 잠시 스타트업의 정의에 대해 합의하고 싶다. 필자는 린 스타트업의 저자 에릭 리스의 정의를 좋아한다.

A startup is a human institution designed to create a new product or service under conditions of extreme uncertainty.

쉽게 말해서 스타트업은 아주 불확실한 일을 하는 팀이라는 것이고 이 글에서 제시하는 기술 스택 역시 이런 특성을 고려할 것이다.

경고:이 글은 코덕넷의 다른 기사와 마찬가지로 객관적이고 중립적인 관점이 아니라, 필자의 경험과 지식에 따라 과감하고 단정적으로 기술을 평가할 것이다. 만일 자신이 사용하는 기술에 대한 부정적인 견해를 접했을 때 기분이 상하는 성격의 소유자라면 이 글은 더 이상 읽지 않기를 권한다.

서버 프로그래밍 언어와 프레임워크

보통 스타트업의 기술 선택에서 가장 중요한 것은 서버 프로그래밍 언어와 프레임워크다. 기술 스택의 다른 모든 것들을 합한 것보다 더 중요하다. 스타트업의 서버 프로그래밍 언어로 선택할 만한 것은 다음 세 가지 중 하나다.

  • 파이썬
  • 루비
  • 자바스크립트 (Node.js, io.js, ...)

다른 것들은 별로 고려할 필요가 없다. 한 때 자바도 웹 개발용으로 각광을 받았으나, 현 시점에서 자바와 위의 세 가지 대안의 생산성 차이는 몹시 크다. 자바는 이제 좀더 미션 크리티컬한 분야로 넘기도록 하자. 혹시 PHP를 생각하고 있을지 모르겠는데, PHP는 이제 미래가 없다. 간혹 간단한 웹사이트는 PHP가 가장 빠르다는 주장도 있었으나, 요즘은 PHP가 간단한 웹사이트를 만드는 시간에 Rails나 Django는 제법 복잡한 웹사이트에 어드민까지 붙여놓을 수 있다.

언어를 선택하고 나면 프레임워크도 거의 결정되는 거나 마찬가지다.

  • 파이썬 - Django
  • 루비 - Ruby on Rails
  • Node.js - express.js

물론 다른 선택도 있으나, 이 세 가지 프레임워크는 널리 쓰이기도 하고, 딱히 큰 단점이 있는 것도 아니라서 다른 대안을 선택한다고 해도 특별히 나은 선택이 되기는 어려울 것이다. 

셋 중에 개발 생산성이 가장 뛰어난 것은 Ruby on Rails다. 다만, 그 높은 생산성을 얻기까지는 Rails를 깊이 파고 들어야 하고, 트렌드를 잘 따라가야 한다. 루비 언어를 깊이 아는 것보다 Rails를 깊이 아는 것이 더 중요하다. 서드 파티 코드를 넣기가 쉬워서 뭔가 구현하고 싶은 게 있을 때 찾아보면 거의 다 있고, 아주 쉽게 설치할 수 있기 때문에 얼핏 어려워 보이는 기능을 순식간에 구현하곤 한다. 그래서 이 맛에 길들여진 Rails 개발자들은 다른 프레임워크를 거부하는 경우를 흔히 볼 수 있다. 설령 여러 가지 이유로 다른 언어를 쓰더라도 웹 개발만큼은 Rails를 버리지 않는다.

반면, Django는 초기 학습 장벽은 비슷하지만 그걸 넘어서고 나면 그 다음에는 별로 학습할 게 없다. 그 다음부터는 Django보다 파이썬이 중요하다. Ruby on Rails는 문제를 Rails로 해결한다면, Django는 문제를 파이썬으로 해결한다. 그래서 중급 이상으로 올라서는 것은 Django가 더 빠르나, Django를 계속 깊이 판다고 해서 큰 이득이 있는 것은 아니다. 개발 생산성의 성장 그래프를 그린다면 다음과 같을 것이다.

Node.js는 요즘 인기를 끌고 있긴 하나, io.js의 분화 같은 일도 있고, 콜백지옥도 아직 완전히 해결된 상태가 아니다. express.js도 훌륭하지만 아직 Django나 Rails에 비하면 부족함이 있다. 그래서 일반적인 웹사이트나 API 서버를 개발한다면 Node.js는 파이썬이나 루비에 못 미친다. 그럼에도 불구하고 세 가지 권고안 중에 들어가는 이유는 전통적인 스타일의 웹과 다른 방식의 설계가 많아졌기 때문이다. 일명 웹앱 스타일로 불리는 방식의 경우 Node.js가 유리한 점이 있다. socket.io

데이터베이스

프론트엔드

서버 호스팅

클라우드

이미지

OS

 

배치(deployment) 

작업 큐

모니터링

데이터 분석

기초적인 성능 관리 

 

 

 

 

Wiki at WikiNamu