2020/6/24にQUOカードPay オンラインストア(https://pay.quocard.jp/)を内製化しました。
今回はその背景や内容について記載します。
背景
QUOカードPay オンラインストアは最初のローンチ時はエンジニアの手が足りていなかった為外注で構築し、運用も外注していましたが、スピード感を持って機能追加や改善を進める為内製化することにしました。 また元々EC2などマネージドではないサービスを利用していましたが、運用の効率化の為ECSなどマネージドなサービスを利用する形に変更しました。
技術的な変更点
言語
Javaで作られていましたが、部分的にKotlinを導入しました。今後も順次Kotlin化を進める予定です。
インフラ
EC2でしたが、ECS(Fargate)に変更しました。またストレージとしてEFSを使っていましたが、疎結合にするためS3に変更しました。
テスト
ほぼ手動でテストを行う形でしたが、実装の変更による影響を素早く検知して対応するために自動テストは必須であると考えています。その為、徐々に自動化を進めようとしています。できればUnit Testを用意する形にしたいのですがテストするために大幅なリファクタリングが必要になるところが多い為、まずはE2Eのテストを用意した後に書き換えを進めようとしています。
バッチ
JP1から起動する形でしたが、AWS Step Functionsを利用する形に変更しました。また夜間バッチである必要の無いものは徐々にオンライン化する、または営業時間に実行する形にするなどを検討しています。
監視
DataDog,Sentryを導入しました。また1次対応はMSP(外部の監視・運用会社) にお願いしています。
期間
10人程度で約5ヶ月で完了しました。 ブルックスの法則を避ける為、最初から全員参加する形にしました。
リリース
営業日に2日間サービスを停止して実施しました。お客様にご迷惑がかかる可能性があるので可能であれば無停止で行いたかったですが、予期せぬトラブルが発生しても対応できるよう今回はサービス停止を選択しました。 ある程度余裕を持ったスケジューリングだった為、リリース中に細かい問題が発生しましたが無事対応して予定時間前にリリースすることができました。
今回はまず内製ができる環境を作るというところが目的だったため問題を全て解消するという事はできませんでしたが、今後改善して行きたいと思います。 そのためにエンジニアを募集しています。