Webサービスを運用する際に知っておくと役立つAWSのEFSとCloudFrontについて

はじめに

インターネット黎明期には大学や研究者といった一部の仲間での情報共有の場としてテキストを中心とした簡素なページが作成されることがメインであったWebサービスですが、その後に各企業が次々とホームページを公開するようになり、次第にインターネット上でショッピングができるECサイトが登場するまでになりました。さらにはホームページ作成ソフトやCMS(Contents Management System)、レンタルサーバーサービス、クラウドサービス等の登場により一個人でも簡単にホームページやブログが作成できるようになり、2023年現在では数え切れない程のWebサイトがインターネット上に存在している状況です。

大量にあるWebサイトにおいては当然ながら類似しているものが存在しており、同業者であれば競合他社にもなります。また情報が溢れている世の中においてユーザー側の目線も非常にシビアになっており、少しでも表示速度が遅いものならばそのサイトから離脱して別の情報を探しにいったり、表示が不安定なショッピングサイトであれば別のサイトで購入したりということが当たり前のように発生します。そのためサービス提供側もただ単にWebサイトをリリースすれば良いわけではなく、アクセス不可な状況が起こりづらい可用性や高速にアクセスができるサイト作りをしていかなければなりません。

近年はそれらを実現するためのサービスやソフトウェアも各社から次々とリリースされており、Amazonの提供するクラウドサービス「AWS(Amazon Web Services)」も例外ではありません。今回は高品質なWebサイト作りをするために有効なAmazon EFSとmazon CloudFrontについて紹介していきます。

なおこれらはWebサイトを運用するに当たって必須のサービスではなくあくまで付加価値的な部分となるため、検索しても専門用語が多く並べられとても初心者向けとは言えない解説ばかりが目立つ状況です。そのためWebサイトを構築する方法、ストレージを利用する方法といった単にサーバーが使えるようになるための解説等よりもハードルが高い内容となっています。

わからない用語を調べるために別のサイトに飛んで調べるということを繰り返しているうちに混乱し、結局何ができるサービスなのかわからず利用を諦めてしまうということもあるでしょう。それではせっかく重要なサービスであっても使用する機会を逃してしまうことにもなりかねません。

この記事ではまだエンジニアとしての経験が浅い、AWSの利用経験が浅いといった初心者の方に向けて、各サービスで抑えておくべき用語を中心にサービスの概要を紹介します。具体的な設定方法やサービスの細かい仕様については省いている場合もあることをあらかじめご了承ください。

Amazon EFS(Elastic File System)の概要

フルマネージドで高い可用性と耐久性のあるNFSサーバーサービスです。実質の容量上限が定められおらず(AWS公式サイト内にはペタバイト単位まで拡張できるように構築されているとの記載もあり)、保存されたデータの状況に応じて自動的に増減されるという特徴があります。そのため利用した分だけの料金を支払うことさえできれば、容量を気にかけたり容量拡張の作業をしたりということなく運用できます。読み書きのスピード(スループット)もストレージの容量によって自動的に調整されますが、どうしても速度が求められるシステムの場合は必要な分のスループットをあらかじめ指定(プロビジョンドスループット)して運用することも可能です。

またEFSは同じAWSのEC2(仮想マシンサービス)等との連携が可能ですが、例えば2台のEC2から、あるいはEC2とオンプレミス環境からといった複数のインスタンス・サーバーからのアクセスが可能となっています。この共有ストレージとして利用できるという点が、特にEFSを利用する大きなメリットの一つと言えます。ただしオンプレミスとの同時アクセスを可能とするためには別途「AWS Direct Connect」も必要である点には注意が必要です。

EFSには「汎用パフォーマンスモード」「最大I/Oパフォーマンスモード」といった2種類のパフォーマンスモードが用意されており、汎用パフォーマンスモードはウェブ配信、コンテンツ管理、ホームディレクトリ、一般的なファイルサービスとしての利用に適しています。ファイルシステム作成時に特にパフォーマンスモードを選択しない場合は汎用が選ばれることとなります。一方の最大I/Oパフォーマンスモードはレイテンシーこそ長くなるものの、単位時間あたりに処理できる量が増えるためビッグデータ解析やメディア処理、ゲノム解析等に適したモードとなります。

クラウドまたはオンプレミス環境にあるデータを高速かつ安全にEFSにコピーしたい場合は「EFS File Sync」を利用するのがおすすめです。転送時はデータが暗号化されるため、別途VPN設定やファイアウォールを介したインバウンド接続の許可設定等を行わなくてもセキュアな転送が可能となります。なおデータはパーミッション、タイムスタンプ等もそのままコピーされる他、別リージョン間におけるコピーも可能です。

続いてEFSの料金についてですが、その他AWSサービスと同様、最低料金や初期費用というものはなく課金対象となるのは汎用パフォーマンスモードの場合のストレージ利用料金、最大I/Oパフォーマンスモードの場合のストレージ利用料金+プロビジョンドスループットの料金となります。リージョンは国内では東京・大阪の2種類があり、その他には米国、欧州、中東、南米、カナダや規制の厳しい政府や団体が利用する隔離されたAWSリージョンのAWS GovCloudがあります。料金はリージョンごとに一部異なるため、詳細については公式サイト内のEFSの料金ページで確認することをお勧めします。

AWSの多くのサービスには無料利用枠が用意されていますが同じくEFSにも用意されており、標準ストレージクラスのストレージ(5GB)が12か月利用可能となっています。ただしEFS1ゾーンストレージクラスにファイルを保存した場合は無料利用枠の対象外となります。また12ヶ月以内に使用しなかった分があったとしてもそれを課金発生後に持ち越すことはできません。なお「ストレージクラス」については別途詳しく紹介します。

EBS、S3との違いについて

AWSにはEFSに類似したサービスとしてAmazon EBSやAmazon S3がありますが、適切に使い分けていただくためにそれぞれの特徴を簡単に紹介します。EBSは「Amazon Elastic Block Store」の略であり、仮想マシンのEC2向けに設計されたブロックストレージとなります。ブロックストレージとはデータをブロックという単位で扱い、データ取得の高速化を実現したタイプのストレージを指します。EBSもEFSと同様に複数のインスタンスでストレージを共有することが可能ですが、容量の上限はあります。

もう一つのS3は「Amazon Simple Storage Service」の略で、タイプとしてはデータをオブジェクトとして扱うオブジェクトストレージとなります。様々な形式のデータ保存先として利用できるだけではなく、Webサーバーとしての機能も持ち合わせているため、S3に保存したhtml等の静的コンテンツをそのままWebサイトとして公開することも可能です。また「バージョニング」という機能によって同じデータの複数バージョンを同時に保持することができるため、バージョン管理も可能となっています。EFSと同様S3も容量の上限はありませんが1ファイルあたりの最大容量は5TBです。

それではここまでに出てきた用語を詳しく紹介します。理解できなかった部分があった場合は以下を読んだ上で改めて読み直してみてください。

フルマネージド

クラウドサービスでよく使われる用語で、サーバーの構築やネットワークといったインフラの構築や稼働後の運用・保守、管理をクラウドのベンダー側が受け持つサービスのことを表しており、これは大きなメリットの一つとなっています。

オンプレミス環境でのシステム運用においてはシステムエンジニア、サーバーエンジニア、ネットワークエンジニア等がそれぞれ時間をかけてインフラを構築し、その後にプログラムの実装が行われ、稼働後は日々の監視やメンテナンス、障害対応を行わなければなりません。それに対してフルマネージドのクラウドサービスでは、利用するクラウドのコンソール画面上等でマウス・キーボード操作を行うだけで簡単に環境構築ができ、稼働後の運用・保守についてはベンダー側が対応してくれることとなります。

クラウドサービスはサーバーやネットワーク機器の購入・レンタル、場所の確保を必要としないためそれだけでもコスト削減になりますが、フルマネージドなサービスを利用することでエンジニアの工数を削減でき、企画や開発に専念したり、空いた時間でその他のことに注力できるようになります。

なおクラウドサービスには主にSaaS・PaaS・IaaSというサービスの提供形態があり、それぞれ管理する範囲が異なります。SaaSは既に完成されたサービスやソフトウェアがあり、ユーザーはその仕様にしたがって利用する形態であるため、運用管理のほとんどをベンダー側に任せることとなります。IaaSはインフラ環境をユーザー側で構築できる自由度の高いサービスとなる分、管理範囲も広くなります。その中間に位置するPaaSは開発環境として提供されることが多い形態で、インフラ環境は既に用意されています。そのうえでユーザーは任意のOSやミドルウェア、プログラミング言語等をPaaSサービスの範囲内で選択して開発を進めることとなります。

ストレージクラス/h3>

この用語には様々な定義がありますが、EFSにおけるストレージクラスは単にプランだと思ってもらえれば問題ありません。2023年時点でEFSのストレージクラスには「Amazon EFS 標準」「
Amazon EFS 標準低頻度アクセス(EFS標準-IA)「Amazon EFS1ゾーン」「Amazon EFS 1ゾーン-低頻度アクセス(EFS1ゾーン-IA)」の4種類があり
、高いレベルの耐久性と可用性を求める場合は「標準」のストレージクラスを、そこまでの耐久性・可用性を必要としない場合は「1ゾーン」の方を選択します。またアクセス頻度の少ないデータを扱う場合は料金の安い「IA」を選択することでコストを削減して運用できるようになります。

NFS サーバ

NFSは「Network File System」の略で、Linuxに標準搭載されているファイルシステムのことを表します。しかしWindowsやMacといったその他OSでも利用可能で汎用性が高く、ネットワークを経由して複数サーバー間の共有ストレージとして利用することができます。

なおEFSはPOSIX(UNIX系OSにおける標準規格)に準拠した共有型のファイルストレージとなるため、NFSv4プロトコル経由でコンテナサービスのECS(Elastic Container Service)やEKS(Elastic Kubernetes Service)、サーバーレスコンピューティングエンジンのAWS Fargate、AWS LambdaといったAWSのその他サービスと接続できます。このNFSv4というのはNFSのバージョンの一つであり、インターネット上での利用が可能となったTCP接続が標準のバージョンです。

NFSはロック機構の問題により、ロック処理が必要となるデータベースシステムとの連携は推奨されず、メールサーバーやWebサーバーのストレージ、あるいはバックアップデータの保存先として利用される傾向が多く見られます。また複数のコンテナと接続するストレージとして使われることもあります。

レイテンシ

英語で「latency」と表記し「潜伏時間、潜時、待ち時間」等の意味を持ちます。コンピュータにおいてはデータ転送の指標の一つとなっており、リクエストからデータが送信されるまでに発生する遅延時間のことを指します。この時間がある基準より短ければ「レイテンシが低い」と言い、長ければ「レイテンシが高い」と言います。基本的に処理能力が高い場合はレイテンシが高くなりやすいですが、運用するシステムによってどちらを優先させるかは異なってくることでしょう。前述したEFSの「汎用パフォーマンスモード」と「最大I/Oパフォーマンスモード」がまさにその例を表しています。またWebサイト・ECサイト、ゲームといった高速な応答が求められる場合はレイテンシの低さが重要となります。

なおクラウドサービスには各国のリージョンにおいてサービスが提供されていることが多いですが、物理的な距離からしても日本国内から日本のリージョンにアクセスした時の方が、海外のリージョンへアクセスする時よりもレイテンシが低くなります。

Amazon CloudFrontの概要

CloudFrontは一言で表すと高速・安全にコンテンツを配信できるCDN(Contents Delivery Network)サービスです。対象のコンテンツや動画やアプリ等様々で世界的なデータセンター(エッジロケーション)のネットワークを経由してコンテンツを配信することでユーザーがレイテンシを感じることなくそれらのサービスを利用できる状態に限りなく近づけることができます。ユーザーからリクエストが発せられると最低レベルのレイテンシーが確保されているエッジロケーションに自動的にルーティングが行われることでレイテンシーが低く、パフォーマンスの高い配信がされるという仕組みです。

代表的なユースケースとしては静的ウェブサイトの配信が考えられ、CloudFrontを利用することでAWSの強力なバックボーンネットワークとエッジサーバーのメリットを活かして画像イメージやCSS、JavaScriptといった静的コンテンツを迅速に配信できるようになります。S3と併用してデータの格納先をS3にするという利用方法も可能で、これによりオリジンへのアクセス制限が簡単に行えるようになります。

またCloudFrontには録画済みデータ、ライブイベントのいずれも正解中にストリーミング配信できるオプション機能が提供されているため、オンデマンドビデオ、ライブストリーミングビデオの配信にも適しています。実際にAmazon Prime VideoやHuluといった大手動画配信サービスでもCloudFrontを利用してライブ映像の配信を行っています。

その他にも、特定のデータへのアクセスを特定のアプリに限定することによってデータの保護をしたり、Lambda@Edgeを併用することで署名付きURL、署名付きCookieの使用ができるようになったり、独自にカスタマイズしたプライベートコンテンツの供給ができるようになったりというユースケースもあります。Amazon.com、Amazon Prime Videoではもちろん、民間の非営利法人「PBS」や ブラジルの人気地元音楽配信サービス「Sua Musica」、フランスのメディア企業「M6」等の幅広い分野で活用されています。

CloudFrontの料金も従量課金制であり、配信されたデータ量に対して課金されます。なおリージョンによって料金は異なるため、詳細な料金は公式サイトで確認することをおすすめします。また常時無料利用枠として1か月あたり1TBのデータ転送(OUT)、10,000,000件のHTTPまたはHTTPSリクエスト、200 万件のCloudFront関数の呼び出し、SSL証明書の利用が用意されており、機能に関する制限はありません。

それでは次に重要用語の解説です。

エッジロケーション

リージョンデータセンターとはまた別となり、コンテンツを高速かつ安全に配信できる世界中の地域のことを表しています。このエッジロケーションを利用したサービスの一つがCloudFrontであり、他にもAWSにはAmazon Route 53、AWS Firewall Manager、AWS Shield等があります。ユーザーのデータを近くのエッジロケーションにコピーしておき、そこからユーザーへデータを転送することでレイテンシーを低くするという仕組みです。

オリジンサーバー

実際のコンテンツデータが格納されているサーバーのことを表します。CloudFrontのようなCDNが保持する情報はあくまでキャッシュデータであり、それに対して元のデータを格納しているサーバーのことをオリジンサーバーと呼びます。AWSにおいてはS3やEC2等が該当します。

エッジ(キャッシュ)サーバー

CDNの別名と理解していただいて問題ありません。CloudFrontには世界中にたくさんのエッジサーバーが設置されています。なおCDN(Contents Delivery Network)とは高速にユーザーへコンテンツ配信する仕組みの総称であり、Google Cloudでは「Cloud CDN」が、Microsoft Azureでは「Azure Content Delivery Network」というCDNサービスが提供されています。

ディストリビューション

CloudFrontにおける設定一式のことを「ディストリビューション」として表しています。リクエストの処理方法、キャッシュ方法、オリジンとの通信方法、オリジンへ転送されるヘッダー・メタデータ、圧縮モード、HTTP レスポンスへ追加するヘッダーといった詳細な設定・カスタマイズが可能です。

Amazon EFSとAmazon CloudFrontの併用でどんなことが実現できるか

今回紹介した2サービスを利用することで実現できる身近なものとして、WordPressのパフォーマンス最適化が当てはまります。WordPressは豊富なテーマやプラグインを利用することで簡単にブログやホームページ、ショッピングサイト等が作成できるCMSで、初心者でも少ない学習時間でそれらを作成できるようになる便利なツールである一方で、サーバーのスペックやサイトの構築状態、設定状態によっては読み込みが非常に重たくなることがあります。そのためサイトに行き着く前にユーザーに離脱されてしまい、ブランディングや商機を逃してしまう可能性があります。

これはシンプルなページ一つ表示される場合でも多くのデータの読み込みが必要となるためで、ホスティングサービスのベンダーの多くはWordPressが普及して以降この問題に取り組んでいて、近年は解決するための様々なサービスが提供されています。

また単純なHTMLのみのサイト等と比べると動的コンテンツとなる部分が多くサーバーへの負荷も発生しやすいため、その負荷を分散するような構築も求められます。

AWSではこれらの問題に対処する方法としてEFSやCloudFrontを利用することをソリューションとして提示しています。EFSを利用することで複数のノードからWordPressのデータが保存されたEFSにアクセスできるため、いずれかのノードに障害が発生したとしても別のノードにて可用性を確保することが可能となります。またこの仕組みを利用することによってサイトに更新が発生した場合も都度同期を取るという作業や設定が不要となります。

なおCloudFrontに関してはキャッシュ機能として利用することが推奨されています。静的コンテンツの読み込みファイル数が多いとそれだけレイテンシーが高くなります。そのため一度読み込んだデータはキャッシュ情報として保持しておくことが望まれますが、その方法の一つとしてCloudFrontの利用が挙げられるといった状況です。

まとめ

今回はAWSで高可用性と高速なWebシステムを運用する際に役立つAmazon EFSとAmazon CloudFrontの概要を紹介するとともに、これらのサービスで良く出てくる専門用語について解説してきました。この2つのサービスは有用であるにもかかわらず、サーバーやネットワークの仕組みに関して熟知している人でないとサービスのマニュアルや解説を理解することさえ難しいという傾向が見受けられます。ぜひ今回の記事をきっかけに一つ一つの用語の定義を着実に抑えたうえで、改めて公式サイト上にあるサービスの説明等を読み返してみてはいかがでしょうか。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です