本記事はJapan AWS Ambassadors Advent Calendar 2023の記念すべき20日目のエントリーです。
昨日、12月19日は高橋さんの記事「AWS Well-Architected の活用状況を図にしてみた」でした。
さて、唐突ですが、わたしはAWS Authorized Instructor ChampionやAWS Immersion Days の講師として、 AWS クラウドを学びたい社内外の方々に向けて、トレーニングを不定期で実施してます。
そんなトレーニングでは、「新入社員の方」や「IT用語はよくわからないけれど、商材として扱わないとならない営業の方」、「アプリケーション開発はしているけれどインフラについてはよくわからない」、「内製化を始めるのでクラウドを学び始めないとならなくなった情シスの方」など、さまざまな属性の方が受講なさいます。もちろん、お詳しい方もいらっしゃいますし、述べた属性以外の方々も多数いらっしゃいます。
せっかく受講されるからには、クラウドの良さを知っていただきたいですし、今まで身につけた知識や技術と異なる用語や概念で尻込みしてしまっては勿体無い!ということで、タイトルにあるように、何かに例えて受講者自身で「イメージ」できるように「腹落ち」できるように繋げています。
今回お伝えする内容は「正解」や「業界標準」といったものではありません。また、当社の見解でもありません。もちろん、AWS さんや AWS Ambassadors、AWS Authorized Instructor の公式見解でもありません。
あくまで、わたしが受講者の方に向けてイメージしやすい形で伝えるにはどうしたら良いかを模索した結果をお伝えするものです。
今回の対象のサービスや機能、用語
- AWSクラウド、クラウドコンピューティング
- 疎結合(Amazon Simple Queue Service、Amazon Simple Notification Service)
上記、2種類、3つの事柄についての「たとえ話の事例」をお伝えします。
AWSクラウド、クラウドコンピューティング
まず、「クラウドコンピューティング」を辞書で引いてみると「インターネット上に存在するサーバーを利用してデータ処理する形態」と出てきます。
なので、AWSクラウドといえば、Amazon.com の関連会社である Amazon Web Services社が提供するクラウドコンピューティングサービスであると言えます。
定義や言葉の意味で言えば、この通りなのですが、じゃあ何ができるの?とかクラウドは何が嬉しいの?と説明できるかといえば難しいと思います。
そこで、わたしはクラウドコンピューティングを「貸し畑」と例えることが多いです。
なぜ、貸し畑なのか
野菜や果実などを育て収穫できる畑を扱うには広大な土地が必要です。ある程度の広さの土地がある家であれば叶うこともありますが、集合住宅住まいだったりすると庭がない家も多いです。そういった際に農作物を作りたいとなると必然的に畑を借りる必要があります。
従来のオンプレミスの世界では、データーセンター事業者に借りてサービス運用をすることがあります。それは貸し畑じゃないのか?と疑問に感じる方がいらっしゃると思います。
この場合、データーセンター事業者に借りる場合は「土地(の区画)」を借りていると、わたしは説明しています。
野菜や果物は、土のアルカリ性や酸性などさまざまな特性に応じて、成果物の出来上がりに差が出ますしそもそも成らないことがありますが、区画を借りているだけなので、適切な土や水素イオン指数を整えたり、雑草の抜去、作物が生えすぎたら間引きをしたり、肥料を与えたり、害虫から防いだりといった作業(運用)は、借りている自分たちでほとんどやらないとなりません。
そのため、作りたいものに合わせて、土に相当するサーバーや区画の区切りであるラックといった機器をシステムに合わせて自分たちで調達して設置しないとなりません。その調達には時間がかかるので、すぐに利用開始したいとしても非常に難しいです。運用も自分たちでやらないとならないし、害虫もとい侵害や攻撃といった侵害の恐れについても自分たちでなんとかしないとなりません。
そこで、クラウドコンピューティングです。
クラウドコンピューティングは「貸し畑」に例えてお伝えしている通り、畑を貸してくれます。
作りたい農作物(システム)にあった畑(サービス)を選んで、構築を行います。
例えば。Amazon Elastic Compute Cloud(Amazon EC2)に代表される仮想マシンサービスならば、作りたい野菜の品種(システム特性)に応じた多種多様な土(インスタンスタイプ)や畑の広さ(インスタンスサイズ)が用意されていると言えます。
さらに畑によっては、管理人がついて定期的に雑草を抜去や間引きといった運用を代行してくれるように、自身/自社で運用する対象が存在しない畑(サーバーレス)もあります。
利用者/開発者であるわたしたちは、必要な時に必要なだけ畑を借りて、おいしい野菜を作っていくことに注力しようということです。
疎結合
次は 疎結合を説明する際のたとえ話です。
疎結合、言葉だけ見れば結合が「疎」とあるので密結合とは逆の意味だったり疎かとイメージしたりしてしまいます。
情報通信システムでは様々な要素、つまり、機能を提供するサーバーがお互いに通信を行って機能を構成します。
ウェブアプリケーションであれば利用者から ウェブサーバーにアクセスし、ウェブサーバーはアプリケーションサーバーに要求を送信し、アプリケーションサーバーはデーターベースサーバーとやりとりを行い処理結果をウェブサーバーを介して、利用者へ結果を返却します。
この各サーバーが不調を訴えて、処理中に止まってしまうとその仕掛中の情報の取り扱いが不明になります。同期処理に時間がかかって待ち時間が長くなると利用者の不満につながります。
そのため、非同期処理を取り入れるとともに、仕掛中の情報を極力サーバー内で持たないようにして、各サーバーは、可用性の高い(停止しにくい)連携機能とやりとりをします。
これが疎結合の基本的な考え方です。
その連携機能として用いられるのが、Amazon Simple Queue Service(Amazon SQS)やAmazon Simple Notification Service(Amazon SNS)といったサービスです。
Amazon SQS は宅配便で例える
わたしはAmazon SQSを用いた疎結合の仕組みを宅配便で例えています。
機能について完全な例えや説明になっていないところもありますが、これは「イメージできること」が主目的であるためです。
荷物(メッセージ)を送りたい自分(プロデューサー)と送り先(コンシューマー)がいるとして、同じ市町村内くらいなら直接手渡しでもよいかもしれませんが、スケジュールのすり合わせなどが大変です。
そこで、宅配業者(キュー)の出番です。
宅配業者の運転手さんやコンビニエンスストアなどの受付店などに荷物を預けます。集配所に直接持ち込んでもよいでしょう。
各地で預けられた荷物はいったん、集配所に集められます。そこから、地域の大規模集配所(ベース店舗)に集められ、全国各地の大規模集配所に転送されていきます。
そして、地域の集配所に振り分けられ、運転手さんが配達してくれるという流れです。
送りたい自分は荷物を預けるだけで手続きが終わります。
また、送り先が不在の場合は運転手さんが再配達(リトライ)をしてくれます。
そして、配達事故が起きた際には補償もしてくれます。
Amazon SNSは新聞配達で例える
ちなみに、Amazon SNSを用いた疎結合の仕組みは、新聞配達に例えることが多いです。
新聞を発行する新聞社(パブリッシャー)、新聞販売店(トピック)、読者(サブスクライバー)として、考え、新聞社が新聞を発行すると販売店に送られ、読者に配達される。
Amazon SQS(宅配便)との違いは特に呼び鈴などは鳴らされず郵便受けや軒先に置かれて対応が終了するというものです。
まとめ
今回はよく受講者さんにお話しする内容を記事としてまとめました。
他にもいろいろとたとえ話はするので、機会があったら第2弾、第3弾とまとめていきます。
さて、新しく知る言葉や仕組みについては「面白い!」と思える状況であれば、能動的に率先して学びを深めていける場合は多いですが、そうではない場合には理解しづらいことも多々あります。
そこで、現実世界で慣れ親しんだ言葉を使うことで、新しく学ぶ方や IT に明るくない方でもイメージしやすくとっつきやすくなると思います。
例えば、自分の親世代やお子さんに説明すると想像すれば、色々な比喩が生まれて、たとえ話が広がっていきます!
最後までお読みいただきありがとうございました。
明日、12月21日は@schwrzKtzさんの記事です!楽しみですね~✨
ーーー
記載されている会社名、製品名、サービス名、ロゴ等は各社の商標または登録商標です。