Slide 1

Slide 1 text

CDKとLambda Aliasで実現する、 SQS+Lambdaの、安全なリリース手法 2024年09月25日 江口 純矢 JAWS-UG CDK支部 #16 ~CDK Conference 2024 Extra~

Slide 2

Slide 2 text

2 経歴 2021年、コドモンにエンジニアとして新卒で入社し請求関連のプロ ダクトを作成するチームに所属。その後、プッシュ通知の基盤を新し く作り直すプロジェクトを経て、SREにジョイン。 最近ハマっていること 早起きしてサウナに行った後、ハッピーアワーで昼飲み。 自己紹介 江口 純矢 えぐち すみや X:@egusumi1219

Slide 3

Slide 3 text

3 Mission

Slide 4

Slide 4 text

4 すべての先生に 子どもと向き合う 時間と心のゆとりを こんなプロダクトを開発しています メインプロダクトは、保育・教育施設向けWebアプリケーション。 保護者と施設のやり取りを支えるモバイルアプリケーションや、施設職員向けモバイル版 アプリケーション、外部サービスと連携するAPIなども開発しています。

Slide 5

Slide 5 text

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月

Slide 6

Slide 6 text

6 今日話すこと LambdaのVersionとAliasとは? CDKで使う場合 実際どのようにして使っていたか 1 2 3

Slide 7

Slide 7 text

7 3 今日話すこと LambdaのVersionとAliasとは? CDKで使う場合 実際どのようにして使っていたか 1 2

Slide 8

Slide 8 text

8 Lambdaの状態を固定化するための機能

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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の 段階的なリリースができそう

Slide 19

Slide 19 text

19 3 今日話すこと LambdaのVersionとAliasとは? CDKで使う場合 実際どのようにして使っていたか 2 1

Slide 20

Slide 20 text

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%

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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の変更履歴

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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%

Slide 27

Slide 27 text

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を参 照させる

Slide 28

Slide 28 text

28 2 今日話すこと LambdaのVersionとAliasとは? CDKで使う場合 実際どのようにして使っていたか 1 3

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

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

Slide 38

Slide 38 text

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

Slide 39

Slide 39 text

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

Slide 40

Slide 40 text

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

Slide 41

Slide 41 text

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

Slide 42

Slide 42 text

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

Slide 43

Slide 43 text

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

Slide 44

Slide 44 text

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

Slide 45

Slide 45 text

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

Slide 46

Slide 46 text

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

Slide 47

Slide 47 text

47 Versionの発行に関する注意点

Slide 48

Slide 48 text

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

Slide 49

Slide 49 text

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にコードが残ってしまう  

Slide 50

Slide 50 text

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にコードが残ってしまう   毎回バージョンを発行すると煩雑になる

Slide 51

Slide 51 text

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にコードが残ってしまう   毎回バージョンを発行すると煩雑になる →普段のリリースで使用するのには向いていない

Slide 52

Slide 52 text

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が有用な場面   毎回バージョンを発行すると煩雑になるため、普段のリリースで使用するのには向いていない

Slide 53

Slide 53 text

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が有用な場面   毎回バージョンを発行すると煩雑になるため、普段のリリースで使用するのには向いていない バージョンを多数発行しない、特定のタイミングのリリースに有用

Slide 54

Slide 54 text

54 まとめ

Slide 55

Slide 55 text

55 CONFIDENTIAL - © 2022 CoDMON Inc. 55 まとめ ● VersionとAliasを使えば、SQS + Lambdaでも安全にリリースできる ● Versionはたくさん作ると管理が煩雑になるため、この手法は特定の大きめ のリリースに有用

Slide 56

Slide 56 text

56 最後に

Slide 57

Slide 57 text

57 コドモン採用ページ 開発ブログ コドモンでは一緒に働きたい仲間を募集しています!

Slide 58

Slide 58 text

58 ご清聴ありがとうございました!

Slide 59

Slide 59 text

No content