マイクロサービスのメリットは何ですか?また、マイクロサービスはあなたのビジネスにお金を払うでしょうか?

公開: 2022-01-12

小さなサービスのセットとしてソフトウェアアプリケーションを設計するアプローチであるマイクロサービスの概念は、少なくとも2015年から存在しています。コンポーネントの独立した展開可能性やスケーラビリティなどの利点を提供するマイクロサービスは、今日すべての流行です。 これは、これらのマイクロサービスの利点が、ソフトウェア開発の速度を大幅に向上させるためです。 消費者は自分の好みや行動をすばやく変更できるため、マイクロサービスの採用者はそれに追いつくことができます。 人生は今素晴らしいです、と彼らは言います。 最近のIMB調査に参加している企業の56%が、今後24か月以内にマイクロサービスアプローチを採用することを計画しています。

現在のユーザーの約80%が、自分たちのビジネスがマイクロサービスへの投資を増やす可能性が高いと述べています。 マイクロサービスの利点により、Netflix、Amazon、eBay、Twitter、およびその他の多くのテクノロジージャイアントは、モノリシックアーキテクチャからマイクロサービスアーキテクチャに移行するようになりました。 しかし、あなたの会社はマイクロサービスを使用する必要がありますか? これはコンテキストによって異なり、マイクロサービスの長所がアプリケーションの短所を上回っているかどうかによって異なります。 このブログでは、マイクロサービスとモノリシックアプローチの概要と、マイクロサービスアーキテクチャを使用することの5つの主な利点について説明します。 また、ITRexのマイクロサービスの経験の一部を共有し、企業がマイクロサービスを使用する(使用しない)場合のヒントを提供します。 飛び込みます。

マイクロサービスの定義とモノリシックアーキテクチャとの比較

マイクロサービスアーキテクチャとは何ですか? マイクロサービススタイルは、単一のビジネスワークフローを中心に設計され、連携して動作する小さなコンポーネントまたはサービスのスイートとしてクラウドネイティブソフトウェアアプリケーションを開発するためのアプローチです。 基本的に、マイクロサービスはDevOpsへの根本的な移行の一部です。これは、開発チームとIT運用チームが自動化ツールを使用して緊密に連携し、より迅速に提供する文化です。

マイクロサービス:

  • 自律的に開発され、
  • 独自のデータベースを使用し、さまざまな言語で記述されている場合があります。
  • HTTP、メッセージブローカー、イベントストリーミングなどの軽量プロトコルとAPIを介して通信し、
  • 特定のビジネス機能を実行します。

たとえば、マイクロサービスベースのeコマースアプリケーションには、製品イメージ、ユーザープロファイル管理、検索、在庫確認、支払い処理、および配送を担当する独立したサービスがある場合があります。 フロントエンド(Webサイトの顧客向け側)はバックエンド(ビジネス向け側)から切り離されているため、個別にカスタマイズおよび管理できます。 Amazonを例にとると、マイクロサービスアーキテクチャは、恐ろしいものではないにしても、圧倒的に見えるかもしれません。

ただし、マイクロサービスアーキテクチャを使用しなければ、Amazonは世界で最も価値のある企業の1つに進化することはほとんどありませんでした(2021年12月の時価総額は1.694兆ドル)。 マイクロサービスのメリットを活用するという決定は、開発とコーディングの問題が遅いために顧客ベースの成長の速度で拡張できないことをAmazonが理解した2000年代初頭に行われました。

Netflixは、大規模なデータベースの破損のために数日間DVDを顧客に郵送できなかった後、2000年代後半にクラウドベースのマイクロサービスアーキテクチャの利点に目覚めました。 アプリケーションを700以上のマイクロサービスに分割した後、Netflixのエンジニアは今日、1日に数千回コードをデプロイできるようになり、世界中の2億人以上のメンバーに毎日約2億5000万時間のコンテンツをストリーミングできるようになりました。 これらのハイテクスターや他の多くの企業は、クラウド以前の時代にどのアーキテクチャを使用していましたか? 彼らはモノリスを使用しました。

モノリシックアーキテクチャとは何ですか?

モノリシックアプリケーションは、クライアント側のユーザーインターフェイス、サーバー側の操作、データベースなど、すべてのコンポーネントを組み合わせた単一のユニットとして構築されます。 通常、モノリシックアーキテクチャ:

  • すべての機能に対して単一のコードベースがあり、
  • 緊密に結合されており、
  • 一元化されたデータを使用します。

モノリシックアプローチを使用して開発されたeコマースアプリケーションは、緊密に結合されたフロントエンドサービスとバックエンドサービスを1つのユニットとして展開することで構成されます。つまり、カスタマイズにはコードベースとフロントエンドプラットフォームの変更が必要になります(下の図を参照してください)。比較)。

モノリシックアプリケーションは死ぬことはありません。 実際、それらは(少なくとも初期の頃は)構築がより簡単で安価であることが多いため、依然として良い選択である可能性があります。 ただし、欠点があります。 アップグレードまたはスケーリングの目的であるかどうかにかかわらず、一部の変更では、多くの場合、システム全体を再構築して再デプロイする必要があります。

同様に、システム全体が1つの誤動作部分によってダウンする可能性があります。つまり、モノリスは壊れやすいということです。 モノリスは成長するにつれて維持することも難しく、サードパーティのツールとの統合も喜びではありません。 これらの欠点は、企業が生き残り、繁栄するために変化に迅速に対応する必要がある今日の破壊的な市場環境では無視することはできません。 したがって、DevOpsチームによって構築されたマイクロサービスの利点についての話題があります。

マイクロサービスの5つの主な利点

1.独立した展開

少なくともマイクロサービスの初期のパイオニアの1人であるSamNewmanによれば、これはおそらくマイクロサービスの最も重要な利点です。 パフォーマンスを向上させたり、新たなユーザーのニーズに応じて新しい機能を追加したりするためにアプリケーションに変更を加えることは、自己完結型のマイクロサービスで簡単に行えます。 各サービスは、システム全体に触れることなく変更およびアップグレードできます。 過剰な要求のために1つの機能に過度の負荷がかかっている場合は、それらを互いに独立してスケーリングすることもできます。 たとえば、他のサービスによるリソース消費を増やすことなく、より多くの支払いを受け取っている場合にのみ、支払い処理サービスを拡張できます。 このように、プロセスはより少ないインフラストラクチャを必要とし、コスト削減につながります。

2.より低い爆風破壊半径

マイクロサービスアーキテクチャの緩い結合は、マイクロサービスのもう1つの利点である復元力の向上も提供します。 サービス間の明確な境界とマイクロサイズを組み合わせることで、新しいリリースの影響を制限し、障害を確実に分離します。 1つのサービスで障害が発生しても、関係のない機能が停止することはなく、システムの残りの部分はそのまま残り、ユーザーにサービスを提供し続けます。

3.データの分離

これは、マイクロサービスが正しく実行された場合に提供される3番目の利点です。 コンポーネントごとのデータ主権は、マイクロサービスの重要な機能です。 マイクロサービスアーキテクチャにより、データに触れるサービスを明確に描写できます。これは、特に組織が医療データ規制またはGDPRに準拠する必要がある場合に重要です。

4.適切なテクノロジーの使用

モノリシックアプリケーションは単一のコードベースを持っているため、機能ごとに技術的アプローチをカスタマイズすることは困難であり、妥協が求められることがよくあります。 対照的に、マイクロサービスはデフォルトでビジネス機能を中心に設計されているため、チームは特定の機能に利用できる最高のテクノロジーを選択して、それを最大限に活用できます。 これは、マイクロサービスがさまざまなコンポーネントにさまざまなテクノロジーやプログラミング言語を使用できるためです。 マイクロサービスは、最新のテクノロジーの採用や、必要に応じてサードパーティのツールとの統合も簡素化します。 ベンダーロックインがないことは、その緩く結合されたアーキテクチャに自然に起因するもう1つのマイクロサービスの利点です。

5.効率

マイクロサービスのアプローチにより、企業は、アジャイルな方法で運用できる1つのサービスまたは一連のサービスの周りに小規模なクロスファンクショナルチームを設定できます。 このモデルは、あるチームが作業を開始する前に、展開であれテストであれ、別のチームがタスクを完了するのを待つ必要がある場合のハンドオフを最小限に抑えます。 他のチームに依存することなく、開発のスピードが加速します。 1,200人のITエグゼクティブと開発者を対象としたIMBの調査によると、採用者はマイクロサービスを使用することの複数のメリットを報告しています。 彼らが感じた最も重要なマイクロサービスの利点は次のとおりです。30%—顧客満足度の向上29%—企業/顧客データのセキュリティの向上29%—市場投入までの時間の短縮28%—アプリケーションパフォーマンスの向上27%—リソースのスケールアップまたは26%減少—従業員の生産性の向上マイクロサービスに課題はありますか? よく言われるように、マイクロサービスは無料のランチではありません。 読む。

マイクロサービスの悪い部分

1.複雑さ

マイクロサービスに固有の複雑さは、サービスの数とともに増加します。 この複雑さは複数あり、次の原因によるものです。

  • 技術レベルおよび運用レベルでのトップダウン制御は不可能です
  • テストは難しく、テストの自動化が多すぎることはありません
  • 相互通信の実装は難しいため、才能のある開発者が必要です
  • ログに記録されるデータの量が多すぎるため、不整合が発生する可能性があります
  • 新しいバージョンでは互換性の問題が発生する可能性があります
  • 適切な量​​のリソースをプロビジョニングするのは困難です

2.コスト

マイクロサービスは、企業にお金を稼ぐためのより多くのオプションを提供しますが、それを節約することはできません。 複雑なマイクロサービス環境を構築できる開発者を雇うコストとは別に、クラウドとAPIの請求があります。 幸いなことに、マイクロサービスは従量制でオンデマンドリソースを使用するため、継続的なコストを大幅に最適化できます。

3.セキュリティリスク

IBMの調査の回答者の半数は、マイクロサービスの採用過程で直面した最大の課題の中にセキュリティを挙げています。 各マイクロサービスには、さまざまなインフラストラクチャレベルを介して他のマイクロサービスと通信するための独自のエントリポイントのセットがあり、アプリケーションが攻撃にさらされる可能性が高くなるため、セキュリティを最初から組み込む必要があります。 さらに、インフラストラクチャのスケーリングは、アプリケーションコンポーネントの制御と可視性を失うリスクを増幅します。

マイクロサービスを使用する場合(使用しない場合)

そして最後に、最後の質問です。マイクロサービスアーキテクチャが面倒な価値があるのはいつですか。 クラウドネイティブアプリケーションに自然に適合するマイクロサービスの背後にある話題はすべて保証されていますが、デフォルトのスタイルであってはなりません。 文献では簡単に説明しています。スケーラビリティやリソース消費の問題、またはマイクロサービスパスを使用することを正当化するその他の問題が発生した場合は、モノリスから始めて分割します。

マイクロサービスを使用しない場合の重要なヒントは次のとおりです。

1.スタートアップの場合、マイクロサービスは悪い考えです。 モノリシックアプリケーションから始めて、2ピザチームにとって扱いにくい場合は、それをより小さなコンポーネントに分割する方が賢明です。 必要なのは、顧客価値がまだ検証されていない製品の複雑なアーキテクチャを構築するために多くの時間、労力、およびお金を投資するのではなく、安価な実験を実行することです。 モノリスは、MVPをテスト(および破棄)して、顧客に価値をもたらすものをすばやく学習するのに最適な方法です。 別の尊敬されているマイクロサービスの第一人者であるMartinFowlerは、次のように述べています。 ii)マイクロサービスシステムとしてゼロから構築されたシステムを聞いたほとんどの場合、深刻な問題に終わっています。 注:製品ドメインが不明な場合は、開始時にマイクロサービスも使用しないでください。 複雑なアーキテクチャ上の決定に飛び込むのは時期尚早かもしれません。プロジェクトが成熟すると、コミュニケーションと境界を設定するためのアプローチが的外れになる可能性があります。

2.マイクロサービスは、複雑ではなく、比較的小規模なチームで保守できるソリューションには最適ではありません。 会社のイベントスケジューリングツール用に複雑なマイクロサービスアーキテクチャを展開することは、実際に開発者を楽しませるかもしれませんが、それはすべてのトラブルの価値がありますか? マイクロサービスは、そもそも複雑さという1つの問題に対処するために設計されたものです。 Martin Fowlerが述べているように、「システムが複雑すぎてモノリスとして管理できない場合を除いて、マイクロサービスを検討しないでください」。

3.アプリケーションが小さすぎて正当化できない場合は、マイクロサービスを利用しないでください。 在庫管理または購入システムが正常に機能している場合、マイクロサービスに変換する必要がありますか? 繰り返しになりますが、マイクロサービスを使用するという考え方は、複雑なアプリケーションを一連の小さなサービスに分割することです。 すでに小さくて単純なコードを分解すると、複雑さが増すだけです。今では、ユニット全体を古き良き方法でデプロイするのではなく、すべてのデプロイメント、相互運用性、およびデバッグの問題を多数のアーティファクトでナビゲートする必要があります。

それではOKですが、マイクロサービスを使用してそのメリットを享受するのはいつですか?

マイクロサービスは、上記のステートメントのいずれかが誤りである場合に意味があります。 言い換えると:

  • 製品が、使いこなす必要のある複雑なものに進化した場合、または変更に対応し、モノリシックアーキテクチャのボトルネックのために実装できない重要な機能を追加したい場合。
  • スコープを定義して、大きくて複雑な製品を最初から作成する場合。 企業が数十人の開発者を組織して、明確な機能セットを備えた大規模なソリューションを構築したい場合は常に、それぞれが単一のコンポーネントを担当する、小規模で部門の枠を超えたチームの設立を検討する必要があります。 このようにして、API管理、データパイプライン、スキーマ、およびその他の機能を担当する専任の担当者が、すべてのチームが独立して作業できます。

ITRexポートフォリオの公正で現実的な例は、クライアントがサービスとしてのセキュリティプラットフォームに変換したいと考えていた社内のサイバーセキュリティツールです。 モノリシックアーキテクチャでは、SaaSソリューションが増え続ける顧客にサービスを提供するために必要なスケーラビリティや、進化してハッカーの先を行く柔軟性を提供できないため、マイクロサービスはこのプロジェクトに自然に適合しました。

もう1つの実例となるプロジェクトは、グローバル小売業者向けのAIを活用したビッグデータプラットフォームでした。 私たちのクライアントは、ゼロから構築されたクラウドにとらわれないソリューションを望んでいました。 プラットフォームは大量のデータを処理し、将来追加される新しいデータソースに対応できるようにスケーラブルに設計する必要があることは当初から明らかでした。 また、複数の外部サービスとの通信を構築する必要性を考慮に入れる必要がありました。 したがって、このプロジェクトでマイクロサービスのメリットを実現することも自然な戦略でした。 マイクロサービスアーキテクチャにより、マイクロサービスとAPIのオーケストレーションにKubernetesを使用して、この複雑なシステムをスムーズに展開することができました。

また、3Dカメラを搭載したAI搭載のフィットネスミラーと、ユーザーの機器にIoTセンサーを搭載したMLモデルがありました。 管理パネル、Androidアプリ、ルール管理システムなどの主要なコンポーネントは、プロジェクトのさまざまな段階でさまざまなチームによって構築され、それぞれがさまざまなコードとアーキテクチャを使用していました。 それらすべての処理の複雑さが圧倒的になると、集中管理のために1つのバックエンドを構築する必要があることがわかりました。 そして、それらをマイクロサービスに変換し、コードを再設計して新しいデータベースを作成しました。 重複するコードや機能を回避するなど、マイクロサービスアプローチを使用することには他にも利点がありました。

したがって、私たちの経験では、増大するデータ量を管理したり、相互運用の複雑さを処理したり、システムがビジネスとともに進化するのに十分な柔軟性を備えていることを確認する必要がある場合は、マイクロサービスを使用することが望ましいです。

巻末注

企業が市場で優位に立つためのマイクロサービスの利点を認識しているため、マイクロサービス革命が展開しています。 マイクロサービスの利点により、組織は、新たな常識となった混乱の中で機敏かつ機敏に対応できます。 より優れたソフトウェアをより迅速に展開できるため、「次は何か」の次に来るものすべてに対応できるようになります。 訴訟を起こす前に、会社がどのようなマイクロサービスのメリットを利用できるか、そして面倒が正当化されるかどうかを知っておくことが重要です。 それ以外に、マイクロサービスは驚異的なことをすることができます。

あなたの会社がマイクロサービスの利益のために落ちるべきかどうかまだ混乱していますか? ITRexコンサルタントに連絡してください。 私たちはあなたがそれを理解するのを手伝います。


もともとは2022年1月10日にhttps://itrexgroup.comで公開されました。