システム設計における抽象化の適用 – システム設計 02

システム設計-システム設計-システム設計における抽象化の適用-hogantech-hoganblab

抽象的とは何ですか?

抽象的な概念は、システム設計中に無関係な詳細を隠すのに役立ち、アーキテクチャ全体に集中できるようになります。抽象化によってシステム設計内の複雑さが隠蔽され、システム設計の結果により集中できるようになるため、詳細から脱却することが重要です。

今日の情報が豊富な世界では、私たちは皆コンピューターを使って仕事をしていますが、ハードウェアを構築したり、オペレーティング システムをゼロから開発したりするわけではありません。私たちはシステムの構築に徹底的に取り組むのではなく、目の前の仕事を行うためにコンピューターを使用します。

ここでは、キットも例として使用されます。ソフトウェア エンジニアは、大規模なシステムを開発するために他の人が作成したキットを使用することがよくあります。したがって、全員が独自のキットを開発しなければならない場合、全員が仕事を完了することができなくなります。逆に、他の人が作成したパッケージを使用する場合は、他の機能の開発に集中するだけで済みます。これは抽象的な概念に相当します。「スイート」は、機能と機能を使用するためのシンプルなインターフェイスを提供します。これがどのように実装されるかについての内部詳細を非表示にします。優れた抽象化により、開発者は同様のニーズを持つ複数のプロジェクト間で抽象化を再利用できます。

データベースの抽象化

トランザクションはデータベースの抽象化であり、多数のユーザーが同時にデータの読み取り、書き込み、または変更を行う場合、トランザクションは多くの問題を隠し、たとえば、成功した場合は続行できますが、失敗した場合は中止されます。 。いずれの場合も、データは一貫性のある状態から新しい一貫性のある状態 (一貫性) に移行されます。

このような抽象的な概念により、ユーザーは高い同時実行性 (High Concurrent) のデータ変更について心配する必要がなく、ビジネス ロジック (ビジネス ロジック) に集中できます。

分散型システムにおける抽象化

分散化における抽象化は、エンジニアの作業を簡素化し、分散システムの根底にある複雑さに対処する負担から解放するのに役立ちます。

Amazon AWS、Google Cloud、Microsoft Azure などの多くの大手テクノロジー企業がさまざまなレベルの抽象化を分散システムに提供しているため、分散システムの抽象的な概念はますます人気が高まっています。 CDN、ストレージなど、これらの分散システムのサービスも、実際に理解することなくユーザーに直接提供されます。この利点は、ユーザーが一部のシステム コンポーネントを最初から実装する方法を理解するために多くの時間を費やすのではなく、プログラム開発だけに集中すればよいことです。

ネットワークの抽象化: リモート プロシージャ コール

ここでは、IBM のドキュメントの中国語名を参照し、また次のドキュメントも参照します。書類

RPCとは何ですか?

「リモートプロシージャコール(RPC)」は、オペレーティングシステムで使用される高度な通信の参考例となる通信プロトコルです。分散システムで広く使われているプロセス間通信プロトコルとも言えます。ネットワーク通信の OSI モデルでは、RPC はネットワーク トランスポート層とネットワーク アプリケーション層に及びます。

IBM の詳細な説明もここで提供されています。 RPC は、通信プログラム間でメッセージを送信するために、伝送制御プロトコル/インターネット プロトコル (TCP/IP) やユーザー データ パケット プロトコル (UDP) などの低レベルの伝送プロトコルの存在を前提としています。 RPC は、Web アプリケーションをサポートするように設計されたクライアントからサーバーへの論理通信システムを実装します。

RPC はどのように機能しますか?

RPC を実行すると、最初に呼び出し環境が一時停止され、プロセス パラメーターがネットワーク経由でプロセスが実行される環境に送信されます。プロシージャの実行が完了すると、結果がコール間環境に返され、通常のプロシージャ呼び出しと同様に実行が再開されます。

クライアント側 – サーバー側プログラムを例に挙げます。RPC プログラムは次の部分に分けられます。 Microsoftの公式ドキュメント展示用の写真:

システムデザイン-02-RPC

RPC システムは、クライアント、クライアント スタブ、およびクライアント マシン上で実行される RPC 実行サービスで構成されます。サーバー、サーバー スタブ、および RPC 実行サービスはサーバー マシン上で実行されます。

現実の RPC アプリケーション

RPC は、現実世界の多くのサービスで使用されています。以下の例を見てください。

グーグル

有名なクラウド サービスである Google GCP は、分散システムの一部に RPC を使用します。彼らが開発した gRPC、RPC を使用して、より効率的で高性能な分散システムを構築するオープンソース フレームワーク。 Google 検索、YouTube などのサービスで使用されるこの RPC アプリケーションにより、ソフトウェア システム全体がさまざまなシステム コンポーネント間の接続と通信を確立し、より効率的で安定した接続を実現できるようになります。

Facebook

Facebook のサービスのほとんどは、 倹約 RPC を実行するために、一部のストレージ システムは Thrift を使用してディスク上のレコードをシリアル化します (レコードのシリアル化)。この RPC アプリケーションにはいくつかの利点もあります。たとえば、Python クライアントと C++ サーバー間の接続など、異なるプログラミング言語間での相互運用性と相互運用性を実現できます。

結語

いくつかの重要なポイントを次に示します。

抽象化は、システムを設計するときに無関係な詳細を隠し、アーキテクチャ全体に集中できるようにするのに役立つ概念です。

抽象化によりシステム設計内の複雑さを隠すことができ、システム設計の結果により集中できるようになります。

データベースの抽象化、分散システムの抽象化、ネットワークの抽象化はすべて、抽象概念の応用です。

RPC は、オペレーティング システムで使用される高度な通信の参考例を提供する通信プロトコルです。

RPC は、Google GCP や Facebook など、多くの実世界のサービスで使用されています。

引用

IBM RPC ドキュメント

Microsoft – RPC の仕組み

Google GRPC

フェイスブックの倹約

その他の記事

最新システム設計入門 - システム設計 01

モノレポを本当に知っていますか? 5分で学ぶフロントエンド・メガアーキテクチャー

なぜ大企業はNxを使うのか? モノレポツール 5分のクイックセットアップ

2023 Yahoo! ソフトウェア・エンジニア・インタビュー

ja日本語