【読書メモ】AWSで実現するモダンアプリケーション入門 〜サーバーレス、コンテナ、マイクロサービスで何ができるのか
AWSで実現するモダンアプリケーション入門 〜サーバーレス、コンテナ、マイクロサービスで何ができるのか
第1章モダンアプリケーションとは何か
モダンアプリケーションとは、アプリケーションの設計、構築、管理を継続的に見直し、常に変化を受け入れ続ける開発戦略
url集
awsでのモダンアプリの説明
1.3章で紹介されているAmazon CTOのブログ記事
単語集
オフロード(1.2.1):
プロビジョニング(1.3.2):
第2章サンプルアプリケーションの紹介
第3章 アプリケーション開発におけるベストプラクティスを適用
3.3.1 コードベースとアプリケーションは1:1
3.3.2 curlを使うとOS組み込み関数なので暗黙的な依存となる
3.3.3 環境の差異は設定ファイルで読み込むのではなく、環境変数を使う
- System Manager Parameter Store
- Secrets Manager
3.3.5 APIではないアプリケーションとの通信とは何か・・・?
→MVC //todo: MVCはなぜAPIではないのか
アクティビティ
- 設定として何を外部化するか
環境によって違いが出るもの。タイムアウト値やログレベル等。 - 設定の外部かをどのように取り入れるか
DBに格納しておき、定期的にチェック。メモリに格納する。
設定値格納用APIとかも作っておく?(認証とか必要で面倒かも)
url集
The Twelve-Factor App
Beyond the Twelve-Factor App(元の記事)
Beyond the Twelve-Factor App(翻訳版)第4章 データの取得による状況の可視化
4.1 ビジネスデータの取得について
複数のコンピューティング環境が混在しているが、それらからデータを取得したい...
→ログを用いてストリーミング、ログストレージに集約する
4.4 オブザーバビリティ(可観測性): システムの内部で何が起きているのかを説明できるか
アクティビティ
- データの取得・活用方法
APIのRequestCount、レスポンスタイム等を取得できている
ログも集約しているが、Amazon QuickSight等のBIサービスを使用できていない
→システムデータは取れているが、ビジネスデータが有効活用できていない
傾向の変化は閾値をセットし、アラートをメールに送るように設計
第5章 サーバーレスやコンテナテクノロジーによる運用改善
5.1 サーバーレスはサーバーを意識しなくていいということ。EC2だけではセキュリティバッチを当てたり、インスタンスの数を手動で実行しなくてはいけないからサーバーレスではない。
5.5 ポイント情報は既存のRDSとは別に保存する...?
→これによるメリット、デメリットは?
5.5 ECSとEKSの採用理由は?
url集
Amazon SQS DLQ (5.4.2)
用語集
可搬性(5.3): 1 つのハードウェア/ソフトウェア・プラットフォームで実装したプログラムを,ソース・コードの最小限の変更だけで別のシステムに移植できる
冪等性(5.4.3): べきとうせいと読む。「何回実行しても実行結果が同じ状態になる」ことを意味します。 サーバレスのプログラミングにおいて、べき等性とは、イベントの 繰り返しを識別し、データの重複、矛盾、損失を防ぐアプリケーションまたはコンポーネントの能力
第6章 CI/CDパイプラインによるデリバリーの自動化
url集
(6.3.2) Blue/Greenデプロイに関して
用語集
ビルドアーティファクト: 配布パッケージ、WAR ファイル、ログ、レポートなど、ビルドプロセスによって作成されるファイル
アクティビティ
- パイプライン・ファーストをどのように評価するか
これからのプロジェクトが続く年数、デプロイの難易度(属人化度合い)を総合的に見て考える必要がある。
第7章 要件にあったデータベースの選択
ElastiCacheはMySQLのキャッシュとして使える!
1. APIコールされる
2. APIサーバーのメモリに該当データがあるか確認
3.1 APIサーバーメモリにない場合、MySQLに問い合わせ
3.2 問合せ結果をAPIサーバーメモリ、ElastiCacheに入れる
4.1 APIサーバーメモリにある場合、ElastiCacheに問い合わせ