ecfの動的なリリース
RIAでコール公開名で呼んでいるecfを、動的にリリースする方法はないでしょうか?
具体的には、以下のようなイメージです。
■全体イメージ
ユーザPC
↓ 起動
Login.ecf
↓ コール公開名(コール先のecfはマスタによって切り替え)
A.ecf or B.ecf or C.ecf
■問題点
例えば、B.ecfの最新版をリリースしたいときに、Login.ecfも停止してリリースする必要があると思います。
サービス(Login.ecfやA.ecfなど)を停止しないでリリースをしてほしいとお客様の要望があるのですが、実現する方法はあるでしょうか?
-
スタジオの環境ではありますが、
Loginを実行中に、B.ecfを変更してみたら、
変更前のプログラムが実行されました。
なので、サービス起動中のecfの更新は難しいかなと思いました。
-
資料の共有、ありがとうございます。
参考にしてみます。
メンテ時間は弊社内でもそこが落としどころかなと結論が出そうなので、お客様に提案するつもりです。
あまりリリースのときの、あれやこれやと考えるのは嫌なので、シンプルに行きたいなというのが本音です、、、
-
ISHIJIMA様ご提示のpdfはまだ見ていませんが・・・・
クライアント実行版でサーバー設置客の場合、夜間バックアップ処理で最新ecfを本物場所へmoveするようにしております。
RIAでしたら、サービス停止
ecf入れ替え
サービス起動 なんですかね。
-
皆さん、ありがとうございます。
やはり、いつも通りにサービス停止、入替、サービス開始という風にしたほうがいいですね。
お客様にメンテ時間を設けてもらえるように打診してみます。
-
ピアツピアのお客様なら、全員止めて!とアナウンスして、サービス停止とかecf入れ替えをする事が多く
サーバーのお客様なら夜間バッチ処理でecf入れ替えなどをするので、
「明日から新機能は使えます!」とアナウンスする事が多いです。
-
確かに夜間バッチだと、業務影響度は低そうですね。ありがとうございます。
やり方はいくつかありそうなことが分かったので調査してみます。
大変勉強になりました
-
uniPaasV1Plusの時の話ですが、1日何回もリリースしていました。何百ユーザもいるのでいちいち止めてられません。
フローティングライセンスを有効にして、コマンドで新しいインスタンスを起動していました。古いインスタンスはRqRtBlockで止めます。ローリングメンテナンスPDFのやり方だとリリースするたびにユーザ数が消費され現実的ではなかったのでフローティングライセンスにしています。
ただ、フローティングライセンスの不具合なのかRqRtBlockしたインスタンスのユーザが0になっても自動で落ちない。複数インスタンス起動して負荷分散したいのにブローカはユーザを均等に割り振らない(一か所に集まりやすい傾向)などありました。
ECF名をマスタに持たせて切替える方法も最初に試しましたが、切り替えたとたん全然関係ないタスクがコールされる怪奇現象が起こったのでやめました。
全部MSJの人には見せたので、xpa4xでは直っているかもしれませんね。
-
コンテキストの継承の問題のような気がしますね。途中でいきなりインスタンスが変わってしまうと、コンテキストが継承できないような気がします。コンテキストの扱いはuniPaaSの頃とはだいぶん変わってきていますね。
-
皆さん、ありがとうございます。
インスタンスを分ける&フローティングライセンスであれば、確かに動的な切り替えはできそうですね。
ちなみに、コール公開名で指定するecfをマスタで切り替えるやり方だと、
コール元のecfには、旧コール先ecfの情報を保持?しているようになると思っています。
何となくの感覚ですが、これをやり続けると、コール元のecfに負荷がかかるかなと思っているのですが、どう思いますか?
(負荷というかキャッシュが多くなるイメージが強いです)
-
今のxpaは、プログラムリポジトリからF7で実行する時でさえ、固有のコンテキストで管理されていますから。
-
ですので、インスタンス間のセッション(コンテキストID)の引っ越しは無理かと想定されますね。uniPaaSの頃と違って。
-
たまたまecfを差し替える瞬間に、誰もプログラムを実行していない状態、つまりコンテキストIDが一つも発行されていないような状態なら可能かもしれませんが、そんなタイミングはラッキーとしか言えない状態だと思います。
-
ちなみに、コンテキストIDによるセッション管理は、今やブローカーモニターで見えるRIAの環境だけでなく、普通のクラサバ環境でも同じ扱いになってきているようです。Magicで作る全てのアプリが、このコンテキストIDで一元管理されるように変化してきているようですね。
-
タスク環境にある「並行実行」という機能も、マニュアルを見るとMagic実行版でしか確認できませんと書いてあるのも、開発版の仮実行環境ですと、複数コンテキストが処理できないからというのがその理由だと思います。
-
ありがとうございます。
やはり入替するには、インスタンス(もしくはサービス)を停止→入替が望ましいわけですね。
皆さんのおかげで色々な情報が集まったので、一度整理・実験して結論を出したいと思います。
サインインしてコメントを残してください。
コメント
15件のコメント