PR

マイクロサービス化は、オンプレミス、モノリシックから段階的に作り替える。前提として、アジャイル開発体制、DevOps、横断機能プラットフォームを導入。稼働環境の構築は、最新のクラウドサービスを使うのが早道だ。

 今回はマイクロサービスを導入するための体制づくりを紹介します。導入に向けたプロセスの考え方を押さえたうえで、開発体制や共通プラットフォームなどを整える必要があります。

 マイクロサービス化のプロセスを考えるうえで重要なことは、先端的といわれる企業であっても、最初からマイクロサービスではなかったという点です。マイクロサービスの代表格である米Netflixも同じです。

 Netflixは1998年に創業され、オンラインでのDVDレンタルサービスを提供していました。当初から全てのシステムはデータセンター内に配備されていました。しかし2008年8月、データセンター内に配備されたリレーショナルデータベースで障害が発生し、DVDの発送作業が3日間にわたって停止するという事態が発生しました。これを受けて、Netflixは障害に強いアーキテクチャーへの変更が必要であると判断。2009年ごろからAWS(Amazon Web Services)への移行を開始し、2016年1月に全システムのAWS化を完了しました。

 Netflixではマイクロサービス化を推進するなかで、様々な取り組みを行っており、それらの成果物の一部をオープンソースとして公開しています。代表的なのはカオスエンジニアリングを実現するカオスモンキーでしょう。これは本番システム環境においてランダムに障害を発生させ、サービスに影響を与えずに正常復旧が行われることを確認する、というツールです。

 マイクロサービス環境では多数のアプリケーションが協調動作しています。その中で障害が起きた場合に、どのような影響が発生するのかを予測することは困難です。そうであれば、本番環境で制御可能な範囲で実際に障害を発生させ、その結果に対応することで耐障害性を高めるほうがよいと考えたのです。

 カオスモンキーはサーバーダウンを対象にしていますが、さらにリージョン(データセンターに相当する概念)ダウンまで行うためのツールも公開されています。実際、NetflixではAWSの大規模障害に際してもサービスへの影響を発生させませんでした。何があってもサービスを停止させない障害に強いアーキテクチャーを実現したのです(図1)。

図1●障害に強いシステムのイメージ
図1●障害に強いシステムのイメージ
[画像のクリックで拡大表示]