6章デプロイ
モノリシックアプリケーションのデプロイは、かなり簡単なプロセスです。しかし、相互依存するマイクロサービスでは全く別の困った事態になります。デプロイは、適切に行わないと複雑になってしまい悲惨な目にあう分野の1つです。本章では、マイクロサービスを粒度の細かいアーキテクチャにデプロイする際に便利なテクニックと技術を調べていきます。
まずは継続的インテグレーションと継続的デリバリに目を向けます。これらの関連しているものの異なる概念は、構築するものやその構築方法とデプロイ方法を考えるときに下す決断に役立ちます。
6.1 継続的インテグレーションとは
継続的インテグレーション(CI:Continuous Integration)は、長年にわたって現在まで存在しています。しかし、特にマイクロサービス、ビルド、バージョン管理リポジトリ間のマッピングを考えるときには特に、考慮すべきさまざまな選択肢があるので、基本について少し時間を費やして調べる価値があります。
CIの主な目的はすべてを互いに常に同期させることであり、実際には新たにチェックインされたコードが既存コードと適切に統合(インテグレーション)されるようにすることで、これを実現します。そのために、CIサーバはコードがコミットされたことを検出し、そのコードをチェックアウトし、コードのコンパイルやテストの合格を確認するといった検証を実行します。
このプロセスの一環として、大抵はサービスをデプロイしてテストを実行するといった、追加の検証に使う成果物を作成します。理想的には、このような成果物を一度だけビルドし、そのバージョンのコードのすべてのデプロイでその成果物を使用したいでしょう。これは同じことを何度も実行するのを避け、デプロイされた成果物がテスト済みであることを確認できるようにするためです。このような成果物を再利用できるようにするために、CIツール自体が提供するか、または別のシステム上のある種のリポジトリに成果物を配置します。 ...