Slide 1

Slide 1 text

小さなものでも Step Functions id:cohalz / @cohalz Serverless Meetup Fukuoka Re:boot 1

Slide 2

Slide 2 text

自己紹介 ● こはる(@cohalz) ● 株式会社はてな SRE ○ はてなブックマーク ○ はてなブログ ● 費用削減・MySQL・OpenTelemetry ● 福岡でリモート勤務 2

Slide 3

Slide 3 text

3 Step Functions 使ってますか?

Slide 4

Slide 4 text

社内のStep Functions過去事例 ● はてなブログの独自ドメインHTTPS配信 ○ AWSではてなブログの常時HTTPS配信をバーンとやる話 / The Epic of migration from HTTP to HTTPS on Hatena Blog with AWS ● はてなダイアリーや魔法のiらんどのデータ移行 ○ ちょっぴりDiveDeepするAWSの時間 AWS Dev Day 2023 Tokyo 延長 戦 実践データ移行 〜はてなダイアリーや魔法のiらんどの事例と共に〜 4

Slide 5

Slide 5 text

大規模なものだけ? ● ちょっとした運用ツールにもStep Functions を使い始めています ○ 定期・不定期でLambdaやCIから実行しているもの ○ 既存のものを置き換える形で使い始めている 5

Slide 6

Slide 6 text

小さなものがあると学習しやすい ● Step Functions自体は初見は難しい ● 処理を想像できるサイズのものを用意するこ とで大規模なものを作成・運用できるように 6

Slide 7

Slide 7 text

Lambda運用の課題 ● 長時間は動かせない(最大15分) ○ 待ち時間があるような処理にはあまり向いてない ● ランタイムの更新が必要(Go, Node, …) ○ 別の人が書いたものをメンテする場合はさらに大変 ● エラーもCloudWatch Logsから探しにくい ○ どういう入力でどういうエラーになったのか 7

Slide 8

Slide 8 text

Step Functionsだと ● 時間制限がない ○ 状態遷移数による課金 ○ 時間かかる場合は組み込みのWaitを使える ● ランタイムのことを考えなくて良い ● 処理の流れやエラーが追いやすい ○ リトライやエラー処理を組み込みやすい ○ 組み込んでも流れを把握しやすい 8

Slide 9

Slide 9 text

成功・失敗のログが わかりやすい ● 失敗した時にどこが失敗 したのかわかりやすい ○ 赤・橙、緑、白 ● 失敗したところから再実 行できる ○ redrive機能(2023/11) 9

Slide 10

Slide 10 text

Step Functionsの機能追加 ● AWS SDK統合(2021/09) ○ 大抵のAWSの操作はできるように ● HTTPリクエスト(2023/11) ○ 認証が必要なエンドポイントもリクエスト可能 ○ GitHubやSlackなども操作できるように 10

Slide 11

Slide 11 text

Lambdaを採用した方が良いケース ● VPC内のリソースにアクセスする ● 複雑な文字列処理 ○ Step Functions組み込みの文字列関数が貧弱 ○ もし作れたとしても読み解くのが難しいものになる 11

Slide 12

Slide 12 text

例: ステージング環境の作成・停止 ● はてなブックマークのステージング環境を支 える技術 - Hatena Developer Blog ○ 毎日営業時間になったらステージング環境が本番の データでコピーされ定時後には終了する ○ Aurora, ElastiCache, OpenSearchで実施 ○ ほぼAWS SDK統合と少しのLambdaで実現 12

Slide 13

Slide 13 text

気をつけてる ポイント ● コードコメントと GitHubでMermaid記 法を使い図を出す ● コードやプルリクを見 ただけで処理の流れが わかるように 13

Slide 14

Slide 14 text

どうやって実装してる? ● コンソールで作って試してその後CDKで同じコー ドを書くと言う流れで実装 ○ コンソールは試行錯誤しやすい ○ CDKは依存関係を記述しやすい ● Application Composerとか使ったら楽になる? ○ 良い方法知っていたら教えてください 14

Slide 15

Slide 15 text

おわり ● 細かいLambdaもStep Functionsに置き換えて 運用を楽にしています ○ メンテしやすくしていきましょう ○ 最近のStep Functionsも進化しています ● Step Functions事例聞きたいです 15