Changes for page Impact of Runtime Image Upgrades
Last modified by Erik Bakker on 2024/09/03 08:14
From version 21.1
edited by Erik Bakker
on 2024/07/09 07:27
on 2024/07/09 07:27
Change comment:
There is no comment for this version
Summary
-
Page properties (3 modified, 0 added, 0 removed)
Details
- Page properties
-
- Title
-
... ... @@ -1,1 +1,1 @@ 1 -Impact of Runtime ImageUpgrades1 +Impact of Runtime image upgrades - Author
-
... ... @@ -1,1 +1,1 @@ 1 -XWiki.e bakker1 +XWiki.eMagiz - Content
-
... ... @@ -1,60 +1,63 @@ 1 1 {{container}}{{container layoutStyle="columns"}}((( 2 -In this microlearning, we will focus on helping you to assess the impact of upgrading to anew image.2 +In this microlearning, we will focus on the helping you to assess the impact of upgrading to new buildnumbers. 3 3 4 - Ifyou have any questions, pleasecontact [[academy@emagiz.com>>mailto:academy@emagiz.com]].4 +Should you have any questions, please get in touch with [[academy@emagiz.com>>mailto:academy@emagiz.com]]. 5 5 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 used to create runtime-specific (docker) images. That image is used to deploy an eMagiz container and contains all required software components to let the eMagiz container function properly. One of the critical requirements is to load the necessary libraries used by runtime flows. A library in this context is a software component that performs a specific, often technical function in the eMagiz runtime. These libraries are based on Java and many open-source frameworks, such as Spring and Artemis. Given that these frameworks also continuously develop, it means that from time to time, we need to upgrade the versions of these underlying frameworks. 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 image is a template (i.e., blueprint), meaning all specific eMagizcontainerimages are createdfromthis template.Thetemplateholds all the latest softwareupdates and librariesthat theintegrationflows require. eMagiz followsthe strategy of updating theserequired librariesfrequently toensurevulnerabilities can be fixed quickly andew functionality is availableon a needed basis.Furthermore, havinga singletemplate available allowsall eMagiz containerstooperate onthesame software base across all eMagiz clients.This way, a single mixoflibraries can bemade availableto thecommunity and testedcorrectly andcoherently. There canbeno othermixofsoftwarecomponentsthatbehave differently(as we hadin our legacy runtimearchitecture).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 - Inessence, any container image consists of multiple layers.The first (foundational) layer comprisesthe operatingsysteminformation (i.e., Linux configurationor Windows configuration) and a Java installation (correct JRE). Building on this in thesecond layer, we see a wide array of open-source code heavenly rooted in the Spring and Java frameworks combined with ourproprietary monitoring stack, allowing ustogather information on your model upon which you can monitor. The third layer consists ofyourcollection of flows that should runon a container (i.e., runtime). This layer is built up by the various flow designer components usedinyour release's flow versions. The fourth layer is the configurationlayer in the form of (application) properties, memory configuration, and other configuration elements (i.e., route,deployment location, volumes, runtime settings). Below, you see a picture that illustrates this concept in an abstract form. IneMagiz, as well as in the image, you see that the layersform one construct that facilitates the purpose of the object. For eMagiz, this purpose is handling data via integrations.17 +== 3. Assessing the impact of changing buildnumbers == 19 19 20 - [[image:Main.Images.Microlearning.WebHome@advanced-lifecycle-management-impact-of-runtime-image-upgrades--runtime-layers.png]]19 +=== 3.1 Release notes & impact assessment === 21 21 22 -Th isapproachallowsusto easily provideupdatesofnotydedicatedeMagizfunctionalitybutalsooftheOS, Java,andopen-sourceframeworksusedthrough a unifiedapproachregardlessof whetheryou deployinurcloud oron-premises.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. 23 23 24 - ===3.1Overal deploymentrategy===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. 25 25 26 -When the prepare release step is triggered, the runtime image will create specific runtime images to deploy eMagiz containers. When we release a new runtime (base) image, eMagiz will trigger the generation of a new container image for each runtime (i.e., container) captured within the first release created **after** we release our new runtime image. For more information on when eMagiz creates a new container image, please check out this [[microlearning>>doc:Main.eMagiz Academy.Microlearnings.Crash Course.Crash Course Platform.crashcourse-platform-deploy-execute-deployment-plan-gen3.WebHome||target="blank"]]. 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 27 28 -=== 3.2 Release notes & impact assessment === 29 - 30 -Release notes for runtime images can be found [[here>>doc:Main.Release Information.Runtime Images.WebHome||target="blank"]]. Please consult these regularly 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 is incremental. In this way, the risk of unwanted side effects is minimalized. The risk is also mitigated by all flows inside the runtime adhering to the same version of libraries inside the docker image. All this means that the release notes are relevant to understand an issue better. 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. 31 31 32 - {{info}}Shouldanissueoccur,wewantto beinformedofthistotakeaction.Ifitturnsouthata rollback isneededtoan earlierimage,you canfacilitatethisviaour"disasterrecovery"mechanismdescribedbelow.{{/info}}31 +**Impact**: review the runtimes that have flows with a Jetty component and ensure that matching buildnumbers are inside these runtimes for all flows. 33 33 34 -=== 3. 3Approach===33 +=== 3.2 Upgrade === 35 35 36 - Westrongly adviseupdating your TestandAcceptance environmentbefore movingto Production. Thiswillavoidpotential problemsappearingin a Productionenvironmentbeforeanyotherenvironment. Wewillinform our customerbasealongthefollowing timelines to betteranticipatewhenanewruntime imagewill bereleased.35 +Use the designed options in eMagiz to upgrade the flows to the new buildnumber. See the relevant microlearnings for that. 37 37 38 -* High impact 39 -** As part of the release notes of **three** releases ahead of us releasing the new runtime image. 40 -** This information is shared with the whole community upfront through this release notes. 41 -* Medium impact 42 -** As part of the release notes of **one** release ahead of us releasing the new runtime image. 43 -** This information is shared with the whole community upfront through this release notes. 44 -* Low impact 45 -** As part of the release notes for the current release, 46 -** This information is shared upfront with key users. 37 +=== 3.3 Functional changes === 47 47 48 - ===3.3Disaster recoveryruntimes===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. 49 49 50 - Inparticular cases, a runtime may not function properly after a specific release is done.That means the flows in that runtime are not 100% compatible with the runtime image used to create the container images.As a result, action is needed at eMagiz to update the runtime image or assist you as a client in resolving the issue within the constraints of the new runtime image. This situation is expected to be very exceptional. We at eMagiz need to be informed if you encounter sucha situation. As part of our regular process and agreements with our partners and clients, we need a registered ticket from our Support department to act upon this.41 +=== 3.4 Approach === 51 51 52 - ==4.Key takeaways==43 +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. 53 53 54 -* A runtime image is the foundational layer of a container image. 55 -* Based on the assessed impact, we communicate sooner or later. 56 -* Read the release notes for runtime images carefully to assess the impact. 45 +== 4. Assignment == 57 57 58 - ==5.SuggestedAdditionalReadings==47 +Take a look at the release notes in the eMagiz Portal to ensure you know where to look. 59 59 60 -If you are interested in this topic and want more information, please read the [[release notes>>doc:Main.Release Information.Runtime Images.WebHome||target="blank"]] provided by eMagiz.)))((({{toc/}}))){{/container}}{{/container}} 49 +== 5. Key takeaways == 50 + 51 +* Keep as close to the latest buildnumber as possible for the entire environment 52 +* The best option is to have the entire environment run on the same buildnumber 53 +* A mix of buildnumbers in a runtime is not a good plan - conflicting behaviors may occur. 54 +* Read the release notes for builnumbers carefully to assess the impact - in case the impact is minimal proceed with the upgrade 55 +* Make the buildnumber upgrades planable so the release schedule takes these actions into account. 56 + 57 +== 6. Suggested Additional Readings == 58 + 59 +If you are interested in this topic and want more information on it, please read the release notes provided by eMagiz 60 + 61 +== 7. Silent demonstration video == 62 + 63 +There is no video available as this is more a theoretical microlearning.)))((({{toc/}}))){{/container}}{{/container}}