社内稟議電子化 SaaS
実務
プロジェクト概要
- 社内稟議の電子化を目的とした中規模法人向け自社 SaaS
担当フェーズ
- 要件定義、基本設計、詳細設計、実装、単体テスト、結合テスト、運用保守
技術スタック
OS
- Linux系(Google Cloud Platform マネージド環境)
言語
- Java(JSP)
- JavaScript
- jQuery
- HTML
- CSS
- Google App Script
DB
- Cloud SQL(MySQL)
- Datastore
その他ミドルウェア、サーバー等
- GCP(App Engine, Cloud Storage, Cloud Tasks, Cloud Scheduler, Cloud Logging)
役割・規模
- 役割: リードエンジニア
- プロジェクト規模: 要員3名(全体6名)
業務内容
- 顧客要望を受けた社内検討フェーズから参加し、既存機能に合わせた新機能追加の方針策定・実装
- Java バージョンアップ(8→17)と依存ライブラリ移行による 150 ファイル以上の修正
- GCP レガシーサービス廃止に伴う代替サービスへの移行実装
- 解約済み顧客データの定期削除処理の実装による容量削減
- 各顧客のデータ集計と削除処理の自動化を新規実装
- Cloud Logging によるエラー監視と問題箇所の修正
実績・取り組み等
工夫したこと、そのような工夫をした理由
- 各顧客のデータ集計と、解約済み顧客データの削除処理を Cloud Scheduler と Cloud Tasks を活用して自動化。解約顧客データは論理削除後、一定期間経過後に物理削除し、関連するストレージデータも含めて削除する仕組みを実装した
- 定期的に Cloud Logging を確認し、エラーログから問題箇所を特定して修正することで、システム刷新に伴う不具合の早期発見・対応を実施した
- これらの工夫を行った理由は、将来的な運用負荷を軽減してシステムの安定性を保つため、また適切なデータ管理体制を確立するため
直面した問題
- 解約済み顧客のデータが削除されずに残り続けており、トライアル終了顧客のデータも整理されていなかった。
- GCP が提供していた一部サービスが廃止され、代替サービスへの移行が必要になった。既存の実装が廃止されるサービスに強く依存しており、新サービスとの互換性確保が課題だった。
- Java8 から Java17 へのバージョンアップで、難易度は高くないものの 150 ファイル以上に影響があり、依存ライブラリの移行や非推奨 API の置き換えなど修正箇所が膨大で作業量が多かった。
問題を解決するために行った施策、解決策
- 各顧客のデータ集計を定期的に実行するバッチを実装。解約顧客データの論理削除後、一定期間経過後の物理削除を自動化し、関連するストレージデータも含めて削除する仕組みを構築した。
- 既存の動作を損なわないよう、旧サービスと新サービスの差異を詳細に調査。移行後も既存機能が正常に動作することを確認するための詳細なテスト計画を策定・実施した。
- Java バージョンアップは影響範囲を事前に洗い出して修正箇所をリスト化し、段階的に修正・テストを実施して各段階で動作確認を徹底した。
その解決策を行った理由
- データが増え続けることで将来的にストレージコストが増大するリスクがあったため、適切なデータ管理体制を確立して運用の安定性を高める必要があった。
- GCP レガシーサービスの廃止は避けられないが、顧客にとってはサービスが継続的に利用できることが最優先であり、移行作業によるダウンタイムや機能不全を防ぐため慎重かつ計画的な対応が必要だった。
- Java8 のサポート終了が迫っておりセキュリティリスクを回避するために早急な対応が必要だったが、影響範囲が広いため無計画に実施するとシステム全体の安定性を損なうリスクがあった。
成果(工夫や解決策を実施した後の成果)
- 150 ファイル以上を修正しながらも、本番環境での重大な障害を発生させることなく Java17 への移行を完了し、GCP レガシーサービス廃止に伴う移行対応を実施してサービス継続性を確保した。
- データ容量の削減によりコストを最適化し、自動化により将来的な手動運用の発生を防止して運用負荷を軽減した。
- Java17 への移行により GCP 環境でのサポート切れリスクを解消し、コードの一部が整理されて保守性が向上した。Cloud Logging によるエラー監視と迅速な修正対応により運用品質が向上した。