対象読者にあわせて、AWSの学び方を紹介する連載の第2回。今回は、オンプレミス環境(通称:オンプレ)での経験が既にある人に向けたものになります。
第1回 で触れたとおり、AWSはサーバーやネットワークなど一式を借りられるサービスです。借りられるものは多岐にわたり、いわゆるインフラだけでなく、データ分析や機械学習を行うためのサービスなどもそろっています。
AWSを難しいと述べる人の多くがインフラの知識不足によるところで、そういった意味ではオンプレでの経験のある人はアドバンテージがあります。ただクラウド特有の考え方や活かし方といったものがあるので、オンプレと全く同じように、というわけにはいきません。
オンプレとクラウドはどう違うのか、そして、何を学べば良いかについて話していきましょう。
オンプレを知っている人から見た「AWSとはどんなもの?」
今回も、軽くAWSの紹介から入っていきます。
AWS(Amazon Web Services)は、Amazon Web Services社が提供する「クラウドコンピューティングサービス」です。要は、システム構築にかかわるいろいろなものをインターネット経由で貸してくれるのですが、オンプレや従来のレンタルサーバーとは考え方が大きく違います。
とくに、表面的な違いではなく、本質的な「勘所」の違いを理解できていないと「クラウドらしい使い方」ができず、「 便利だけど、ランニングコストの高いサービス」を使う羽目になります。それ自体は悪いことではないですが、せっかくなので、クラウドらしい使い方を身につけましょう。
まず表面的な話からすると、最初に皆さんが遭遇するのは「基本的に、GUIでの操作ですべてがまかなえる」ということでしょう。もちろん複雑なことをやりたくなったらCLIでの操作も必要になりますし、ApacheやRDBMSなどの設定は従来通りSSHでログインして操作するなどします。
しかし、ミドルウェアのインストールやサーバーを用意すること自体は、「 マネジメントコンソール」と呼ばれる画面からボタンポチでできます。また、クラウドなのでリモートで操作できます。データセンターには入りません。というか、入れません。このように便利に操作できます。
ちょっと戸惑いそうなのは、すべてがマイクロサービスであることです。たとえば、サーバーを貸してくれるのは「Amazon Elastic Compute Cloud(通称:EC2) 」というサービスですが、静的IPアドレスは「Elastic IP アドレス」という名前のサービスとして独立していますし、サーバーとセットで使うストレージも「Amazon Elastic Block Store(通称:EBS) 」という違うサービスです。なにか一つやろうとしても、サービスとサービスとサービスと(略)の組み合わせなので、慣れないと面倒だと感じるかもしれません。
出典:記事末掲載書籍、70ページより
敵か味方か?マネージドサービス
そして、オンプレ出身の人がもっともつかみかねるのが「マネージドサービス」でしょう。
AWSでは、マネージドサービスと呼ばれるAWSに運用を任せられるサービスがあります。運用全部を丸ごとお任せというわけにはいきませんが、バックアップやミドルウェアのアップデートを自動で行ったり、サーバーをスケーリングする設定にできたりします。
このように説明すると、「 自動でアップデートされたら困る!」と焦る人もいるかもしれません。僕も非常によくわかります。大体、自動でアップデートなぞした日には、プログラマがプリプリ怒る未来しか見えません。
それはわかるのですが、昨今ではサイバー攻撃も激しくなっており、いくら小さい会社であっても「長らくアップデートしない」という選択はできなくなっています。放置すれば、サイバー攻撃の土台や下準備に使われて、会社をひっくり返す騒ぎになることでしょう。そのくらいなら、プログラマにスナック菓子でも渡しながら「アップデート前提の作りにしてください」と頭を下げたほうがマシです。
なお、自動でスケーリングをするためには、当然のことながら「スケーリングを前提とした設計」が求められます。オンプレでやっていたことをそのまま載せ替えるわけにはいきません。たとえばデータベースならば、「 データベースが増減する」ことを前提にしなければならないのです。
また、サービスによって、マネージドに対応しているものと、そうでないものがあります。データベースの「Amazon Relational Database Service(通称:RDS) 」や、ストレージを貸してくれる「Amazon Simple Storage Service(通称:S3) 」は、対応している代表的なサービスですが、おそらく最も有名なサービスであるAmazon EC2(サーバー機能を貸してくれるサービス)は対応していません。
データ分析に使われる「Amazon Redshift」は、サーバーを立てる通常版と、サーバーレス版があり、どちらもマネージドです。しかし、サーバーレス版は自動でスケーリングしますが、通常版はしません。このようにマネージドであっても個々のサービスで少し違うこともあります。
クラウドネイティブでなければ、 クラウドらしくならない
このようなクラウドを前提とした考え方を「クラウドネイティブ」と言います。
クラウドネイティブはAWSに限らず、クラウドコンピューティング全般に適用される考え方で、設計から開発、運用まで、クラウドを前提として推し進めることです。CNCF(Cloud Native Computing Foundation)というクラウドを推し進める組織が定義しています。
クラウドネイティブの重要なキーワードは、「 コンテナ」「 サービスメッシュ」「 マイクロサービス」「 イミュータブルインフラストラクチャ」「 宣言型API」「 マルチテナンシー」「 サーバーレス」の7つです。
コンテナはDockerが代表例で、「 プログラムの実行環境を隔離できる仕組み」です。これを使うと、全部一つにサーバーに入れていた個々のソフトウェアを、独立した状態で扱えるようになります。
サーバーレスは「サーバーを意識しないで使える仕組み」のことです。サーバーを必要としないわけではなく、サーバーをAWSが用意してくれるため、ユーザーはサーバーのことを考えなくていいのです。
そのほかの言葉の意味がどういうものなのか、詳しくは次回取り上げますが、ざっくりと言えば「機能を小分けに分離して、貼ったり、剥がしたりすることで、開発・運用を促進する」考え方です。コンテナやサーバーレスがわかりやすいですが、作ったり捨てたり組み替えたりがしやすくなります。つまり、「 すぐにシステムを変えられるようにして、世の中の変化(求められるシステム)に対応し続けやすくなること」と理解するとよいでしょう。
こうした考え方を理解した上で使わないと、クラウドを活かせません。
僕の書いた『図解即戦力 Amazon Web Servicesのしくみと技術がこれ1冊でしっかりわかる教科書』は、初版が2019年。今年の4月に改訂版を出しましたが、初版の時から「AWSの特徴は、簡単に操作できることや、マネージドサービスである」「 AWSの従量制は、使い方によっては安くない」と伝えています。それにも関わらず、なぜかウェブで「AWSのメリット」を検索すると「従量制で安く済む」という記述が多く出てきます。
従量制であることはAWSの特徴の一つであり、使い方によってはメリットでもあるのですが、クラウドの本筋はそこではありません。「 世の中の変化に対応しやすい」ことが、一番の根幹なのです。
そしてそのために、AWSのサービスはユーザーが全部を触れるわけではなかったり、オンプレとは勝手の違うことも多いのです。
どうやって学べばいいの?
こうした情報を踏まえ、オンプレでの経験のある人が、AWSを学ぶにはどうしたら良いでしょうか。
① AWSとは何者なのか概要を知る
前回入門者向けでも同じことを述べましたが、とにかく最初は知ることです。孫子も「彼を知り己を知れば百戦殆からず」と言っているとおり、AWSについてどのようなものなのか、知らなければ話になりません。
また、先ほどAWSはマイクロサービスであると言及しましたが、そのサービス数は300以上あります。全部を知る必要はありませんが、EC2やS3はもちろんのこと、データベースサービスのAmazon Aurora、コンテナサービスであるAmazon Elastic Container Service(通称:ECS) 、サーバーレスのAWS Lambdaあたりまでは、存在を知っておきたいところです。
② クラウドネイティブの基本を知る
初心者ならば、このあと「実際に触ってみましょう」となるところですが、既にオンプレでの経験のある皆さんは、ハンズオンの前にクラウドネイティブについて学んでおくことを推奨します。なぜならば、AWSのハンズオンは、画面上でいくつかクリックしていくだけで、大した作業ではないからです。
従来のサーバーのように、筐体を用意して、LinuxのCDを用意して、Apacheをインストールして……とやることが多ければ、それも勉強になりますが、AWSの場合、このあたりはボタンポチで一瞬でできます。できあがったものを見ると達成感もあり、やった気になりますが、あまり意味はありません。それよりも先にクラウドネイティブについての考え方を押さえたあとで、実際の画面を触るようにしましょう。
③ AWSの操作方法を知る
いよいよハンズオンです。概要やクラウドネイティブの考え方を知ったうえでAWSを操作すると、その意味するところがわかるでしょう。最初はEC2(サーバー機能)や、S3(ストレージ)を触るところからで良いですが、経験者の皆さんはぜひコンテナ(ECS)や、サーバーレス(Lambda)も体験してください。最近なら、生成AI関連も触ってみると面白いかもしれませんね。APIで翻訳や文字おこしのできるサービスがあって、楽しいですよ!
何事も机上で学ぶだけでは身につきづらいです。実際に手を動かしてみましょう。
④ AWSを自分のプロジェクトにどう活かせるのか考える
実際に触ってみると「AWSってこういうものなのか」が見えてくると思います。
そうしたら、自分のプロジェクトにどのように活かせるか考えてみましょう。最近では「クラウドが流行りだからクラウドにしたい」「 クラウドは安いと聞いた」「 クラウドくらい使わないといけない」などと、上司や顧客に陰鬱な呪文を唱えられることもあるでしょう。そのときに、自分がどう説明するのかを考えておいてください。
クラウドが便利だなと思ったら使えば良いですし、自分のプロジェクトには合わないなと思ったら、全力で反論しましょう。
僕はAWSが好きですし、本も書いていますが、すべてのプロジェクトで使うべきだとは考えていません。たとえば、同じクラウドのMicrosoft Azureや、GoogleCloud、さくらのクラウドなど、他社のほうが向いている事例もありますし、オンプレのほうが安く上がることだってあります。併用しても良いでしょう。
大事なのは「あなたのプロジェクトにとって、ベストの回答なのか」なのです。
オンプレ経験者がバリバリのAWSスペシャリストになるには
冒頭でも述べたとおり、オンプレ経験のある皆さんは、大きなアドバンテージを持っています。これまでの知識や経験は、AWSを使う上でも活きてきます。
一方で、従来の考え方にとらわれすぎると巧くいきません。そこは、新しい考え方を学ぶつもりで向き合うと良いでしょう。
次回は、コンテナ技術やサーバーレス、IaCなどの「クラウドらしい技術」についてさらに詳しく見ていきます。今回の内容が身についてきたら、そちらに進んでみてください。