新しいプロジェクトを開始し、OpenStackクラウドの企業のインスタンス化を実装しています( http://www.openstack.org/ を参照)。このプロジェクトは、当社のセキュリティツールです。現在、セキュリティツール用に何百もの専用サーバーを実行しており、それらを社内のopenstackのインスタンス化に移行しています。
私の会社の他のプロジェクトは現在、いくつかの分散サーバーアプリケーションでerlangを使用しており、他のQ/A指摘erlangはいくつかの人気のあるクラウドサービスで使用されています。私はそれが私たちのプロジェクトのどこに適用できるかを検討するように他の人を説得しようとしています。
アーランのクラウドプログラミングの長所は何ですか?アーランを使用することが特に適切な領域はどこですか?
Erlangが並行/並列化/分散の状況で実行されるように特別に開発されたという事実を除いて、Erlangがこれを可能にする主な2つの手法は次のとおりです。
副作用なし:
つまり、実行するデータの一部を関数に与えても、非常に厳密な場合を除いて、システム/実行プロセスの他の部分に影響を与えません。つまり、関数を一度に300回同時に実行しても、300回の関数の実行が他の関数に影響することはありません。
副作用がないことを保証するための実装手法は、「不変性」と呼ばれ、大まかに言うと、変更(変更)できない場合があります。つまり、変数を作成するとすぐに、その変数の値は変更されない可能性があります。 Erlangはこの動作を「単一割り当て」で実装しているため、変数に値を割り当てた後、再度値を割り当てることはできません。
X = 1.
X = 2. // This is not a valid operation
これにより、コードがXの値を誤って変更して競合状態を引き起こさないことが保証されるため、本質的にスレッドセーフであり、同時使用は簡単になります。これはソフトウェア言語間では非常に一般的ではない動作であり、Erlangが並行実行に非常に適している最大の方法です。
俳優モデル:
これは、開発者にとって並行処理の実装と管理が非常に簡単になることを示したモデリングの特定の方法です。ウィキペディアから直接(http://en.wikipedia.org/wiki/Actor_model):
アクターモデルは、すべてがアクターであるという哲学を採用しています。これは、一部のオブジェクト指向プログラミング言語で使用されるすべてのオブジェクト哲学に似ていますが、アクターモデルは本質的に同時であるのに対し、オブジェクト指向ソフトウェアは通常順次実行されるという点が異なります。アクターは、それが受信するメッセージに応答して、同時に実行できる計算エンティティです。有限数のメッセージを他のアクターに送信します。有限数の新しいアクターを作成します。受信する次のメッセージに使用する動作を指定します。上記のアクションに想定されるシーケンスはなく、それらは並行して実行できます。送信された通信から送信者を分離することは、非同期通信と制御構造をメッセージの受け渡しのパターンとして可能にするActorモデルの根本的な進歩でした。[6]
Erlangは、並行/並列コンピューティングに特に優れています。実際、それは本来その目的のために設計されました。多くの場合、計算量の多いアプリケーションが「クラウド」インスタンスに並列化およびデプロイされ、オンデマンドで容量を簡単に拡張/縮小できることを除いて、それはクラウドに固有のものではありません。
残りはマーケティングの話だけです。
従来のハードウェア展開とは異なるクラウドの1つの側面は、必要なときに新しいインスタンスを簡単に起動できることです。他のノードと他のノード上のプロセスを監視する機能により、VMを追加または削除して必要に応じて管理できる非常に動的なシステムを比較的簡単に構築できます。
これは、erlangのOTP(Open Telecom PLatform)フレームワークを使用してシステムを構築する場合に特に当てはまります。これは、構造とメカニズム(スーパーバイザーツリー)の両方を提供し、想像よりはるかに少ないエフロートでかなり洗練されたものの構築をサポートします。 Erlangはすべてのトリッキーなビットを処理するので、必要はありません。