さまざまなところで見聞きする「クラウド」。多くの企業がシステム開発に導入しています。 何かと話題になるものの、まだ自分では触ったことのないという人も多いのではないでしょうか?
クラウドをそろそろ始めようと思っても、いつ始めるべきか、そして、どこから始めるべきか、わからないところがたくさんあります。 今回、AWSに関する著書を多数執筆している大澤文孝氏に、現在のクラウドと開発について伺いました。
- インタビューイ プロフィール
クラウドの状況
――いまクラウドは、どのような状況なのでしょうか? 使っていて当たり前という声もあれば、導入検討の段階という声もあります。
まず、クラウドという言葉を整理しましょう。今回は、クラウドをAWSに代表されるパブリッククラウドとして考えることとします。「クラウドでのシステム構成=AWSなどを用いてシステムを構築する」と考えてください。以後の話では一部AWSを前提にします。
インフラを担うという点で、クラウドはとても活発に用いられています。開発の現場の選択肢としてはクラウドはオンプレミスと同等、あるいはそれ以上に候補として当たり前の存在になりつつあります。初期コストの少なさやサービス規模に応じてスケールしやすいこと、自社だけでは開発が難しいマネージドサービスが利用できる、保守体制がしっかりしているなど魅力は多くあります。
例えば次のようなケースではクラウド導入のメリットが大きいでしょう。
- 新規Webサービスを構築するのに、機器の購入など初期投資を抑えたい。
- クラウドプロバイダーが提供する機械学習システムなど、自社で構築が難しい機能を組み込んだサービスを展開したい。
- 社内システムの保守運用のコストを軽減したい。
国内海外含め多くのクラウドベンダーがありますがAmazon Web Services(アマゾンウェブサービス、AWS)、Microsoft Azure、Google Cloud Platform(GCP)が人気です。特にAWSが広く人気を集めていると感じています。
――Webサービスをクラウドでというのは想像しやすいですが、社内インフラをクラウド化できるのでしょうか?
少し前までは、クラウドというとWebサービスを提供するインフラとして注目を集めていました。近年は、社内システムをクラウドに移行する例が増えてきています。そういう意味では裾野が広がってきているでしょう。
(機器やOSサポートの)タイミング的に、ちょうど社内インフラを更新する時期なのかもしれません。しかしそれ以上に、AWSなどのクラウドが、安心・安全に使えるという認識が広まったことが要因として大きいと考えています。事例も増えてきており、技術選択が保守的な企業も手を出しやすくなってきたのではないでしょうか。
クラウドは先進的な技術から、一般的な技術になったなという感覚はシステム開発の現場ではある程度共有されていると思います。AWSのサイトでは事例も確認できます。
――クラウドに社内システムを構築するとして、安全性をどうやって担保するのでしょう?
オンプレミスのシステムを一部をクラウドに移行し、AWSなどのクラウドで構築したネットワークに、社内から専用線やVPNを引き込んで直結というのがよくあるパターンです。これでクラウドでもオンプレミスに近い、ネットワーク的に閉じた環境が構築できます。いわゆる閉域網を構築したければ専用線(AWSではDirect Connect)を使いましょう。
AWSには、利用者ごとに分離されたVPCというネットワークがあります。他の利用者と共用するわけではないので、AWSの利用だけでデータ流出するといった心配はありません、社内システムの移行先として安全性は担保されています。
――クラウドに移行すると、サーバーやシステムをクラウド用に作り直さないとならないのですよね?
構成にもよりますが、ほとんどの場合、大きな作り直しは必要ありません。
AWSには、仮想サーバーとなるEC2というサービスがあり、いままでのサーバーとほぼ同じように使えます。さまざまなOSを選択できるのでその上で動いているシステムのソフトウェアなどを作り直す必要はなく、丸ごと、ごっそりと移行できます。
これは、いまのシステムを「えいやっ」と持ち上げて(リフト)、クラウドにそのまま「よっこいしょ」って下ろす(シフト)感じなので、「リフトアンドシフト」と呼ばれています。
きちんとシステムを開発、保守していればそこまで大変ではありません。
――クラウドだとデータが、どこに保存されるかわからないのですよね? 社内データを保存するのは不安ではありませんか?
どこに保存されるかわからないというのは、誤解です。 AWSの場合、データを置く場所を決めたら、そこから勝手に動くことはありません。 特に、国をまたぐことは、絶対にありません。AWSで日本にデータを置くと決めたら、それが他の国に移動することはないのです。国外に持ち出せないデータを扱うときも問題にはなりません。
クラウドはデータがどこに保存されるかわからない、インターネットにすべて公開されてしまうというのはクラウド(雲)という用語が招いている誤解ですね。クラウドが当初どこでも使えるというような漠然としたバズワードだったことから、誤解される人もまだいますが、置き場所はクラウドを構成するデータセンター内で固定されます。
――クラウドは安全なのでしょうか? 流出の危険性は?
データをAWSに預けるのですから、流出は心配かもしれません。
仕組み上、データ流出が絶対に起こりえないとは言えません。しかし、AWSは各種認証を満たしたデータセンターで運営されており、普通のデータセンターに預けるのと同様、もしくはそれ以上のセキュリティーで運営されています。安全性はかなり高い水準で保たれているでしょう。
クラウドを使うだけでデータ流出に直結するということはまずありません。もちろん、利用者側での適切な設定や管理は必要です。
クラウドのコスト
――クラウドは安いから流行っているのですか?
初期投資という意味では、そうですね。コスト面で非常に優れています。
最初にお金を払わなくても、契約してから、ものの10分もあれば、最高性能のサーバーを用意できます。 既存設備がなく、初期投資を抑えたいスタートアップや個人にはありがたいでしょう。
利用時間単位の課金なので、使った分だけ支払うだけですみます。ただし、必ずしも単価が安いわけではありません。
――クラウドの単価が必ずしも安くないという点についてもう少し聞かせてください。
経験上、時間単価でみると従来のオンプレミスのほうが安く済むというケースも割とあります。
AWSはこちらで手がかからない分、AWSが管理運用の多くの部分を担っています。当然、その点は価格に上乗せされています。 そのため、たとえば既存システムからAWSに移行するとかえって高くついてしまうということも当然考えられます。 規模が大きくなると、AWSでもそれなりの費用がかかります。
クラウドにすれば必ず安く済むというわけではありません。システム開発の要件によってはオンプレミス、あるいはレンタルサーバーやVPSのほうが安く済むということもあるでしょう。システムの要件を整理して適切なものを選ぶ必要があります。
――人件費の削減は確実に期待できるのではないでしょうか?
初期投資だけでなく、人件費もクラウド活用の際に注目されます。クラウド運用すればオンプレミスで必要だった運用担当者が減らせるので人件費が安く済むという意見をよく見ます。これはかなり多くのケースで妥当な指摘でしょう。
サービスの安定運用を少人数で達成しようとしたとき、クラウドで大部分の安定性を担保できるのはクラウドの大きな強みです。
ただし、実際にはクラウドの経験がほとんどないところから立ち上げや移行を行おうとすると、クラウド運用にもクラウドに詳しい外部・内部の担当者が必要になるケースもあります。既存の人員のクラウド関連の教育コストも当然必要です。
こういったコストを考慮しておかないと思ったよりも経費削減につながらなかったということが起こりえます。
――そこまで安くないとなると、クラウドのメリットはどこにあるんでしょうか?
ここまでクラウドについて必ずしも安くなるかはわからない点を強調してきましたが、クラウドにすれば安く済むケースも当然たくさんあります。クラウドにすれば全部安上がりというありがちな誤解を解くために様々な考え方を紹介したという点に注意してください。
コスト面含め、クラウド使うメリットはいくつもあります。改めて整理してみましょう。
- 初期投資が大幅に抑えられる。資産として持つ必要がない。
- わずかな時間で調達(構築)できる。そのためスケールアップ、スケールアウトが行いやすい。
- 保守運用の手間を軽減できる。
- 自社では開発運用の難しい機械学習システムやデータウェアハウスが構築できる。
- etc…
設備を自分で持たないことは大きなメリットです。初期投資不要で、いつでも始められて、いらなくなったらいつでもやめられます。増強や増設もかんたんです。
企業で何か新しいサービスを始めるときは、サービスイン当初はユーザーが少ないのが一般的です。設備は小規模で十分で、ユーザー数の増加に伴い、増設が必要となるはずです。つまり、緩やかに増強していくパターンです。クラウドは、そうした使い方に最適です。
またサーバーの性能や台数は、いつでも切り替えられますから、期間や時間帯で、性能や台数を変更する運用も増えてきています。 たとえばPOSシステムの運用にクラウド利用する場合、売上の日次処理をする深夜だけ増強するという、柔軟な使い方もできます。このように、使うときだけ起動する、負荷が少ないときは、低スペックのサーバーにするなど工夫すれば、トータルコストは、ぐんと安くなります。
つまり流動的なシステムほど、クラウドのメリットが高いのです。
クラウドは本番で使えるのか
――クラウドはまだまだ先進的な技術という印象が拭えません。クラウド、AWSは本番で使えるのでしょうか?
もちろんです。むしろ、本番環境で使ってこそ意味があります。
クラウドは第一に、運用のしやすさがメリットとして挙げられます。本番サービスでは、安定した運用のため、負荷対策やバックアップが必須です。AWSのさまざまなサービスを使うと、こうした運用の手間を大きく軽減できます。 次に、これは繰り返しとなりますが、増設や増強がしやすいのも利点です。最初に、将来のユーザー数を見越して過剰なスペックの設備を用意する必要がありません。
そして、さまざまな環境を即時に用意できるため、開発環境、検証環境、本番環境のように、分けた環境が作りやすいという利点もあります。
AWSのサービスの全体像
――クラウドのメリットと検討すべき点はだいたいわかりました。きちんと検討してクラウドを導入すると大きな助けとなりそうです。AWSにはさまざまなサービスがあると聞きました。
AWSは利用者の要望に応じて、毎年さまざまな新しいサービスを追加しています。最初は、仮想サーバーのEC2とストレージを提供するS3のみでしたが、いまでは150を超えるサービスが提供されています。
――どのようなサービスがありますか?
先に上げたEC2とS3の他によく使われるものとしては、リレーショナルデータベースを提供するRDS、コンテンツをキャッシュするCloudFront、ドメイン名での運用をするためのDNSサーバーを担当するRoute 53、負荷分散のためのELBなどがあります。ほかにも、機械学習やIoTのサービスなどもあります。
AWSでは数多くのサービスがあり、それらを適切に組み合わせることで自社技術・オンプレミスだけでは実現できなかったサービスが構築できるようにもなります。
――クラウドに抵抗がある理由として、サービスが多すぎてとっつきづらいというのもあると思うのですが、これらのサービスは余すことなく使ったほうがよいのですか?
必ずしもそうではありません。自分たちに必要なものを取捨選択して数種類でサービスを構築するということも十分考えられます。
また、サービスが多くても利用するにあたって必要とされる人的リソースは多くないためきちんと勉強すれば多くが苦労なく使えるはずです。 このような運用管理をAWSに任せることができるサービスは、マネージドサービスと呼ばれます。
たとえば、リレーショナルデータベースを自分で運用すると、データを保全するためのバックアップを作成したり、セキュリティの問題を修正するためにバージョンアップやセキュリティパッチ対応をしたりなど、保守運用が必要です。しかしRDSというマネージドサービスを使えば、そうした保守をAWSに任せることができるので、保守運用作業から解放されます。
機械学習やIoTのサービスなども、自分で作るには技術や知見が必要ですが、マネージドサービスを使えば、誰でもすぐに使い始められます。
――AWSで初心者がこれだけは押さえておくべきというサービスを教えてください。
AWSはサービスを組み合わせる側面もあるのでできれば基本的なサービスを一通り学んでほしいですが、AWSの最初期から存在するEC2とS3はやはり大事なサービスでしょう。
これらに触れてみるところからクラウドに入っていくのは悪くないでしょう。
AWSの注目サービス
――さまざまなサービスのなかで、おすすめはありますか?
私が注目しているのは、Lambdaです。これは小さなスクリプトを実行するサービスで、サーバーレスと呼ばれるプログラム実行環境の代表的な例です。マイクロサービスの文脈でも人気があります。
――サーバーレスはよく聞くフレーズですね。Lambdaには具体的に何ができるんですか?
使い方は、大きく2つあります。
ひとつは、Webシステムの構築です。API Gatewayというサービスと組み合わせると、従来のCGIのようなWebサーバー上で動作するプログラムを作れます。 Lambdaはサーバーレスとも呼ばれ、実行するサーバーを利用者が用意する必要がありません。サーバーレスといっても実際には、実行するサーバーがあるのですが、それはAWSが用意してくれるので作ったプログラムを配置するだけで済みます。つまり、実行環境の運用・保守をしなくてよい(=サーバーの存在を意識しなくてよい)のです。 しかも負荷が高まると、自動でスケールされます。つまり負荷が高くなったときに、何もしなくても、その高い負荷下でうまく実行してくれるのです。従来は負荷が高まれば、サーバーの増強をどうするかなどの検討が必要でしたが、Lambdaを使えば、その必要がありません。
もうひとつのLambdaの使い方は、中間処理をするプログラムの実行です。Lambdaでは、たとえば、ストレージに書き込まれたときやデータベースに書き込まれたときなどに、その処理をフックして実行することができます。そこで、画像ファイルが書き込まれたときに自動的にサムネイルを作ったり、データベースにデータが書き込まれたときに、その書き込まれたデータを、別のテキストファイルに書き出すなど、さまざまな処理途中の加工ができるのです。 こうした手法は、従来にはなかったもので、さまざまなプログラムの作り方、ひいてはシステムの構成自体が大きく変わる可能性があります。
オンプレミスからAWSへの移行
――昨今はクラウドを使っていないシステムは「遅れている」とみなされることがあるように思います。オンプレミスを捨ててAWSなどクラウドに移行すべきなのでしょうか?
AWSはおすすめですが使い方次第です。必ずしも、既存のシステムをAWS他クラウドに移行をしなければならないというわけではありません。
これから新規に何かしようとする場合は、AWSがマッチするケースは非常に多いでしょう。コスト、人員面で小規模から始められます。
しかしオンプレミスを全面的にAWSに移行するのは、ちょっと待ってください。 まず、きちんと見積もって、AWSにする場合の運用コストを算出してからにしましょう。 AWS自身が提供する見積もりツールも存在します。
もしAWSにすると安いようなら、乗り換える価値があります。
しかし規模が大きいと、AWSでも、オンプレミス並か、それ以上のコストがかかることがあります。そのため、実際にいくつかの企業ではオンプレミスから全面移行はせず、オンプレミスとAWSを併用しているところもあます。
――併用する理由は何ですか?
大きな理由はコストです。システムを構成するサーバーなどのリソースが流動的なら、AWSを使うとコストを下げられる可能性があります。しかし、いつも同じ場合は、長期的に見て、オンプレミスのほうが安いこともあります。
そこで一定量の部分はオンプレミスで、流動的な部分はAWSでというように、両方のいいとこどりをする構成もしばしばとられています。
――AWSは万能ではないのですね。
私は多様なサービスが使えて、かつ運用管理の手間から解放されるAWSが好きですが、やはり、適材適所だと思います。
――AWSを活用するには、どうすればよいですか?
まずは、AWSを勉強し、その仕組みを知りましょう。
幸い、AWSに関する書籍やWebサイトはたくさんあります。利用者が多いことから、事例や知見も揃っています。つい先日、AWS Summit Tokyoが開催され、そうした場でも、さまざまな情報が提供されました。
すべての情報は、AWSのサイトのドキュメントに記載されていますが、何せサービスが膨大で、全部を把握することは困難です。ですから、誰かがまとめた記事などを参考にするなどして、要所要所を押さえ、そのうえで、AWSを活用していってください。
拙著『ゼロからわかる Amazon Web Services超入門 はじめてのクラウド』では、よく使うサービスを厳選してAWSでのクラウド入門を解説しています。AWSはじめの一歩におすすめです。