概要
AWS の利用コストが増大し赤字になっているサービスに、マイクロサービス化・サーバーレス化を適用することによりコスト圧縮を実現。次の段階として高信頼性のサービス運用を実現するため、DevOpsのプラクティスを導入。全体としてサービス分割が適切でなく分散モノリスと化して改修が困難になっているシステム本体にも、段階的にマイクロサービスを導入し、リリーススピードの向上を目指している。
顧客の目的
支援初期のリクエスト
- AWSのコストを圧縮してサービスを黒字化したい
- SREチームを組織して信頼性の高いサービス運用体制を構築したい
Dev と Ops が組織として完全に分かれてのでコミュニケーションコストが多く発生し、作業効率が悪かった。またデプロイの自動化も行われておらず、リリース時に作業ミスが多く発生していた。
現在の目的
- 競合他社に負けないスピードで新機能をリリースしたい
支援方針
マイクロサービスアーキテクチャ・サーバーレスへの移行
- The Twelve-Factor App その他のベストプラクティスの活用
- CI/CD の啓蒙
- Amazon RDS からの脱却
- 標準化されたプロトコルを使う認証システムの啓蒙
課題とソリューション
AWS のコスト圧縮
- 複数の Amazon RDS リソースを統合して一本化
- Amazon EC2 インスタンスを減らすため、イベント駆動による AWS Fargate や AWS Lambda など、マイクロサービス化、サーバーレス化
モノリシックアプリケーションの経験が豊富でマイクロサービス・サーバーレスに懐疑的
- 各種 PoC、フィージビリティスタディを通して実証し成果を評価していただくということを地道に繰り返して啓蒙
認証におけるセキュリティ面の解消
- 現状分析から、複数の Amazon EC2 で稼働しているアプリケーションは分散モノリスであることが明白だった
- 一部の分散モノリスにはセキュリティ上の脆弱性も見受けられた
- ゼロトラストネットワーク 等も参考に、標準的な認証プロトコルの採用が現時点でのベストプラクティスと判断し、OpenID Connect にある程度準拠した Amazon Cognito の採用を提案。サンプルコード等を提供して実証し評価いただくという地道な啓蒙活動
- 一部の認証システムを Amazon Cognito に置換してプロダクションとして稼働済
効果
- 既存サービスの黒字化目標の達成
- マイクロサービスアーキテクチャの採用、サーバーレス化にむけた取り組みの開始
今後の展望
- マイクロサービスアーキテクチャ・サーバーレス化の加速
適用技術
実行基盤
- Amazon EC2
- Amazon ECS
- AWS Fargate
- AWS Lambda
開発言語
- PHP
- Python
- Scala
- Java
インフラ環境構築
- AWS CloudFormation
- Terraform
CI
- Jenkins
- CircleCI