コメント:
RubyよりGo言語が優れており、
Go言語よりPythonの方が大量の同時アクセスに対して対応力があり、豊富なライブラリーを使ってシンプルに短期間にプログラムを書いてメンテナンスするのに適していて優れていると思います。by NEOVISIONCONSULTING.
プロセスの終了時には努力に見合う結果が得られた,とMajors氏は述べている。
Parseはスケーラビリティを向上させるため,APIを含むサービスの一部をRuby on RailsからGoに移行した。同社のエンジニアであるCharity Majors氏が詳しく説明している。これによって信頼性とデプロイメント時間が著しく改善された。
Parseは2011年,Ruby on Railsのプロジェクトとしてスタートした。この選択によって,Parseの最初のバージョンを少人数の技術者グループで短期間に実装することができた,とMajors氏は言う。しかしながら,Parseが拡張されるにつれて,アーキテクチャ上の問題がいくつか現れた。- コードベースの拡大に伴い,デプロイメントやロールバックに要する時間が増加した。さらに,ParseのHTTPサーバであるUnicornの再起動が正常にできなくなった。その結果,モンキーパッチ(monkeypatching)に頼る部分が次第に大きくなった。
- Railsの“要求毎に1プロセス”というモデルが,APIトラフィックとアプリ数の増大につれて“崩壊”を始めた。実際に,時間を要するリクエストを数多く受信した場合,Railsのワーカプールサイズの自動拡張機能が追いつかず,ワーカプールが簡単に溢れてしまう現象が発生していた。さらに,これらワーカの多くは,単に外部サービスの完了を待っている状態だった。
- JRuby,これは除外された。JVMには大規模な並行処理を扱う能力があるものの,Rubyの非同期ライブラリサポートに問題があることには変わりないからだ。
- C++,他の言語に比較して生産性が低いこと,HTTPリクエストの処理や非同期操作などをサポートするライブラリのないことなどを理由として,これも除外された。
- C#,非同期/Await Asyncモデルには非常によい選択肢だと考えられたが,“LinuxにおけるC#開発は主流になり得ないと思われた”ため,除外された。
- Go,非同期操作をネイティブにサポートしていること,MongoDBのサポートが最高レベルであること,コルーチンのサポートなどから,最終的に最もよい選択肢であると考えられた。
プロセスの終了時には努力に見合う結果が得られた,とMajors氏は述べている。
- Parseの“信頼性が著しく向上した”。
- 稼働するデータベース数の減少により,APIの脆弱化に歯止めがかかった。
- テストスイート全体の統合実行に要する時間が,25分から2分にまで短縮できた。
- APIサーバ全体のデプロイ時間が,30分から3分に短縮された。
- APIサーバの正常な再起動が最終的に実現できた。
0 コメント:
コメントを投稿