AWS Summit Online 2021

つい先日、5/11, 5/12にAWS Summit Onlineというイベントが開催されていました。

オンライン開催されることによって隙間時間で見ることができたり、後でアーカイブで見ることもできて便利なのですが、一方で現地に行って会場の席について聞くよりもその時間に集中できないなあということもあり悩ましいです。

個人的には事例セッションを中心にピックアップして知識やアイデアをもらうべく見ていってます。

事例ではないですが私が1つ印象に残った話を紹介します。

基調講演で登壇されたDeNAの南場さんの話はなかなかエモい内容でした。ロックインされた技術を身につけて他にいけないから残っているのではなく、ここに居たいからいるという仕事や風土を作っていくことが経営がやるべきことだよね、という話をされていてトップがこういうことを自分の言葉で語られていたのがとても好印象でした。

どうしてもDeNAといえばソシャゲの会社というイメージがありますが、色々とやっているんですね。またダイナミックな人材活用を大事にしているというお話も好印象でした。

[AWS] SNSメッセージをSQSでサブスクライブする

マイクロサービス化する場合にモジュール間を疎結合に保つためコレオグラフィアーキテクチャを採用できるところではしたくなります。

コレオグラフィについてはQiitaの以下の記事が参考になります。

そこでpub/subの仕組みをどうやって実装するか?という課題ができてきますがAWSであればSNS/SQSが利用できます。
以下のスライドや記事が参考になります。

これで本番運用しよう!と思った時に1つ疑問が出てきました。
SNS->SQSとメッセージを送る際にSQSが障害などで利用できなくなっていた場合にSNSにパブリッシュされたメッセージはどうなるのか?まさか消えちゃうとか無いよね?と。

答えはFAQにありました。

Q: サブスクライブしているエンドポイントが利用できない場合、Amazon SNS メッセージはどうなりますか?

SNS に送信されたすべてのメッセージは、直ちに処理されて配信されます。最初の試行でメッセージが正常に配信されない場合、SNS では次の 4 段階の再試行ポリシーに従った処理が行われます。(1) 遅延なしの再試行、(2) 最小遅延間隔での再試行、(3) バックオフモデル (線形または指数的) を使用した再試行、(4) 最大遅延間隔での再試行です。
ポリシーはエンドポイントによって、以下のように異なります。

SQS: SQS キューが利用できない場合、SNS は直ちに 10 回、続いて 20 秒間隔で 100,000 回の再試行を行います。つまり 23 日あまりで合計 100,010 回の再試行が行われます。この再試行後に配信されないメッセージは SNS から破棄されます。

SQSへの送信が失敗した場合のメッセージの消失については23日間障害が続くというのは考えにくいですし、十分にリトライ処理がされるようなのであまり気にしなくても大丈夫そうです。

とはいえ、SQSが利用できない間はサービスが利用できない状態になると復旧までにかかる時間によっては何か考えないといけないです。
全リージョンで同時に障害というのはあまりないのでマルチリージョンで構築するというのも1つのやり方のようですがどの程度まで担保するかは要検討。

AWS API Gateway & Microservices on ECS

こういう構成のシステムを構築したいのだけどAPI Gatewayで認証をかけてもALBをpublicにしないといけないとかでそれも考慮が必要。
良いやり方がないか色々と試行錯誤をしてようやく1つできそうな方法を思いついたけれどこれがベストなのか不明。

figure1

今回、認証したいのはエンドユーザではなくAPIを利用するサーバ。
IP制限とかできれば良いのだけれど、それは難しいという要件。

その方法というのは以下の通り。
1. APIを利用するサーバはCognitoからtokenを取得
2. そのtokenをHTTPヘッダに付与してAPIをリクエスト
3. APIサーバ側ではそのトークン(JWT)の署名検証を行う

これをnginxのモジュールとして実装するか、Webアプリ側のfilterとして実装する想定。

イメージ図

署名検証用のlambda
https://github.com/awslabs/aws-support-tools/blob/master/Cognito/decode-verify-jwt/decode-verify-jwt.py

署名検証用のlambda functionの呼び出しサンプル

参考にした資料

Amazon Web Services パターン別構築・運用ガイド 改訂第2版 (Informatics&IDEA)

新品価格
¥3,672から
(2018/7/16 22:10時点)

AWSの支払いを日本円でできる

実は2015年からできるらしい。
Amazon Web Servicesブログに 2017-10-18 に記事が投稿されてました。
この記事を見るまで知らなかった。。。

合格対策 AWS認定ソリューションアーキテクト – アソシエイト

新品価格
¥2,376から
(2017/11/1 13:10時点)

Amazon Web Services パターン別構築・運用ガイド 一番大切な知識と技術が身につく

新品価格
¥5,598から
(2017/11/1 13:11時点)

AWSの夏期講習

AWSのYoutube公式チャンネルでは色々な情報発信がされているようです。
割と基礎的なところをざっと舐めるにはちょうどいい感じのコンテンツがたくさんありそうです。

“システム負荷下げたい” というお題の動画をみてみました。
* ELBとオートスケールを使って水平分散させましょう。
* マスタDBはスケールアップ。特性に合わせてNoSQLタイプのDynamaDBの利用も。
* リードはキャッシュやレプリケーションを。
割と常識的な話かもしれませんがWeb系初心者やAWS初心者にはこういう情報も嬉しいですね。

[AWS Start-up ゼミ]システム負荷下げたい | アマゾン ウェブ サービス

資料はこちら。