統合
KenticoCloudを中心としたマイクロサービスを利用したアプリケーションの構築
By Bryan Soltis
誰もがマイクロサービスゲームに参加したいと思っています。 CMSからチャットボットまで、「すべてを分解し、より小さなシステムで再構築する」というマントラが、振り返ることなく、開発の世界を席巻しているように見えます。このアーキテクチャには非常に多くの定義があるため、個人用サイトを詳しく調べて、Kentico Cloud、Alexa、およびさまざまなAzureサービスを活用してマイクロサービスを使用してアプリケーションを構築した方法を確認したいと思いました。 。
何か楽しいものを見たいですか? 「マイクロサービスとは」を検索してください。かなりすごいですね説明や例に事欠きません。アーキテクチャ全体を見ると、それほど驚くことではありません。それはすべて、いくつかの小さなコンポーネントから大きなアプリケーションを構築することです。非常に多くの組み合わせ、統合、および方法論があるため、当然、さまざまな例が得られます。
私は、すべてが「マイクロサービスの専門家」であるというふりをするつもりはありません。私があなたと共有できるのは、私自身のサイト内でのこのアーキテクチャの個人的な実装です。それは興味深い旅であり、多くの異なるサービスやシステムが関わってきました。
あなたが私のブログをフォローしているなら、あなたはこれのいくつかをすでに知っているかもしれません。また、最近行ったVoltron中心のプレゼンテーションで、アーキテクチャのいくつかの側面を強調しました。話題やサイトに興味を持っていただける方もいらっしゃるので、もう少し説明するブログを作ることにしました。
それで、それがどのように始まったのかをお話ししましょう…。
初めに
約1年前、私はマイクロサービスの遠征を開始しました。私は個人的なサイト(ドメインはい、サイトいいえ)を持っていなかったので、最初から始めるのは簡単な選択でした。つまり、最初から、ミニマリズムとシンプルさに焦点を当てるつもりでした。 .NET開発者として、これは.NETCoreを意味しました。 .NET Core MVCプラットフォームから始めることで、完全な.NET Frameworkのオーバーヘッドなしで、必要な機能のみを含めることができることがわかりました。
Kenticoクラウドに入る
基盤が決まったので、ソリューションの設計を開始する準備が整いました。開発に取り掛かったちょうどその頃、KenticoCloudと呼ばれるこのクールなものを展開しました。その時点で、Kentico Draftはしばらく前から存在していましたが、Kentico Cloudプラットフォームに最近追加されたのは、Kentico Delivery APIでした。これは、私のコンテンツの核心であることが証明されます。 Kentico Cloudスタックを活用することで、コンテンツを1つの場所で管理し、複数のチャネルに提供できるようになります。その機能がマイクロサービスアーキテクチャの主要な特典の1つであることを見て、私はすでに良いスタートを切っていました。
アプリが何をするかを決める
次に、追加したい機能について考え始めなければなりませんでした。これは間違いなく誰もが異なる答えを持つ質問ですが、私にとっては次のようになりました。
- コンテンツを表示する
- Azure AppServicesでホストする
- 開発/展開を簡素化する
- AzureSearchを活用してコンテンツを検索する
- AzureFunctionsを活用して統合を提供する
- 新しい統合/クールなもののために自分自身を設定します
結局、リストはそれほど気が遠くなるようなものではありませんでした。すべてのサイトは、何らかの方法でコンテンツを提供しています。コンテンツのバックエンドでKenticoCloudを使用するため、これは、必要なプラットフォームでDeliveryAPIを活用できることを意味します。これにより、すべてのチャネルで同じコンテンツを活用できるようになり、統合と柔軟性に関して多くの扉が開かれました。
サービスの選択
すべての優れたマイクロサービスを利用したアプリの中心には、サービス自体があります。最高の機能と柔軟性を備えた優れたマイクロサービスは、必要なときに必要な機能のみを提供します。私はAzureのファンなので、自分のサイトで可能な限りプラットフォームを活用したいと思っていました。これが私の機能マッピングがどのように実行されたかです。
ご覧のとおり、機能を構成するさまざまなコンポーネントがあります。ホスティング用のAzureやソース管理用のGitのような基盤中心の部分から、AzureFunctionsやAzureSearchのような統合レベルのサービスまで、テクノロジーのエレガントなダンスが進行中です。はるか上から見ると、これはかなり複雑に見えますが、最終的には、パズルの各ピースに特定のサービスを使用しています。これにより、機能をすばやく分離し、各パーツに最適なソリューションを選択できます。
すごい追加
コンポーネントを配置したら、本当に素晴らしいことを始めることができました。開発プロセス全体を通してマイクロサービスを利用していたため、マイクロサービスの独自の統合を活用する機会がたくさんありました。
展開
私のデプロイメントでは、無料のリポジトリプランがあるため、Bitbucketを活用しました。 Azure App Servicesには統合が組み込まれているため、リポジトリに変更をコミットするたびに、サイトへの最新のコードのデプロイが開始されます。これにより、コードのデプロイについて心配する必要がなくなったため、私の生活が簡素化されました。マイクロサービスを利用して、アプリケーションのコピーとビルドを処理することができます。開発用と本番用に別々のブランチがあるため、ライブサイトにデプロイする前に、プレビュー環境ですべての変更をテストできました。
探す
おそらく、すべての統合の中で最もクールなのはAzureSearchです。このクラウドベースのサービスを使用して、自分のサイトをすばやく直感的に検索したいと思いました。 Kentico CloudのWebhookサポートを使用して、コンテンツが変更されるたびにAzureSearchインデックスを更新するAzure関数を作成しました。次に、サイト内のAzure Search SDKを活用して、イベントやブログの優れた検索結果を取得しました。完全なプロセスとコードは、 こちらのブログで確認できます。
Alexa
Azure Functionsは、私が追加したいいくつかのAlexa統合に活用できる優れたサービスであることがわかりました。今後のイベントやプレゼンテーションを教えてくれるAlexaスキルを作成しました。 Http Trigger Azure関数を使用して、Kentico Cloudにアクセスするコードを追加して、今後の講演エンゲージメントを取得し、それをAlexaに返します。この統合が整ったので、Alexaと話をして、次のイベントの場所を見つけることができました。 Alexaとの統合について詳しくは、 こちらをご覧ください。
チャットボット
私が追加したもう1つの優れた統合は、Azureボットサービスでした。私に関するFAQに答えることができるQnAボットを作成しました。ボットのナレッジベースにFAQページを入力しました。このプロセスでは、ボットにURLを指定するだけで、質問と回答が自動的にインポートされました。 ここで私のそれほど賢くないボットと話すことができます。
大きな絵
さて、私は自分のサイトのさまざまな側面と、マイクロサービスが機能にどのように作用するかについて、しばらく時間をかけて説明しました。たくさんのピースがあることを私は知っています、そしてあなたはそれがどのように一緒に収まるのか疑問に思うかもしれません。私が言及したプレゼンテーションの一部として、私はすべてがどのように接続されているかについての図を作成しました。ご覧のとおり、すべての道路はKenticoCloudに戻っています。これにより、操作の背後にある頭脳となり、すべてのコンテンツを保存するのに最適な場所になります。
継続的に改善
マイクロサービスを使用した開発の最も優れた点は、常に変化していることです。各機能は特定のサービスに分離されているため、機能を個別に更新でき、アプリケーション全体がはるかに流動的になります。これはまた、特定の機能に対してより良いサービスを見つけた場合、サイト全体を書き直すことなく、比較的簡単にそれを交換できることを意味します。私が将来の開発のために考えているいくつかの分野があります。
- 強化されたボットサポート
- モバイルアプリの統合
- .NET2.0サポート
- 自動テスト
- より深いパーソナライズ
前進する
このブログが、アプリケーション内でマイクロサービスを活用する方法についての洞察を与えてくれることを願っています。たぶん、特定の機能のためだけにそれらを使用するか、プロジェクト全体でそれらを設計します。いずれにせよ、これらのサービスが、作成するすべてのプロジェクトで開発と能力をどのように拡張できるかを真剣に検討する必要があります。がんばろう!
私の完全な個人サイトはここで見ることができます。