パンが主食

学んだことのアウトプット+ポエム

『手を動かしながら2週間で学ぶ AWS 基本から応用まで』をやった

f:id:wonda_tea_coffee:20190104003529j:plain

感想

やりきった。広くAWSについて学ぶことができたと思う。あとは個人プロダクトで復習したり、今回学習しなかった事柄について深掘りしていきたい。今後はサーバーレスもやりたいな〜。

メモ

  • AWS一般

  • EC2

    • UserData(シェル)を設定することで初期設定を自動化できる
  • RDS(Relational Database Service)

    • Amazon AuroraMySQLなどよりも性能面で優位
    • Master - Slave構成が簡単につくれる
    • リードレプリカ(参照専用のレプリカを用意して負荷分散)
    • 自動バックアップ
    • メンテナンスウインドウからパッチ当ての自動実施
    • マネージドコンソールからパラメータ設定する
    • RDSインスタンスにはSSHできない
    • スナップショット
    • エンドポイントを指定して接続する
    • Master - Slaveの構成だと停止ができないので、停止するにはシングル構成に戻す(停止にしても7日後に勝手に再起動するので料金に注意)
  • ELB(Elastic Load Balancer)

    • LBのマネージドサービス
    • 負荷分散
      • 配下のEC2の負荷が均等になるようにリクエストを分散する
    • ヘルスチェック
      • 正常なインスタンスにのみリクエストを振る
      • 何を持って正常とするかも設定可能(対象ファイル、チェック周期、成功回数)
    • Auto Scaling
      • 条件(平均CPU使用率など)を決めて配下のEC2の数を増減させる
      • ex. 負荷が高い時間帯だけインスタンス数を増やせる
      • ELB自体もスケールする
    • 種類
      • ALB・・・L7(アプリケーション)レイヤ
      • NLB・・・L4(ネットワーク)レイヤ
      • CLB・・・L7、L4レイヤ、以前の世代で使われていた
    • 設計のポイント
      • AZをまたがったサーバを配置
      • どのサーバに振られても処理を継続できるようにする
  • S3(Simple Storage Service)

    • 安価で耐久性の高いオブジェクトストレージサービス
      • 月10GBのデータを置いても30円/月!(120円/ドル換算)
    • 耐久性が高い
      • 99.99999999999%(イレブン・ナイン)
    • ユーザポリシー、バケットポリシーなどのアクセス管理(IAM、IPなど)
    • バケット
      • S3内のフォルダ的なもの
    • 静的ホスティング
      • 静的なコンテンツであればEC2でなくS3で事足りる
  • Route53

    • DNSサーバはドメイン、レコードタイプ、IPアドレスから成るレコードを保持している
    • DNSの設定を簡単にマネージドコンソールからできる
    • サービス停止した期間はその分のクレジットが支払われる
    • ポリシー
      • Weightedルーティング・・・ドメインの問い合わせを重みに従う
      • Latencyルーティング・・・Latencyが最小のリソースを優先する
      • Geolocationルーティング・・・リクエスト元の位置情報によって優先度が変わる
      • Failoverルーティング・・・プライマリとセカンダリを指定する。プライマリのヘルスチェックが失敗した場合はセカンダリへ。
    • 名前解決できるまでは数分〜数日と時間にばらつきがあるので注意する。
  • IAM(AWS Identity and Access Management)

    • IAMポリシー・・・IAMユーザに許可する操作の集合
    • IAMグループ・・・IAMユーザの集合。グループ単位でポリシーを割り当てることができる。
    • IAMロール・・・各サービスにポリシーを割り当てることができる。この講座ではBatchサーバにS3に関するすべての操作を許可した。
  • AWS CLI

    • ターミナルなどのコンソールからコマンドでAWSリソースを閲覧・操作できる
    • マネージドコンソールからできることはCLIでもできる
  • CloudWatch

    • 運用監視のマネージドサービス
    • 条件(CPU使用率がやばい、など)を設定してアラートメールを飛ばしたりできる
  • SNS(Simple Notification Service)

    • Pub/Sub(出版/購読)メッセージングサービス
  • CloudFront

    • フルマネージド型CDNサービス
    • リージョンが無いエリアにもエッジロケーションがある
    • 各種AWSサービスと連携できる
    • Popular Objects Reportでリソース毎のリクエスト回数やキャッシュのヒット率などが分析できる
  • ElastiCache

    • フルマネージド型インメモリキャッシュサービス
    • レプリケーションやバックアップも簡単にできる
    • 多くのノードタイプが選べる
    • 下記の2つをサポート
      • Redis
        • シングルスレッドでのみ操作
        • データを永続化可能
      • Memchached
        • マルチスレッドで操作
        • データを永続化不可
  • SES(Simple Email Service)

    • フルマネージドメール送受信サービス
    • AWS SDK経由でメール送信できる
    • 独自ドメインが使える
    • 送信エラー時の対応は必要なため注意
    • 受信メールをS3に保存できる
    • 受信をトリガに処理ができる
  • SQS(Simple Queue Service)

    • フルマネージドなキューイングサービス
    • 非同期処理を実現できる
    • 順序が保証されないため注意
    • 同じメッセージを複数回受信する可能性がある
      • FIFOキューを使うことで回避可能だが少しお高い
    • その他機能
  • CodeCommit

    • フルマネージドなソースコード管理サービス
    • プルリク機能、SourceTreeなども使える
  • CodeBuild

    • フルマネージドなビルドサービス
    • ソースコードコンパイル、テストを実行する環境を簡単に作れる
    • CircleCIみたいなもんだ
  • CodeDeploy

    • デプロイ自動化サービス。S3にあるビルド済みのアーティファクトをEC2やオンプレサーバにデプロイする
    • デプロイ時に走るイベントBlockTrafficには「ターゲットグループ」→「属性の編集」→「登録解除の遅延」の時間が含まれる
  • CodePipeline

    • 継続的デリバリー・継続的インテグレーションをサポートするサービス
    • CodeCommit〜CodeBuild〜CodeDeployの流れを統括
    • CodePipeline作成時、CodeCommit時にデプロイする
    • パイプライン内に承認アクションを挟み込むこともできる
    • デプロイ中の停止→ロールバックも簡単にできるみたい
  • ElasticBeanStalk

    • 定番インフラ構成の自動構築
    • アプリデプロイの自動化
    • アプリ開発に注力できるものの自由度は低い
  • OpsWorks

    • Chefを利用した構成管理サービス
    • Chefを既に利用している場合は○
  • CloudFormation

    • リソース管理・構築を自動化
    • JSONYAML形式のテンプレートを元にリソースを自動構築
    • 自由度がとても高いが、OSより上のレイヤーはAnsibleやChefを併用する必要あり
    • スタック・・・テンプレートから自動構築されたAWSリソースの集合
    • 間違って作ってしまいそうな気がする
    • 任意のパラメータをテンプレート構築時に選択することもできる
    • スタックを消すと同時に、スタックに紐付いたテンプレートによって作られたリソースも消える
    • IAMユーザ部分、EC2部分、ネットワーク部分などでテンプレートを分割する