バッチ処理
-
バッチ処理をAWS Batchを利用して本番運用してみた | CyberAgent Developers Blog
- AWS Batch なるものがあるのか
-
Kotlin で代数的データ型,
seald classすれば良いんだった -
Spring Batch で実装する
4種類のバッチをSpring Batchで実装しました.
また, [CODE-290]「【バックエンド修正】依頼削除時に入札も削除する」も含まれています.
Job管理テーブルについて
README.mdに記載しましたが, Job管理テーブルを手動で作成する必要があるらしく, 初回のみ以下を実行する必要があります.
psql -f src/main/resources/batch-schema.sql postgresql://codedbuser:codedbpassword@127.0.0.1:5432/codedb設定値について
- cron等の設定は
application.yamlに, 取引期限期間は定数値としてConstants.ktに記載しました。
application.yaml
spring:
batch:
initialize-schema: never
job:
# 起動時にjobを実行しないようにする
enabled: false
# ...
batch:
# 1回に取得するデータ数
page-size: 100
# 掲載期限通知
notify-published-period:
cron: "0 0 * * * *"
# cronの実行間隔(sec)
cron-interval-sec: 3600
# 何秒前に通知するか
notify-before-sec: 86400
# 取引期限通知
notify-deal-end:
cron: "0 0 * * * *"
# cronの実行間隔(sec)
cron-interval-sec: 3600
# 何秒前に通知するか
notify-before-sec: 86400
# 期限切れ取引完了
auto-complete-deal:
# 毎分
cron: "0 * * * * *"
# 掲載期限切れ処理
republish-deal:
# 毎分
cron: "0 * * * * *"Constants.kt
object Constants {
/**
* 取引開始から終了までの秒数
* デフォルト: 7日間
*/
const val dealExpiredSec = 7 * 86400L
}大きなPRとなってしまい恐縮です.
お手数をお掛けしますが, お手すきの際にご確認の程お願いします.
ログ
-
バッチ処理はLambdaでやるのやめてモノリシックにするらしい
- 確かにCI/CD使えない以上デプロイを分割すればするほど運用が大変か
- CircleCIとか外部のCI使えないのか
- 月数十ドルなら人件費よりも圧倒的に安いのに渋る理由が見つからない
- q 研でのAWSもそうだけど固定費はすぐ出すのに従量課金はなぜ出さないのか
- 後者のほうが圧倒的に安いはずなのに
-
notice 休日の仕事の進め方
- 質問の答えによって答えが分岐する所はそれを考慮した全パターンの実装をブランチ切って作る, 実装がめちゃくちゃ早ければ可能か
-
CODE-282 期限切れ取引自動終了バッチ
-
claim 常々思うのは単体テストもっとわかりやすくかけるようにならないのかなって思う. モックとダミーデータの用意位自動でして欲しい
-
Ruby, testing toolとして
- RSpec, factorybot, Faker
- rspec, mockkみたいなこと出来る
- RSpec, factorybot, Faker
-
なぜ,
spring.datasource.hikari.auto-commitが false? -
require(xxx.yyy != null)があるメソッドにverifty { ... }呼ぶと例外吐く?
RuntimeException, 非検査例外 -> ロールバック- それ以外 -> コミット
-
Dealsの更新と通知の作成をトランザクションにするぞ
-
テストを書くぞ
-
PRを作るぞ
-
林さん, 午前中caricariPJをやっていたのか
-
isEqualTo()型無いの少しつらい -
kotlin
.also { it.forEach { .. } }=>.onEach { .. } -
testing 値ベースのテストどうしても偽陽性(false-positove)=網羅できないので本当はバグ(positive)なのに取り逃す(false)がおきてしまう
-
厳密にするには?
- SQLの結果をテストするのではなくクエリが正しいか, 適切なパラメータが渡されているかをテストすべき?
-
bug
tendersに依存があるせいでdeals消せない- 起票した
-
勤怠出す
-
bug 一度下書きに戻っても決済ID(
chargeId) が設定されているので- 「この取引は既に決済されています」が出て再公開出来ない
-
nowはItemReaderがビルドされた時の値なので値が固定になってしまうJobParameterを渡して,Stepの@Beanの中で毎回作り直されるようにしたい@StepScopeを使うNoSuchContextExceptionみたいなのが出るItemReaderimplement してその中で@Value(#{jobParameters})でもらおう todo
ここの売上更新処理は削除になりましたので、消してください。
(売上はレビュー評価時に登録するようになります)
コミットかdocs特定する
- 休憩後, CODE-300 【バックエンド修正】通知取得APIの日時に時刻も含める
2022-12-27
4つのバッチのユニットテストを書く