もし、お客様や社内から「Webサービスを作ってください」と依頼されたら、どこから考えたらよいでしょうか。そもそも、Webサービスはどのように成り立っているのでしょうか。
Webサービスを構成するもの
Webサービスとは、「ITインフラ」と呼ばれる部分と、その上で動く「アプリケーション」にて成り立ちます。
- 【ITインフラ】
- サーバー
- データベース
- ネットワーク
- ストレージ など
- 【アプリケーション】
- Webアプリケーション
- iOS/Androidアプリ など
アプリケーションは、普段私たちがブラウザやスマートフォンを触ることで動く「ソフトウェア」のことを指します。スマートフォンで「アプリ」と呼ばれるものをインストールする機会はあると思いますが、それをイメージいただくとわかりやすいかもしれません。電卓アプリや画像編集アプリなど、作業内容に応じた機能が備わっていることをアプリケーションと言います。
普段触っているAmazonや楽天市場などのECサイト、宿泊ネット予約やNetflixなどの動画配信サービスなどの身近なものも、ITインフラとアプリケーションで成り立っているWebサービスです。
上記であげているアプリケーションは視覚化しやすいですが、どのサービスも裏でITインフラが支えています。
ITインフラの重要性
日常で例えると、ITインフラを実感できる事象として、テレビCMやSNSの拡散等でWebページへのアクセスが集中し、「サーバーが落ちた」という事象があります。これは、急な大量アクセスにより、裏側のサーバーの処理が追いつかなくなることを指します。
普段触っているパソコンやスマートフォンも、それぞれCPUやメモリといったハードウェア(有限リソース)を備えており、リソースが逼迫すると動作が重くなります。
同じように、各アプリケーションも裏で処理をおこなうサーバーが必要であり、想定している内容以上の処理がくると、サーバーが重くなったり応答しなくなってしまう場合があります。
上記以外にも、電子機器は熱に弱いため、空調管理などの熱対策をおこなったり、停電対策のための設計や、高可用性を考えた運用(サーバーの故障に備えた予備のサーバーを用意したり、バックアップを取得する)などの安定した運用が求められます。
また、データセンターが被害に遭うほどの災害が起きた時にどうするか、といった災害復旧シナリオを考えるケースもあります。
アプリケーションを動かすための土台が「ITインフラ」だと覚えてもらえると、わかりやすいかと思います。
オンプレミス型とクラウド型
実際にWebサービスを作るにあたり、ITインフラのサーバーはどのように調達したらよいでしょうか。
サーバーとは、突き詰めるとコンピュータのひとつです。しかし、個人で所有しているPCに処理を任せるのは、現実的ではありません。
なぜなら、もしシャットダウンしたら、その間処理ができなくなり、アプリケーションも使えなくなってしまうからです。使っているうちに、パソコンが壊れてしまう可能性もあります。
そこで、Webサービス専用のパソコン(サーバー)を仕入れる必要があります。サーバーを仕入れるには、2種類の調達方法があります。
オンプレミス型
1つ目は、オンプレミス型と呼ばれる手法です。サーバーを自社で購入し、自社で管理・運用をおこないます。アプリケーションや利用イメージを考慮したスペックのサーバーを購入します。サーバーは、企業が管理する設備内に設置し運用までおこないます。 また、データセンターを運営している業者に、サーバーを置くスペースを確保してもらうケースもあります。
自由度が高いぶん、継続的な保守や運用を自社でおこなうことが前提になります。
クラウド型
2つ目はクラウド型と呼ばれます。サーバーを自社に置かず、ネットワーク経由でサービスとして提供されているサーバーを利用する方法です。運用は提供しているサービス会社がおこない、企業は利用したい時にネットワークを通してサーバーを利用します。
クラウド型で提供しているサービスでは「1台あたりいくら」という料金形態もあれば、AWSのように「使ったぶんの従量課金モデル」になっているケースもあります。
サーバー自体の保守や運用は、サービスを提供している会社がおこないます。
クラウド型には、ネットワーク経由で利用するパブリッククラウド型のほかに、プライベートクラウド(企業や組織が持つ専用のクラウド環境を利用する)、ハイブリットクラウド(オンプレミス型で存在している環境とパブリッククラウド型/プライベートクラウド型で利用している環境が混在している構成)もあります。
メリット・デメリット
それぞれのメリット・デメリットを[表1]にまとめてみました。
表1 オンプレミス型/クラウド型のメリット・デメリット
オンプレミス型 |
・自社の資産として持てる ・セキュリティやガバナンス統制を効かせられる |
・導入コストや運用コストが発生する ・利用できるまでの期間が長い ・現地での障害対応にも考慮する必要がある |
クラウド型 |
・初期費用がかからない ・1台あたりの金額or従量課金制 ・必要なITリソースを数分から数時間で利用できる ・厳密なサイジング(事前のリソース見積もり)が不要 |
・ネットワークの影響を受けやすい ・使い方によってはオンプレミス型よりコストが高くなる ・セキュリティ面を考慮する必要がある |
オンプレミス型だと利用までに時間やコストがかかるため、早く始めるには、スモールスタートでおこなえるクラウド型が適しています。
また、クラウドサービスの中でもいくつか選択肢がありますが、筆者としては、数あるクラウドサービスの中だとAWSがこれから始める方には学習しやすいと思います。なぜなら、AWSは2006年にITインフラのクラウドサービスを始めた会社で、ほかのクラウドサービスと比較し歴史が深く、ドキュメントやブログが豊富に存在しているからです。
AWSを活用することの難しさ
実際にAWSを利用してみると、以下のように難しい点もあります。
- サービスが豊富にあるため、体系的に学ぶのが難しくどこから学んだらいいか難しい
- →AWSは現在200を超えるサービスが提供されている(2022年4月時点)
- アップデートが頻繁にあるため、日々アップデート情報を追いつつ、必要に応じて手順書を更新したり運用を見直す必要がある
- →ブラウザからかんたんに構築できるものの、それだけに頼ることで、手順書のメンテナンスも検討しなくてはいけない
- オンプレミス型と同様、セキュリティに注意する必要がある
- →注意するポイントや観点はオンプレミス型と異なる
そこで、これからAWSを体系的に学ぶという方向けに、AWSの考え方や基本的な使い方を習得できるように、本書『AWSの知識地図 〜現場必修の基礎から構築・セキュリティまで』を執筆しました。
AWSを利用するにあたって、押さえてほしい部分について学べる本になっています。
AWSの考え方・思想を押さえる
AWSを利用するにあたり、考え方・思想について押さえることが重要です。
AWSを利用する際には、利用者側の責任か、AWS側の責任なのかを示す「責任共有モデル」を押さえる必要があります。利用者は基盤側の心配をすることなく、アプリケーションの開発に集中できます。
また、ほとんどのサービス・機能で従量課金モデルを採用しているので、事前に計算をしてどのくらい料金がかかるのか把握しておく必要もあります。
さらに、AWSで構築をしていくときのベストプラクティスの考え方(AWS Well-Architected Framework)について押さえておくことで、AWSでシステムを構築するうえでの信頼性・可用性・コスト効率の高いワークロードを設計・運用するためのベストプラクティスを学ぶことができます。
AWS CLIで環境を構築してみる
AWSの構築手法として、ブラウザで操作するAWSマネジメントコンソールから作業をするのか、CLIコマンドにて作業するAWS CLIでおこなうのかという選択肢があります。
AWSマネジメントコンソールでは、ブラウザ上からかんたんにGUIにてドラッグ&ドロップで操作したりボタンクリックで構築できます。しかし、AWSマネジメントコンソールの画面は頻繁にアップデートされるので、今まで覚えていた手順から操作が変わる可能性が大きいです。
AWS CLIで構築を学べば、一度コマンドを覚えればそのコマンドは変わることなく、慣れていくと作業スピードも上がります。
AWSのセキュリティの考えを学ぶ
AWSをはじめとしたクラウドサービスを利用するのに押さえる部分として、「セキュリティ」の考えは重要です。
悪意のある第三者におけるAWS環境への不正アクセスをどう防くかを学んだり、AWSを利用する際に使うIAMユーザーのポリシー・管理はどうしたらいいかを押さえる必要があります。とくに、ルートユーザーはすべての操作権限を持っているため、取扱いには十分に留意する必要があります。
また、もし不正にアクセスされてしまった際に、操作ログを溜めておいたり、不正利用の警告通知がきたらどうしたらいいかの対応方法を学んでおく必要があります。
現場で利用するAWSサービスを押さえる
AWSには、数多くのサービスが存在します。インフラストラクチャサービスだけでも、Amazon EC2のほかに、コンテナサービスやデータベースサービスも複数あります。それ以外でも、ストレージサービスやアプリケーションの開発のテストや実行を助けるサービスもあります。
さらに、ひと言で「AWSを利用する」といっても、データ分析や機械学習をおこなうケースや、メディア配信のサービスを利用しているというケースもあります。
本書では、上記で挙げた内容に触れつつ、AWSの利用に対して基本的な思想やAWS CLIでの構築手順、安全に利用するために抑えておきたいこと、その他現場で利用されているAWSサービスを学べるコンテンツになっています。これらを体系的に学習するのに、本書は一助になると思います。読み終わった際には、AWSの使い方、仕組みや勘所をつかめることになっているでしょう。