web-dev-qa-db-ja.com

Pandoraを最初から再構築する必要がある場合、どのテクノロジスタックを選択しますか?

要件:

  • 多くの異なるユーザーエクスペリエンス:ウェブサイト、モバイルなど.
  • ユーザー管理、登録、役割
  • 大量の音楽メタデータ
  • 最も近い音楽を見つけるゲノム検索
  • すべての機能のためのパブリックおよびプライベートRESTful API
  • 巨大なサーバー側サービススケール
6
dblock

AmazonコードベースはC++で書かれています。 GoogleはC++、Python、Javaを使用しています。 Stack Overflow Networkは.Netを使用しています。ウィキペディアはPHPを使用しています。 Facebookは以前PHPで動作していましたが、現在は独自の言語を公開しています。

優れたソフトウェアとはテクノロジーではなく、人々のことです。作業チームに最適なツールを選択する必要があります(Pandoraは単独のプロジェクトではないため、少なくとも2人で手助けする必要があります)。

13
vz0

あなたがリストした最初のものは最も重要です:「多くの異なるユーザーエクスペリエンス:ウェブサイト、モバイルなど」これは、multipleテクノロジスタック(iPhone、Android、Webなど)をサポートすることを示唆しています。そのため、十分に理解された標準を通じて相互運用が容易なものを作成する必要があります。 RESTなどのアーキテクチャテクノロジーを検討し、バックエンドストレージを処理マシン、フロントエンドWebサーバー、モバイルデバイスから分離するようにしてください。

プラットフォームを調査して、どのテクノロジーが最適であるかを確認し、後で(Webサーバーなどの)より柔軟性のあるテクノロジーを選択します。最後に、プロジェクトの規模を検討します。一部の言語では、作成とデバッグの時間を節約できますが、特に大規模プロジェクトの場合、パフォーマンスが低下します。大規模なPythonおよびRuby on Railsデプロイメントが圧倒的なパフォーマンスを発揮したことについての話です。

2
Neal Tibrewala

大規模なスケーラビリティと優れた同時実行性のために、Erlangを検討します。フォールトトレランスが主要な目標であるテレコムビジネス向けに構築された関数型言語。

Erlangのような関数型言語を使用することで、Javaで発生する可能性がある同時実行性の問題の約95%を忘れることもできます。

1
Zachary K

Guido van Rossumは Pythonの歴史について書く です。 Pythonおよびその他のプログラミング言語の背後でvan Rossumが取り組んできたのは、問題に合わせてカスタマイズされた言語を用意することでした。もちろん、十分な数の研究機関で働いていました。プログラミング言語の設計とコンパイルの経験。

ブログのほとんどを読んだ後、私は手元のタスクに戻りました。これは、10年以上前に書き始めたプログラムにいくつかの新機能を追加しています。長い間コードから離れていたので、新しいタスクに最適に取り組む方法を知るためにコードを勉強する必要がありました。コードのコアが行うことのほとんどは、Delphi Pascalの厳格さを回避して、拡張性、属性継承、および無制限の取り消しが簡単に実行できる環境を作成することです。私は、Pythonのようなプログラミング言語を自分で作成しました。後知恵では(後知恵ではすべてがより明確になります)、Pythonをコアに埋め込むか、先に進んでカスタム言語を実装するのが最善でしょう。

しかし、それはその時でした。今日、主流の言語は、あらゆる種類の高品質のライブラリとツールからの膨大な量のサポートを持っています。これは、自分の言語では非常に難しいものです。

物語は、私の提案はこの実用的な理由のためにPythonを使用することです:

  1. 言語はプログラミングが快適なニースです。学習曲線は穏やかで、企業/官僚/委員会の言語のように邪魔になりません(申し訳ありませんJavaおよびC++)。
  2. 標準ライブラリまたはサードパーティのライブラリで必要なものが見つからない場合は、おそらく必要ありません。
  3. Pythonを使用すると、必要な場合に別のプログラミング言語に簡単にフォールバックできます。
  4. Pythonは、最新のツールやライブラリにこだわることなくドメイン固有の言語(つまり、独自の言語)を作成するための並外れた基盤です(何を見てくださいPyparsing Pythonで可能であることが示されています)。
1
Apalala

私はJava=男です。Javaを選択します。

何をコーディングしますか?最も生産性の高い言語はどれですか?

Javaはすばらしい理由です。

  • 優れたJavaスキルを持つ開発者がたくさんいます
  • Javaツールはほとんど無料ですand素晴らしい品質
  • そのクロスプラットフォーム。 Linuxはサーバーにとって安価です(多くのサーバーが必要になります)。 Java Linuxで非常によく動作しますが、Windows、Linux、OSXなどで開発できます
  • REST、データベース、NOSQLなど、ほとんど何とでも統合できます。
  • JVMは、世界の現代の驚異の1つです。 Hotspotはコードのチューニングに優れており、代替言語、Groovy、Scala、Clojureなどに対応しています
  • Springには、セキュリティとソーシャルネットワークの側面の管理に役立つ優れたライブラリがあります。
  • ツールについて言及しました;)
1
Fortyrunner