こんにちは、のんです。
今回は2021/10/28(金)に実施したAStudyより、とくむらさんにご登壇いただいた「いまさら聞けないAWS」をとりあげます。
AWSの基礎的な知識や用語を知るための導入となる内容になります。普段AWSを使っている方だけではなく、AWSに興味があるけどなかなか初めの一歩を踏み出せない方や勉強したいけどいまさら聞けない!という方も是非参考にしてください。
AStudyとは?
AStudyとは"ASKUL Study"の略で、知識の共有を目的として、ASKULで独自に行なっているイベントです。 勉強会やイベント、カンファレンス、LTなどを企画していますが、現在はLTを中心に実施しています。 テーマは自由で、毎回2~3名の方がスピーカーとなってお話いただいています。
2018年3月からスタートし、ほぼ毎月実施しています。
今更聞けないAWS
本記事ではAWSの基礎的な知識や用語を知るきっかけとなることを目的としたものになります。 より詳しい内容や、公式から提供されている情報が知りたい方は AWSサービス別資料 を合わせてご確認ください。
サービス基盤
リージョン
AWSは多くのクラウドサービスやVPSなどと同じように複数の リージョン(Region) が提供されています。
リージョンとは地域ごとの区切りで、AWSでは20以上の地域に分かれそれぞれ提供されており日本国内では東京と大阪の2つのリージョンが提供されています。これらを識別するためAWSではリージョンが一意に定まるリージョンコードが割り振られています。AWS CLIを用いる際は主にリージョンコードが使用されております。
AWSではリージョンごとに完全に分離され、地理的にも離れています。そのため、マルチリージョン対応と呼ばれるように複数のリージョンにサーバを置いている場合にはいずれかのリージョンで障害が発生した場合でも完全に独立しているのでサービスを動かし続けることができます。
AZ
地域ごとに分かれているリージョンはさらに小さな区切りとして1つ以上のデータセンターにて構成されています。 AZ(Availability Zone) と言われリージョン内で地理的に独立しており、東京リージョンは3つのAZに分かれています。
国内の利用者が多くを占めるサービスなど、海外のリージョンにサーバを置きマルチリージョン対応をしてしまうと通信の時間がかかってしまう懸念がある場合があります。その場合に同じリージョン内の複数AZにサーバを設置することで、いずれかのAZで障害が発生した場合でもサービスを動かし続けることができます。このような対応のことを、マルチリージョン対応と同じようにマルチAZ対応と言います。
1つ以上のデータセンターで構成されている地理的に独立したものをAZ、AZを地域ごとでまとめたものをリージョンと言います。これらを用いて次のようにどこかで障害が発生した場合でも、システムがダウンしない可能性を高める(単一障害点をなくす)ことを高可用性を実現すると言います。
コンピューティング
EC2
EC2(Elastic Compute Cloud) とはOSを載せた仮想環境をクラウド上に作成できるサービスです。用途によってOSやスペック(CPUやメモリなど)を選び自動的にサーバの立ち上げからインストールまでを行ってくれます。
ECS
ECS(Elastic Container Service) とはDockerコンテナアプリケーションをAWS上で動かしてくれるサービスです。コンテナの実行、保護、スケールをAWS側で行うので使用者側で意識することが少ないです。 EC2やECSの利点として次の内容があげられます。
- スペックの変更が簡単なためCPUやメモリなどを柔軟に変更できる
- 冗長化が簡単なため弾力性がある
- 従量課金制のため料金は使った分だけ
ネットワーク
VPC
実際にサービスを建てる際には VPC(Virtural Private Cloud) と呼ばれる仮想ネットワークを作成します。作成した仮想ネットワーク内でEC2やRDS、ECSなどのサービスを置いていきます。イメージとしてはVPSに近いものとなりますが、サーバスペックを簡単に変更できるためCPUやメモリ、データ容量などをサービスに合わせて柔軟に変えていくことができます。
ELB
ELB(Elastic Load Balancer) とはAWSで提供されているロードバランサです。いくつか種類があり、それぞれ用途ごとに選択し使用できます。中でも今回はALB(Application Load Balancer)に焦点を当てています。
ALB
ALB(Application Load Balancer) には大きく分けて3つの機能があり、まず1つ目に負荷の分散を行うことができます。複数のユーザがサービスへアクセスした際に特定の箇所への負荷が集中しないよう振り分けてくれます。
2つ目にURLで振り分け先を設定できます。これによりURLを確認して任意のapiへ振り分けることが可能です。
3つ目にトラフィックの制限ができます。これにより許可されていない人のアクセスをALBで止めることができます。
セキュリティ
IAM
AWSには IAM(Identity and Access Management) と呼ばれるサービスが提供されています。IAMとはAWSのサービスで「認証」と「認可」の設定を行うことができるサービスになります。認証は「相手が誰(何)なのか確認すること」、認可は「リソースへのアクセス権限を与えること」という意味で、アカウントやその権限を管理するものとなります。このIAMにはよく使われる3つの機能があります。
IAMユーザ
1つ目は IAMユーザ です。IAMユーザとは人(ユーザ)に与えられるIDです。IAMユーザではユーザ名とパスワードが付与されAWSアカウントにログインする際必要となります。このIAMユーザは1つのAWSアカウントの中に複数のユーザを作成できます。
IAMポリシー
2つ目は IAMポリシー です。IAMポリシーとは「AWSの何に対して、どのような操作を、できる(できない)」という権限を定めたものとなります。IAMユーザとIAMロールに紐づけて使用します。具体例としてはS3に対して見ることのみを許可するS3ReadOnlyというポリシーやS3に対してのフルアクセスを許可するS3FullAccessなどがあります。
IAMロール
3つ目は IAMロール です。IAMロールとは役割を定義しているもので、IAMポリシーを束ね、概念的な名前をつけることができます。機能としてIAMユーザと似ていますがこちらは使用する対象が人(ユーザ)には限りません。例として、ITEM-APIというAPIを作成し、任意のファイルをS3に対してPUT・GETする操作が必要になったとします。その場合に「ITEM-API」というロールを作成し、「AmazonS3FullAccess」というS3に対してフルアクセスを許可するポリシーを作成し、紐づけることができます。
前述したIAMの概要をまとめると次のようになります。
ストレージ(S3)
S3(Simple Storage Service) とはクラウド型のオブジェクトストレージです。S3ではデータを保存するだけではなく、ストレージ(容量)を自動的に拡張・縮小してくれるため事前に正確な容量を計算したり、余分なリソースを確保しておく必要がありません。S3には次のような代表的な機能があります。
- ライフサイクル
- 指定した期間が経過したものを自動で削除する
- より低価格なストレージに自動で移行する
- バージョニング
- オブジェクトごとにバージョン管理を有効にできる
- ファイルに対して誤った操作を行ったとしても任意のバージョンに戻すことができる
- ログ記録
- オブジェクトに対してログを残せる
- ファイルに対しての操作の記録を辿れる
- アクセス権限の設定
- ユーザごとに権限を設定できる
- アップロード制限やダウンロードの制限など
DB(RDS)
RDS(Relation Database Service) とはデータベースのインストールやバックアップなどの設定を行わずとも、データベースを利用できるサービスです。RDSでは下記6つのRDBMSから選択可能なため好みのものを選ぶことができます。
- Amazon Aurora
- Postgre SQL
- MySQL
- Mariaデータベース
- Oracle
- SQL Server
RDSではマルチAZによる可用性、ソフトウェアの自動パッチ作業、オートスケーリング、リードレプリカなどの利点があります。リードレプリカとは読み込み専用のデータベースを作成してくれ、同じデータが複数存在するためデータの安全性が高まります。また閲覧・取得の作業のみを行う際には読み込み専用のデータをみにいくので、DBにかかる負荷を分散させることができます。
おわりに
本記事ではAStudyにてご説明いただいたAWSの内容をまとめました。私自身アスクルに入社するまでAWSを利用したことがなかったので知らないことだらけでした。聞いたことのある単語がいくつかある程度でしたが、今回のご説明のおかげで業務の中で耳にする用語の意味を理解できました。そして自分が携わっている業務でどのようにAWSが使われているかのイメージをもつことができました。まだまだ勉強が足りない部分も多くありますが、今回学んだ知識を足掛かりとしさらにAWSへの理解を深めていきたいです。
次回のAStudyレポートでは、現在アスクル社内で行われているSpring Boot Campについて書いていきますのでお楽しみに!
バックナンバー
2021年
【社内勉強会】AStudy Advent Calendar 2020開催レポート