Digital transformation includes replatforming applications to streamline release cycles, improve availability, and manage apps and services at scale. But many enterprises are afraid to take the first step because they don’t know where to start. In this webinar, Rohit will provide a step-by-step guide that covers:
● How to find high-value modernization projects within your application portfolio
● Easy tools and techniques to minimally change applications in preparation for replatforming
● How to choose the platform with the right level of abstraction for your app
● Examples that show how Java EE Websphere applications can be deployed to Pivotal Cloud Foundry
Speaker: Rohit Kelapure, Pivotal Consulting Practice Lead
3. Cover w/ Image
Agenda
1. How to find high-value modernization
projects within your application portfolio
2. How to choose the platform with the
right level of abstraction for your app
3. Tools and techniques to minimally
change applications in preparation for
replatforming
4. Examples that show how Java EE
Websphere applications can be
deployed to Pivotal Cloud Foundry
5. Q+A
5. Your Application Portfolio is a Mix of Things
CONTAINERS
EVENT-DRIVEN
FUNCTIONS
DATA
MICROSERVICES
Batch
MONOLITHIC
APPLICATIONS
ESBJEE
COTS
MAINFRAME
.NET
9. Business Factors
Tech Feasibility
Funnel
PROGRAM DECISION
Scaling
Reverse AI
aka “Think”
1 2
3 4
X
X
X
Journey
Markers
runs runs well optimized
rehost replatform refactor rebuild
1 32
Business
Tech
M
I
E
T
Matrix
Prioritization
Business
lowhighTechnical
low high
4
1
2
3
$$$
$$
$
$
4
VSM
10. Moduliths
Stateful
Persistent file
systems
caches
No work
Spring Boot
Spring Framework
Microservices
Java EE Microprofile
Fat jar packaged
Reactive
Stateless
Self-contained
Java EE Web Profile
war packaged
Java EE Full Profile / J2EE
ear packaged
app server dependencies
Multi non-HTTP comm.
protocol Ingest
Canonical Data Model
Thick Java
Clients
Custom
Packaging
Transactional
Strong consistent
ESB/BPM
Monolith
System of Systems
OS Native
Mainframe extensions
Small Large
How far can we push ?
Amount of rewrite ?
Microliths
Simple Batch
Request-Response
Messaging
Medium XL
Java Workloads > Effort To Migrate to PAS
11. .NET Core
Web API
ASP.NET
MVC
ASP.NET
Webforms .NET Console
App
.NET Windows
Service
Windows
Presentation
Foundation
Windows
Workflow
Foundation
Windows forms
Windows
Communication
Foundation
IncompatibleSmall amount of rewrite Large amount of rewrite
How far can we push?
No rewrite to run on PAS
.NET Workloads > Effort to Rewrite on PAS
13. Application Transformation Strategies
Re-Host
Containerize aka
“lift and shift”
Re-Platform
Minimal efforts to run
natively on PAS
Re-Factor
Convert to Cloud
Native aka
“Modernize”
Re-Build
Decompose and
rewrite from the
ground up
Application Portfolio
Funneling Process
14. Modernization
CLOUD NATIVE
REFACTOR
CLOUD READY
REPLATFORM
CLOUD HOSTED
REHOST
• Microservice Architecture and Principals
• API First Design
• Design for failure
• Apps unaffected by dependent service failure
• Proactive testing for failure
• Metrics and Monitoring baked-in
• Cloud Agnostic runtime implementation
• Adherence with 12-Factor App principles*
• Horizontally scalable
• Leverage platform for HA
Containerize to gain infrastructure,
platform and operational benefits
• No file-system requirements or uses S3 API
• Self contained app
• Platform managed ports and addressing
• Consume off platform services using platform
semantics
* We believe there are more like 15 “factors” that exemplify a true, “Cloud Native” application
0 Factors = Runs on PKS
4 -7 Factor
= Runs on PAS
12-15 factors, Modern
Microservices (App + Data);
Runs well on PAS and/or PFS
15. What workloads should run on this abstraction ?
CaaS(PKS)
● Stateful workloads
● Packaged software
● Short-lived apps /
workloads
● Software distributed
via Helm chart
● Apps using
non-standard port
behavior
● Legacy, zero-factor,
apps
PaaS(PAS)
● Custom-built
software targeting
Win or Linux
● Docker images
● Web applications
● APIs
● Batch jobs
● Streaming
applications
FaaS(PFS)
● Data change
synchronization
● Static sites
● Simple APIs
● Real-time stream
analytics/
enrichment
● Audits of
infrastructure
changes
● Notification
engines
IaaS(vSphere)
● Apps that need
installed drivers,
app/web server
config
● Packaged software
● Virtual appliances
● Apps migrating
from physical
hardware
● VDEs
● Application
platforms
19. App Foundry
Automated suitability assessment
and decisioning framework.
A free tool from Pivotal to help
accelerate good decision making
along the path to PCF.
Upload binary or map
to source control
Parsers for most common
languages (Java, .NET)
Extensible rules (100s
available currently)
UI dashboard to help
triage decisioning
Understand technical
effort to move your app
21. Why is PCF the Best Place to run Spring Apps ?
22. Technique: Spring Bootification > Java Build Pack
1. For new Projects start with Spring Intiializr or Backup existing project
2. Review or Restructure Project Structure > Package as fat jar or war
3. Dependency Management to inject the right spring boot and spring cloud starters and
the spring boot maven and gradle plugins
4. Create Spring Boot application by adding java main method in class annotated with
@SpringBootApplication
5. Remove explicit dependency versions and rely on Spring Boot’s starter modules
6. Externalize Environment, Remove file Loggiing, Expose Actuators
7. Dependencies wired correctly in the cloud using Spring Cloud Connectors
8. Fix Spring application context startup errors - rinse and repeat
9. Get Tests working > Deploy to cloud > $$$
23. Build DockerFile
based on
WAS/WLS
traditional image
Code changes to
enable a legacy
application for
CI/CD
Migration from
JDK 1.6 to JDK 1.8
Externalize
Service, Logging
Externalize
WAS/WLS web
app configuration
Seamlessly
deliver application
updates
Dockerization
Volume Mount
Externalization
Websphere
traditional helm
chart
24. Technique: Java EE Buildpacks
Liberty Buildpack
● Supports Java EE 8 and 7
applications
● Supports different application
types Java EE archives (.war,
.ear)
● Liberty archives that can
include configuration data
along with applications
● Standalone applications (.jar),
etc.
● Runs on IBM SDK and supports
OpenJDK
● Supported by IBM & available
in the services marketplace
JBOSS/Weblogic/Custom
● Runs JBOSS and WebLogic apps
with minimal changes
● Support for autoconfiguration of
resources
● JBoss buildpack kept in cadence
with Java Buildpack
● Weblogic buildpack is a bit old in
the tooth. Use K8s WL Operators
instead to deploy to cloud.
● Create your own custom
buildpack for an opininoated CI
way to build a conatiner image
with no app changes
● Fat jars to wrap your app server in
the app and run it as a java app
TomEE Buildpack
● Stages and runs Java EE
compliant apps
● Supports EAR archives
● Supports autoconfiguration of
Tomcat resources
● Updated in regular cadence with
the Java Buildpack
● Minimal changes to the app
25. Tooling Links
Dockerization
Jib
Cloud Native Buildpacks
Spring Boot Migration Guide
Redhat Application Migration Toolkit
Migration Toolkit for Application Binaries
IBM WebSphere Migration Toolkit
IBM Cloud Transformation Advisor
IntelliJ Dependency Analysis
mvn dependency:tree
Code That Writes Code with Atomist and Snyk
27. Monolithic Application : DayTrader
https://github.com/WASdev/sample.daytrader7
● DayTrader is an end-to-end benchmark and performance real world stock
trading application.
● The application allows users to login, view their portfolio, lookup
stock quotes, and buy or sell stock shares.
● DayTrader can be used to measure and compare the performance of Java
EE servers with Apache JMeter
● The app contains a set of primitives used for functional and
performance testing of Java EE components and common design patterns.
● DayTrader's design spans Java EE 7, including the WebSockets
specification.
● Other Java EE features include JSPs, Servlets, EJBs, JPA, JDBC, JSF,
CDI, Bean Validation, JSON, JMS, MDBs, and transactions.
30. Cover w/ Image
Replatforming enables app
and data movement
Problem: Multinational consumer bank exploring hybrid
architectures to do multichannel banking but most
existing apps are on-premise, data monoliths.
Solution:
Modernized to microservices, and applied an Event
mesh using PCF and Solace as backbone
Solace bridges on-prem instances to temporary
deployments in AWS to offload peak traffic
Benefit:
Enables new apps to access data from legacy & vice
versa, supporting gradual modernization
Reduces annual cost footprint by leveraging public
cloud via hybrid-cloud architecture on demand
Solace : Messaging with Purpose on Pivotal Cloud Foundry
https://bit.ly/2JqUPZZ