$30 off During Our Annual Pro Sale. View Details »

Step Functions の設計・開発・運用 〜HTBのECサイトの場合〜

Step Functions の設計・開発・運用 〜HTBのECサイトの場合〜

Kazuki Miura

July 14, 2023
Tweet

More Decks by Kazuki Miura

Other Decks in Technology

Transcript

  1. Step Functions
    の設計・開発・運用
    〜HTB
    のEC
    サイトの場合〜
    2023/7/14
    北海道テレビ放送 三浦一樹

    View Slide

  2. 三浦一樹/みうみう
    AWS Samurai
    JAWS-UG
    札幌
    Media-JAWS
    JP_Stripes
    札幌
    AWS Community Builder
    WithSecure Customer Ambassador
    札幌在住でいろんなIT
    系コミュニティに出没しています
     自己紹介

    View Slide

  3. 趣味サウナ
    フィンランドでサウナ入ってきました(仕事)

    View Slide

  4. 今日のお話
    AWS Step Functions
    の使い方
    実際にこうやって考えてやってみた
    話すこと
    話さないこと
    AWS Step Functions
    の細かい話
    VPC
    の内側の話

    View Slide

  5. もう懇親会したいよね
    A会場は懇親会準備中

    View Slide

  6. その前に
    いきなり、脱線

    View Slide

  7. クラメソ愛をちょっとだけ
    語らせてください
    余談なんですけど。。

    View Slide

  8. 感謝!
    クラメソさんのイベントで
    お話できるのめっちゃ光栄です!!

    View Slide

  9. 時は2019

    ただの Developers
    読者だった私
    開発経験ゼロだけど
    やってみたくなってしまった

    View Slide

  10. 詳しくはこちらの資料をご覧ください
    ノリと勢いで開発チームの立ち上げ

    View Slide

  11.  クラメソさん大好き
    made me an Engineer.

    View Slide

  12.  re:Invent 2022
    でMA-1
    着てウロウロ

    View Slide

  13.  20
    周年おめでとうございます!

    View Slide

  14.  東京行きたかったな〜
    DevelopersIO 2023
    GET
    だけじゃもったいない、POST
    してPUT
    する2
    日間
    たいがー氏の
    ブログ
    めっちゃよかった

    View Slide

  15.  決算すごい!おめでとうございます!

    View Slide

  16. クラメソさん採用強化中らしいよ
    説明会あるよ!

    View Slide

  17. 今日のまとめ
    大好きです!

    View Slide

  18. ご参加いただいてるみなさんに
    アンケート
     みんなの気持ちも教えて

    View Slide

  19. アンケート その1
    大好きな人ー?

    View Slide

  20. アンケート その2
    大好きな人ー?
    ブログ

    View Slide

  21. アンケート その3
    大好きな人ー?
    AWS Step Functions

    View Slide

  22. 改めまして
    本編です
     唐突なAWS
    を挟んで

    View Slide

  23. Step Functions
    の設計・開発・運用
    〜HTB
    のEC
    サイトの場合〜
    2023/7/14
    北海道テレビ放送 三浦一樹

    View Slide

  24.  担当サービス
    動画配信事業 EC事業
    ネットデジタル事業部

    View Slide

  25.  みんな初心者から
    動画配信事業 EC事業
    8人のチーム
    エンジニア3名
    (+SES 2名)
    ネットデジタル事業部

    View Slide

  26. ざっくりアーキテクチャ
    OIDC
    OIDC
    OIDC
    S3 MediaConvert S3
    DynamoDB
    DynamoDB
    DynamoDB
    AppSync
    Lambda
    API-GW
    Step Functions
    API-GW
    Amplify
    Amplify
    担当者向け
    CMS
    倉庫
    システム
    BFF
    Frontend Backend

    View Slide

  27. View Slide

  28. VPC LESS
    VPC LESS
    VPC LESS
    OS
     LESS
    OS
     LESS
    OS
     LESS

    View Slide

  29. LambdaLESS
    LambdaLESS
    LambdaLESS

    View Slide

  30. AWS Step Functions

    View Slide

  31. AWS Step Functions
    とは
    Input JSON Output JSON
    分岐
    文字列操作
    Map / Parallel 200+
    AWS SDK
    Flow
    AWS Lambda
    AWS Step Functions

    View Slide

  32. 触ったことない人、ハンズオンあるよ

    View Slide

  33. 今日は自社EC
    のお話
    自社番組の
    関連グッズを販売

    View Slide

  34. カート画面 情報入力 確認画面 購入完了
    EC
    の画面遷移

    View Slide

  35. カート画面 情報入力 確認画面 購入完了
    在庫チェック
    在庫 Table
    カート Table
    temp Table
    カート Table
    決済処理
    在庫 Table
    注文 Table
    配送 Table
    送料計算
    今回の対象とする部分

    View Slide

  36. カート画面 情報入力 確認画面 購入完了
    在庫チェック
    在庫 Table
    カート Table
    temp Table
    カート Table
    決済処理
    在庫 Table
    注文 Table
    配送 Table
    送料計算
    今回の対象とする部分
    👇ここ

    View Slide

  37. Step Functions
    を作る時の流れ
    設計・開発・運用
    HTB
    の場合
    AWS Step Functions

    View Slide

  38. 実際に考える順番は
    運用 設計 開発

    View Slide

  39. 実際に考える順番は
    運用
    こんな時お問合せきたらつらい
    返金・返品ってどういうフロー?
    経理的に気にしてる部分って?
    可観測性ってどこまでやる?
    ビジネス側の担当者と一緒にあーだこーだ
    運用がツラくない仕様を考える

    View Slide

  40. 設計
    実際に考える順番は
    運用
    ワイワイ ガヤガヤ
    Gather.town Miro

    View Slide

  41. 設計
    実際に考える順番は
    運用
    ワイワイ ガヤガヤ
    Gather.town Miro

    View Slide

  42. 実際に考える順番は
    運用 設計 開発
    AWS Console
    AWS Step Functions
    Workflow Studio
    Serverless Framework

    View Slide

  43. 実際に考える順番は
    運用 設計 開発
    カイゼン カイゼン

    View Slide

  44. 運用を考える
    運用
    想像フェーズ

    View Slide

  45. 設計の精度を上げるために運用を考える
    運用
    返金処理をすると
    決済手数料分、損をする
    返金処理は簡単
    決済について考える

    View Slide

  46. 利益を損なう処理は自動化しない
    運用
    返金処理をすると
    決済手数料分、損をする
    返金処理は簡単
    決済について考える
    結論
    返金処理は全て人が判断する!

    View Slide

  47. Reject Day 2023
    でお話してたりします
    運用
    この辺りの悩みは、別資料参照で、、

    View Slide

  48. 設計に落とし込む
    設計

    View Slide

  49. フロント部分の設計も合わせて
    ワイワイ ガヤガヤ
    確認画面
    決済処理

    View Slide

  50. 在庫を確保し
    決済して
    伝票データ作成
    フロント部分の設計も合わせて
    入力はちゃんと
    フロントから渡せる?
    ID
    だけ渡すならいけます
    ワイワイ ガヤガヤ

    View Slide

  51. 在庫を確保し
    決済して
    伝票データ作成
    フロント部分の設計も合わせて
    入力はちゃんと
    フロントから渡せる?
    このLambda

    置き換えられないか? DyanoDB
    の条件付き
    書き込みはSDK
    無理
    ID
    だけ渡すならいけます
    Lambda
    は分割すると
    遅くなる
    ワイワイ ガヤガヤ

    View Slide

  52. 在庫を確保し
    決済して
    伝票データ作成
    フロント部分の設計も合わせて
    入力はちゃんと
    フロントから渡せる?
    このLambda

    置き換えられないか?
    ここは Choice
    で良い
    よね
    DyanoDB
    の条件付き
    書き込みはSDK
    無理
    ID
    だけ渡すならいけます
    良いと思いまーす
    Lambda
    は分割すると
    遅くなる
    ワイワイ ガヤガヤ

    View Slide

  53. 実際に作っていく
    開発
    AWS Console
    AWS Step Functions
    Workflow Studio
    Serverless Framework

    View Slide

  54. workflow studio
    ってご存知?

    View Slide

  55. まずはワークフロースタジオで
    AWS Console
    AWS Step Functions
    Workflow Studio

    View Slide

  56. AWS Console
    AWS Step Functions
    Workflow Studio
    上手にできました!
    資料として
    MIro
    に貼っておく
    次のフェーズに
    渡してIaC

    View Slide

  57. AWS Console
    AWS Step Functions
    Workflow Studio
    画面ポチポチがコードに化ける!
    GUI
    での設定がYAML
    で出てくる

    View Slide

  58. 画像はこんな感じ
    AWS Console
    AWS Step Functions
    Workflow Studio
    png

    View Slide

  59. Serverless Framework
    に yaml
    を入れ込む
    AWS Console
    AWS Step Functions
    Workflow Studio
    Serverless Framework
    環境変数とか
    X-Ray
    とかIAM Policy
    を追加

    View Slide

  60. CI/CD
    にしましょう(
    強い気持ち)
    Serverless
    Framework
    GitHub AWS CodeBuild AWS Step Functions
    ただいま順次移行中。。

    View Slide

  61. できるならCDK
    ですよねーそうですよねー
    AWS Console
    AWS Step Functions
    Workflow Studio
    AWS CDK
    CDK
    を採用しない
    理由がなくなってしまった
    ASL JSON

    View Slide

  62. なんかアプデきちゃって

    View Slide

  63. 運用する
    運用
    実践編

    View Slide

  64. 運用する
    1
    実行毎に画面に出てくる

    View Slide

  65. Step Functions
    が失敗すると
    エラーになったら
    途中から再実行
    が不可能

    View Slide

  66. 途中からの再実行を実現するために
    AWS Step Functions
    AWS Step Functions
    Step Functions
    の中から
    別の Step Functions
    を呼び出すことで
    その状態が保存される
    JSON

    View Slide

  67. エラーの通知まで
    SNS
    失敗
    チャットに失敗した実行の
    URL
    をつけて送信
    だいたい再実行でうまくいく

    View Slide

  68. まとめ
    SDK
    直接さわれるのがすごく良い
    GUI
    で試行錯誤できるのがよい
    要件によってはノーコードツール
    でもGit
    管理してIaC
    にできる
    クエリ要らずで、エラー箇所が一目瞭然
    再試行も簡単
    (SQL
    書いたことなくて)
    みなさん、どんな感じで使ってますか?

    View Slide

  69. 懇親会で
    お話しましょう!
    ありがとうございました!

    View Slide

  70. セッションアンケート
    満足度上位のセッションを後日ブログで公開予定!
    回答へのご協力をよろしくお願いします。
    https://forms.gle/gnLmdXpsXmek8KVTA

    View Slide