駆け出しGopherの
初めてのバッチ設計で
学んだこと
By こじけん
自己紹介
小島健太郎(こじけん)
・株式会社メディアドゥ
・2019年新卒入社
・電子書店コミなびの開発
メディアドゥ ってなにしてるの?
メディアドゥがやっていること
買う
電子書店ごとに
本の情報を提供
本の情報を提供
電子書店
電子書籍の取次
メディアドゥも電子書店を運営している
電子書店がやることは
日々、新刊が発売されたり
キャンペーンで本の価格が変わるので
電子書店の持つDBの本情報を毎日更新する
{
book_id: 1
book_name: “ワンピース93巻”
price: 400
thumbnail_path:“https://thumbnail_url”
}
サムネ画像はメディ
アドゥ が用意して
いる
1日多くて2000件
問題
問題
サムネ画像が重い
つまり電子書店を運営するには
バッチが必要
AWS で実現したい
考えられた選択肢
・AWS Batch
・SQS + Lambda
・Step Functions + Lambda
AWS Batch
バッチだし
AWS Batch使えばなんとかなるっしょ
AWS Batchの使い方間違ってます
Solution Architect
そもそもバッチの管理とは
バッチジョブ管理システムは二種類ある
ジョブのプロセスを制御 ジョブを複数リソースに割り当てる
AWS Black Belt Online Seminar 2017 AWS Batch より
AWS Batchはこっち
JobA
JobB
JobC
JobA JobB
JobAJobB
キューイング
SQS + Lambda
SQS + Lambda
次に呼び出すLambdaをLambda自身で指定
しないといけない
バッチ処理に使うLambdaたちを
いっぺんに管理したいなー
そこで
Step Functions
Step Functions
次に呼ぶリソース(Lambdaなど)の指定
、並行処理、エラー時の分岐処理など
Step Functionsで定義できる
(Lambdaのコード量も減少)
JSON形式の言語でワークフローを定義
単一の処理を行うよ
リソースはこれだよ
出力結果はこのキー
で取得できるよ
次はこのステートの
処理を行ってね
リトライはこんな感
じでやってね
State Typeは7種類ある
Task 単一の処理を行う
Wait 指定した時間の間、処理をストップする
Pass 入力をそのまま出力へ渡す
Parallel 並列に処理を実行する
Choice 一定の条件により分岐する
Fail 実行結果を失敗として終了する
Succeed 実行結果を成功として終了する
料金
ステップが遷移した回数に対する課金
4000回/月まで無料
それ以降は
約2.7円/1000回
今回の条件だったら無料で使えそう
Step Functionsで使えるサービス
dynamoDB
SNS
ECS
SQS Glue
Lambda Batch
SageMaker
ということで
バッチを設計してみました
201909 mediado.go 駆け出しGopherの初めてのバッチ設計で学んだこと
バッチ処理のアーキテクチャ
◯秒待ってから
Step Functionsのワークフロー
百聞は一見にしかずということで
Step Functionsを動かしてみます
GoでLambdaを作っている時に
はまったこと
Goのバイナリに
.envファイルが含まれない
Goで作ったLambdaで環境変数を取得する方法
・AWSコンソールで設定して、os.Getenv
・envファイルも含めてzipファイルを作ってgodotenv.Load()
・statik、packr等のアセットツールを使ってtmpFileにenvファイル
の内容を出力し、godotenv.Load(tmpFile.Name())
バイナリファイル
.env
.envが入ったフ
ォルダ
box tmpFile
Loadする
box.Find()
まとめ
・Step FunctionsとLambdaを組み合わせることで
Lambdaを簡単に管理できる
・環境変数の扱いには注意
ご清聴ありがとうございました

More Related Content

PDF
Artificial Intelligence, Data and Competition – SCHREPEL – June 2024 OECD dis...
PDF
Storytelling For The Web: Integrate Storytelling in your Design Process
PDF
How to Leverage AI to Boost Employee Wellness - Lydia Di Francesco - SocialHR...
PDF
2024 Trend Updates: What Really Works In SEO & Content Marketing
PPTX
PHPカンファレンス2012 LT 一億総PHPer計画
PDF
spc2016-31_電子書籍を買いたくなるプロモーション案
PDF
2024 State of Marketing Report – by Hubspot
PDF
Everything You Need To Know About ChatGPT
Artificial Intelligence, Data and Competition – SCHREPEL – June 2024 OECD dis...
Storytelling For The Web: Integrate Storytelling in your Design Process
How to Leverage AI to Boost Employee Wellness - Lydia Di Francesco - SocialHR...
2024 Trend Updates: What Really Works In SEO & Content Marketing
PHPカンファレンス2012 LT 一億総PHPer計画
spc2016-31_電子書籍を買いたくなるプロモーション案
2024 State of Marketing Report – by Hubspot
Everything You Need To Know About ChatGPT
Ad

201909 mediado.go 駆け出しGopherの初めてのバッチ設計で学んだこと