学習プラットフォーム製品へのDevOpsベストプラクティス適用

Challenge

エンドツーエンドのHRテクノロジー製品であるSpotmentorは、製品開発のライフサイクル中の複数の課題に直面しました。

  • 財政的な制限があるスタートアップとして、開発チームへの人材投入を優先していたため、専用の運用チームとセキュリティチームを雇うことは困難でした。
  • Flaskフレームワークを使用して開発されたPython Webアプリケーションであり、より多くのモジュールが組み込まれるにつれて、モジュールの依存関係が複雑になってきました。
  • アプリケーション全体をホストする単一のサーバーを監視することは困難になっていました。
  • アプリケーションの停止が、しばしば発生していました。デモンストレーション中にもサービス停止は発生し、複数のクライアントを失っていました。
  • 手動で頻繁なリリースサイクルでアプリケーションをリリースすることが困難になっていました

Our Solution

DevOpsへのモデルシフトが唯一の救済策でした。まずは、どの部分から始めるかの調査が始まり、開発時にどこに時間がかかっているかの調査を行いました。すると明らかにアプリケーションのデプロイに時間がかかっていることがわかりました。リリース時に、すべての構成をデプロイしてチェックするのに 2 時間かかっていました。自動化ツールであるCI/CD パイプラインによるビルドとデプロイの自動化プロセスの確立が急務でした。Jenkinsツールの使用が検討され、パイプラインは10日以内に開発されました。第2の重要課題は、モジュールの依存関係が複雑になっていることです。検討の結果、最終的にコードをマイクロサービスに分割することが決定されました。ただし、CI/CD部分はマイクロサービスに対応していませんでした。また、インフラストラクチャ全体がマイクロサービスをサポートできませんでした。検討の結果、これを解決するためのプロジェクトが立ち上げられました。Calanceはマイクロサービスに対応するインフラストラクチャの構築に取り組み、開発チームはアプリケーションをマイクロサービスに分割しました。DockerとKubernetesが、キーとなるテクノロジーでした。Kubernetes クラスターは、KOps (Infrastructure as Code) を使用して AWS でセットアップされました。安全性の高いシステムを作成するため、プライベートサブネットを構築しました。CI/CD は、マイクロサービス アプリケーションをデプロイできるように変更されました。このプロジェクトは1.5ヶ月以内に終了し,マイクロサービスをサポートするための新しいインフラストラクチャが非常に早いスピードで構築されました。最新のGitOps技術がアプリケーションの配布と状態管理に使用されました。このプロジェクトで、開発者のスキルも大きく向上しました。

Results

結果は驚くべきものでした。週に5〜10台の範囲にあったサーバーの平均停止は、週あたり0.1に抑えられました。当初2時間かかっていたデプロイ時間は、ボタンをクリックするだけで10分に短縮されました。チームの全員がサーバー操作にも慣れ、調和のとれた開発と運用が実現しました。

Tool Set

Jenkins DSL, Kops, AWS EFK Stack (Elasticsearch, Fluentd and Kibana), Git and Github SonarQube Grafana, Prometheus and Alerts Manager

Let’s Build Your Digital Future Together

Tell us about your business challenges — we’ll help craft the right solutions.

Book a Free Consultation