TSKaigi Night talks 〜after conference〜 での登壇資料です。
MOSHではマルチプロダクト戦略のもと、複数チームが共通で使える通知基盤を開発しています。電子メール・LINE Push・プロダクト内通知のマルチチャネルに対応しつつ、「届くこと」を当たり前に保証するために必要な 堅牢性(robustness) と スケーラビリティ をどう実現したかを話しました。
* 誤った入力への対処: OpenAPI + Orval によるスキーマ駆動開発で、Honoのroutes・Zodバリデータを自動生成し、型安全な入出力を低コストで実現
* 実行中エラーへの対処: AWS Step Functions をオーケストレーターに、分散処理・リトライ・Redriveを活用。DynamoDB(+ dynamodb-toolbox)で冪等性を担保し、副作用のない回復性を確保
* スケーラビリティ: SFnの分散処理により、高負荷時の拡張と新機能追加が容易な構成へ
TypeScriptだけで分散処理の信頼性を作り込む大変さと、そこにマネージドサービスを組み合わせるアプローチについて触れています