個人的および大学の研究上の理由から、私はサービス指向アーキテクチャーを使用して単純なCRMを構築することを考えています。その意味は、アーキテクチャ自体を説明することであり、商用利用ではありません。
シンプルな分析サービスとカスタマーケア(ユーザーの保存、個人的なコメント、その他いくつか)を提供するCRMの実装を考えていました。
私が設計しているアーキテクチャは、次のように定義しています。-WebGUI(他のサービスのクライアント)-AnalyticsService(データを受信し、分析して収集するサービス)-CustomerCareService(RESTful APIを使用してCRUD操作を適用するサービス)。
各サービスには独自のデータベースがあり、他のサービスから完全に独立しています。それらはパブリックインターフェースを公開します。もちろん、インターフェースは、自動化されていない要求を拒否するために、ある種の認証を提供する必要があります。
この種のアーキテクチャで説明したい利点は、すべてのものを独立させることができることと、それらを組み合わせて新しいサービスを提供できることです(たとえば、注文を処理するOrderServiceがあった場合、それを簡単に組み合わせることができます。パブリックAPIを使用しているお客様)。私にとっての大きな利点は、これらのサービスを使用する他のクライアントを簡単に構築できることです。
実装が簡単な優れた認証方法が何であるかわかりません。また、このAPIを作成する方法もわかりません(GET /POSTデータでXMLまたはプレーンRESTAPIを使用します)。私はAmazon、PayPal、その他の会社のAPIを使用してきましたが、RESTサービス(paypalは醜い_cmd GETパラメーターを使用しますがAmazonはより良いURIを使用します)を使用して何をすべきかを知っているようですが、SOAについて何かを読むと、人々も使用しているようですXML。もちろん、Webインターフェイスがログインしたユーザーを認識し、アクセス許可(トークンなど)を取得し、それをサービスで使用して情報を表示できる必要があることも考慮する必要があります。ですから、SOAが私が実際に構築している種類のアーキテクチャであるかどうかはわかりません...それはSOAではなくSaaSですか?RESTfulアプリケーションを使用する方が良いと思います。
明確にするために、ここに私の質問をリストします:
- この種のアーキテクチャはSOAまたはSaaS(あるいはその両方)と呼ばれていますか?
- 私が取得したいものの良い実装は何ですか?(できるだけ詳しく説明してください)
- クライアントに適した認証の種類(ユーザートークンとOAuthまたは類似)
- この種のプロジェクトについて何か提案はありますか?
私はそれを行うのに約3か月あるので、本当に複雑なことをすることはできません(1人のプログラマーにとっては現実的ではないという事実を除けば)。
Python(WSGIフレームワーク)、Ruby on Rails、C / C ++、その他の言語(.netを除く)を知っています。Linux環境(MySQLまたはPostgres、さらにはNoSQL)で開発したいと思います。正しい選択)、これらのサービスに依存しないプログラムであるいくつかの言語を組み合わせることもできます。
ここで私が望んでいるのは、いくつかの良い視点といくつかの良い提案をすることです。
ありがとう!