はFabric8 Microservices Platformでdemo video showing how to create a Spring Boot microserviceだと完全なContinuous Deployment pipelineは、次の操作を実行するために作成されますた:
- パッケージコード、ドッキングウィンドウの画像と
- マニフェストkubernetesを作成するシステム/統合テスト
- を行いますローリングアップデートでステージング環境に展開する
- (オプション)人間の承認を待つ
- deploy toローリングアップデートによる生産環境
gitリポジトリ内のコードや設定の変更は、ローリングアップデートを自動的に開始します。これはホットデプロイの一形態です。例えば実稼働環境で3つのコンテナを実行している場合。新しいコンテナは、ローリングアップグレードポリシーに基づいて新しいコードおよび/またはコンフィグレーションでスピンアップされます。通常、新しいコンテナが開始されます。彼らが準備ができたら、古いものは一度に1つずつ(または一度にすべてをやりなおすことができます)好きなときに取ることができます。ローリングアップグレードは、すべてのサービスロードバランシングに含まれています。新しいコンテナは、の準備が完了したときにのみ起動されます。。
OSGiを使用すると、コンテナを実行したままで、その場で突然変異させることができます。第1に、不変のインフラストラクチャ(ドッカー画像など)への移行が進むにつれて、ソフトウェアはより単純で簡単に推論できます。新しいバンドル/ code/configをオン/オフでロールオーバーするのではなく、ただ新しいイメージを作り、それをスピンアップするだけです。
オンザフライで突然変異を起こすと、マルチスレッドコードがオンザフライでサービスを停止して再起動しなければならず、サービス開始/停止の大きな複雑なオブジェクト依存グラフがあるので、あらゆる種類の複雑なバグやリソースリークが発生する可能性があります。急いで。ヒューズチームでは、の再起動でバグを修正するのに多くの人が無駄になりました。ロジックがあり、OSGiサービスを即座に再起動するには数十億のバグが残っていると確信しています。
実際には、Continuous Deployment pipelineを使用してすべての変更を公開することをお勧めします。コードか構成かどうか。あなたが変更を行った時から新しいコード/ configを使ってプロセスが新しいリクエストを処理している間にいくつかのレイテンシが追加されていますが、より多くの品質と信頼性があります。変更のローリングアップグレードも簡単に行うことができます。その変更が、ビッグバンではなく、ユーザーの小さなサブセット/トラフィックのために物事を壊す場合は、速やかなフィードバックを得ることができます。
そう言われています。簡単なロールバックがないビッグバンのアプローチで最初にテストすることなく、プロダクションJVMがコードや設定を即座にリロードすることを依然として本当に望むなら、まだいくつかのオプションがあります。それらはconfiguration microservices documentationに記載されています。
本質的には、ConfigMap in Kubernetesまたはgit repository volumeを使用するようになっています。どちらの場合も、構成はボリューム(ファイル)として公開されます。Javaコードはファイルを監視し、その場でリロードすることができます。これは、OSGi Config AdminまたはSpring Boot経由で行うことができます。どちらの開発フレームワークを選んでも問題ありません。
ちょうどこの質問はかなりprogrammers.stackexchange.comにする必要があります離れ不変インフラと連続配信
からの移動のバグや運用上の問題が増加し、品質低下からホットリロードからの待ち時間での利益のトレードオフを覚えています? – alexbt
バッテリーを搭載したソース:https://spring.io/blog/2015/07/14/microservices-with-springからこの記事をお読みください。 –
@Alex、もしこの質問が春についてあれば、いいえ。この質問がマイクロサービスに関するものであれば、多分。しかし、この質問は春についてです。 – MetaFight