5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【AWS】デプロイに使う基礎知識についてまとめてみた

Last updated at Posted at 2022-03-19

AWSでネットワーク・サーバーを構築する

システムをインフラから構築する

  • インフラができるようになるメリット
    • 自分でサービスを作れる
      • 自分でインフラを構築してサービスをリリースできるようになる。
      • 開発する際のテスト環境を自分で作れるようになる。
    • システム全体で対応できる
      • 障害があったときに、どこに問題があるか、切り分けられるようになる。
      • 対応策を考える時、アプリケーションだけでなく、システム全体で対応できるようになる。
  • インフラを構築する手順
    • ①サーバーの構成
      • どのようなサーバーが必要かを考える
      • サーバーを設置する
      • サーバーのOSをインストールし、各種設定を行う
      • 必要なソフトウェアをインストールし、設定する
    • ②ネットワークの構成
      • 構築したサーバーをネットワークに接続する
        • ネットワークで使用するIPアドレスの範囲を決める
        • サーバーにIPアドレスを割り当てる
        • ドメイン名とIPアドレスの対応を割り当てる

AWSとは

  • AWS(Amazon Web Services)は、Amazon社が提供するクラウドサービス。100以上のサービスが存在し、クラウドサービスとして世界最大規模。
  • AWSの特徴
    • サービスが豊富
      • ECSやRDSなど、100以上のサービスが存在。
      • 高負荷に耐えられる、信頼性の高いシステムを少ない手間で運用できる。
    • リソースが柔軟
      • リソースを、必要な時に必要な分だけ調達できる。
    • 従量課金
      • 使った分だけ支払う従量課金モデル。
      • 不必要なときは使う必要がなく、費用対効果に優れている。

インフラ

インフラとは?

  • サーバーネットワークのこと。
  • 意味
    • Infrastructure:基盤
    • 技術用語としての意味:システムやサービスの基盤となる設備
      インフラ.png

サーバーとは?

  • クライアントに対してサービスを提供するコンピューター
    サーバー.png

ネットワークとは?

  • 複数のコンピューターをつないで、データを送受信できるようにするもの
    サーバー.png

クラウドとは?

  • ネットワークを利用してコンピューターリソースを利用する形態のこと。
  • オンプレミス
    • インフラを自前で用意して、自社で所有・管理すること。
    • 利点:自由度が高いこと。
    • 欠点:初期コストがかかり、調達期間が必要で、サーバーの増減がしにくいこと。
  • クラウド(AWS)
    • インフラをネットワーク経由で使用・管理すること。
    • 利点:初期コストが少なく、すぐに始めることができ、サーバーの増減が自由にできること。
    • 欠点:費用の予測がつきづらいこと、クラウド全体で障害が起こると対応のしようがないこと。

VPC

VPCとは?

  • Virtual Private Cloudの略で、AWS上に仮想ネットワークを作成できるサービス
  • AWSの広いネットワークの土地の中で自分だけの空間を作成できる。
    VPC.png

リージョン

  • AWSの各サービスが提供されている地域のこと。
  • AWSのサービスを使う場合まずリージョンを設定し、リージョン毎にサーバーを作っていく。

アベイラビリティゾーン

  • 独立したデータセンターのこと。
  • どのリージョンにも複数存在している。理由は災害が起きて1つのアベイラビリティゾーンが止まっても他のアベイラビリティゾーンを使えるから。
    アベイラビリティゾーン.png

サブネット

  • VPCを分割して作った小さなネットワークのこと。
  • サブネット内で1つをインターネットからアクセス可能なWebサーバー、もう1つをアクセスできないDBサーバーのように複数分けて作ることができる。
  • 複数のアベイラビリティゾーンの中にそれぞれサブネットを作ることで冗長性を高める。
    サブネット.png

IPアドレス

  • ネットワーク構築の際には、まずIPアドレスの範囲を決める必要がある。

  • IPアドレスとは、インターネットの住所で重複なしの32ビットの整数で8ビット4つの組に分け10進数で表現されている。
    IPアドレス2.png

  • IPアドレスの種類

    • パブリックIPアドレス:インターネットに接続する際に使用する
    • プライベートIPアドレス:インターネットの接続には使用されない
  • IPアドレスはネットワーク部とホスト部に区分けすることで範囲を表記してる。
    IPアドレス3.png

  • CIDR表記:IPアドレスの後ろに「/」を書きその後ろにネットワーク部が先頭から何ビット目なのかを表記する。 例: 192.168.128.0/24 (ネットワーク部が24ビット目)

  • サブネットマスク表記:IPアドレスの後ろに「/」を書き、ネットワーク部を表すビットと同じ部分を1に、ホスト部を表すビットと同じ部分を0にする。

EC2

EC2とは?

  • Elastic Compute Cloudの略でAWSクラウド上の仮想サーバー。
  • インスタンスとはEC2から立てられたサーバーのこと。

AMI

  • インスタンス起動に必要なOSのイメージ、サーバーのテンプレート。
  • 特徴
    AMI.png

インスタンスタイプ

  • サーバーのスペックを定義したもの。
  • 例 : m5.xlarge、スペックにより値段が変わる。

ストレージ

  • サーバーにつけるデータの保存場所
  • EBSとインスタンスストアの2種類ある
名前 説明
EBS ・高い可用性と耐久性を持つストレージ
・他のインスタンスに付け替え可能
・EC2インスタンスはStop/TerminateしてもEBSは保持可能
・Snapshotを取得しS3に保存可能
・EBSの費用が別途発生
・OSやDBなどの永続性と耐久性が必要なデータを置く
インスタンスストア ・インスタンス専用の一時的なストレージ
・他のインスタンスに付け替えることができない
・EC2インスタンスをStop/Terminateするとクリアされる
・追加費用なし
・なくなってはいけないデータを置かない
・一時ファイル、キャッシュなど、失われてもよいデータを置く

SSH

  • 通信内容が暗号化された遠隔ログインサービスでEC2にログインする際に使用する。
  • SSHでログインすることでサーバーと自分のPCを安全に繋いでくれる
    SSH.png

公開鍵認証

  • サーバーの作成者だけがログインできるようにEC2ではSSHログイン時に公開鍵認証を行なっている。

  • 公開鍵と秘密鍵を用いてログイン認証を行う仕組み。

  • サーバーの作成者(秘密鍵を持っているユーザー)だけがログインできる。
    公開鍵.png

  • イメージは南京錠で閉めるのは誰でもできるけど開けるには鍵が必要。
    南京錠.png

  • 公開鍵を用いて暗号化したメッセージは秘密鍵で復号化する。
    復号化.png

  • 公開鍵暗号を用いて認証を行うのが公開鍵認証
    鍵.png

ファイアウォール

  • ネットワークを不正アクセスから守るために必要な通信だけ通してそれ以外は通さない機能
  • AWSではセキュリティグループがファイアウォールの役割を担っている。
    セキュリティグループ.png

Elastic IPアドレス

  • EC2インスタンスのIPアドレスは、起動、停止すると別のIPアドレスが割り当てられてしまう。
  • Elastic IPアドレスを使用することでIPアドレスの固定ができる。
  • インスタンスを削除するまでずっとそのIPアドレスを使用できる。

Route 53

ドメイン

  • インターネット上に存在するコンピューターやネットワークを識別するための名前。
  • IPアドレスでは覚えにくいので、example.comのような形式で表すインターネット上の住所。

DNS

  • ネームサーバーとフルリゾルバから構成されているドメインの管理システムで、ドメイン名をIPアドレスに変換する。
  • ネームサーバー
    • ドメイン名とそれに紐ずくIPアドレスが登録しているサーバー。電話帳のようなもの。
  • フルリゾルバ
    • 紐付くIPアドレスをネームサーバ-に問い合わせて、色々なネームサーバーに聞いて調べて教えてくれるサーバー。

Route 53とは?

  • AWSのDNSサービス。ネームサーバーの役割を果たす。
  • フルマネージドサービスで運用が楽。
    • ホストゾーン:DNSのリソースレコードの集合。ゾーンファイルのようなもの。
    • レコードセット:リソースレコードのこと。
    • ルーティングポリシー:Route 53がRecord Setに対してどのようにルーティングを行うかを決める。
    • ヘルスチェック:サーバーの稼働状況をチェック

RDS

RDSとは?

  • フルマネージドなリレーショナルデータベースのサービス。
    • AWSが構築や運用の管理をしてくれているのでRDSを使うことでコア機能の開発に注力できる。
  • MySQLやPostgreSQLなどのデータベースが利用可能。
  • RDSの特徴
    • 可用性の向上:マルチAZを簡単に構築。
    • パフォーマンスの向上:リードレプリカを簡単に構築。
    • 運用負荷の軽減

IAM

IAMとは?

  • AWSのサービスを利用するユーザー権限を管理するサービス。
  • 各AWSリソースに対して別々のアクセス権限をユーザー毎に付与できるので、セキュリティを高めることができる。

ポリシー

  • アクセス許可の定義。
  • 「どのAWSサービスの」「どのリソースに」「どんな権限を」「許可するかしないかを」定義できる。

ユーザー

  • 個々のアカウントのことで、一人一人に一つ一つのユーザーを作る。

グループ

  • IAMユーザーの集合体で、複数のユーザーにアクセス権限を付与。
  • 毎回ユーザー一人一人にポリシーを定義するのは手間だからグループを作りグループにポリシーを割り当てるので、まとめてポリシーを割り当てることができる。

ロール

  • 一時的にアクセスを許可したアカウントを発行できる。
    IAM.png

S3

S3とは?

  • 安価で耐久性の高いAWSのクラウドストレージサービス。
  • S3を使うことでデータ容量を気にすることなく保存することができる。
  • 画像などの静的コンテンツの配信、ログの出力先、静的なWebサイトをS3から公開するなどに利用される。
  • S3の特徴
    • バケット:オブジェクトの保存場所。名前はグルーバルでユニークな必要あり。
    • オブジェクト:データ本体。S3に格納されるファイルで、URLが付与される。バケット内オブジェクト数は無制限。
    • キー:オブジェクトの格納URLパス

CloudFront

  • PCとS3の間の仲介に入り高速にコンテンツを配信するサービス。
  • CloudFrontはPCからS3にリクエストがあった場合、コンテンツを取得してキャシングを行いキャッシュから配信するので、高速化されS3の負荷が減る。
    CloudFront.png

ACM

ACMとは?

  • AWS Certificate Managerの略で、AWS上のSSL証明書発行サービス。
  • 簡単かつ安価にSSLの対応、そしてSSL証明書の更新ができる。

SSL証明書

  • インターネット上でやりとりされるデータの「盗聴」「なりすまし」を防止するための暗号化プロトコル。
  • SSLを使うことで送受信される情報を第三者に読み取られないように暗号化することができるので、 セキュリティの向上とアクセス権限をもたない人が、サーバーや情報システムの内部に侵入しないようにできる。

ALB

ALBとは?

  • Application Load Balancerの略。複数のEC2インスタンスにアクセスを振り分けることで負荷分散でき高い可用性を実現できる。
  • ACMを利用したSSL/TLS証明書の管理などセキュリティ面が充実している。

ECR

ECRとは?

  • Elastic Container Registryの略。
  • ECRはAWSが提供しているコンテナイメージの保管場所。
  • ECSに統合することができるため、本番環境へのデプロイをスムーズにできる。
  • AWSのDockerHubのようなイメージ。

ECS

ECSとは?

  • Dockerコンテナを簡単に実行、停止、管理できるサービス。
  • ECSを使うことで、複数のコンテナを統合して管理できる。
  • aws上でいい感じにECRからdocker pullして、docker runするイメージ。

Clusterとは?

  • タスクやサービスを使う論理的なグループ。
  • コンテナを動かすec2やfargateの集合体。
  • イメージは箱

Serviceとは?

  • Taskをまとめて管理し、何個起動するのか指定、ALBと関連付けするもの。
  • 同じサービス内で起動しているTaskは、同じTask Definitionからできている。
  • コンテナ群のネットワークとかスケールとかいい感じにやってくれるマネージャー。

Task Definitionとは?

  • ECSでコンテナを起動するための情報を記載したもの。
  • どのimage使って、コンテナ起動するのかとか、cpuとメモリはどうするのかとかportはどうするかとか、コンテナが終了したり失敗した時に起動し直すのかどうかとか(他にも色々)を設定する。
  • docker-compose.yml+Docker for Mac(メモリとか設定できる)のイメージ。

Taskとは?

  • Task Definitionを元に起動した各コンテナ(またはコンテナの集まり)のこと。
  • Railsでよくあるコンテナの構成で例えるなら、appで1タスク、nginxで1タスク、dbで1タスクみたいなイメージ。

Fargateとは?

  • Fargateはサーバーの管理が不要なコンテナ向けのサーバーレスコンピューティングエンジン。
  • EC2を利用した場合、自分でサーバーを起動してecs起動してと言うことをしていた
  • しかし、Fargateを利用した場合は、ECSのServiceの状態によってTaskを自動的に起動したり終了したり、設定によってTask数を増やしたり減らしたりといったことを自動でしてくれる。
  • EC2では起動していた分だけ課金されるが、Fargateの場合はリソースに対しての従量課金となっているため、コスパがいい。

CodePipeline

CodeCommitとは?

  • AWSが提供しているプライベート用のGitリポジトリ。
  • GitHubのAWS版のようなイメージ。

CodePipelineとは?

  • CI/CDの中核となるサービス。CI/CDの全体フローを管理。

CodeBuildとは?

  • CI部分を担当。ビルドやテストを行う。
  • ビルドはDockerのコンテナイメージの作成などの用途で利用します。

CodeDeployとは?

  • CD部分を担当。アプリケーションのデプロイ(リリース)を行う。
  • EC2、オンプレ、Lambda、ECSへデプロイする仕組みを提供。

参考

5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?