逆行移動?マイクロサービスが 3 年間続いたにもかかわらず、依然としてモノリシック アーキテクチャを使用している人がいるのはなぜでしょうか?

最近、非常に人気のあるブログが公開されたことや、世界的なストリーミング メディア企業の監視システムがサーバーレス + マイクロサービスからモノリシックに変更されたことにより、インターネット上のマイクロサービスに慣れていない一部のモノリシック アプリケーションのファンがインターネット上で爆発的に増加しました。しかし、コストは90%削減されました

有名なマイクロサービス評論家であるDHH ( Ruby on Rails の作者、 37signalsの創設者)も飛び出して記事を書きました:「マイクロサービスをモノリスに置き換える... システムを簡素化することは本当に勝利です... マイクロサービスはあなたを可能にします システムは不必要に複雑になり、サーバーレスによってさらに悪化します。」

DHH は私のアイドルでもありました。彼のブログを長くフォローしている人なら、 DHHがマイクロサービス アーキテクチャに反対していないことがわかるでしょう。彼の視点は時期尚早の最適化や時期尚早の複雑さに反対しており、初期段階ではアーキテクチャをシンプルに保つことを提唱しています。プロジェクトの段階。マイクロサービス アーキテクチャを検討する前に、アプリケーションがマイクロサービスに分割して実質的なメリットを得るのに十分な大きさになるまで待ってください。

監視システムの場合、ユーザーが悪いのか、それともDHHが悪いのか。

また、英語の原文を一字一句丁寧に読んで勉強しました。

それはまったくそうではなく、単にモノリシック アプリケーションへの「回帰」でも、メロンを食べる人たちが見ているように、誰もが注目している 90% のコスト削減でもないことがわかりまし

ほとんどの人は次の 2 つのことを見落としています。

(1) アーキテクチャの進化 

(2)サーバーレスファースト

 

1. アーキテクチャの進化

 

ビデオ監視システムの初期バージョンでは、主に次の 3 つのコンポーネントを含む分散アーキテクチャが選択されました。

1.メディア変換サービス: ビデオを「フレーム」に変換し、 Amazon S3に保存します 

2.欠陥検出サービス: Amazon S3のビデオ「フレーム」を分析して欠陥をチェックします。 

3.通知サービス: ビデオの欠陥が見つかった場合、リアルタイムで通知が送信されます。 

 

このアーキテクチャの利点は、Amazon クラウド テクノロジーのインフラストラクチャを最大限に活用していることです

Amazon S3 は複数のサービス間でのデータ転送に役立ち、 Amazon Step Functions は複数のサービスの結合と調整に役立ちます。

Serverlessのサポートにより、各コンポーネントはトラフィックに応じて自動的に拡張できます。

このアーキテクチャは非常にシンプルですが、シンプルなアーキテクチャは必ずしも単一のアーキテクチャである必要はなく、サーバーレス アーキテクチャである場合もあります。Amazonクラウド テクノロジーはすべての複雑な詳細をカプセル化しているため、プログラマーはビジネス開発に集中でき、迅速に実装して市場に参入できます。

これは、 DHH が言ったこととまったく一致しています。「時期尚早な最適化に反対し、初期段階ではシンプルなアーキテクチャを維持する」というものです

しかし、トラフィックが多い場合、このアーキテクチャでは次の 2 つの問題が発生します。

(1)サービスの粒度が細かくなりすぎるため、 Amazon Step Functionsと組み合わせると状態遷移が多くなり、当然料金が高くなってしまいます。 

(2) Amazon S3を使用してビデオフレームを一時的に保存するには、一定のデータアクセス料金が必要であり、ビデオストリーム数が多い場合、それに応じて料金も増加します。 

明らかに、元のマイクロサービス アーキテクチャはもはやニーズを満たしていないため、進化させる必要があります。

チームの選択は、すべてのサービスを 1 つのプロセスにまとめてAmazon ECSにデプロイすることであり、データ通信にAmazon S3を使用する代わりに、 Amazon ECSメモリが直接使用されます。 

1つのプロセス内なのでAmazon Step Functionsが不要となり、状態遷移のコストがなくなります。

 

1 つのAmazon ECS では不十分で拡張する必要がある場合は、複数のAmazon ECSをデプロイできます

 

これにより、コストが90%削減されます

しかし、多くの人が気づいていないのは、運用コストは 90% しか削減されず、開発コストは含まれていないということです

当初のシステムではAmazon Step Functionsを使用していましたが、マイクロサービスアーキテクチャを単体化する過程で当然不要になりますが、 Amazon Step Functionsが担う連携機能はどうなるのでしょうか?内蔵のリトライ機能や例外キャプチャ機能はどうなっているのでしょうか?未処理の例外、実行タイムアウト、ソケットタイムアウトなどが発生した場合はどうすればよいですか?

これらの問題により、プログラマは実装を手動で再コーディングする必要があります

さらに、モノリシックアーキテクチャの使用により、元のサーバーレスの自然な水平拡張機能が失われ、トラフィックに応じて特定のマイクロサービスを拡張することは不可能になり、拡張の最小単位はAmazon ECSになり、チームは見積もりを行う必要がありますトラフィック、複数のAmazon ECS間でリクエストを転送するためのプログラミング

つまり、アーキテクチャ設計は本質的にトレードオフであり、自分に適した、問題を一度に解決できる完璧なアーキテクチャを持つことは不可能です。

この監視システムのアーキテクチャは、マイクロサービス+ サーバーレスから始まり、最終的にはコストを考慮して単一ユニットに変換され、拡張を独自に実装し、インフラストラクチャを独自に管理し、コードの一部を独自に開発するという進化のプロセスです。

Amazon のCTO Werner 氏は次のように述べています: 進化可能なソフトウェア システムの構築は戦略であり、オープンな心でアーキテクチャを再検討する必要があります。

 

二、サーバーレスファースト

 

ここで、 Prime Video監視システムの事例は、実際にはアーキテクチャの進化の自然な結果であることを理解する必要があります。

さて、新しいアプリケーションを構築したい場合は、特定のアーキテクチャの熱狂的な信者にならないでください。これが良い、あれが良くないとは言えません。すべては状況によって異なります。まずシンプルにして、それからゆっくりと進化します。

しかし、私が皆さんに提案したいのは、サーバーレスファーストの精神を持たなければならないということです。

理由は非常に単純で、サーバーレスであればインフラ保守の負担を放棄し、業務導入に集中できるため、数日から数週間で素早くシステムを構築し、市場に投入することでメリットを得ることができます。

サーバーレスはまさに価値に基づく支払いです。ユーザーは、開発した製品を使用するときにのみ料金が発生します。トラフィックがなければ、料金はまったくかかりません。

ビジネスが成功し、継続的かつ安定したトラフィックがあり、クラウドのコストに敏感で、インフラストラクチャを自分で保守する意欲があり、追加の開発作業を受け入れることができる場合は、現時点では、いくつかの開発作業を検討できます。ワークロードをコンテナに移行するなどのアーキテクチャの調整。

これは市場指向、ビジネス指向のアプローチであり、より機敏なアプローチです。

仮想マシン、コンテナ、ソフトウェアなどのセットアップに多大な費用と労力を費やした結果、その製品が市場が求めているものではないことが判明するのは、非常に無駄なことです。

サーバーレスEDA(イベントドリブンアーキテクチャ)は相性が良く、導入するとシステム内の各コンポーネントが互いに影響を与えないようにシステム全体を疎結合状態にして継続的に考える必要があります。これは優れたデザインの目標の 1 つです。

将来的にモノリスに「戻りたい」場合や、システム全体の一部がマイクロサービスを使用し、一部がモノリスを使用する場合でも、ビデオ監視システムと同様に、以前のコンポーネント コードのほとんどを再利用できます。これらのコンポーネントをプロセスとコンテナに配置しサーバーレスによって元々提供されていた機能を補足および改善するために手動でコーディングします。

一方、システムが最初は疎結合ではなく、その後マイクロサービスやサーバーレスになりたい場合は、分割のコストが非常に高くなります。

 

3. まとめ

 

ビデオ監視システムの事例に関する議論は非常に貴重であり、私たちに警鐘を鳴らしました。マイクロサービスやサーバーレスが悪いということではなく、適切なタイミングで適切なアーキテクチャを選択する必要があるということです。

最新のアプリケーションのアーキテクチャ設計は、サーバーレスファーストの精神を持ち、インフラストラクチャについてあまり考えず、ビジネスの実装に焦点を当て、製品とサービスを迅速に発売し、実際のニーズに応じて調整することで、ビジネスの最大の価値を実現する必要があります。最大化します。

最新のアプリケーション向けの Amazon クラウド テクノロジーに関する最新情報を確認するには、リンクをクリックしてください。

リンク: https://aws.amazon.com/cn/modern-apps/

人民大学の卒業生らが全学生の情報を盗んで美人採点サイトを構築、刑事拘束された NTアーキテクチャをベースにしたWindows版QQが正式リリース 米国は中国の利用を制限トレーニング AI モデルを提供する Amazon、Microsoft などのクラウド サービスの オープンソース プロジェクトが機能開発を停止すると発表 2023 年に最も高給の技術職であるLeaferJS がリリース: オープンソースの強力な 2D グラフィックス ライブラリである Visual Studio Code 1.80 が サポート端末画像機能 . スレッド登録数3,000万突破 「変化」 deepin、7月のApple M1データベースランキングに合わせてAsahi Linux採用 :Oracle急上昇、再びスコア拡大
{{名前}}
{{名前}}

おすすめ

転載: my.oschina.net/u/4806939/blog/10087103