マイクロサービスと DevOps:相乗効果を獲得するために

Microservices and DevOps

マイクロサービス』と『DevOps』は、企業の IT における2つの大きなトレンドです。Netflix の Katharina Probst 氏と MuleSoft の Uri Sarid 氏は、「DevOps を改善・改良することにより、マイクロサービスも優れたものになる」と述べています。DevOps は、マイクロサービスを構成するコンポーネントであると言うことも可能でしょう。

『マイクロサービス』と『DevOps』は、企業の IT における2つの大きなトレンドです。Netflix の Katharina Probst 氏と MuleSoft の Uri Sarid 氏は、「DevOps を改善・改良することにより、マイクロサービスも優れたものになる」と述べています。DevOps は、マイクロサービスを構成するコンポーネントであると言うことも可能でしょう。

マイクロサービスアーキテクチャは、 DevOps イデオロギーから生まれ、 Amazon 、 Netflix 、 SoundCloud 、 Facebook 、 Google などの先進企業から採用が始まりました。多くの場合、これらの企業はモノリシックアプリケーションから、(小さく)分解されたサービスへと急速に進化したのです。 RESTful API やその他のメッセージングプロトコルを用いた通信を実現することで、マイクロサービスベースのアーキテクチャの先駆者となったのです。

しかし、マイクロサービスと DevOps の進化は、モノリシックアプリケーションから細かいサービスへのシフトだけに限定されるものではありません。 DevOps に優れた企業は、ソフトウェア開発へのアプローチ、組織構造、開発文化が似ているだけでなく、クラウドベースのインフラとオートメーション化への親和性も共通しています。マイクロサービスで成功した企業は、「開発」「スピード」「拡張性」の実現を目標に、各社が似たような道のりを歩んで発展しています。これらはすべて、アジャイル開発のコンセプトに合致しています。

アジャイル手法の採用が急速に進むにつれ、継続的インテグレーション(Continuous Integration:CI)の成長にも拍車をかけました。CI はマイクロサービスベースの開発サイクルとして、アジャイルとともに支持されているプラクティスです。CI を採用した企業は同時にアジャイル思想を活用して、より頻繁なソフトウェアリリースの実現を目指すことになります。マイクロサービスを利用することで、継続的デリバリー(CD)の推進に繋げることができるのです。CD とは品質に焦点を当てたアプローチです。CD アプローチにより、出荷可能なプロダクトを増やし、製品デプロイのパイプラインを高速化し、変更をできるだけ早く本番環境に導入します。

マイクロサービスと DevOps:共に変化を創り出す

マイクロサービスベースのアーキテクチャがもたらした変化は、最新のアプリケーションを作成する人々に歓迎されることが多いです。変化を受け入れたことで、生産性が驚くほど向上します。その結果、柔軟かつ拡張性の高いアプリケーションを求めるユーザーグループに、より素早くソリューションの提供を可能にしてくれます。マイクロサービスは、DevOps の現場のために、以下のような重要なメリットをもたらしてくれます。

  • デプロイのしやすさ:マイクロサービスでは、新しいバージョンのサービスを展開する能力が向上し、俊敏性が高まります。これは、ビルド→テスト→デプロイのサイクルが短縮することに起因しています。またマイクロサービスでは、サービス固有のセキュリティ、レプリケーション、パーシステンス、モニタリングの設定を柔軟に行うことができます。
  • 信頼性:マイクロサービスの障害は、当該マイクロサービスとその利用者だけに限定的に影響します。一方、モノリシックアプリケーションに障害が発生したときには、モノリス全体が故障することが多いと思われます。
  • 可用性:特定のマイクロサービスで新しいバージョンをリリースするとき、ダウンタイムがほとんど必要ありません。一方、モノリシックアプリケーションの中のサービスや機能の新バージョンをロールアウトするときは、モノリス全体の再起動が必要となることが一般的です。
  • 拡張性:マイクロサービスは、プール、クラスター、グリッドを使って独立して(他に影響させることなく)拡張させることが可能です。このデプロイメント特性により、マイクロサービスはクラウドが持っている弾力性とマッチしています。
  • 変更可能性:マイクロサービスでは、新しいフレームワーク、ライブラリ、データソース、その他のリソースを柔軟に利用することが可能になります。疎結合のモジュラーコンポーネントであるマイクロサービスは、レジストリを介した動的なディスカバリーとバインディングを支援できるので、作業が容易になることが証明されています。
  • 管理:マイクロサービスでは、アプリケーションの開発作業を小規模なチームに分割し、より独立して作業するアジャイル手法を活用することができます。

マイクロサービスは、開発と運用の両方で使用できる共通のツールセットを採用すれば、 DevOps にさらなる生産性の向上をもたらします。共通のツールセットにより、共通の用語や要件、依存関係、問題に対するプロセスが確立されるのです。これにより、開発者と運用者が互いに連携しやすくなり、問題に対して共同で取り組み、ビルド構成やビルドスクリプトを適切に修正できるようになります。DevOpsとマイクロサービスは、共同運用することで、より効果的に機能すると言えます。

マイクロサービスを組織に導入するためのリソースとベストプラクティスをご覧ください。