node.jsで簡単なチャットアプリを作成したのですが、もしLINEのような大規模アプリの場合、チャットサーバーはnode.jsで大丈夫なんですか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
何も問題ありません。
理由は2つ
- ベンチャー: 開発速度の為にスクリプト言語を選ぶという選択をすべき
- 大企業: TypeScriptがあるから型の問題は解決
Webサービスを成功させる最も重要な要素は開発スピードです。
自分が得意とする言語、最も作業が早い言語で開発するべきです。
Webサービスは基本的に一山当ててやるぞという意気込みでやるものですが、
実際にはポシャって消えるサービスの方が大量にあるので、
作っては壊してを繰り返して大量にサービスを作る事になります。
実際に人気アプリを生み出した例はいくつかあるので、私の知っている範囲で紹介します。
共通しているのは「速度面での問題が出てきてから高速な言語に乗り換える」ということです。
業務用チャットアプリのChatworkは初期はPHPで開発しており、
規模が大きくなって速度面での問題が浮上し始めたので、
ScalaというJVM使う言語に切り替えたということで勉強会で発表していました。
他にもTwitterは初期はRubyで開発しており、
速度面での問題が浮上してからこれまたScalaに乗り換えました。
Twitter社は他にも色々やってますね。
Facebookは初期PHPで開発され、
これまた人気爆発したら速度面での問題が出ました。
ユニークなのはPHP言語をC言語にコンパイルし直すというメタプログラミングで押し切るという選択ですね。
ニコニコ動画は初期からC++ですが、
開発陣のリーダー的存在の方がC++なら俺に任せろレベルの人だったので、
最初からトラフィックの問題も出るだろうしC++で良くね?という判断をしただけのようです。
(社内ではScalaの人やNode.jsの人も抱えて手広く試していたみたいですね)
因みにコンパイル言語とスクリプト言語では20倍程の差がありますが、
客が20倍に増えたら20台のマシンを並列で動かして捌けばいいんですよ。
参考記事: ロードバランシング - e-words
Amazon AWS等のクラウドサービスでは負荷に応じてサーバ台数を増減出来ますので、
まず金を生むサービスを生み出してから、高速な言語に切り替えてコストカット
これを徹底すべきです。
大企業での発想は「分業」です。
完成済みの仕様書や設計書が配布され、それを元にモジュールを開発する形になります。
なので静的な型を持つ言語が採用されるケースが多いですね。
Java系(ScalaやKotlin含む)やC#が好まれる傾向にあります。
Node.jsは中身がJS(動的型付け)で一見敬遠されそうですが、
マイクロソフト社が出している次世代JavaScriptを謳っているTypeScriptという言語があります。
これはJavaScriptのスーパーセットであり、型を付与して開発出来るので大規模開発にも対応出来るという側面があります。
Webサービスならフロント側のJavaScriptからは逃げられないので、
フロントを大規模開発でやるなら大流行して一人勝ちしているTypeScriptを選択するのは自然でしょう。
だったら裏側のバックエンドもTypeScript + Node.jsで良くね?
……という発想で選ばれる可能性は非常に高いでしょうね。
つまり二重の意味でNode.jsで問題ないよねと思ってます。
投稿2020/02/27 03:03
編集2020/02/27 03:06総合スコア21158
0
大丈夫かどうかは知りませんが、LINE は Java がメインみたいですね。
投稿2020/02/26 22:23
総合スコア6500
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。