マイクロサービスアーキテクチャ=分散コンピューティング

Habrのすべての読者への挨拶! 私の名前はイゴール・リバコフで、カザフスタンのIT企業DARのテクニカルディレクターです。 今日は、現代の情報システムにおける並列コンピューティングの原理の理解と使用についてお話しします。 これをより深く理解するために、現代の情報システムの開発における並列分散コンピューティングの概念の研究と実用化に賛成の議論をしたいと思います。







パラレルコンピューティングまたはIntelの創設者は何をしますか



まず、少し歴史。 1965年、Intelの創始者の1人であるGordon Mooreがパターンを発見しました。マイクロサーキットの新しいモデルの出現は、前任者の約1年後に観察されました。 集積回路チップに配置されたトランジスタの数は24か月ごとに2倍になったことがわかりました。 この観察はムーアの法則と呼ばれるようになりました。 Intelの創設者は、チップ内の要素数が1965年の2 ^ 6(約60)から1975年までに2 ^ 16(65,000)に増加すると予測していました。







さて、ムーアの法則が予測したこの追加の計算能力を実行できるようにするには、並列計算を使用することが必要になりました。 数十年にわたり、プロセッサメーカーは命令レベルでクロック速度と並列性を絶えず向上させてきたため、新しいプロセッサでは、プログラムコードを変更することなく古いシングルスレッドアプリケーションをより高速に実行できます。







2000年代半ば頃から、プロセッサメーカーはマルチコアアーキテクチャを好むようになりましたが、中央プロセッサのパフォーマンスの向上から最大限の利益を得るには、プログラムを適切な方法で書き換える必要があります。 ここで問題が発生します。 アムダールの法則に従って、すべてのアルゴリズムを並列化できるわけではないため、スーパーコンピューターで計算問題を解決する効率の基本的な限界が決定されるためです。







この制限を克服するために、分散コンピューティングのアプローチが使用されます。 これは、多くの場合、並列コンピューティングシステムに組み込まれている複数のコンピューターを使用して、労働集約的なコンピューティングの問題を解決するための方法です。 分散情報システムでの逐次計算は、多くの計算問題の同時解決を考慮して実行されます。 ローカルスーパーコンピューターとは対照的に、分散マルチプロセッサコンピューティングシステムの機能は、 スケーリングによるパフォーマンスの無限の向上の可能性です。







2005年中頃には、コンピューターにマルチコアプロセッサが大量に装備され、並列計算が可能になりました。 また、最新のネットワーク技術により、数百および数千のコンピューターを組み合わせることができます。 これにより、いわゆる「クラウドコンピューティング」が出現しました。







並列計算の使用



電子商取引などの現在の情報システムでは、顧客に質の高いサービスを提供することが急務となっています。 企業は、これまでにない新しいサービスと情報製品を発明することで競争しています。 サービスは、1つのオフィスではなく、1つの国ではなく、全世界のサービスのユーザーとして、高負荷および高フォールトトレランス用に設計する必要があります。







同時に、コンピューティング能力の一部のみを使用する古いソフトウェアが機能する場合、プロジェクトの経済的実現可能性を維持し、高価なサーバー機器に不要な資金を費やさないことが重要です。







アプリケーションシステムの開発者は新しい問題に直面しました-現代ビジネスの要件を満たすために情報システムを書き換える必要性と、サーバーリソースをより活用して総所有コストを削減する必要性。 現代の情報システムで対処する必要があるタスクは多様です。







機械学習とビッグデータ分析から始めて、ピーク時に既存の基本的なシステム機能の安定した運用を確保します。 たとえば、ここではオンラインストアで大量販売を引用できます。 これらのタスクはすべて、たとえばマイクロサービスアーキテクチャの実装など、並列コンピューティングと分散コンピューティングの組み合わせを使用して解決できます。







サービス品質管理



クライアントのサービスの実際の品質を測定するために、サービスレベル契約(SLA)の概念、つまりシステムパフォーマンスの統計メトリックが使用されます。







たとえば、開発者は、すべてのユーザーリクエストの95%が200ミリ秒を超えない応答時間で処理されるタスクを自分で設定できます。 ちなみに、ユーザーは待つことを好まないため、これは非常に現実的な非機能要件です。







サービスに対するユーザーの満足度を評価するために、Apdexインジケーターを使用できます。これは、成功(満足)応答と不満足(不満足)の比率を反映します。 たとえば、しきい値はSLA = 1.2秒であり、リクエストの応答時間の95%<= 1.2秒であれば、結果は成功します。 1.2秒以上4T(4.8秒)未満の多数のリクエストの場合、結果は満足のいくものと見なされ、多数のリクエストが4Tを超える場合、4.8秒を超えるリクエストは失敗と見なされます。







結論



最後に、マイクロサービスの開発には、実際に分散コンピューティングと並列コンピューティングの理解と実用化が含まれると言いたいと思います。







もちろん、いくつかのものを犠牲にする必要があります。









私の意見では、見返りに、私たちはもっと多くを得ます:










All Articles