セミナー概要 

クラウドの特性を生かしたシステムを作るための基礎アーキテクチャについて学ぶセミナー「クラウド・アーキテクチャの基礎」がBFT道場で開催された。 自動運用を行うため、需要に応じたIT資源を柔軟に配備することができるクラウドコンピューティング環境について、IBMのDistinguished Engineerの経歴を持つ山下克司氏が解説する。 なお、セミナーは「クラウド・アーキテクチャ」をテーマにして全4回の開催を予定している。今回はその初回である。 

クラウドコンピューティング環境の基礎 

ITサービスのインフラを担うクラウドコンピューティングにおいて、最大の特徴はいつでもどこでもITの機能や性能をサービスとして利用できることである。 

さらに「最も大事なことはインターネットで使えること」だと山下氏は語る。 

世界中のデータセンターに接続できて、インターネットにつながっていることで構築側もユーザー側もスムーズにサービスを利用することができる。従来のハードウエアは要らず、ソフトウエアからナビゲーションをされてシステムの枠組みを作ってボタン一つでそれを作り上げるのだ。 

これによって自分が欲しいと思うようなシステムのイメージがスマートに実現できるようになる。 

VMwareのような仮想マシンを作り上げる技術は以前から存在した。しかし、仮想マシンを構築する場合は適切なサイズの空きスペースを見つけて新設する必要がある。さらにそのマシンは個別で動いており、何千台のマシンを一斉に設定変更するのには膨大な労力がかかってしまう。

クラウドではアプリケーションやOSやミドルウエアの管理制御をソフトウエアで行うため、不具合があれば勝手に復旧してくれるし、事前に設定したマシンを起動してくれる。
したがって従来の仮想マシンにはない大幅な効率化が実現できているのだ。 

一つのシステムを正常に動かすためにはさまざまなリソースが必要である。 

そのため、IaaS、SaaS、PaaS、BPaaS、FaaS (※1)のように提供する資源の種類、形態によってクラウドの種類はさまざまに分かれている。 

※1
IaaS (Infrastructure as a Service) ...サーバー、CPU、メモリ、ストレージなど基礎的なIT資源を提供するサービス。 
SaaS (Software as a Service) ...アプリケーションを提供するサービス。システムのトランザクションや使用ユーザー数に応じて課金される。  
PaaS (Platform as a Service) ...システムのプラットフォームを提供するサービス。 
BPaaS (Business Process as a Service) ...クラウド構築のプロセスをアウトソーシングのような形で提供するサービス。 
FaaS (Function as a Service) ...APIを提供するサービス。APIのコール数単位で課金される。

資源調達の仕組みが変わった今ではコストの最適化やクラウド構築のプロセスを提供する IT サービスマネージメントの視点が重要になってきている。 

知識さえあれば

『われわれはサービスを始めるという決意をしたらそれを10時間で提供できる』

のである。 

クラウドの基本アーキテクチャ 

オンプレミスとクラウドを分けているのはソフトウエアで実装されているか否かの違いである。オンプレミスは一定水準を保った仕事をしてくれるけれど、いざ不具合が発生した時の替えが聞かないという欠点がある。クラウドは共用の資源プールで構築するので物理的なマシンがどこにあるかを把握できない、したがって与えられるパフォーマンスが変動する可能性を加味して性能管理をきちんとするのが肝になってくる。 

仮想化という言葉についてみなさんはどんなイメージをお持ちだろうか。 

きっと何か物事を抽象化するような印象を受けるだろう。しかし仮想化はどちらかといえばその本質は実体化に近い。 

仮想化とはハードウエアの領域を紐解いてソフトウエアでそれを実現してあげることであり、それによってハードウエアの課題をソフトウエアで置き換えてあげることでもある。 

仮想化さえ成ってしまえばクラウドなのかといえばそうではない、クラウドのサービス化に一番重要なのはソフトウエアをソフトウエアで管理することなのだ。 

仮想マシンに対してソフトウエアがサービス要求管理、コンパイルを担当してシステム構築の指示出しを行ってくれる。一度スケジューリングしてあげれば性能管理はもちろんのこと、コントラクト(契約)を監視してコストパフォーマンスまで管理してくれるのだから驚きである。 

クラウドはサーバーでできていると思われがちだが、サーバーの中身に関しては顧客側で監視する必要があり、ソフトウエアが監視してくれるのはリソースの性能とコントラクトの状態なのだ。クラウドはサーバーでなくデータとソフトウエアの塊なのである。 

クラウドサービスは落ちないけれどインスタンスは落ちてしまう。使用中のサーバーが故障するのは避けられないけれど、正常なサーバーを見つけ出して1秒でも早く修復してサービスを動かし続けるのが重要なのである。 

クラウドを構成するコンポーネント 

マルチテナントで作る場合は共有リソースで構成することになる。リソースを遠隔で利用するためどこにどんなマシンがあるのか把握できないので、障害に巻き込まれたときのため、そして何より障害の発生源が自分たちであった時のために注意を払わなければならない。 

FaaSは近年流行しているサービスの形であり、最も有名なものの一つにAWSのLambda関数があげられるだろう。 

サーバーレスシステムはシングルページアーキテクチャに組み込まれることが多い。フロントエンドを通って呼び出したAPIを使って望む結果を引き寄せる。AWSの API Gateway が代表的だが、最近はユーザーと認証システムと呼び出すAPIの間にAPIマネージメント機能を挟み込むのが主流である。これまでの形式では認証システムがAPIの使い分けまで一手に引き受けていたが、このシステムを挟み込むおかげでシングルページアーキテクチャの特性である通信の軽さを生かすことができ、サーバーレスアーキテクチャが作りやすくなった。 

このような背景があってFaaSがはやっている。 

クラウドネイティブアプリケーションの基礎 

クラウドは従来のオンプレミスで構成されたシステムとは在り方が違う。 

障害発生を恐れていたオンプレの設計と障害発生を前提にして復旧時間の短縮に情熱をそそぐクラウドの設計では思想がまるで違うものであるため、既存のシステムをクラウドに移行するのは骨が折れる。 

クラウドネイティブアプリケーションとはクラウドで設計することを前提に考えるシステムのことである。このクラウドネイティブアプリケーションの作り方の方針としては「12FactorApp」が参考になる。これにはクラウドでシステムを構築するのに役立つ十数個の助言が記載されており、インターネットで検索すればだれでも閲覧できるだろう。そしてこれにはアプリケーション開発側、インフラ構築運用側の双方に役立つことが書いてあるので両者の溝を埋めるための良質なインプットになってくれること請け合いである。 

過去、CERN (※2)でユニークな記事が公開された。「クラウドはペットであるか、それとも家畜であるのか」というものである。システムにとって稼働するサーバーは替えがきかないペットのようなものであったが、クラウドでは障害発生時にサーバーを切り捨てて替えのリソースで即刻復旧作業に移ったり、リソースを番号で識別していたりと、利益を追求するための家畜のように考えられている。どちらの意識で構築に携わることがわれわれにとって良い影響を与えるのかについては議論の余地があるだろう。 

※2 CERNは和名で欧州原子核研究機構と呼ばれ、組織内での通常研究に加えて科学的、技術的な学術記事をマルチに発信している組織である。

ここで取り上げたいのはべき等性(idempotence)についてである。クラウドではリソースを大量生産して代わりを作り、災害発生時は容赦なくリソースを切り捨てる。しかしそんなまねができるのはべき等性のおかげである。べき等性とは「同じレシピなら、どこで実行しても同じ結果になる」という特性のことだ。プログラムコードは大切だけれどそれを基に作られたサーバーはさして大切ではないというのがこの特性に当てはまる。べき等性を意識した構成を考えることがクラウドを十全に利用するために必要なのである。 

アンケート結果紹介 

セミナー後の受講生へのアンケートでは大半が「役に立った」と回答してくれた。 
セミナーにはクラウドについて学び始めて日が浅い受講生や仕事で長くクラウドを扱ってきた受講生もいたが「クラウド活用の全体像を知ることができた」「既存知識の整理に役立った」「具体的かつ信念に基づいた力のある説明で、とても説得力があった」など、非常に前向きな感想をいただいている。 
クラウド・アーキテクチャについて、資格勉強を通じて具体的な使い方についての知識を蓄えても、その有用性や成り立ちなどを説明することは難しいだろう。セミナーを通じてその部分をつかむことで、クラウド・アーキテクチャのより深い理解の助けになれば幸いである。 

セミナーを受講して 

私も実際に講義を受講したが非常に聞きやすかったように思う。 
技術分野の講義は専門用語が多く、とっつきにくい印象を受ける。しかし山下氏はそこに大まかな注釈を交えながら解説してくれたおかげで耳に入りやすく、実際に彼が体験したことを情感を込めて語ってくれるため共感もしやすかった。 
教本を頼りに知識を蓄えるエンジニアは数多くいるが、現場で働いて何を感じたかまで含めて学ぶことができるのは講義ならではの魅力だと思う。私自身、勉強は教材に頼り切りな部分があって、間違った理解がもとで迷惑をかけてしまったり、現場での価値観を把握できなかったり。そんな歯がゆい思いをしないためにも、講師からの生の解説を聞くのは勉強になるだろう。 

本セミナーは、BFT道場の教育サービスご契約者、受講者であれば誰でも受講できる無料セミナーとして実施した際の内容をレポート化したものだ。
BFT道場では現役のインフラエンジニア講師による実践型IT技術研修を提供している。詳しくはBFT道場をご覧いただきたい。