Changes for page Impact of Runtime Image Upgrades
Last modified by Erik Bakker on 2024/09/03 08:14
From version 8.1
edited by Erik Bakker
on 2023/04/17 14:44
on 2023/04/17 14:44
Change comment:
There is no comment for this version
Summary
-
Page properties (2 modified, 0 added, 0 removed)
Details
- Page properties
-
- Author
-
... ... @@ -1,1 +1,1 @@ 1 -XWiki.e bakker1 +XWiki.eMagiz - Content
-
... ... @@ -6,31 +6,38 @@ 6 6 == 1. Prerequisites == 7 7 8 8 * Advanced knowledge of the eMagiz platform 9 +* Complete the microlearning that explains how to upgrade to a new buildnumber 9 9 10 10 == 2. Key concepts == 11 - 12 -With runtime image we mean the template that is used to create runtime specific docker images. That image is used to spin up docker containers and contains all required software components to let the docker container function properly. One of the key requirements is to load the required libraries that are used by flows of a runtime. A library in this context is a software component that performs a specific, often technical function in the eMagiz runtime. These libraries are Java based and different versions exist of these libraries. 13 13 14 - ==3.Assessing the impact ofruntime images==13 +With buildnumbers we mean the piece of software that used by a flow to make it operational inside the runtime. Several eMagiz libraries are loaded together with the flow components XML into the runtime (Java container). In essence that means that a new buildnumber means the flow is technically speaking different from the previous buildnumber. 15 15 16 - As mentioned the runtime imageisa templatewhich effectively means that all specific dockerimagesthat are createdfromthis template.Thetemplateholds all latest softwareupdates and librariesthat theintegrationflowsrequire.eMagiz follows the strategyto update theserequired librarieson a frequentbasis to ensure vulnerabilitiescan be fixed quicklyandnew functionalityis available ona needed basis. Furthermore,by having a single templateavailableall runtime areoperating onexactly thesamesoftwarebase across all eMagiz clients. This way, a singlemix of librariescanbemade available to the community thatis testedproperlyandcoherent.There canbe no othermix ofsoftware components that behave each differently.15 +eMagiz works hard to limit the number of buildnumbers. The general approach for buildnumber is that these are backwards compatible, so the impact of moving to the next buildnumber poses a minimal impact and risk. 17 17 18 -== =3.1Overaldeploymentstrategy===17 +== 3. Assessing the impact of changing buildnumbers == 19 19 20 - Atthemoment when the prepare releasestep is triggered, the runtime image will be used tocreatepecificruntimeimages that are used to deploy Docker containers. Effectivelythat meansthat for every release, aspecific docker image iscreated and that docker imagewill be used at the momentwhen the deployment plan is run. That also means that at each and every deployment, all docker containers will be replaced with a new docker container based on that docker image created of the release.19 +=== 3.1 Release notes & impact assessment === 21 21 22 -=== 3.2 Release notes & impact assessment === 23 - 24 -Release notes for runtime images can be found [[here>>doc:Main.Release Information.Runtime Images.WebHome||target="blank"]]. Please consult these at a regular basis or at the moment when unexpected behavior is observed. In the strategy of eMagiz, very frequent updates are made to the Runtime Image so that the delta in the software components are incremental. In this way, risk of unwanted side effects is minimalized. The risk is also mitigated by the fact that all flows inside the runtime will adhere to the same version of libraries inside the docker image. All and all this means that the release notes are relevant to better understand an issue. At that moment, the option below is available to deal with this specific scenario. 25 - 26 -=== 3.2 Disaster recovery runtimes === 21 +These can be found [[here>>doc:Main.Release Information.Build numbers.WebHome||target="blank"]]. Once the release notes are properly read, assess the impact. This effectively means that the key notes around the model components can be used. 27 27 28 -In very specific cases, a runtime may not function properly after a specific release is done. That means that the flows in that runtime are not 100% compatible with the runtime image used to create the docker images from. This may happen in cases when there hasn't been a deployment for many months, and the new runtime images will contain large changes. Effectively that means that the Runtime Image as delivered by eMagiz is incompatible with the flows in that runtime. And action is needed on eMagiz side to update the runtime image. This situation is expected to be very expectional. It requires that a ticket is to be opened with the Support department of eMagiz or Partner Support team. 29 - 30 -Whenever this situation occurs, a user can navigate to the Deploy architecture of the model. The details of the specific runtime (right-click option) can be opened and a release can be selected. That release should be the previous release where the runtime was operating normally. Once selected, press Save and choose the Deploy Runtime option (right-click option) on machine level. This will force that specific runtime to load the previous docker image. 31 - 32 -[[image:Main.Images.Microlearning.WebHome@assessing_impact_runtime_images_disaster_recovery.png]] 33 - 23 +You see often a list of libraries that are updated, and when these are the only notes that means that the impact is slim to none. Then make sure to read the notes above around the model components touched. These will help to asses the impact. Some model components have additional capability, and some have a limited capability or a fix. 24 + 25 +**Example** 26 +Flows containing a Jetty server (support object), primarily used to host REST and SOAP web services, require some special attention when deploying because not all combinations of build number 50 (and higher) and 48 (and lower) flows will work correctly: 27 + 28 +* After installing any build 50 (or higher) flow, build 48 (or lower) flows containing a Jetty server on the same runtime cannot be started anymore. If it is really necessary to still install/start a build 48 (or lower) Jetty server flow: uninstall all build 50 (or higher) flows on that runtime first, then install/start the build 48 (or lower) Jetty server flow, and finally re-install the build 50 (or higher) flows. 29 +* When deploying a flow containing a Jetty server, the infra flow of that runtime must have a matching build number, that is: if the the Jetty server flow is build 48 (or lower) the infra needs to be build 48 (or lower) as well, if the Jetty server flow is build 50 (or higher) the infra needs to be 50 (or higher) as well. 30 + 31 +**Impact**: review the runtimes that have flows with a Jetty component and ensure that matching buildnumbers are inside these runtimes for all flows. 32 + 33 +=== 3.2 Upgrade === 34 + 35 +Use the designed options in eMagiz to upgrade the flows to the new buildnumber. See the relevant microlearnings for that. 36 + 37 +=== 3.3 Functional changes === 38 + 39 +Before an environment is updates to the flows with the latest releases, it is adviced to first check which flows have functional changes. These flows need to be tested and put into production first so that you can isolate issues in case they occur. Once these flows are tested and live, only then move the flows with the new buildnumbers from test to production. 40 + 34 34 === 3.4 Approach === 35 35 36 36 It is usually best to update the test and acceptance environment first and leave that running for a certain grace period. So that in case potential issues can be fixed still.