LINE APIを使ったSaaSの開発
## サービス概要 toB向けのLINE公式アカウント運用を自動化するLINE特化型マーケティングオートメーションサービス ## 使用技術 フロント: HTML・SCSS・JavaScript(jQuery) バックエンド: Ruby(2.7系)・ Ruby On Rails(6.0系) インフラ: AWS(EC2・S3・RDS(MySQL8.0系)など) ## やったこと rake taskを利用したジョブ管理システムの構築 ■課題 gem Wheneverを利用してクライントごとに設定ファイルを作成して対応していましたが サービスが成長するにつれて下記の課題が発生していました。 - Wheneverの設定ファイルが契約社数に比例して多くなるので保守コストが大きい - 実行するバッチの追加や削除などを行うためには設定ファイルの変更やリリースなどが必要になり運用コストが大きい - クライントごとの設定を毎回ソースコードを確認する必要があり、ビジネスサイドがバッチの実行スケジュールを把握できずエンジニアへ確認依頼が発生している ■解決策 課題の根本的な原因がファイルでジョブを管理していることだと判断して、下記のような仕様のジョブ管理システムを構築しました。 - ジョブ(rakeタスクによるバッチ処理)を実行するための情報をDB(MySQL)で管理できる - GUIでジョブの設定が行える ■工夫した点 - ジョブごとのステータスを管理して、ジョブの重複実行を防ぐようにした点 →重複実行されては行けない処理があった場合に対応するため - 実行ログを残すようにしてを、処理の詳細内容などを調査しやすくした点 →障害が発生原因やデバックなどの調査で工数がかからないようにして保守・運用コストを低くするため - ジョブの失敗やスケジュール通りに実行されていない場合にアラート(sentryとSlackを利用)が通知されるようにした点 →異常検知を自動に行い、保守・運用コストを低くするため ■成果 ジョブ管理にかかっていた工数(設定ファイルの変更やリリース作業など)を約30%削減