🦁

「今さら聞けないシードスタートアップなインフラ構成」から学ぶAWS基礎

2024/05/17に公開

AWSの基礎を勉強するにあたって、AWS各種サービスの特徴を教科書的に理解するだけでなく、実際に現場では各種サービスがどのように組み合わせて使われているのか理解したいと考えました。

そんな中見つけたのが、スタートアップテクノロジーCEO・ひさじゅ(@hisaju01)さんが過去にブログで書いていた「今さら聞けないシードスタートアップなインフラ構成」の記事です。この記事を読めば、最低限知っておくべきAWSの基礎や、実践的なインフラ構成が学べるのではないかと思いました。

https://zenn.dev/ayatakaa_chan/articles/b290fbda51d9a6

シードスタートアップなインフラ構成


今さら聞けないシードスタートアップなインフラ構成」から引用

まず、AWSではVPC(Virtual Private Cloud)を使用して、仮想的なネットワークを構築します。VPCはAWSのネットワーク環境であり、リソースの論理的な分離とセキュリティを提供します。リクエストがVPC内に届くと、ロードバランサー(ELB: Elastic Load Balancer)がリクエストを受け取り、EC2(Elastic Compute Cloud)へとルーティングします。

EC2インスタンスには、Webサーバーやアプリケーションサーバーがホストされています。これらのサーバーは、リクエストに応じて動的なコンテンツを生成します。これらのサーバーは、リクエストに応じて動的なコンテンツを生成します。データベースから情報を取得する必要がある場合は、RDS(Relational Database Service)を使用します。RDSは、管理されたリレーショナルデータベースを提供し、データの保存とクエリ処理を効率的に行います。

複数のEC2インスタンスを利用する理由は、スケーラビリティと耐障害性です。複数のサーバーを使うことで、負荷分散や障害時の冗長性を確保し、サービスの安定性を向上させることができます。

データの保存には、各EC2インスタンスにEBS(Elastic Block Store)ボリュームがアタッチされています。例えば、20GBのEBSボリュームは、データの永続的な保存やインスタンスのデータバックアップに使用されます。

また、セッション情報を管理するために、別途キャッシュサーバーが必要です。ここでは、ElastiCacheを利用して内部でRedisを実行します。ElastiCacheは、メモリ内データストアを提供し、高速なデータアクセスを実現します。

AWSの他のサービスとしては、SES(Simple Email Service)を使用してメール送信を行ったり、ファイルの保存にはS3(Simple Storage Service)を使ったりします。S3は、スケーラブルなオブジェクトストレージを提供し、大容量のデータの保存と配信を可能にします。

ドメインの管理にはRoute 53を使用し、DNSレコードを設定してドメイン名を解決します。最近では、SSL証明書の管理にAWS Certificate Manager(ACM)も利用されています。ACMはSSL/TLS証明書の発行と管理を簡素化し、HTTPS通信を安全に保ちます。

さらに、CloudWatchは、アプリケーションやインフラストラクチャのモニタリングとアラート管理に使用されます。トレーサビリティや障害の早期発見に役立ちます。SNS(Simple Notification Service)を活用することで、アラートや通知を効果的に配信することができます。

以上が、最低限のシードスタートアップ期のインフラ構成の基本要素です。これによって、アプリケーションはスケーラビリティを備え、柔軟かつ安全な運用が可能となります。

コストについて

この構成で全てインスタンスサイズをsmallにした場合だいたい$200くらいでした。さくらVPSと比べると若干高いですが、最初からスケーラビリティを買えると思えば安いもんですよね。

2024年5月14日現在1ドル¥155なので、$200は¥31,000になります。

▼AWSのコスト管理の基礎

サービス 概要
AWS Cost Explorer 時間の経過に伴う AWS のコストと使用量を可視化して把握し、管理する。時間の経過に伴うAWSのコストと使用量を可視化して把握し、管理できサービス。
AWS Budgets 月末までに発生する AWS 使用量のコストの予測を確認する。定義したしきい値を超えたときにアラートを受け取る。

https://zaitakufrog-blog.com/aws-cost/

AZについて

引用:今さら聞けないシードスタートアップなインフラ構成

AZは分けない
ここは賛否両論はあるんですが、シードの状態だとAZを分けて管理する手間や ELBの場合AZごとに等分にしか振り分けられないので、例えば同じサイズのEC2インスタンスがあったとしたら偶数個おかないといけないんですね。シードの場合お金を節約したいので、細かい調整が必要でEC2インスタンスを3つなど奇数個にしたいことが割とあるので、この辺り諸々踏まえるとAZが落ちるリスクを取ってもAZは分けないほうが何かと便利です。 ただ、あくまでシードの場合ですからね。その後のフェーズはAZ分散も考慮したほうがいいとは思います。
※高山先生からクロスゾーンバランシングが有効になったのでAZ分けたほうがいいですよーとご指摘いただき、AZ分けるデメリットがあまりなくなったので、早い段階でAZ分けてもいいかなと思います。この辺りのデメリットへの対応スピードやサポートが身近であるところがやっぱりAWSのメリットかなとうまくオチをつけたつもりで・・

Well-Architected for Startups -信頼性の柱- 導入編」に記載されているように、Design for Failureという原則のもとでインフラを整備していくことが推奨されています。Design for Failureとは、すべての形態のシステムにおいて故障が発生する可能性を前提とし、その状況に対処するための設計を行うことです。具体的には、マルチAZによる冗長化およびマルチリージョン展開があります。

Amazon Virtual Private Cloud(VPC)とは

VPCとは、AWS上に作ることができる仮想ネットワークです。VPC内に仮想サーバーなどのAWSリソースを作成することができます。

VPCを使うと、以下のように環境を用途ごとに分けて管理できます。

  • 開発環境(dev環境など): 新しい機能の開発やテストを行うための環境
  • テスト環境(stg環境など): 開発した機能を本番前にテストするための環境
  • 本番環境(prod環境など): 実際のユーザーがアクセスする運用中の環境

VPCの基本の通信制御

VPC内では、さまざまな通信制御コンポーネントを使用して、ネットワーク内外のトラフィックを管理できます。

  • インターネットゲートウェイ:
    VPC をインターネットに接続するために使用するコンポーネント

  • 仮想プライベートゲートウェイ:
    VPC と社内ネットワークの間に VPN 接続を作成するために使用されます。

  • サブネット:
    Amazon EC2 インスタンスのインバウンドトラフィックとアウトバウンドトラフィックを制御する VPC のコンポーネントです。セキュリティまたは運用のニーズに基づいてリソースをグループ化できる VPC の一部分です。

    • パブリックサブネット:
      オンラインストアのウェブサイトなど、一般公開されているリソース

    • プライベートサブネット:
      個人情報や注文履歴を含むデータベースなど、プライベートネットワークを介してのみアクセス可能なリソース

AWSの2つの仮想ファイアウォール

AWSには、ネットワークを守るための2種類の仮想ファイアウォールがあります。

【AWS入門】セキュリティグループとは?ネットワークACLとの違いも初心者にわかりやすく解説!

比較 ネットワークACL セキュリティグループ
概要 サブネットレベルでインバウンドトラフィックとアウトバウンドトラフィックを制御する仮想ファイアウォール Amazon EC2 インスタンスのインバウンドトラフィックとアウトバウンドトラフィックを制御する仮想ファイアウォール
共通 トラフィックを制御する
ファイアウォール機能
トラフィックを制御する
ファイアウォール機能
作用するレベル サブネットレベル インスタンスレベル
デフォルト 全ての通信を許可 同じセキュリティグループ内通信のみ許容
指定 定義した通信のみを許可する「ホワイトリスト形式」
許可のみIn/outで指定
ブラックリスト形式
許可と拒否をIn/outで指定

ネットワークACLはネットワーク全体に対する大まかなセキュリティルールを設定し、セキュリティグループは個別のインスタンスに対する細かいセキュリティルールを設定するのに適しています。

ネットワークACLで緩やかに制限し、セキュリティグループで厳しく制限することで、管理がしやすくなります。

Elatic Load Balancing(ELB)とは

Elatic Load Balancing(ELB)は、負荷分散のサービスです。AWSでは、ロードバランサーの役割をELBが行っています。

ELBが通信を振り分けて複数サーバーで処理するので、そのうちの1つのサーバーで障害が発生して処理できなくなったとしても、残りのサーバーで処理ができるので、可用性が上がります。

ELB自体の負荷が増えた場合、ELBは自動でスケールアップ(スペックを上げる)やスケールアウト(台数を増やす)をして、ELB自体の負荷を自動で調整します。

ELBには全部で4種類ありますが、代表的なものはALB(Application Load Balancer)とNLB(Network Load Balancer)の2つです。

ELBの重要な機能の1つにヘルスチェックがあります。これは、ELBが定期的に配下の各インスタンスの健康状態を確認し、正常に動作していないインスタンスを特定してトラフィックの振り分けを停止する機能です。ヘルスチェックにより、障害が発生しているインスタンスを自動的に除外することで、サービスの可用性と信頼性を高めます。

https://cloud5.jp/albーunhealthy/

Amazon Elastic Compute Cloud(Amazon EC2)とは

Amazon EC2とは、AWS上に仮想サーバーを提供するためのサービスです。インスタンスという単位で仮想サーバーが管理され、マネジメントコンソールから数クリックで、VPCのサブネット内に作成することができます。

EC2は「インスタンス」と呼ばれる仮想サーバーを提供します。インスタンスは、物理的なサーバーと同じように動作しますが、実際にはAWSのデータセンター内でホストされています。ユーザーはインターネット経由でこの仮想サーバーにアクセスし、利用することができます。インスタンスの作成は非常に簡単で、AWSの「マネジメントコンソール」と呼ばれるWebインターフェイスから数クリックで行うことができます。このコンソールは直感的なデザインになっており、技術的な知識が少ない人でも操作しやすいように設計されています。

次に、EC2インスタンスは「仮想プライベートクラウド(VPC)」という仮想ネットワークの中に配置されます。VPC内ではネットワーク設定やセキュリティ設定を細かく管理することができます。これにより、インスタンス間の通信やインターネットからのアクセスをコントロールし、安全に利用することが可能です。

EC2はアンマネージド型サービスです。つまり、ユーザーがインスタンスの運用や管理に関する全ての権限を持っています。インスタンスの設定やメンテナンス、ソフトウェアのインストールなど、すべての管理作業はユーザー自身で行う必要があります。これにより、柔軟にサーバーをカスタマイズし、ニーズに合わせて利用することができます。

EC2には「Amazon マシンイメージ(AMI)」という機能があります。AMIは、EC2インスタンスのテンプレートであり、特定の設定やソフトウェアがインストールされた状態のイメージです。このAMIを使って新しいインスタンスを作成すれば、同じ設定をすばやく再現することができます。例えば、特定の業務用ソフトウェアがインストールされたAMIを作成しておけば、そのイメージを基に新しいインスタンスを短時間で立ち上げることができます。

また、EC2には「インスタンスストア」と呼ばれる一時的なストレージがあります。これは、インスタンスが実行されている間だけ利用できるストレージで、インスタンスが停止または終了するとデータは失われます。そのため、重要なデータは別のストレージサービス(例えば、Amazon S3)に保存することが一般的です。

実務での利用例:システムのメンテナンスや管理

システムのメンテナンスや管理のためにサーバーが必要になることはよくあります。例えば、データベースのバックアップ、システムのアップデート、ログの解析などが挙げられます。これらの作業を行うために、EC2インスタンスを一時的に起動することが一般的でした。

  • データベースのバックアップ
    データベースのバックアップは、システムのデータを安全に保管し、何か問題が発生した場合に復旧できるようにするために重要です。データベースが大きくなるにつれて、このバックアッププロセスはよりリソースを消費する作業になります。EC2インスタンスを利用して、バックアップを行うことで、通常運用中のサーバーに負担をかけることなく、大量のデータを迅速にコピーできます。バックアップ作業が完了すれば、そのEC2インスタンスを停止することでコストを節約できます。

  • システムのアップデート
    システムの安全性と効率を維持するためには定期的なアップデートが必要です。これにはOSのアップデートや、セキュリティパッチの適用、ソフトウェアの最新版へのアップグレードなどが含まれます。EC2インスタンスを使ってこれらのアップデートを一時的にテストすることができ、実際の運用環境に影響を与えることなく、新しいバージョンの互換性や機能を試すことができます。テストが成功した後、本番環境にアップデートを適用する前に、EC2インスタンスは再び停止します。

  • ログの解析
    システムのパフォーマンスを監視し、問題を早期に発見するためには、ログの解析が不可欠です。しかし、大量のログデータを解析することはリソースを大きく消費する作業です。EC2インスタンスを使用して、ログを集中的に解析することができます。これにより、本番環境のリソースを圧迫することなく、詳細なデータ分析を行うことが可能です。解析が完了すれば、インスタンスを停止してリソースを解放し、コストを節約できます。

これらのタスクをEC2インスタンスで行う利点は、必要に応じてリソースを柔軟に調整できる点にあります。特に高負荷の作業を予測して、より高いスペックのインスタンスを一時的に使用することで、作業の効率を大幅に向上させることができます。また、作業が完了した後は、インスタンスを停止することで、使用していない時間のコストを抑えることが可能です。

https://zenn.dev/alichan/articles/c40b793253f5db

Amazon Elastic Block Store (Amazon EBS)とは

Amazon Elastic Block Store(Amazon EBS)は、Amazon Web Services(AWS)が提供するストレージサービスの一つです。このサービスは、Amazon EC2(Elastic Compute Cloud)と連携して使用され、データを保存するためのブロックレベルのストレージとして機能します。ブロックレベルストレージとは、データを固定長のブロックとして管理する方式で、これにより、データへのアクセスが高速に行えるのが特徴です。


Amazon EBSとは?4つの特徴とS3との違いを解説!

Amazon EBSは、EC2インスタンスに簡単に接続できるディスクのようなものと考えるとわかりやすいです。例えば、自宅やオフィスのコンピュータに追加のハードドライブを接続するようなものですが、ここではそのハードドライブがインターネットを通じてEC2インスタンスに接続されています。これにより、大量のデータや頻繁にアクセスが必要なデータを効率的に扱うことができます。

EBSボリュームのセキュリティとして、AWS KMS(Key Management Service)を使用した暗号化がサポートされています。これにより、保存されているデータを保護するために、カスタマーマスターキー(CMK)を用いてデータの暗号化を行うことができます。暗号化されたデータは、不正アクセスから保護され、安全性が向上します。

また、EBSボリュームのデータを保護するためには、定期的なバックアップが不可欠です。EBSでは、スナップショットと呼ばれるバックアップを取得することができ、これにより任意の時点のデータを保存することができます。スナップショットは自動的にAWSのS3サービスに保存され、これにより高い耐久性を確保しています。スナップショットの保存場所をユーザーが指定することはできませんが、AWSの管理下で安全に保管されます。

さらに、EC2インスタンスが停止したり削除されたりしても、EBSボリュームに保存されたデータは失われることなく引き続きアクセス可能です。これにより、一時的にインスタンスを停止してもデータを保持できるため、柔軟にリソース管理を行うことが可能です。

実際のビジネスで考えると、EBSはデータベースサーバー、アプリケーションサーバー、または大量のログファイルを扱うシステムなど、持続的に高速アクセスが求められる環境で非常に役立ちます。例えば、EC2インスタンスを使ってウェブサーバーを運営している場合、EBSを使用してウェブサイトのコンテンツやデータベースを保存することが一般的です。これにより、ウェブサイトのパフォーマンスが向上し、ユーザー体験が改善されます。

https://x.com/MacopeninSUTABA/status/1420716546708578310

https://x.com/integrated1453/status/1634166066040680448

インスタンスストアとAmazonEBSの関係性


【AWS】インスタンスストアとEBSの違いとは?

特徴/項目 インスタンスストア Amazon EBS
データの永続性 データはインスタンスが停止または終了すると失われる データは永続的に保持され、インスタンスの状態に関係なく保存される
パフォーマンス 高いI/O性能を提供することができる より一般的な用途に適しており、一貫した性能を提供
バックアップとスナップショット バックアップやスナップショットがサポートされていない バックアップとスナップショットがサポートされ、データの保護と復旧が容易
サイズの変更 インスタンス起動時に決定し、後から変更できない ボリュームサイズをいつでも変更可能
高可用性と冗長性 インスタンスストアは単一のインスタンスに依存 Amazon EBSはスナップショットを使用してデータを複製し、冗長性を提供
利用料金 インスタンスストアはインスタンスの一部として提供 使用した容量に対して課金

インスタンスストアは一時的なデータに適しており、高速で低遅延のアクセスが可能ですが、データの永続性は保証されません。一方、Amazon EBSは永続的なストレージを提供し、データを長期間保持する必要がある場合に最適です。利用シーンに応じて、適切なストレージを選ぶことがAWSを効果的に活用するポイントです。

Amazon Relational Database Service (Amazon RDS)とは

Amazon Relational Database Service (Amazon RDS)は、データベースを簡単に作成し管理できるマネージドサービスです。「データの保存先としてリレーショナルデータベースを利用したいけど、面倒な管理作業はしたくない!」というときに、非常に便利です。RDSを使えば、数回のクリックでデータベースサーバー、つまりAWSで言う「データベースインスタンス」を作成できます。

RDSで利用できるデータベースには、Amazon Aurora、MySQL、MariaDB、PostgreSQL、Oracle、Microsoft SQL Serverがあります。

「RDSとAuroraは何が違うの?」という質問をよく見かけますが、実はAuroraはRDSで利用できるデータベースエンジンの一つです。したがって、これらを比較対象とするのは正しくありません。

これらを使う際、ハードウェアの準備、データベースのセットアップ、ソフトウェアの更新、バックアップの取得などの面倒な管理作業をRDSが自動で行ってくれます。このため、データベース管理者はシステムの細かい設定や保守作業から解放され、より戦略的な仕事に集中できるようになります。

特に、Amazon RDSの自動バックアップ機能は便利です。データベースの変更を毎日自動で保存し、万が一問題が発生しても、特定の時点に戻すことができます。また、自分でスナップショットを取得することもできるため、必要なときにデータを簡単に復旧することが可能です。

また、RDSはリードレプリカを利用することで、障害に強い構成を作ることができます。リードレプリカは、データベースの読み取り専用の複製を作成する機能で、これにより読み取り処理を分散させ、パフォーマンスを向上させることができます。さらに、リードレプリカを使って冗長構成を作成することで、障害が発生しても迅速に対応できるようになります。


Amazon RDS~リードレプリカ編パート①~

RDSやAuroraはリレーショナルデータベースですが、AWSには他にもNoSQL型のデータベースがあります。例えば、DynamoDBやElastiCacheです。リレーショナルデータベースは、データを表形式で管理し、複雑なクエリやトランザクション処理に適しています。一方、NoSQLデータベースは柔軟なデータモデルを持ち、スケーラビリティに優れているため、大量のデータを扱うのに向いています。

実務では、RDSの自動化機能を活用することで、システムの信頼性を高めながら管理の手間を減らし、ビジネスの成長に必要な戦略的なタスクにリソースを集中させることが重要です。リードレプリカを含めたRDSの機能をうまく活用することで、より安定した、障害に強いシステムを構築することができます。

https://qiita.com/tireidev/items/85954500a2c667f0e898

https://business.ntt-east.co.jp/content/cloudsolution/column-338.html

Amazon ElasticCashとは

Amazon ElastiCacheは、RedisやMemcachedに互換性のある、AWSが提供する完全マネージド型のインメモリデータストアサービスです。このサービスは、データをメモリ内に保存することで、従来のディスクベースのデータベースよりも速いデータアクセスを提供します。これにより、Webアプリケーションやビッグデータアナリティクス、ゲームなどのパフォーマンスが大幅に向上することが期待できます。


イラストで理解するElastiCache

ElastiCacheの主な利点としては、高速なデータアクセス速度、簡単なスケーラビリティ、耐障害性の高さがあります。ユーザーはトラフィックの増加に合わせてキャッシュの容量を容易に追加したり削除することが可能です。また、自動的なフェイルオーバー機能やデータのレプリケーションにより、障害が発生してもアプリケーションは継続してデータにアクセスできるように設計されています。

セキュリティ面では、ElastiCacheはAWSのセキュリティ基盤を利用し、ネットワークトラフィックの暗号化、IAMによるアクセス管理、そしてVPC内での運用を通じてデータの保護を強化しています。これにより、データの安全性が確保されます。

ElastiCacheの活用例としては、Webサイトやモバイルアプリケーションで頻繁にアクセスされるデータをキャッシュすることで、データベースへの負荷を軽減し、応答時間を短縮することが挙げられます。また、ユーザーのセッション情報をキャッシュに保存することで、サーバーのリソースをより効率的に利用することができ、リアルタイムでのデータ分析やダッシュボード表示にも低遅延でアクセスすることが可能です。

このようにAmazon ElastiCacheは、高速なパフォーマンスを要求される多様なシナリオにおいて、アプリケーションの効率とスケーラビリティを向上させるための有効なソリューションを提供します。

https://qiita.com/kmmz/items/e4b496b42207783515a0

Amazon SESとは

Amazon Simple Email Service (Amazon SES)は、AWSが提供するスケーラブルな電子メール送信サービスです。このサービスを利用することで、開発者や企業はメール送信のための独自のインフラを用意することなく、大量のメールを効率的に配信できます。Amazon SESは、マーケティングメール、トランザクションメール、通知メールなど、さまざまなタイプのメール送信に対応しています。

Amazon SESの利用を開始するためには、AWSコンソールを通じてアクセスし、利用したいメールアドレスやドメインを認証する必要があります。このプロセスにより、スパムとして扱われるリスクを最小限に抑えることができます。また、Amazon SESでは送信量や送信速度を柔軟に調整することが可能で、ユーザーのニーズに応じてスケーリングすることができます。

送信されるメールのデリバリー状況に関しても、Amazon SESは詳細なレポート機能を提供しており、開封率やクリック率、バウンス(不達)メールの数など、多岐にわたる指標を追跡することが可能です。これにより、マーケティングキャンペーンの効果測定や送信ポリシーの最適化が行えます。

さらに、Amazon SESは他のAWSサービスとシームレスに連携することができるため、例えばAmazon S3に保存された大量の顧客データを活用してパーソナライズされたメールを送信するといった高度な用途にも利用できます。また、Amazon Lambdaと連携してメール送信をトリガーとした自動化処理を行うことも可能です。


Amazon SES で受信したメールをLINEに転送する

セキュリティ面においても、Amazon SESは送信メールの内容をTLS(トランスポート層セキュリティ)によって暗号化することで、データの安全性を保障します。また、IAM(Identity and Access Management)による詳細なアクセス制御を設定することもでき、セキュリティの管理を徹底できます。

このようにAmazon SESは、コスト効率の高いメール配信ソリューションを提供しながら、高度なデリバリー管理機能やセキュリティ対策を備えており、ビジネスの規模に関わらず多くの企業にとって有益なツールとなっています。

https://business.ntt-east.co.jp/content/cloudsolution/column-125.html

Amazon Simple Storage Service (Amazon S3)とは

Amazon Simple Storage Service (Amazon S3)は、データをクラウドに保存できるサービスです。S3ではデータを「オブジェクト」として保存し、各オブジェクトには一意のIDと説明情報(メタデータ)が付けられます。これは、GoogleドライブやDropboxといったクラウドストレージサービスに似ています。

データを保存する場所は「バケット」と呼ばれます。バケットは、データの入れ物のようなもので、必要なだけバケットを作成し、その中に無制限にデータを保存できます。バケットの場所(リージョン)も選べるので、データをどの国や地域に保存するかを決めることができます。また、バケットにはバージョン管理機能があり、データの変更履歴を保存できるので、誤ってデータを消してしまった場合でも復元が可能です。


【AWS】S3バケットを作成してコンテンツを公開しよう(ハンズオン)

S3ではデータを他のバケットや地域(リージョン)に複製することができます。これを「データレプリケーション」といい、データが一箇所で破損しても他の場所にバックアップがあるため、データの安全性が高まります。

S3は他のAWSサービスとも連携できます。例えば、「AWS Storage Gateway」は、会社のデータをS3にバックアップするのに役立ちます。また、「Amazon Athena」を使えば、S3に保存したデータをSQL(データベース言語)で簡単に分析できます。

ストレージクラス

S3には、データの保存方法に応じていくつかの「ストレージクラス」があります。

種類 特徴
S3 Standard (標準) 高い耐久性と可用性を持つ標準のS3ストレージクラス。高いパフォーマンスを提供し、ミリ秒単位のアクセス速度を持つ。99.999999999%(11 9's)のデータ耐久性を提供。
S3 Intelligent-Tiering データのアクセスパターンに基づいて自動的に適切なストレージクラスに移行する。コストを最小限に抑えながら高い可用性と耐久性を維持。オブジェクトのアクセスパターンをモニタリング、変更が発生した場合に自動的に最適な階層に移動する。(S3 標準 / S3 標準 – IA )。
S3 Standard (標準)-IA S3 Standardと同様の耐久性を持ち、インフリクエントアクセス(IA)ストレージとして提供される。データが不規則にアクセスされる場合に適しており、低コストでデータを保存できる。頻繁にデータをアクセスしないが、高い耐久性が必要なアーカイブデータに適している。
S3 One Zone-IA 1つのアベイラビリティーゾーンにデータを保存するストレージクラス。S3 Standard-IAよりもコストが低いが、データの耐久性が1つのAZに依存するため、耐障害性が低い。再構築が必要なデータや冗長性を求めないデータに適している。
S3 Glacier アーカイブ目的の非常に低コストなストレージクラス。データの取得に数時間から数分かかる(アーカイブから復元の遅延がある)が、非常に低いストレージコストでデータを保存できる。ロングテーマバックアップやコンプライアンス目的のデータアーカイブに適している。
S3 Glacier Deep Archive 最安!!!!!S3 Glacierよりもさらに低コストで、データ取得に数時間から12時間かかるストレージクラス。長期保存とデータの破棄を必要とするアーカイブデータに適している。データアーカイブの場合、取得までの時間遅延を許容できる場合に使用される。

S3 Standardは最も一般的なストレージクラスで、高速アクセスと高い耐久性があります。すぐにアクセスが必要なデータに向いています。S3 Intelligent-Tieringは、データの利用状況に応じて自動的に最適なストレージクラスに移動させる仕組みがあります。コストを抑えたいけど、データへのアクセスが変わる可能性がある場合に便利です。S3 Standard-IAは、あまり頻繁にはアクセスしないけれど、すぐにアクセスできる必要があるデータに適しています。コストがS3 Standardより低く抑えられます。S3 One Zone-IAは、データを一つの地域内に保存します。コストは低いですが、データの耐障害性は少し低くなります。S3 Glacierは長期的に保存するが、すぐにはアクセスしないデータ向けの非常に低コストなストレージです。データの取り出しに数時間かかります。S3 Glacier Deep ArchiveはGlacierよりさらに低コストで、データの取り出しに12時間ほどかかる場合もあります。非常に長期間保存するデータに最適です。

実際の業務では、S3の自動化機能を活用することで、データ管理の手間を省きつつ、システムの信頼性を高めることが重要です。例えば、頻繁にアクセスするデータはS3 Standardに、長期保存が必要なデータはS3 Glacierに保存するなど、データの利用頻度や重要度に応じて適切なストレージクラスを選びます。さらに、データのバックアップや災害対策としてデータレプリケーションを設定することで、万が一のトラブルに備えることができます。

https://zenn.dev/keni_w/articles/865ebea86cf9f0

https://qiita.com/c60evaporator/items/da47620d69f84a9be7dc

Amazon Route 53とは

Amazon Route 53は、AWSが提供する堅牢なクラウドDNS(Domain Name System)サービスで、インターネットトラフィックの管理とドメイン名の登録に関連する重要な役割を果たします。このサービスは、ユーザーがWebアプリケーションやその他のオンラインリソースへのアクセスをスムーズにし、効率的に管理することを目的としています。

まず、Amazon Route 53を使用すると、ドメイン名の登録が簡単にできます。このプロセスを通じてユーザーは、ビジネスやプロジェクトに適したドメイン名を選択し、AWS内で直接登録することが可能です。登録プロセスはユーザーフレンドリーであり、迅速かつ効率的に行えます。

次に、ドメインへのトラフィックルーティングが主要な機能です。Route 53は高度なトラフィックルーティングポリシーを提供し、例えば地理的位置に基づいたルーティングや、負荷分散、フェイルオーバー設定など、多様なニーズに対応します。これにより、ユーザーは世界中どこからでもリクエストを受けた際に最適なサーバーにトラフィックを向けることができ、これがパフォーマンスの向上とダウンタイムの低減に直接寄与します。

さらに、Amazon Route 53は登録されたリソースのヘルスチェックを行う機能を備えています。この機能により、指定されたインターバルでWebサーバーやアプリケーションサーバーなどの稼働状態を自動的に監視し、問題が発生しているリソースを検出すると、トラフィックを健全なリソースに自動的にリダイレクトします。このプロセスはシステムの全体的な信頼性を保つのに役立ち、ユーザー体験の向上にも貢献します。


AWS Route53フェイルオーバー

これらの機能により、Amazon Route 53はドメイン管理とトラフィックルーティングを一元的に行える強力なツールであり、その操作性やセキュリティの高さから多くの企業に採用されています。また、AWSの他のサービスとの連携もスムーズであり、幅広いアプリケーションのバックエンドとしての役割を効果的に支えます。

ルーティングポリシー

ルーティングポリシーのタイプ 説明
シンプルルーティング 1つのレコードに対して、1つのIPアドレスが存在する
加重ルーティング 0~255 の値によって、問い合わせの方向を変化させる
40%のルーティングを1.1.1.1に流し、60%のルーティングを2.2.2.2に流す
ABテストの検証などで使用されることがある
位置情報ルーティング 位置情報によって、優先度が変わる
地理的近接性ルーティングポリシー ユーザーとリソースの位置情報に基づいてルーティングする方式
レイテンシールーティング レイテンシーが最小になるリソースを優先的にアクセスさせるルーティング方式
フェイルオーバールーティング プライマリとセカンダリで分けて、プライマリのヘルスチェックに失敗したらセカンダリにアクセスされる
複数値回答ルーティング 複数のレコードからランダムに回答をするルーティング方式

###位置情報ルーティングと地理的近接性ルーティングの違い


【AWS初学者向け・図解】Route53ルーティングポリシーを現役エンジニアがわかりやすく解説

位置情報ルーティングポリシーでは、ユーザーの地域のみに基づいてルーティングをしていましたが、地理的近接性ルーティングポリシーはユーザーとリソースの位置関係に基づいてルーティングをします。

AWS Certificate Managerとは

AWS Certificate Manager (ACM)は、AWSが提供するサービスで、SSL/TLS証明書の管理を簡素化します。このサービスは、インターネット上で安全な情報交換を行うために必要な証明書を簡単に取得、管理、展開できるように設計されています。ACMは特に、HTTPSを使用するWebサイトやアプリケーションにとって重要な役割を果たします。

ACMを使用することで、ユーザーはSSL/TLS証明書を自分で手動でプロビジョニングする必要がなくなります。証明書の申請、取得、インストールのプロセスを自動化し、証明書の更新もAWSが自動で行ってくれます。これにより、証明書の期限切れによるサービス中断のリスクが大幅に減少します。

また、AWS Certificate ManagerはAWSの他のサービスとシームレスに統合されるため、Elastic Load Balancing, Amazon CloudFront, Amazon API Gatewayなどのサービスと組み合わせて利用することができます。これにより、これらのサービスを通じて安全なトラフィックの処理が保証され、SSL/TLS証明書の管理がさらに容易になります。

セキュリティの面では、ACMが提供する証明書は業界標準に準拠しており、データ通信の暗号化と認証を強化します。証明書を使用することで、サービスへの信頼性が向上し、ユーザーはデータの改ざんや盗聴から保護されます。

ACMのもう一つの利点は、使用の簡便性です。AWS管理コンソールから直接証明書を申請でき、プログラム的にもAWS SDKやCLIを通じて証明書の管理が可能です。これにより、開発者はアプリケーションのセキュリティに集中することができ、証明書の煩雑な管理から解放されます。

全体として、AWS Certificate Managerは、SSL/TLS証明書の管理を簡単かつ効率的に行いたいと考える企業や開発者にとって非常に有効なツールです。このサービスを利用することで、セキュリティを確保しつつ、運用の負担を減らすことが可能です。

https://zenn.dev/issy/articles/zenn-acm-overview

Amazon CloudWatchとは

Amazon CloudWatchは、AWSが提供するモニタリングおよび観測サービスであり、AWSリソースのパフォーマンスや健全性をリアルタイムで監視するためのツールです。


CloudWatchで出来ること、AWS監視のお作法とは

CloudWatchを使用することで、以下のようなことが可能です:

  • リアルタイム監視
    CloudWatchはAWSのさまざまなリソース(EC2インスタンス、RDSデータベース、Elastic Load Balancerなど)のメトリクスをリアルタイムで収集し、ダッシュボード上で視覚化することができます。これにより、システムのパフォーマンスや利用状況を瞬時に把握できます。

  • アラートと通知
    CloudWatchはメトリクスのしきい値に基づいてアラートを設定し、特定の条件が満たされた場合にSNSやLambdaなど他のAWSサービスを通じて通知を受け取ることができます。例えば、CPU使用率が80%を超えた場合に通知を受け取るように設定することができます。

  • 自動スケーリング
    CloudWatchのアラートを利用して、AWS Auto Scalingをトリガーすることができます。これにより、トラフィックの増減に応じて自動的にインスタンスを追加または削除することができます。

  • ログ管理
    CloudWatch Logsを使用すると、アプリケーションやシステムのログを集約、監視、検索することができます。また、CloudWatch Logs Insightsを活用することで、ログデータからリアルタイムでクエリを実行し、異常を検出することができます。

  • トレンド分析とレポート
    CloudWatchのメトリクスデータを使用して、長期的なトレンドを分析し、カスタムレポートを作成することができます。これにより、リソースの利用状況やパフォーマンスの変化を詳細に把握することができます。

CloudWatchはAWSの各種サービスと深く統合されており、クラウド環境での運用監視や問題解決を支援する強力なツールです。システムの安定性や効率性を向上させるために、CloudWatchを活用することで、リアルタイムでの可観測性と運用の効率化を実現できます。

https://qiita.com/tech4anyone/items/131f14f8665476431225

Amazon Simple Notification Service (Amazon SNS)とは

Amazon Simple Notification Service (Amazon SNS) は、AWSが提供するマネージド型のメッセージングサービスであり、アプリケーションやシステム間での通知やメッセージの送受信を効率的に行うためのプラットフォームです。

Amazon SNSを使用することで、以下のようなことが可能です:

  • パブリッシュ/サブスクライブモデル
    Amazon SNSでは、トピック(Topic)と呼ばれるチャネルを作成し、トピックに対してサブスクライバー(Subscriber)を登録することができます。メッセージはトピックにパブリッシュされ、そのトピックにサブスクライブしているエンドポイント(例えば、メールアドレス、HTTPエンドポイント、AWS Lambda関数など)にメッセージが配信されます。

  • 多様なエンドポイントへの配信
    Amazon SNSは、メッセージをさまざまなエンドポイントに配信することができます。例えば、メール、SMS、HTTP、SQSキュー、Lambda関数、Mobile Push通知(iOSやAndroidデバイス)などに対応しています。これにより、異なるプラットフォームやチャネルに対して一元的にメッセージを送信することが可能です。

  • イベントドリブンアーキテクチャの構築
    Amazon SNSは、イベントドリブンアーキテクチャを実現するための重要なツールです。サービス間の連携やリアルタイムの通知機能を活用して、アプリケーションやマイクロサービス間のコミュニケーションを簡素化します。

  • スケーラブルで信頼性の高いメッセージング
    Amazon SNSは、高可用性とスケーラビリティを備えており、大量のメッセージをリアルタイムで処理することができます。AWSのインフラストラクチャを活用することで、信頼性の高いメッセージングインフラストラクチャを構築することができます。

  • セキュリティとコンプライアンス
    Amazon SNSは、データの暗号化、IAMによるアクセス管理、およびAWSのセキュアなインフラストラクチャを通じて、データのセキュリティとコンプライアンスを確保します。


[https://microsoftgeek.com/?p=3083](AWS — Amazon SNS Overview)


Amazon SNSとは ~手早く、安価なメッセージ通知プラットフォームの特徴~

Amazon SNSは、シンプルなAPIを通じて簡単に操作でき、さまざまなユースケースに適用可能です。例えば、障害通知、アラート、バッチ処理の完了通知、ユーザーへのプッシュ通知など、多くのシナリオで活用されています。企業や開発者は、Amazon SNSを活用することで、柔軟性の高いメッセージング基盤を構築し、アプリケーションの通信と連携を効果的に管理することができます。

https://business.ntt-east.co.jp/content/cloudsolution/column-134.html

https://qiita.com/fjisdahgaiuerua/items/2f79042570903416d612

https://zenn.dev/issy/articles/zenn-sns-overview

Discussion