Upgrade to Pro — share decks privately, control downloads, hide ads and more …

CDKとLambda Aliasで実現する、SQS+Lambdaの安全なリリース手法 / SQ...

400

CDKとLambda Aliasで実現する、SQS+Lambdaの安全なリリース手法 / SQS+Lambda release method with CDK and Lambda Alias

コドモン開発チーム

September 25, 2024
Tweet

More Decks by コドモン開発チーム

Transcript

  1. 5 導入施設数推移(ICT) 2021年4月 8,000 2020年4月 5,200 2019年4月 3,000 2018年4月 1,500

    2017年4月 500 2016年4月 120 全国導入数 19,000 施設 2022年2月 11,000 17,000 2024年1月 (2024年7月時点) 14,000 2023年4月
  2. 9 CONFIDENTIAL - © 2022 CoDMON Inc. 9 LambdaのVersionとは?  

    1. LambdaのVersionとAliasとは? Lambdaの変更履歴
  3. 10 CONFIDENTIAL - © 2022 CoDMON Inc. 10 LambdaのVersionとは?  

    1. LambdaのVersionとAliasとは? Lambdaの変更履歴 任意のタイミングで 現在のVersionを発行 v1
  4. 11 CONFIDENTIAL - © 2022 CoDMON Inc. 11 LambdaのVersionとは?  

    1. LambdaのVersionとAliasとは? Lambdaの変更履歴 v1 任意のタイミングで 現在のVersionを発行
  5. 12 CONFIDENTIAL - © 2022 CoDMON Inc. 12 LambdaのVersionとは?  

    1. LambdaのVersionとAliasとは? Lambdaの変更履歴 v1
  6. 13 CONFIDENTIAL - © 2022 CoDMON Inc. 13 1. LambdaのVersionとAliasとは?

    Lambdaの変更履歴 v1 v2 任意のタイミングで 現在のVersionを発行 LambdaのVersionとは?  
  7. 14 CONFIDENTIAL - © 2022 CoDMON Inc. 14 Lambdaの変更履歴 v1

    v2 任意のタイミングで 現在のVersionを発行 1. LambdaのVersionとAliasとは? LambdaのAliasとは?  
  8. 15 CONFIDENTIAL - © 2022 CoDMON Inc. 15 Lambdaの変更履歴 v1

    v2 任意のタイミングで 現在のVersionを発行 任意のタイミングで Aliasを発行 public 1. LambdaのVersionとAliasとは? LambdaのAliasとは?  
  9. 16 CONFIDENTIAL - © 2022 CoDMON Inc. 16 1. LambdaのVersionとAliasとは?

    Lambdaの変更履歴 v1 v2 任意のタイミングで 現在のVersionを発行 LambdaのAliasとは?   任意のタイミングで Aliasを発行 public SQS 他AWSリソースは Aliasを指定して参照可能 SQSのトリガーに、 Aliasの指定が可能
  10. 17 CONFIDENTIAL - © 2022 CoDMON Inc. 17 1. LambdaのVersionとAliasとは?

    Lambdaの変更履歴 v1 v2 任意のタイミングで 現在のVersionを発行 LambdaのAliasとは?   任意のタイミングで Aliasを発行 public SQS 他AWSリソースは Aliasを指定して参照可能 90% 10% 二つのVersionに対して 加重設定が可能
  11. 18 CONFIDENTIAL - © 2022 CoDMON Inc. 18 1. LambdaのVersionとAliasとは?

    Lambdaの変更履歴 v1 v2 任意のタイミングで 現在のVersionを発行 LambdaのAliasとは?   任意のタイミングで Aliasを発行 public SQS 他AWSリソースは Aliasを指定して参照可能 90% 10% 二つのVersionに対して 加重設定が可能 SQSのトリガーとなるLambdaの 段階的なリリースができそう
  12. 20 CONFIDENTIAL - © 2022 CoDMON Inc. 20 2. CDKで使う場合

    Lambdaの変更履歴 v1 v2 1.Versionの発行 それぞれ、CDKではどのように記述する?   2-a. Aliasの発行 2-b. Aliasの加重設定 public SQS 3.他リソースにAliasを参 照させる 90% 10%
  13. 21 CONFIDENTIAL - © 2022 CoDMON Inc. 21 2. CDKで使う場合

    Lambdaの変更履歴 1.Versionの発行 それぞれ、CDKではどのように記述する?   2-a. Aliasの発行 2-b. Aliasの加重設定 public SQS 3.他リソースにAliasを参 照させる 10% 90%
  14. 22 CONFIDENTIAL - © 2022 CoDMON Inc. 22 2. CDKで使う場合

    Lambdaの変更履歴 1.Versionの発行 Versionの発行   90% 10% 2-a. Aliasの発行 2-b. Aliasの加重設定 3.他リソースにAliasを参 照させる public SQS v1
  15. 23 CONFIDENTIAL - © 2022 CoDMON Inc. 23 2. CDKで使う場合

    1.Versionの発行 Versionの発行   2-a. Aliasの発行 2-b. Aliasの加重設定 public SQS 3.他リソースにAliasを参 照させる 90% 10% v1 Lambdaの変更履歴
  16. 24 CONFIDENTIAL - © 2022 CoDMON Inc. 24 90% 10%

    2. CDKで使う場合 1.Versionの発行 Versionの発行   public SQS 2-a. Aliasの発行 2-b. Aliasの加重設定 3.他リソースにAliasを参 照させる v1 Lambdaの変更履歴 v2
  17. 25 CONFIDENTIAL - © 2022 CoDMON Inc. 25 2. CDKで使う場合

    1.Versionの発行 Aliasの発行   SQS 3.他リソースにAliasを参 照させる Lambdaの変更履歴 v1 v2 2-a. Aliasの発行 2-b. Aliasの加重設定 public
  18. 26 CONFIDENTIAL - © 2022 CoDMON Inc. 26 2. CDKで使う場合

    1.Versionの発行 Aliasの加重設定   SQS 3.他リソースにAliasを参 照させる v1 Lambdaの変更履歴 v2 2-a. Aliasの発行 2-b. Aliasの加重設定 public 90% 10%
  19. 27 CONFIDENTIAL - © 2022 CoDMON Inc. 27 2. CDKで使う場合

    1.Versionの発行 Aliasの加重設定   SQS v1 Lambdaの変更履歴 v2 2-a. Aliasの発行 2-b. Aliasの加重設定 public 90% 10% 3.他リソースにAliasを参 照させる
  20. 29 CONFIDENTIAL - © 2022 CoDMON Inc. 29 3. 実際どのようにして使っていたか

    EC2 バッチ実行サーバー SQS Lambda ECS Fargate プッシュ通知サービス 自社で使用していたPush通知基盤の構成 APNs FCM
  21. 30 CONFIDENTIAL - © 2022 CoDMON Inc. 30 3. 実際どのようにして使っていたか

    EC2 バッチ実行サーバー SQS Lambda ECS Fargate プッシュ通知サービス 自社で使用していたPush通知基盤の構成 APNs FCM 通知メッセージ、宛先を SQSに送信
  22. 31 CONFIDENTIAL - © 2022 CoDMON Inc. 31 3. 実際どのようにして使っていたか

    EC2 バッチ実行サーバー SQS Lambda ECS Fargate プッシュ通知サービス 自社で使用していたPush通知基盤の構成 APNs FCM LambdaがSQSから メッセージを刈り取る
  23. 32 CONFIDENTIAL - © 2022 CoDMON Inc. 32 3. 実際どのようにして使っていたか

    EC2 バッチ実行サーバー SQS Lambda ECS Fargate プッシュ通知サービス 自社で使用していたPush通知基盤の構成 APNs FCM プッシュ通知サービスの APIにリクエストを送信
  24. 33 CONFIDENTIAL - © 2022 CoDMON Inc. 33 3. 実際どのようにして使っていたか

    EC2 バッチ実行サーバー SQS Lambda ECS Fargate プッシュ通知サービス 自社で使用していたPush通知基盤の構成 APNs FCM iOS端末への通知は APNsへリクエスト
  25. 34 CONFIDENTIAL - © 2022 CoDMON Inc. 34 3. 実際どのようにして使っていたか

    EC2 バッチ実行サーバー SQS Lambda ECS Fargate プッシュ通知サービス 自社で使用していたPush通知基盤の構成 APNs FCM iOS端末への通知は APNsへリクエスト Android端末への通知は FCMへリクエスト
  26. 35 CONFIDENTIAL - © 2022 CoDMON Inc. 35 3. 実際どのようにして使っていたか

    EC2 バッチ実行サーバー SQS Lambda ECS Fargate プッシュ通知サービス Legacy API このままではFCMへのリクエストが送れなくなる  APNs FCM
  27. 36 CONFIDENTIAL - © 2022 CoDMON Inc. 36 3. 実際どのようにして使っていたか

    移行後はOSSからFCMへリクエストさせない構成に 移行前 移行後 EC2 バッチ実行サーバー SQS Lambda ECS Fargate プッシュ通知サービス Legacy API APNs FCM EC2 バッチ実行サーバー SQS Lambda ECS Fargate プッシュ通知サービス APNs FCM Legacy API New API
  28. 37 CONFIDENTIAL - © 2022 CoDMON Inc. 37 3. 実際どのようにして使っていたか

    移行後はOSSからFCMへリクエストさせない構成に 移行前 移行後 EC2 バッチ実行サーバー SQS Lambda ECS Fargate プッシュ通知サービス Legacy API APNs FCM EC2 バッチ実行サーバー SQS Lambda ECS Fargate プッシュ通知サービス APNs FCM Legacy API 安全に移行したい New API
  29. 38 移行前 移行後 段階移行期間 EC2 バッチ実行サーバー SQS Lambda ECS Fargate

    プッシュ通知サービス Legacy API APNs FCM EC2 バッチ実行サーバー SQS Lambda ECS Fargate プッシュ通知サービス APNs FCM Legacy API New API
  30. 39 移行前 移行後 段階移行期間 EC2 バッチ実行サーバー SQS Lambda ECS Fargate

    プッシュ通知サービス Legacy API APNs FCM EC2 バッチ実行サーバー SQS Lambda ECS Fargate プッシュ通知サービス APNs FCM Legacy API EC2 バッチ実行サーバー SQS Lambda ECS Fargate プッシュ通知サービス Legacy API APNs FCM Lambda New API New API
  31. 40 移行前 移行後 段階移行期間 EC2 バッチ実行サーバー SQS Lambda ECS Fargate

    プッシュ通知サービス Legacy API APNs FCM EC2 バッチ実行サーバー SQS Lambda ECS Fargate プッシュ通知サービス APNs FCM Legacy API EC2 バッチ実行サーバー SQS Lambda ECS Fargate プッシュ通知サービス Legacy API APNs FCM Lambda Alias OLD NEW AliasとVersionを 使用して実現 New API New API
  32. 41 CONFIDENTIAL - © 2022 CoDMON Inc. 41 3. 実際どのようにして使っていたか

    最新Versionの比重を0%に設定 段階移行期間 EC2 バッチ実行サーバー SQS Lambda ECS Fargate プッシュ通知サービス Legacy API APNs FCM Alias OLD NEW Lambda
  33. 42 CONFIDENTIAL - © 2022 CoDMON Inc. 42 3. 実際どのようにして使っていたか

    最新Versionの比重を10%に設定 段階移行期間 EC2 バッチ実行サーバー SQS Lambda ECS Fargate プッシュ通知サービス Legacy API APNs FCM Alias OLD NEW Lambda New API
  34. 43 CONFIDENTIAL - © 2022 CoDMON Inc. 43 3. 実際どのようにして使っていたか

    段階移行期間 EC2 バッチ実行サーバー SQS Lambda ECS Fargate プッシュ通知サービス Legacy API APNs FCM Alias OLD NEW 最新Versionの比重を50%に設定 Lambda New API
  35. 44 CONFIDENTIAL - © 2022 CoDMON Inc. 44 3. 実際どのようにして使っていたか

    段階移行期間 EC2 バッチ実行サーバー SQS Lambda ECS Fargate プッシュ通知サービス APNs FCM Alias OLD NEW 最新Versionの比重を100%に設定 Lambda New API
  36. 45 CONFIDENTIAL - © 2022 CoDMON Inc. 45 3. 実際どのようにして使っていたか

    不要になったAliasやVersionを削除 段階移行期間 EC2 バッチ実行サーバー SQS ECS Fargate プッシュ通知サービス APNs FCM Lambda New API
  37. 46 CONFIDENTIAL - © 2022 CoDMON Inc. 46 3. 実際どのようにして使っていたか

    不要になったAliasやVersionを削除 段階移行期間 EC2 バッチ実行サーバー SQS ECS Fargate プッシュ通知サービス APNs FCM 無事安全に移行することができました Lambda New API
  38. 48 CONFIDENTIAL - © 2022 CoDMON Inc. 48 Versionの発行に関する注意点 Versionの発行

    Versionを発行する度に、CDKにコードが残ってしまう   2-a. Aliasの発行 2-b. Aliasの加重設定 public SQS 3.他リソースにAliasを参 照させる 10% 90% v1 Lambdaの変更履歴
  39. 49 CONFIDENTIAL - © 2022 CoDMON Inc. 49 Versionの発行 public

    SQS 2-a. Aliasの発行 2-b. Aliasの加重設定 3.他リソースにAliasを参 照させる v1 10% 90% Lambdaの変更履歴 v2 Versionの発行に関する注意点 Versionを発行する度に、CDKにコードが残ってしまう  
  40. 50 CONFIDENTIAL - © 2022 CoDMON Inc. 50 Versionの発行 public

    SQS 2-a. Aliasの発行 2-b. Aliasの加重設定 3.他リソースにAliasを参 照させる v1 10% 90% Lambdaの変更履歴 v2 Versionの発行に関する注意点 Versionを発行する度に、CDKにコードが残ってしまう   毎回バージョンを発行すると煩雑になる
  41. 51 CONFIDENTIAL - © 2022 CoDMON Inc. 51 Versionの発行 public

    SQS 2-a. Aliasの発行 2-b. Aliasの加重設定 3.他リソースにAliasを参 照させる v1 10% 90% Lambdaの変更履歴 v2 Versionの発行に関する注意点 Versionを発行する度に、CDKにコードが残ってしまう   毎回バージョンを発行すると煩雑になる →普段のリリースで使用するのには向いていない
  42. 52 CONFIDENTIAL - © 2022 CoDMON Inc. 52 Versionの発行 public

    SQS 2-a. Aliasの発行 2-b. Aliasの加重設定 3.他リソースにAliasを参 照させる v1 10% 90% Lambdaの変更履歴 v2 Versionの発行に関する注意点 VersionとAliasが有用な場面   毎回バージョンを発行すると煩雑になるため、普段のリリースで使用するのには向いていない
  43. 53 CONFIDENTIAL - © 2022 CoDMON Inc. 53 Versionの発行 public

    SQS 2-a. Aliasの発行 2-b. Aliasの加重設定 3.他リソースにAliasを参 照させる v1 10% 90% Lambdaの変更履歴 v2 Versionの発行に関する注意点 VersionとAliasが有用な場面   毎回バージョンを発行すると煩雑になるため、普段のリリースで使用するのには向いていない バージョンを多数発行しない、特定のタイミングのリリースに有用
  44. 55 CONFIDENTIAL - © 2022 CoDMON Inc. 55 まとめ •

    VersionとAliasを使えば、SQS + Lambdaでも安全にリリースできる • Versionはたくさん作ると管理が煩雑になるため、この手法は特定の大きめ のリリースに有用