Layer (CF) Micro Services App Kick-off Q3 2016 future Breakdown of monolithic architecture into multiple functional items (Cloud Native Approach) More flexibility in development and deployment of individual components (DevOps) Faster software delivery and quicker reaction to change Better scalability of components with heavy load Example: Today a minimal change of code requires the rebuild of the entire application package, e.g. in a HotFix. The deployment will have an effect on the overall application. With a micro service architecture, only the affected component needs to replaced. The deployment cycle is much quicker. Problems can be identified and solved easier. Functionality can be added faster.
Geos – 3rd Geo currently being built up • Fully Java EE based – running on WAS 8 • Interfacing multiple external components • MQ • SOAP • DB2 4 3/15/2017 Some application details
Foundry Docker Container WAS App Cloud Foundry Liberty Buildpack Liberty App Cloud Foundry Various Buildpacks App‘ App‘ App‘ App‘ „WAS in container“ „Liberty profile“ „Reimplement as Cloud Native“
Foundry Docker Container WAS App Cloud Foundry Liberty Buildpack Liberty App Cloud Foundry Various Buildpacks App‘ App‘ App‘ App‘ „WAS in container“ „Liberty profile“ „Reimplement as Cloud Native“ • Final goal state • Requires rewriting of large pieces of the infrastructure • Too risky to perform direct switch from current architecture • Would imply two parallel development streams
• Minimize change / risk by using database, messaging, transaction mechanisms etc as before • Evaluation of doability „Run application code successfully on Liberty“ • Migrate with least possible impact on application code, focus on configuration rather than modification • Time frame ~2 months 10 3/15/2017 Phase I – WAS to Liberty: Local Operating System WAS App Local Operating System Liberty App
• Start by using persistence & messaging mechanisms etc as before • Evaluate alternative options for persistence & messaging • Add requirements that surfaced during the migration to the product development backlog 17 3/15/2017 Phase II – Liberty to Cloud Foundry: Local Operating System Liberty App Local Operating System Liberty App CF Dev env
messaging • Requires migration of Database to target data center • Requires handling of messaging to non-Cloud environments • Removal of complete SOAP and MQ interface • Enforcement of REST interfaces 18 3/15/2017 Phase III – local to hosted Cloud Foundry: Liberty App Hosted CF Liberty App Local CF
depend on same application server, messaging and persistence mechanisms • New functionality is developed according to Cloud Native guidelines • REST for synchronous, RabbitMQ for asynchronous • Will not require any migration effort in later deployment phases • Serve as role model for future development • Example: “new” Microservice 23 3/15/2017 Phase III – new developments “Starve the monolith”: Local Operating System Liberty App CF local Spring „new“ REST
according to 12- factor-app/Cloud-native guidelines • Combine decomposed services with newly developed ones • Provide the ability for each service to have tailored messaging and persistence 24 3/15/2017 Phase IV – Decomposition CF Spring QRC REST Liberty App CF Liberty App‘ Liberty App‘ Nodejs App‘ Spring QRC Ruby/ Go/ Swift MS‘ New dev Decomposition
decomposing • Liberty migration tools very helpful to get started, but handle with care • Java EE compatibility matrix very important • Keep code modification low - try to handle via config options • Evaluate persistence and messaging constraints on target platform • Check usage distribution for database • Develop new code on target platform with modern design 26 3/15/2017 Lessons learned (so far)