6

私は、分散型のソフトリアルタイムでホストされる Web ベースのテレフォニー アプリの将来のバージョンとして、Erlang を検討しています (つまり、Erlang は、この種のアプリに最適な選択肢のように見えます)。私は .NET のバックグラウンドを持っており、このアプリの現在のバージョンでは、C#、WCF、および JQuery を組み合わせてサービスを提供しています。私は今、Erlang を必要としており、稼働時間をさらに 9 倍に増やし、サーバーの費用をより多く回収できるようにしています。

以前は、VS.NET、GIT、TeamCity、および維持しているさまざまな環境への MSI ファイルの自動デプロイを組み合わせて、ここで開発プロセスをセットアップしていました。完璧ではありませんが、私たちは皆、これでかなり快適になりました。私たちのようなプロセスが、このような根本的に異なるテクノロジー スタック (LYME) に適しているかどうか疑問に思っています。

以前に .NET を使用して解決したプログラミングの課題はすべて、Erlang を使用するとより少ないコードで解決できると確信しているため、言語の選択に完全に納得しています。Pragmatic や O'Reilly の Erlang に関する本を読んでもまだ理解できないのは、ソフトウェア エンジニアリングとアプリケーション ライフサイクル管理 (ALM) プロセスを新しいプラットフォームに適合させるにはどうすればよいかということです。コードのインプレース更新により、私 (および私のテスト チームと運用チーム) の生活が大幅に楽になることがわかります (Windows ネットワークを介して MSI ファイルを展開しようとする悲惨な状況と比較して)。 Erlangを使用するとき。

どのようにしますか:

  • Erlang で継続的インテグレーションを行います (一般的に使用されていますか?)
  • QA サイクル中に使用します (GIT を使用して同時トピック ブランチを実行することが多く、独自のミニ QA サイクルを取得するため、すべてテスト環境にデプロイされます)
  • コードをビルドして DEV、TEST、UAT、STAGING、および PROD 環境に配布する
  • コード生成フェーズをビルド サイクルに統合します (現在、MSBUILD + T4 テンプレートを使用しています)。
  • 多数の異なるサーバーのログを集中化します (現在、Log4Net、MSMQ などを使用しています)
  • SCOM などのツールでアラートを行う
  • 誰か/何かが本番サーバーを誤って構成していないかどうかを判断する
  • 適切な QA の後にのみ本番用のホットフィックスを許可する (許可された担当者のみ)
  • アプリのパフォーマンス (計算と通信) のプロファイリング
  • Windows ベースの Active Directory サーバーと対話する

私はあなたのために何がうまくいったのか、そしてその理由を知る必要があると思います! どのようなツールとフレームワークを使用しましたか? 何を試して失敗しましたか?今知っていることを知って、最初からやり直すことができるとしたら、何を変えますか?

4

1 に答える 1

8

おっと、なんて長い投稿でしょう。まず、99.9% 以上のクールエイドは、目が見えないときに飲むのは少し危険であることに注意してください。はい、驚くべき安定性の数値を得ることができますが、これを容易にする方法でプログラムを作成する必要があります。無料ではありません。魔法でも起こらない。アプリケーションは、他のサブシステムが回復できるように設計する必要があります。OTP は非常に役立ちますが、習得するにはまだ時間がかかります。

継続的インテグレーション: 簡単に実行できます。rebarビルドボットを呼び出すか、ビルドボットを介して呼び出すことができる場合makeは、おそらくここで既に設定されています. eunit、cover、Erlang QuickCheck を調べてください (初心者向けのミニ バリアントは無料です) - すべて rebar から実行できます。

QA サイクル: ここで問題は発生していません。繰り返しにrebarなりますが、最小化された erlang vm である組み込みリリースをビルドできる場合は、どこにでもコピーして実行できます (自己完結型です)。コード パスを少し変更して、新しい修正プログラムをオーバーレイすることで、そのようなシステムに修正プログラムを簡単にホット デプロイすることもできます。あなたの選択肢は数多くあります。Git は、ここですでに多くのことを助けています。

環境化: 簡単にできます。

ロギングの集中化: SASL と error_logger を調べます。ここでは何でもできます。

アラート: システムは、必要なものすべてを調べることができます (Erlang ではイントロスペクションが強力です)。ただし、選択したシステムに接続するには、少しコーディングする必要がある場合があります。

設定ミス: 設定ファイルは Erlang 用語です。計算できればできる。

セキュリティ: アクセスできるユーザーを制限します。私の意見では、これは人の問題であり、技術的な問題ではありません。

プロファイリング: cprof、cover、eprof、fprof、instrument + 同じことを行うためのいくつかの分散システム。ランダム サンプリングも簡単です (Erlang ではイントロスペクションが強力です)。

Windows の操作: わかりません。(バイアス: 私が Windows を専門的に最後に使用したのは 1998 年かそこらでした)。

いくつかの個人的な観察:

あなたの最大の問題は、Erlang を既存のプロセスに詰め込もうとして、それが抵抗するかもしれないということかもしれません。これは新しい環境であるため、場所によっては新しいアプローチが必要になるため、途中で見つけた制限に適応し、回避することを期待する必要があります。一般的なコンセンサスは、それが機能するということです (いくつかの大きなサイトで機能しています)。

確立された厳格なプロセスがあるようです。新しい種類の考え方に道を譲るために、そのプロセスをどれだけ犠牲にすることが許されるのでしょうか?

あなたのプログラマーは、オブジェクト指向に関する知識のほとんどすべてを捨てても構わないと思っていますか? そうでなければ、技術的な問題ではなく、社会的な問題で終わります。しかし、彼らが私のようであれば、彼らは歓声を上げ、手をたたき、興味深い言語を使って新しい方法で興味深い問題を解決することで、一定の高揚感を得るでしょう.

Erlang 経験のあるプログラマーは何人いますか? 数が少ない場合は、最初にいくつかの小さなサブシステムで経験を積んでから、より大きな目標に向けて取り組むことをお勧めします。システムの利点を最大限に活用するには、数年ではないにしても数か月かかります。ただし、部分的なメリットは数週間で得られます。

于 2010-11-24T01:32:15.950 に答える