Node.js & Go: スタートアップのテクノロジーの選択

https://www.youtube.com/watch?v=Iebb5dXaScE

1 comment | 1 point | by WazanovaNews 3年弱前 edited


Jshiike 3年弱前 | ▲upvoteする | link

GopherCon 2014における、PoptipのCEOであるKelsey Falterの講演。同社はCNN、ESPN、L’Orealなどメディア & コンシューマグッズ大手に、ソーシャルメディアコンテンツの分析やアンケートのプラットフォームを提供しているNew Yorkのスタートアップです。

最初はNode.jsで開発したが、スタートアップにありがちな大手顧客の対応のためのスケールアップと、平行して資金調達活動を続ける中での時間がないバタバタの状況で、

  1. インスタンスが落ちるとシングルポイント障害点になってしまう。ホストしているサーバの障害やアプリのクラッシュなどが全体に影響する事態が起きた。
  2. サービスのほとんどが単一のプロセスで処理されていた。
  3. ピーク時のCPUとネットワークの負荷がかなり高くなった。
  4. 水平にスケールさせることができなかった。HTMLの処理、Twitterデータの処理、ソケット接続のステートの維持が個々のプロセスに分かれていなかった。抽象化が十分にできていなかった。
  5. Node.jsのバージョンアップの頻度がほぼ毎週と高く、とてもキャッチアップしきれなかった

となり、最終的には、ほとんどをGoで書き直したことで、

  • Tweetの処理時間が64%改善
  • プロセスをうまくできて、Separation of Concernを実現

したという話ですが、

ポイントとしてはNode.jsの問題ではなく、一般論として スタートアップが、深く理解できてない & version 1.0になっていない最新のテクノロジーへの依存度を極端に高くなるつくりかたをするのはリスクが大きいということかと。

Hacker Newsのコメントにも、以下の内容がありました。

クオリティが高く、メンテ性の高いNode.jsアプリのつくり方を習得するには時間がかかる。経験のないスタートアップにその時間はない。JavaScriptが書けるからという理由でNode.jsを選択しても、Node.jsの力を引き出せるようになるまではもっと学びが必要。

1.と2.はNode.jsでありえる話しだが、Goをはじめ他のアーキテクチャーでも工夫しない限りは同じ問題が起こりえるのではないか。 3. 確かにNode.jsはメモリの消費が多いが、単一のサーバでの運用をしなければ問題にならないのでは。 4. Node.jsは他のテクノロジーと同様にスケールはさせられる。Heroku, AWSにデプロイして、好きなだけの数のインスタンスを走らせてスケールできるはず。チームの経験値の問題では。

#nodejs #go

Back