Nov 102013
 

최근에 지인분께서 저희 구인공고 포스팅을 공유해 주셨는데 그 글에 이런 코멘트가 달렸습니다.

Screen_Shot_2013-11-10_at_8.00.47_PM

 

 

코멘트하신 분 입장에서는 아마도 의아하셨을 것 같습니다.  Rails?? Backend??

다른 분들도 비슷한 의문을 가지실 것 같아서 그런 선택을 한 이유에 대해  적어 보려고 합니다.

 

웹서비스를 만드는 데 최적화된 Rails

잘 아시겠지만 스타트업은 6개월 이후를 보고 엔지니어링을 할 수 없습니다. (대개는 그렇습니다.) 우리가 지금 만드는 것이 내일도 가치가 있을지 확신이 없습니다. (있다면 그건 검증되지 않은 자기 확신이겠지요.) 그 가치는 고객의 판단에 의해 인정되고 그런 다음에야 우리는 그 다음 가치를 구현해 나갈 수 있습니다. 그래서 빠르게 구현하고 검증을 받는 것이 가장 중요한 일입니다. 그게 Lean Startup이 일을 하는 방법입니다.

저희는 3년 전 가장 빠른 웹서비스 구현을 위해 Ruby on Rails를 선택했습니다. 덕분에 빠르게 프로토타잎을 만들 수 있었고 중간에 Pivot 또한 빠르게 할 수 있었습니다. 1) RESTful 서비스로 모바일 SDK와 통신을 하고 2) Dashboard가 서비스 가치의 핵심 중 하나인 저희 서비스에서는 올바른 선택이었다고 생각합니다.

언젠가 저희도 Javascript 기반의 Front-end로 넘어간다면 Rails의 가치가 급격히 떨어지겠죠? 그렇게 만들어 주실 Front-end Engineer를 구하고 있습니다.

 

Rails의 성능과 한계

twitter는 Rails로 구현된 전세계에서 가장 큰 서비스였습니다. 그들도 처음 (2006년)에 Rails로 서비스를 시작해서 상당히 오랜 기간 동안 그 첫 선택을 유지해 왔습니다. 그러다 2010년부터 Scala로의 이전을 시작으로 2011년  Java로 이전 등을 통해 점진적으로 이전해 갔습니다. 2011년 3월 11일, 하루에 1.7억개의 트윗이 포스팅될 때에도 서비스의 상당부분은 Rails였습니다. InfoQ의 기사를 읽어 보시면 그들이 어떤 도전을 겪었고 왜 Rails에서 다른 언어, 프레임워크로 이전했는지를 확인하실 수 있습니다.

저희 AD fresca가 twitter가 겪었던 그 변화의 시점에 도달한 것 같지는 않습니다. 그렇다면 저희가 US$10M 펀딩을 받았겠죠?!?! 🙂

twitter가 그랬듯이 저희도 언젠가는 Scala로 넘어가고 언어도 Java로 변경해야만 하는 시기가 올 거라고 생각합니다. 하지만 현재 (한달에 6억개의 API call을 처리하는 지금은)로서는 많은 개발 자원을 투자해야 하는, 더 효율적인 언어/프레임워크 등으로의 이전하기보다는 클라우드 상에서 인스턴스 몇 대를 더 사는 게 더 저렴한 선택이라고 생각합니다. Again, 역시 저희 시스템을 새롭게 바꿔 주실 Back-end Engineer도 구하고 있습니다.

 

하나의 ORM

저희 시스템의 기술적, 비즈니스적 요구사항 중 하나가 ‘1) 데이터 모델을 지속적으로 빠르게 변경해야 하고 2)  하나의 데이터 모델을 여러개의 서로 다른 어플리케이션 서버 (다양한 API 서버, Dashboard, workers 등)에서 사용할 수 있어야 한다‘입니다. 즉 2개 이상의 ORM을 이용해서 데이터 모델을 관리하는 것은 저희 팀이 감당할 수 있는 수준을 넘어섭니다. (최소한 저희 크기의 조직에서는 그렇습니다.) 저희도 초기에 twitter가 Scala로 이전하는 것을 보고 고민을 많이 하다가 하나의 ORM이 훨씬 효율적이라고 판단해서 프로젝트를 드랍했던 적이 있습니다.

하나의 데이터 모델을 여러 어플리케이션에서 사용하기 위해서 저희는 데이터 모델에 대부분의 코딩을 하고 독립된 리파지토리에 별도로 저장, 관리합니다. 그리고 그 리파지토리를 git의 submodule 기능을 이용하여 모든 어플리케이션에서 공용으로 사용하고 있습니다.

 

Rails Forever!

저희는 빠르게 프로토타이핑을 하고 빠르게 서비스를 만드는 데 Ruby on Rails만한 언어-프레임워크 조합도 없다고 생각합니다. 아직은요. 물론 영원한 것은 아무 것도 없으니 Forever는 아닙니다. Rails, we still love you though. 😉

저희가 빨리 성장해서 멋진 기술을 써서 여러분들로부터 환호(!)를 받을 수 있는 날이 오기를 기대합니다.

 

Update: 알고보니 원래 코멘트를 해 주신 분께서는 한국에서 Backend와 Rails를 잘 아는 사람은 구하기 어렵겠다라는 의미로 하신 말씀이었다고 합니다. 저는 Rails 콤플렉스가 있나 봅니다. 흑흑흑. 🙂