Automated Application ContainerizationJourney to OpenShift with RHAMT
Zohaib Khan Marc ZottnerApp Modernization Lead AMM Program ManagerRed Hat - NAPS Red Hat - [email protected] [email protected]@zeebluejay
2018/05/08
● Containerization: Why and What?
● Automating the approach
● Next steps
AGENDA
Image source: Marc Zottner
WHAT IS CONTAINERIZATION?
Packaging of a configured application and all its dependenciesinto a light, portable, cloud-ready sandbox.
Physical host Virtual host Container
NEW POSSIBILITIES
SINGLE CONCERN HIGH OBSERVABILITY LIFECYCLE CONFORMANCE
IMAGE IMMUTABILITY PROCESS DISPOSABILITY SELF-CONTAINMENT
NEW WAYS TO DELIVER
SELF SERVICE BLUE GREEN DEPLOYMENTS CANARY RELEASES
A/B TESTING END-TO-END AUTOMATION ROLLING UPGRADES
ECONOMICSCh
ange
vel
ocity
Number of hurdles eliminated
Initial effort to see visible change
Inflection point
Accelerated value delivery
1) Not every application fits into a container!
2) Containers are not only for elite-apps.
3) Conducted transformationsmust be driven by business value.
BEST KEPT SECRETS
D f .
Image source: Marc Zottner
REPURCHASE (Drop & Shop)
Decommission end-of-life application.
Keep and don’t touch for now.RETAIN
RETIRE
Low
High
Tran
sfor
mat
ion
Effo
rts
/ Com
plex
ity
REHOST (Lift & Shift)
REFACTOR (Extend / Rewrite)
REPLATFORM (Lift & Reshape)
OPTIONS FOR CONTAINERIZATION
Change the underlying platform (runtime, framework, middleware, operating system).
Redesign code to take advantage of thenew platform (extend, strangle, rewrite).
Package existing application in a containerwith as few changes as possible.
Replace by Commercial off-the-shelf(COTS) or Software-as-as-Service (SaaS).
ExistingApplication
CONTAINERIZATION JOURNEY
1.
Portfolio discovery and inventory
2.
Readinessassessment
3.
Automated Deployments
4.
Importapplications
5.
Transformapplications
6.
Validate, promote,decommission
CONTAINERIZATION JOURNEY
1.
Portfolio discovery and inventory
2.
Readinessassessment
3.
Automated Deployments
4.
Importapplications
5.
Transformapplications
6.
Validate, promote,decommission
1. PORTFOLIO DISCOVERY & INVENTORY
HOW?
Use your favourite spreadsheet editor!
Automated
Manual
WHAT?
Identify and list existing assets (applications, infrastructure) in a central inventory.
Use some tools to automate the discovery process:● Agent(less) / Port & packet scan / SaaS or on-premise● Self written (e.g. with Ansible) vs. commercial offerings (e.g. CloudScape)● Use existing tools (CMDB, SOE, infrastructure as a code, CI/CD, app repository)
Image source: https://flic.kr/p/b1Sjh2
1. PORTFOLIO DISCOVERY & INVENTORY
Create an exhaustive list (spreadsheet) of all applications (plan, governance, estimates)
Relevant for prioritizationPlanning and scopeInternal application classification……..
Owners could be further split between ... technical lead / business owner / test owner / external providerCustom group for similar applicationsEXAMPLE
CONTAINERIZATION JOURNEY
1.
Portfolio discovery and inventory
2.
Readinessassessment
3.
Automated Deployments
4.
Importapplications
5.
Transformapplications
6.
Validate, promote,decommission
● Questionnaire-based frameworks● Automated code analysis tool
(e.g. RHAMT for Java applications)
2. READINESS ASSESSMENT
HOW?
Conduct interviews, workshops, code & document reviews (all levels).
Automated
Manual
WHAT?
1. Group similar applications based on their business & technical characteristics
2. Assess container-readiness
3. Identify the right transformationbased on business value
4. Estimate efforts
2. READINESS ASSESSMENTGROUPING APPLICATIONS
Store Sustain ExecuteConnectView
Embedded frameworks
RESTJerseyUnirest
…
MVCSpring-MVC
StrutsWicketGWT
MarkupHTMLCSSJS
Cachingehcache
infinispan
Object MappingHibernate
Hibernate OGMEclipse Link
Logging log4j
SecurityESAPI
TestJUnit / ...
Inversion of Control Spring / AspectJ
Rules & Processes Drools / JBPM / iLog
IntegrationCamel / Teiid
3rd partyLiferay / Oracle Forms / ...
Web ServiceAxisCXF
XFire
Java EE technologies
Messaging _JMS queue _
JMS topic _JMS con. factory _
HTTPJAX-RSJAX-WS
Bean____Stateless (SLSB) _Stateful (SFSB) _Message (MDB) _Managed Bean _
OtherJCAJNIMailRMI
Persistence _Persistence units _
JPA entities _JPA named queries _
Database _JDBC datasource _
JDBC XA datasource _
RichappletJNLP
Web JSFJSP
Servletweb.xml
WebSocketSecurity
Security realm
ClusteringJPA / Web session / EJB
TransactionsJTA
ProcessingBatch
CDIJSON-P
Processes○ Monitoring, alerting, log & configuration management
Dependencies○ OS & hardware○ Licensing and vendor support (3rd party components)
CONTAINER-READINESS FACTORS
Software architecture○ Monolith vs. Modular○ Coupling (loose vs. tight)○ State management○ Communication protocols○ CPU, IO, storage, connectivity needs○ Compliance, security, availability, resiliency requirements
SCOPING A TRANSFORMATION
● Business criticality, usage, user base● Application lifecycle (age)● Expected business value & efforts
Image source: https://flic.kr/p/bdizD8
2. READINESS ASSESSMENT
2. READINESS ASSESSMENTTOOLING SUPPORT
TOOLING SUPPORT
Red Hat Application Migration Toolkit
Catalyze large scale application modernizations and migrations● Automate code analysis● Support effort estimation● Accelerate code migration● Free & Open Source
IBM WebSphere AS
Oracle WebLogic Server
JBoss EAP upgrades
Cloud readiness,containerization
Pluggable: your own rules
Java EEupgrades
Eclipse plugin
Command line interface
Web console
2. READINESS ASSESSMENTTOOLING SUPPORT
Download the Toolkit on https://developers.redhat.com/products/rhamt/overview/
2. READINESS ASSESSMENTRESULTS & PRIORITIZATION
Cont
aine
rRe
adin
ess
Business value
Done!
In progress
Not started
Out-of-scope!
Level-of-EffortsApp F
App AApp B
App E
App C
App D
Containerization status
Cont
aine
r-re
ady
Cont
aine
r-al
ien
Low High
CONTAINERIZATION JOURNEY
1.
Portfolio discovery and inventory
2.
Readinessassessment
3.
Automated Deployments
4.
Importapplications
5.
Transformapplications
6.
Validate, promote,decommission
3. AUTOMATED DEPLOYMENTS
WHAT?● Design the new platform (MVP, requirements)● Document architecture decisions.● Build the full-ecosystem
HOW?
Adapt push-button infrastructure (reference architecture)● All needed stack to start building solutions on day one● Robust IaaS, PaaS, DevOps toolchain & AppDev services● Fully-automated deployment
https://www.redhat.com/en/explore/my-open-innovation-lab-stack
Automated
CONTAINERIZATION JOURNEY
1.
Portfolio discovery and inventory
2.
Readinessassessment
3.
Automated Deployments
4.
Importapplications
5.
Transformapplication code
6.
Validate, promote,decommission
WHAT?
Bridge existing and new platforms● Import assets of the existing application lifecycle
(source code, configuration, repositories, processes)● Reduce manual migration gaps
HOW?
● Automate import of all applications (no code change)○ Provide a “deploy-to-new-platform” button to devs○ Pre-generate templates and configuration
● Enable users (templates, guides)
4. IMPORT APPLICATIONS Automated
Image source: https://www.flickr.com/photos/sg09/8401320130/
CONTAINERIZATION JOURNEY
1.
Portfolio discovery and inventory
2.
Readinessassessment
3.
Automated Deployments
4.
Importapplications
5.
Transformapplications
6.
Validate, promote,decommission
WHAT?
Update code & configuration to containerize an application according the chosen transformation.
5. TRANSFORM APPLICATIONS Manual
1.Image choice,
initial configuration
3.Get application
running in acontainer
5.Test & Promote
2.Pre-emptive
code changes(e.g. RHAMT)
4.Optional changes
(refactor, strangle)
HOW?
Step-by-step approach with well-defined scope & activities. As few changes as necessary.
Automated
CONTAINERIZATION JOURNEY
1.
Portfolio discovery and inventory
2.
Readinessassessment
3.
Automated Deployments
4.
Importapplications
5.
Transformapplications
6.
Validate, promote,decommission
WHAT?
● Development Workflow from git push to deployment● Approvals, Checks, Sign-offs, Audit trails etc.● Predictable, measurable and repeatable methods
HOW?
● Automated testing● CI/CD pipeline (S2I)● Automated Software Supply Chain● A platform that gives you most of it OOTB
6. VALIDATE, PROMOTE, DECOMMISSION Automated
INTEGRATEDIMAGE
REGISTRY
OPENSHIFTCLUSTER
OPENSHIFT CI/CD PIPELINE (JENKINS)
INTEGRATEDIMAGEREGISTRY
OPENSHIFTCLUSTER
NON-PROD
DEPLOYMENT PIPELINES
PROMOTETO TEST
ARTIFACT REPOSITORYDEVELOPER GIT SERVER
IMAGE BUILD & DEPLOY
DEV TEST
PROMOTETO UAT
UAT
GOLIVE?
PROMOTETO PROD
RELEASE MANAGER
PROD
☒ ☑
CONTAINERIZATION JOURNEY
1.
Portfolio discovery and inventory
2.
Readinessassessment
3.
Automated Deployments
4.
Importapplications
5.
Transformapplications
6.
Validate, promote,decommission
DESIGN
Solve & documenttypical issues
Pilotapplications
DISCOVER SCALE
FACTORY with ITERATIONS
CONTAINERIZATION JOURNEY AT SCALE!
Portfolio discovery and inventory
Readinessassessment
Automateddeployments
Importapplications
Transformapplications
Validate, promote,decommission
Plan rollout
https://developers.redhat.com/resources/#!type=book
FURTHER READINGS
THANK YOUplus.google.com/+RedHat
linkedin.com/company/red-hat
youtube.com/user/RedHatVideos
facebook.com/redhatinc
twitter.com/RedHat
Zohaib Khan Marc ZottnerApp Modernization Lead AMM Program ManagerRed Hat - NAPS Red Hat - [email protected] [email protected]@zeebluejay
CONTAINERIZATION IN PRACTICE
Assessment
Applicationdevelopment
Infrastructureoperations
Plan
Containerizepilot applicationsProof of concepts
Parallel Dev/Ops workstreamsDevs don’t need to wait for
the final infrastructure (OCP CDK)
Automate import(apps & conf)
Design & build new infrastructure
Secure & accelerate populationof the new platform
WHY IS OPENSHIFT THE BEST PLATFORM?THE FOUR Cs
COMPREHENSIVECLOUDCUSTOMERSCODE
Strong partnerships with cloud providers, ISVs,
CCSPs.
We have an extensive container catalog of
certified partner images.
Our comprehensive portfolio of container products and
services includes developer tools, security, application
services, storage, & management.
Red Hat is a leading Kubernetes developer & contributor with Google1.
We make container development easy,
reliable, & more secure.
Most reference customers running in production.
We have years of experience running OpenShift Online &
OpenShift Dedicated services.
Kubernetes commits
Source: [1] Stackalytics, Contribution by Companies. (Release: All, Project type: Kubernetes, Module: kubernetes, Metric: Commits) Retrieved: March 2, 2018.