今週勉強したことまとめ(2017/12/04 ~ 2017/12/10)

今週はECSの使い方を手を動かしながら学んだ。 細かいドキュメントは読み込めていないので今後読んでいく必要があるが、 最終的にCircleCIでDockerイメージをビルドしECRにpush後、ecs-deployコマンドで開発環境にデプロイするという流れを自動化するまでできた。 作成したリソースを消す際にALB周りでつまったところがあったので、リソース削除時は最新の注意を払う。 今後まとめる際はリンクだけ貼るのではなく、少なくとも中身を一行ぐらいで説明するようにする。

AWS

ECS

  • EC2インスタンスクラスターでDockerコンテナを実行できるサービス

  • ECS CLI

    • ローカル開発環境からのクラスター及びタスクの作成、更新、モニタリングを簡素化する高レベルなコマンド
    • DockerComposeファイルがサポートされている
    • インストール
      • MacOSの場合 sudo curl -o /usr/local/bin/ecs-cli https://s3.amazonaws.com/amazon-ecs-cli/ecs-cli-darwin-amd64-latest sudo chmod +x /usr/local/bin/ecs-cli ecs-cli --version
    • 設定 ecs-cli configure --region us-west-2 --access-key $AWS_ACCESS_KEY_ID --secret-key $AWS_SECRET_ACCESS_KEY --cluster ecs-cli-demo
  • ecs-deploy

  • サービス定義時に紐づけるロードバランサを間違えるとインスタンスがひとつもないターゲットグループをさしてしまうので注意

  • サービスを削除したい場合は以下の三段階の手順が必要
    • クラスター > サービスの設定でタスクの数を0にする
      • これをしないと自動でタスクが起動してしまうため
    • クラスター > タスクでタスクを停止する
    • クラスター > サービスでサービスの削除を実行する
  • クラスター内のインスタンスのリソースで足りない場合はタスクが起動しない

  • ECSでコンテナのrolling update

  • ECS運用のノウハウ
  • マイクロサービス化設計入門 - AWS Dev Day Tokyo 2017

ALB

  • ヘルスチェックを設定しないと503
  • 同じセキュリティグループに関連付けられたインスタンスが相互に通信できるようにするには、そのためのルールを明示的に追加する必要がある
    • 送信元IPにセキュリティグループのidを指定する
  • パスベースのルーティングを変更したい場合は
    • EC2 > ロードバランサ > リスナーtab > ルールの表示/編集を押すと管理画面が表示される
    • まちがってターゲットグループをロードバランサに紐づけてしまった場合はここからパスごとにターゲットグループの紐づけを解除しなければ、ターゲットグループそのものを削除できない

Aurora

  • パラメータグループ
    • 何も指定しなければデフォルトのパラメータグループになる
    • デフォルトのパラメータグループは変更できないため作り直しになるので注意
    • Auroraの場合はクラスターパラメータとDBインスタンスパラメータの2種類がある

Docker

bitrise

  • アプリのビルド専用のCIサービス
  • 50$/月でビルドし放題

SideCI

  • コードレビューを自動でしてくれるCIサービス

SonarQube

SpringBoot

Play framework

MySQL

  • MySQLの文字コード事情
  • charset
    • utf8mb4
      • UTF-8で4バイト文字を扱うためのcharset
      • mysql特有
      • これを選んでおけば良い
  • collation
    • 文字の照合規則・照合順序
    • utf8mb4_general_ci
      • utf8mb4のデフォルトのcollation
      • ASCII大文字小文字を区別しない
      • 絵文字を区別しない
    • utf8mb4_bin
      • 全文字を区別する
    • utf8mb4_unicode_ ci
      • ASCII大文字小文字を区別しない
      • 絵文字を区別しない
      • ひらがな、かたかな、濁点有無、全角、半角を区別しない
  • MySQL Connector/Jプロパティリスト
  • 現在接続しているスレッド数を表示する
    • show status like 'Threads_connected';
    • Max_used_connections これまでに記録された同時接続数の最大値
    • Threads_connected 現在開いている接続の数
    • Threads_created 接続を処理するために生成されたスレッド数
    • Threads_running スリープ状態になっていないスレッド数

Java

英語

  • can be used when
    • ~の場合に使用できる