今週勉強したことまとめ(2017/12/04 ~ 2017/12/10)
今週はECSの使い方を手を動かしながら学んだ。 細かいドキュメントは読み込めていないので今後読んでいく必要があるが、 最終的にCircleCIでDockerイメージをビルドしECRにpush後、ecs-deployコマンドで開発環境にデプロイするという流れを自動化するまでできた。 作成したリソースを消す際にALB周りでつまったところがあったので、リソース削除時は最新の注意を払う。 今後まとめる際はリンクだけ貼るのではなく、少なくとも中身を一行ぐらいで説明するようにする。
AWS
- AWS 管理コンソールのヘッダーをリージョン別で色分けする Stylish を作った
- AWSのリージョンごとにコンソールの色を分けることができるのでミスがなくなって便利
ECS
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
- MacOSの場合
- 設定
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
- ecs-deploy
- シェルスクリプトで書かれたシンプルなECSのデプロイツール
-t
でタイムアウト時間を伸ばさないと大抵エラーになるのでCIを使っている場合は注意
サービス定義時に紐づけるロードバランサを間違えるとインスタンスがひとつもないターゲットグループをさしてしまうので注意
- サービスを削除したい場合は以下の三段階の手順が必要
- ECS運用のノウハウ
- マイクロサービス化設計入門 - AWS Dev Day Tokyo 2017
ALB
- ヘルスチェックを設定しないと503
- 同じセキュリティグループに関連付けられたインスタンスが相互に通信できるようにするには、そのためのルールを明示的に追加する必要がある
- 送信元IPにセキュリティグループのidを指定する
- パスベースのルーティングを変更したい場合は
- EC2 > ロードバランサ > リスナーtab > ルールの表示/編集を押すと管理画面が表示される
- まちがってターゲットグループをロードバランサに紐づけてしまった場合はここからパスごとにターゲットグループの紐づけを解除しなければ、ターゲットグループそのものを削除できない
Aurora
- パラメータグループ
Docker
bitrise
- アプリのビルド専用のCIサービス
- 50$/月でビルドし放題
SideCI
- コードレビューを自動でしてくれるCIサービス
SonarQube
- 静的コード解析ツール
- https://www.sonarqube.org/
- SonarQubeで始める静的コード解析
SpringBoot
- ログ設定
- Actuator
- アプリケーションのモニタリングや管理を簡単に行えるツール
- 公式ドキュメント
- Spring Boot Actuatorを使ってヘルスチェックする
- SpringのDBコネクションの共有方法(DBトランザクション)を理解する
@JdbcTest
- Jdbcのテストのためのアノテーション
- @RunWith(SpringRunner.class)と組み合わせて使用する
- Jdbcテストに関係するコンフィギュレーションを有効にする
- デフォルトでは@JdbcTestは組み込みのインメモリDBを使用する
@AutoConfigureTestDatabase
によってこの設定は上書きできる- ローカルにDBを立ててテストしたい場合などはこちらを使用する
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
でアプリケーションのデフォルト設定のDBを使用する- JavaDoc
Play framework
MySQL
- MySQLの文字コード事情
- charset
- 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
- 文字列分割
String.substring
- The Tomcat JDBC Connection Pool
英語
can be used when
- ~の場合に使用できる