SlideShare une entreprise Scribd logo
1  sur  43
Télécharger pour lire hors ligne
Mario-Leander Reimer, QAware GmbH
mario-leander.reimer@qaware.de
Cloud-native Java EE-volution
Cloud Native Night Munich
München, 06. November 2017
2
Can we evolve existing enterprise applications into the
cloud with reasonable effort?
Containerization
12-Factor App Principles
Microservices
Cloud-native Apps
Monolithic Deployment
Traditional Infrastructure
A <<System / Plattform>>
IO Business Applications (BDR)
A <<Ext. System>>
Saferpay
A <<System>>
SMTP.MUC
A <<System>>
SOFAK
Berechtigter Dritter (PKW),
Berechtigter Dritter (Motorrad)
A <<System>>
P-CODE (BDR)
A <<Subsystem>>
Tuner APP (BDR)
A <<Subsystem>>
VIN Decoder (BDR)
A <<System>>
ITSM SUITE
OSMC User Security Context
A <<System>>
Integrierte Web-Applikation
B2I Security Context
B2I Security Context
A <<System>>
OSMC (BDR)
H <<System>>
Fahrzeug
H <<System>>
Fahrzeuginterface (PTT)
I <<System>>
LAAS
A <<System>>
AOS (BDR)
A <<Subsystem>>
AOS-TS (BDR)
B2I Security Context
A <<System>>
B2I-UA (BDR)
A <<Ext. System>>
BZAFS
A <<System>>
Group Directory
A <<System>>
APRIL (BDR)
A <<System>>
Integr. Client-Appl.
OSS Tech Security Context
(OSS Client Zertifikat)
A <<System>>
externes System
B2I-UB DB
AOS-TS DB
OSMC DB
AOS DB
P-CODE DB
B2I Security Context
I <<Execution Unit>>
OpenShift CNAP
A <<System>>
Billing Service
A <<System>>
Payment Service
A <<System>>
Process Service
A <<Ext. System>>
ASBC
A <<Ext. System>>
SAP (EAI/TBB)
3
Hyperscale, Antifragility and Continuous Delivery are the
driving motivations for the evolution of our systems.
Systemverbund
Berechtigte Dritte (BDR)
Stand R1711
4
Hyperscale, Antifragility and Continuous Delivery are the
driving motivations for the evolution of our systems.
Stateless Mule ESB
No UI, No Database
A <<System>>
APRIL (BDR)
5
Hyperscale, Antifragility and Continuous Delivery are the
driving motivations for the evolution of our systems.
StatefulWebapp
JEE6: JSF, EJB3, JPA
A <<System>>
B2I-UA (BDR)
6
Hyperscale, Antifragility and Continuous Delivery are the
driving motivations for the evolution of our systems.
StatefulWebapp
Spring MVC, JPA
A <<System>>
OSMC (BDR)
Facts. We need to establish a single source of truth for a
reliable forecast of resources, time and effort.
7
Questionnaire
What is the complexity of the application?
Which GF ML version is used?
Which technology stack is used by X?
….
Software Analysis
Static code analysis with Windup
Architecture analysis with S101
Proof of Concepts
Migration of APRIL
Migration of B2I-UA
QAware Know How
Experience from other migrations
Time Sheets
Veteran Team
The essential Design Principles for Cloud Native
Apps act as guidelines for the required changes.
8
Design for Distribution: Containers; microservices; API driven development.
Design for Performance: Responsive; concurrent; resource efficient.
Design for Automation: Automated Dev & Ops tasks.
Design for Resiliency: Fault-tolerant and self-healing.
Design for Elasticity: Scales dynamically and reacts to stimuli.
Design for Delivery: Short roundtrips and automated provisioning.
Design for Diagnosability: Cluster-wide logs, metrics and traces.
9
Favor a gradual transition instead of big bang migration
to reduce and handle technological risks involved.
Loosely coupled microservices.
Scales dynamically based on load.
Level 3: Cloud Native
Fault tolerant and resilient design.
Metrics and monitoring built-in.
Level 2: Cloud Resilient
Adheres to the 12-factor app principles.
Cloud friendly app server runtime.
Level 1: Cloud Friendly
Executed as self-contained image.
Runs on virtualized HW and file system.
Level 0: Cloud Ready
https://www.opendatacenteralliance.org/docs/architecting_cloud_aware_applications.pdf
Delivery
Software Industrialization is a key requirement for
successful DevOps and Continuous Delivery.
11
High degree of automation for laborious and
repetitive tasks is mandatory
Better software quality through a optimized
and streamlined tool chain
More productivity and satisfaction of the
development teams
Better efficiency and competitiveness
Usage of the Agile Tool Chain (ATC)
Migration of all BDR repositories from SVN to Git
with full history within 1 week
Migration of all existing Jenkins build jobs tothe
new build infrastructure
More improvements to come …
The evolution of the associated build tool chain enables
short roundtrips and efficient feature development.
12
Drastically reduced build times for a higher
developer productivity and quality
Use common sense. Only migrate if you suffer
from excessive build times.
https://www.slideshare.net/QAware/von-maven-zu-gradle-in-45-minuten-81244540
Our Continuous Integration & Deployment Pipeline.
13
Distribution
FROM payara/micro:173
# copy the WAR file into deployments directory
COPY target/april-bdr-runtime-1.5.0-SNAPSHOT.war /opt/payara/deployments/
USER root
RUN mkdir -p /april/logs && chown -R payara:payara /april
USER payara
ENTRYPOINT ["java", "-server", "-Dcom.bmw.mastersolutions.gf.domain.dir=/april",
"-Dcom.bmw.iap.april.gf.project.data.shared=/april/data",
"-Dcom.bmw.mastersolutions.gf.project.logs=/april/logs",
"-jar", "/opt/payara/payara-micro.jar"]
CMD ["--deploymentDir", "/opt/payara/deployments", "--noCluster"]
Simple Dockerfile for Payara Micro.
15
version: ‘2’
services:
april-bdr-runtime:
build: .
image: "april-bdr-runtime:1.5.0"
volumes:
- ./src/test/glassfish/data:/april/data
- ./target/glassfish/logs:/april/logs
ports:
- "8080:8080"
A docker-compose.yml for building and running locally.
16
Use volumes to mount
local host directories
into the container
FROM payara/server-full:173
COPY *.asadmin /tmp/
RUN $AS_ADMIN start-domain $PAYARA_DOMAIN && 
$AS_ADMIN $AS_ADMIN_LOGIN multimode --file /tmp/jvm_options.asadmin && 
$AS_ADMIN $AS_ADMIN_LOGIN multimode --file /tmp/payara_optimization.asadmin && 
$AS_ADMIN stop-domain $PAYARA_DOMAIN
COPY target/april-bdr-runtime-1.5.0-SNAPSHOT.war $DEPLOY_DIR
RUN ${PAYARA_PATH}/generate_deploy_commands.sh
# RUN $AS_ADMIN start-domain --dry-run --postbootcommandfile $DEPLOY_COMMANDS $PAYARA_DOMAIN
COPY start-domain.sh $PAYARA_PATH/start-domain.sh
ENTRYPOINT $PAYARA_PATH/start-domain.sh
More sophisticated Dockerfile for Payara Server.
17
Industrialized migration of all deployment artifacts for a
quick, easy and unified containerization.
18
BMW Staging Tool
XML Files
kompose
OpenShift Deployment
YAML Files
Dockerfile +
docker-compose.yml
go2cnap
Local Development Cloud DeploymentTraditional Deployment
Performance
resources:
# CPU is specified in units of cores
# Memory is specified in units of bytes
# required resources for a Pod to be scheduled and started
requests:
memory: "128Mi"
cpu: "1"
# the Pod will be restarted if limits are exceeded
# so be careful not to set them too low!
limits:
memory: "1Gi"
cpu: "2"
Define Resource Constraints carefully.
20
-XX:+UnlockExperimentalVMOptions
-XX:+UseCGroupMemoryLimitForHeap
-server
-Xmx320m -Xss256k -XX:MaxMetaspaceSize=160m -XX:CompressedClassSpaceSize=32m
# Do not use G1GC
-XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:NewRatio=1 -XX:+CMSParallelRemarkEnabled
# Use for small heaps on 64-bit VMs
-XX:+AggressiveOpts
-XX:+UseCompressedOops -XX:+UseCompressedClassPointers -XX:+UseStringDeduplication
# optional
-XX:+UnlockDiagnosticVMOptions -XX:NativeMemoryTracking=summary
Tune your JVM!
21
Since jdk8_131
Extra memory settings
GC tuning.
Fancy tuning.
Diagnostics.
Configuration
apiVersion: v1
kind: ConfigMap
metadata:
name: april-aos-runtime-config
data:
april-aos.properties: |
com.bmw.iap.april.jwt.secret=some-secret
osmc.username=april
osmc.url=https://osmc-int.bmwgroup.net
...
april-feature-togglz.properties: |
WRITE_TEXT5_TO_SOFAK_INVOICES=false
...
log4j2.xml: |
<?xml version="1.0" encoding="UTF-8"?>
<Configuration monitorInterval="60">
<Appenders> ... </Appenders>
<Loggers> ... </Loggers>
</Configuration>
23
Use ConfigMaps, Secrets and Volumes to provide file
based configuration data to your deployments.
spec:
containers:
- name: april-aos-runtime
image: 'april-aos-runtime:1.5.0'
imagePullPolicy: Always
ports:
- containerPort: 8080
volumeMounts:
- mountPath: /april/data
name: april-aos-runtime-config-vol
volumes:
- name: april-aos-runtime-config-vol
configMap:
name: april-aos-runtime-config
Use Apache DeltaSpike for some extra configuration
features as well as other CDI extension magic.
24
DeltaSpike consists of a number of portable CDI extensions that provide useful features for Java
application developers.
Set of ready-to-use modules, including a core module and a number of optional modules for providing
additional enterprise functionality to your applications.
Core module with type-safe project stages and powerful interface based configuration mechanism
Data and JPA module enhanced JPA experience with declarative queries, reducing boilerplate to a
minimum
Security module for intercept and security checking on method calls.
Test-Control module for writing CDI-based tests easily
@Configuration(prefix = "some.", cacheFor = 30, cacheUnit = TimeUnit.SECONDS)
public interface SomeConfiguration {
@ConfigProperty(name = "url")
String url();
@ConfigProperty(name = "timeout", defaultValue = "30000")
long timeout();
}
Diagnosability
# container will receive requests if probe succeeds
readinessProbe:
httpGet:
path: /admin/ping
port: 8080
initialDelaySeconds: 30
timeoutSeconds: 5
# container will be killed if probe fails
livenessProbe:
httpGet:
path: /admin/healthcheck
port: 8080
initialDelaySeconds: 60
timeoutSeconds: 10
Liveness and Readiness Probes for Metrics endpoints.
26
<!--
http://metrics.dropwizard.io/3.1.0/manual/servlets/
-->
<servlet>
<servlet-name>adminServlet</servlet-name>
<servlet-class>
com.codahale.metrics.servlets.AdminServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>adminServlet</servlet-name>
<url-pattern>/admin/*</url-pattern>
</servlet-mapping>
27
Retrofitting metrics, health and admin endpoints using
the Dropwizard Metrics library in 30 minutes.
<dependencies>
<dependency>
<groupId>io.dropwizard.metrics</groupId>
<artifactId>metrics-core</artifactId>
<version>${metrics.version}</version>
</dependency>
</dependencies>
Usage of Dropwizard Metrics to retrofit metrics,
health and admin endpoints
Easy integration with any JEE7 application
Definition of Custom Health Checks
Used as Liveness und Readiness Probes
Resiliency
29
Retrofitting resiliency using Netflix Hystrix is easy.
Use Netflix Hystrix for the resilient (synchronous) call of any external system
Circuit Breaker and Bulk Heading implementation
Easy integration with any JEE7 application
Can be used easily with Jersey Client for REST Calls
Can be integrated easily with JSR 236 Concurrency API via HystrixConcurrencyStrategy
Integrates seemlessly with Dropwizard Metrics
<dependencies>
<dependency>
<groupId>com.netflix.hystrix</groupId>
<artifactId>hystrix-core</artifactId>
<version>${hystrix.version}</version>
</dependency>
</dependencies>
Go Microprofile.
Alternatively, just use the MicroProfile 1.2 APIs.
31
Elasticity
<hazelcast>
<properties><property name="hazelcast.discovery.enabled">true</property></properties>
<network>
<join> <!-- deactivate normal discovery -->
<multicast enabled="false"/>
<tcp-ip enabled="false" />
<!-- activate the Kubernetes plugin -->
<discovery-strategies>
<discovery-strategy enabled="true" class="com.hazelcast.kubernetes.HazelcastKubernetesDiscoveryStrategy">
<properties>
<!-- configure discovery service API lookup -->
<property name="service-name">MY-SERVICE-NAME</property>
<property name="service-label-name">cluster01</property>
<property name="service-label-value">true</property>
<property name="namespace">MY-KUBERNETES-NAMESPACE</property>
</properties>
</discovery-strategy>
</discovery-strategies>
</join>
</network>
</hazelcast>
https://github.com/hazelcast/hazelcast-kubernetes
33
Microservices
35
Cloud-native Application Development:
Components all along the software lifecycle.
DESIGN BUILD RUN
1:1 ?:1
Complexity unit
Data integrity unit
Coherent and cohesive feature unit
Decoupled unit
Planning & Assignment unit
Knowledge unit
Development unit
Integration unit
Release unit
Deployment unit
Runtime unit (crash, slow-down, access)
Scaling unit
36
Dev Components Ops Components?:1
System
Subsystems
Components
Services
Current starting point
DecompositionTrade-Offs
Microservices
Nanoservices
Macroservices
Monolith
+ More flexible to scale
+ Runtime isolation (crash, slow-down, …)
+ Independent releases, deployments, teams
+ Higher utilization possible
− Distribution debt: Latency
− Increasing infrastructure complexity
− Increasing troubleshooting complexity
− Increasing integration complexity
Logical view on the package structure of APRIL.
37
38
„Decomposing the Monolith“
Base Runtime (Mule ESB 3.7)
Monitoring
Finance
Adapter
Logging
Cert
Adapter
Vehicle
Adapter
Commercial
Adapter
Security
APRIL Runtime
Tracing
…
Portal
Adapter
B2I
Adapter
Session
Adapter
Log
Adapter
Score
Adapter
Legacy
Adapter
Togglz
FASTA
Adapter
All the business components with
their REST and SOAP interfaces are
contained in one single humongous
deployment unit.
Cross-cutting components
39
„Decomposing the Monolith“
Base Runtime (Mule ESB 3.7)
Monitoring
B2I
Adapter
Logging
User
Adapter
Portal
Adapter
Integration
Adapter
Security
APRIL AOS Deployment
Tracing
… Base Runtime (Mule ESB 3.7)
Monitoring Logging
Commercial
Adapter
Security
APRIL Commercial
Deployment
Tracing
Base Runtime (Mule ESB 3.7)
Monitoring Logging
Vehicle
Adapter
Security
APRIL Vehicle
Deployment
Tracing
Base Runtime (Mule ESB 3.7)
Monitoring Logging
Finance
Adapter
Security
APRIL Finance
Deployment
Tracing
Base Runtime (Mule ESB 3.7)
Monitoring
Score
Adapter
Logging
FASTA
Adapter
Cert
Adapter
OSS Legacy
Adapter
Security
APRIL Client Deployment
Tracing
…
One deployment unit per
system context
Transform: extract a portion of the existing functionality into
a new and modern system.
Coexist: both systems coexist for some time. Calls agains
the old functionality are diverted.
Eliminate: old functionality will be removed from legacy
system once no more clients are using it.
Ideal for Web- and API-Monoliths.
Slightly problematic for Non-RESTful URL structures.
Stepwise evolution of legacy systems and Cloud-native
reconstruction using the Strangler Pattern.
40https://martinfowler.com/bliki/StranglerApplication.html
High level overview after the reconstruction.
41
Process
MQseries
OTP
APRIL
Payment
OpenShift
Billing
Payment
APRIL
UI
B&P
B2ILAAS EAI/SAP
Saferpay
OSMC
QAware GmbH München
Aschauer Straße 32
81549 München
Tel.: +49 (0) 89 23 23 15 – 0
Fax: +49 (0) 89 23 23 15 – 129 github.com/qaware
linkedin.com/qaware slideshare.net/qaware
twitter.com/qaware xing.com/qaware
youtube.com/qawaregmbh

Contenu connexe

Tendances

Cloud-Native Fundamentals: Accelerating Development with Continuous Integration
Cloud-Native Fundamentals: Accelerating Development with Continuous IntegrationCloud-Native Fundamentals: Accelerating Development with Continuous Integration
Cloud-Native Fundamentals: Accelerating Development with Continuous Integration
VMware Tanzu
 
Leveraging Gradle @ Netflix (Madrid GUG Feb 2, 2021)
Leveraging Gradle @ Netflix (Madrid GUG Feb 2, 2021)Leveraging Gradle @ Netflix (Madrid GUG Feb 2, 2021)
Leveraging Gradle @ Netflix (Madrid GUG Feb 2, 2021)
Roberto Pérez Alcolea
 

Tendances (20)

High-Performance FAAS with Nuclio
High-Performance FAAS with NuclioHigh-Performance FAAS with Nuclio
High-Performance FAAS with Nuclio
 
Cloud-Native Fundamentals: Accelerating Development with Continuous Integration
Cloud-Native Fundamentals: Accelerating Development with Continuous IntegrationCloud-Native Fundamentals: Accelerating Development with Continuous Integration
Cloud-Native Fundamentals: Accelerating Development with Continuous Integration
 
DevOps to DevSecOps Journey..
DevOps to DevSecOps Journey..DevOps to DevSecOps Journey..
DevOps to DevSecOps Journey..
 
CI/CD on Google Cloud Platform
CI/CD on Google Cloud PlatformCI/CD on Google Cloud Platform
CI/CD on Google Cloud Platform
 
Azure DevOps
Azure DevOpsAzure DevOps
Azure DevOps
 
Leveraging Gradle @ Netflix (Madrid GUG Feb 2, 2021)
Leveraging Gradle @ Netflix (Madrid GUG Feb 2, 2021)Leveraging Gradle @ Netflix (Madrid GUG Feb 2, 2021)
Leveraging Gradle @ Netflix (Madrid GUG Feb 2, 2021)
 
Cloud Native Transformation (Alexis Richardson) - Continuous Lifecycle 2018 ...
 Cloud Native Transformation (Alexis Richardson) - Continuous Lifecycle 2018 ... Cloud Native Transformation (Alexis Richardson) - Continuous Lifecycle 2018 ...
Cloud Native Transformation (Alexis Richardson) - Continuous Lifecycle 2018 ...
 
Enable DevSecOps using JIRA Software
Enable DevSecOps using JIRA SoftwareEnable DevSecOps using JIRA Software
Enable DevSecOps using JIRA Software
 
GitOps & the deployment branching models - DevOps D-day Marseille 2021
GitOps & the deployment branching models - DevOps D-day Marseille 2021GitOps & the deployment branching models - DevOps D-day Marseille 2021
GitOps & the deployment branching models - DevOps D-day Marseille 2021
 
Cloud Native with Kyma
Cloud Native with KymaCloud Native with Kyma
Cloud Native with Kyma
 
Spring and Pivotal Application Service - SpringOne Tour - Boston
Spring and Pivotal Application Service - SpringOne Tour - BostonSpring and Pivotal Application Service - SpringOne Tour - Boston
Spring and Pivotal Application Service - SpringOne Tour - Boston
 
Secure Architecture and Programming 101
Secure Architecture and Programming 101Secure Architecture and Programming 101
Secure Architecture and Programming 101
 
Azure DevOps - Version Controlling with Git
Azure DevOps - Version Controlling with GitAzure DevOps - Version Controlling with Git
Azure DevOps - Version Controlling with Git
 
DevOps Spain 2019. David Cañadillas -Cloudbees
DevOps Spain 2019. David Cañadillas -CloudbeesDevOps Spain 2019. David Cañadillas -Cloudbees
DevOps Spain 2019. David Cañadillas -Cloudbees
 
Vulnerability Discovery in the Cloud
Vulnerability Discovery in the CloudVulnerability Discovery in the Cloud
Vulnerability Discovery in the Cloud
 
Cloud Native Engineering with SRE and GitOps
Cloud Native Engineering with SRE and GitOpsCloud Native Engineering with SRE and GitOps
Cloud Native Engineering with SRE and GitOps
 
Fully Orchestrating Applications, Microservices and Enterprise Services with ...
Fully Orchestrating Applications, Microservices and Enterprise Services with ...Fully Orchestrating Applications, Microservices and Enterprise Services with ...
Fully Orchestrating Applications, Microservices and Enterprise Services with ...
 
Pivotal Cloud Foundry 2.5: A First Look
Pivotal Cloud Foundry 2.5: A First LookPivotal Cloud Foundry 2.5: A First Look
Pivotal Cloud Foundry 2.5: A First Look
 
PKS: The What and How of Enterprise-Grade Kubernetes
PKS: The What and How of Enterprise-Grade KubernetesPKS: The What and How of Enterprise-Grade Kubernetes
PKS: The What and How of Enterprise-Grade Kubernetes
 
Workshop Azure DevOps | Docker | Azure Kubernetes Services
Workshop Azure DevOps | Docker | Azure Kubernetes ServicesWorkshop Azure DevOps | Docker | Azure Kubernetes Services
Workshop Azure DevOps | Docker | Azure Kubernetes Services
 

Similaire à Cloud-native Java EE-volution

Surekha_haoop_exp
Surekha_haoop_expSurekha_haoop_exp
Surekha_haoop_exp
surekhakadi
 

Similaire à Cloud-native Java EE-volution (20)

Lessons Learned during IBM SmartCloud Orchestrator Deployment at a Large Tel...
Lessons Learned during IBM SmartCloud Orchestrator Deployment at a Large Tel...Lessons Learned during IBM SmartCloud Orchestrator Deployment at a Large Tel...
Lessons Learned during IBM SmartCloud Orchestrator Deployment at a Large Tel...
 
Journey to cloud engineering
Journey to cloud engineeringJourney to cloud engineering
Journey to cloud engineering
 
Cloud-native .NET Microservices mit Kubernetes
Cloud-native .NET Microservices mit KubernetesCloud-native .NET Microservices mit Kubernetes
Cloud-native .NET Microservices mit Kubernetes
 
DCEU 18: From Legacy Mainframe to the Cloud: The Finnish Railways Evolution w...
DCEU 18: From Legacy Mainframe to the Cloud: The Finnish Railways Evolution w...DCEU 18: From Legacy Mainframe to the Cloud: The Finnish Railways Evolution w...
DCEU 18: From Legacy Mainframe to the Cloud: The Finnish Railways Evolution w...
 
Discussing strategies for building the next gen data centre
Discussing strategies for building the next gen data centreDiscussing strategies for building the next gen data centre
Discussing strategies for building the next gen data centre
 
Cloud-native .NET-Microservices mit Kubernetes @BASTAcon
Cloud-native .NET-Microservices mit Kubernetes @BASTAconCloud-native .NET-Microservices mit Kubernetes @BASTAcon
Cloud-native .NET-Microservices mit Kubernetes @BASTAcon
 
WebSphere Technical University: Top WebSphere Problem Determination Features
WebSphere Technical University: Top WebSphere Problem Determination FeaturesWebSphere Technical University: Top WebSphere Problem Determination Features
WebSphere Technical University: Top WebSphere Problem Determination Features
 
Spring and Pivotal Application Service - SpringOne Tour Dallas
Spring and Pivotal Application Service - SpringOne Tour DallasSpring and Pivotal Application Service - SpringOne Tour Dallas
Spring and Pivotal Application Service - SpringOne Tour Dallas
 
Vinothkumar
VinothkumarVinothkumar
Vinothkumar
 
Spring Cloud Services with Pivotal Cloud Foundry- Gokhan Goksu
Spring Cloud Services with Pivotal Cloud Foundry- Gokhan GoksuSpring Cloud Services with Pivotal Cloud Foundry- Gokhan Goksu
Spring Cloud Services with Pivotal Cloud Foundry- Gokhan Goksu
 
cncf overview and building edge computing using kubernetes
cncf overview and building edge computing using kubernetescncf overview and building edge computing using kubernetes
cncf overview and building edge computing using kubernetes
 
Build & Deploy Scalable Cloud Applications in Record Time
Build & Deploy Scalable Cloud Applications in Record TimeBuild & Deploy Scalable Cloud Applications in Record Time
Build & Deploy Scalable Cloud Applications in Record Time
 
Observability for Modern Applications (CON306-R1) - AWS re:Invent 2018
Observability for Modern Applications (CON306-R1) - AWS re:Invent 2018Observability for Modern Applications (CON306-R1) - AWS re:Invent 2018
Observability for Modern Applications (CON306-R1) - AWS re:Invent 2018
 
A164 enterprise javascript ibm node sdk
A164 enterprise javascript ibm node sdkA164 enterprise javascript ibm node sdk
A164 enterprise javascript ibm node sdk
 
Cloud Architecture - Multi Cloud, Edge, On-Premise
Cloud Architecture - Multi Cloud, Edge, On-PremiseCloud Architecture - Multi Cloud, Edge, On-Premise
Cloud Architecture - Multi Cloud, Edge, On-Premise
 
VMworld 2013: vCloud Powered HPC is Better and Outperforming Physical
VMworld 2013: vCloud Powered HPC is Better and Outperforming PhysicalVMworld 2013: vCloud Powered HPC is Better and Outperforming Physical
VMworld 2013: vCloud Powered HPC is Better and Outperforming Physical
 
Azure Cloud Application Development Workshop - UGIdotNET
Azure Cloud Application Development Workshop - UGIdotNETAzure Cloud Application Development Workshop - UGIdotNET
Azure Cloud Application Development Workshop - UGIdotNET
 
Pivotal CloudFoundry on Google cloud platform
Pivotal CloudFoundry on Google cloud platformPivotal CloudFoundry on Google cloud platform
Pivotal CloudFoundry on Google cloud platform
 
Surekha_haoop_exp
Surekha_haoop_expSurekha_haoop_exp
Surekha_haoop_exp
 
"Wie passen Serverless & Autonomous zusammen?"
"Wie passen Serverless & Autonomous zusammen?""Wie passen Serverless & Autonomous zusammen?"
"Wie passen Serverless & Autonomous zusammen?"
 

Plus de QAware GmbH

"Mixed" Scrum-Teams – Die richtige Mischung macht's!
"Mixed" Scrum-Teams – Die richtige Mischung macht's!"Mixed" Scrum-Teams – Die richtige Mischung macht's!
"Mixed" Scrum-Teams – Die richtige Mischung macht's!
QAware GmbH
 
Migration von stark regulierten Anwendungen in die Cloud: Dem Teufel die See...
 Migration von stark regulierten Anwendungen in die Cloud: Dem Teufel die See... Migration von stark regulierten Anwendungen in die Cloud: Dem Teufel die See...
Migration von stark regulierten Anwendungen in die Cloud: Dem Teufel die See...
QAware GmbH
 

Plus de QAware GmbH (20)

50 Shades of K8s Autoscaling #JavaLand24.pdf
50 Shades of K8s Autoscaling #JavaLand24.pdf50 Shades of K8s Autoscaling #JavaLand24.pdf
50 Shades of K8s Autoscaling #JavaLand24.pdf
 
Make Agile Great - PM-Erfahrungen aus zwei virtuellen internationalen SAFe-Pr...
Make Agile Great - PM-Erfahrungen aus zwei virtuellen internationalen SAFe-Pr...Make Agile Great - PM-Erfahrungen aus zwei virtuellen internationalen SAFe-Pr...
Make Agile Great - PM-Erfahrungen aus zwei virtuellen internationalen SAFe-Pr...
 
Fully-managed Cloud-native Databases: The path to indefinite scale @ CNN Mainz
Fully-managed Cloud-native Databases: The path to indefinite scale @ CNN MainzFully-managed Cloud-native Databases: The path to indefinite scale @ CNN Mainz
Fully-managed Cloud-native Databases: The path to indefinite scale @ CNN Mainz
 
Down the Ivory Tower towards Agile Architecture
Down the Ivory Tower towards Agile ArchitectureDown the Ivory Tower towards Agile Architecture
Down the Ivory Tower towards Agile Architecture
 
"Mixed" Scrum-Teams – Die richtige Mischung macht's!
"Mixed" Scrum-Teams – Die richtige Mischung macht's!"Mixed" Scrum-Teams – Die richtige Mischung macht's!
"Mixed" Scrum-Teams – Die richtige Mischung macht's!
 
Make Developers Fly: Principles for Platform Engineering
Make Developers Fly: Principles for Platform EngineeringMake Developers Fly: Principles for Platform Engineering
Make Developers Fly: Principles for Platform Engineering
 
Der Tod der Testpyramide? – Frontend-Testing mit Playwright
Der Tod der Testpyramide? – Frontend-Testing mit PlaywrightDer Tod der Testpyramide? – Frontend-Testing mit Playwright
Der Tod der Testpyramide? – Frontend-Testing mit Playwright
 
Was kommt nach den SPAs
Was kommt nach den SPAsWas kommt nach den SPAs
Was kommt nach den SPAs
 
Cloud Migration mit KI: der Turbo
Cloud Migration mit KI: der Turbo Cloud Migration mit KI: der Turbo
Cloud Migration mit KI: der Turbo
 
Migration von stark regulierten Anwendungen in die Cloud: Dem Teufel die See...
 Migration von stark regulierten Anwendungen in die Cloud: Dem Teufel die See... Migration von stark regulierten Anwendungen in die Cloud: Dem Teufel die See...
Migration von stark regulierten Anwendungen in die Cloud: Dem Teufel die See...
 
Aus blau wird grün! Ansätze und Technologien für nachhaltige Kubernetes-Cluster
Aus blau wird grün! Ansätze und Technologien für nachhaltige Kubernetes-Cluster Aus blau wird grün! Ansätze und Technologien für nachhaltige Kubernetes-Cluster
Aus blau wird grün! Ansätze und Technologien für nachhaltige Kubernetes-Cluster
 
Endlich gute API Tests. Boldly Testing APIs Where No One Has Tested Before.
Endlich gute API Tests. Boldly Testing APIs Where No One Has Tested Before.Endlich gute API Tests. Boldly Testing APIs Where No One Has Tested Before.
Endlich gute API Tests. Boldly Testing APIs Where No One Has Tested Before.
 
Kubernetes with Cilium in AWS - Experience Report!
Kubernetes with Cilium in AWS - Experience Report!Kubernetes with Cilium in AWS - Experience Report!
Kubernetes with Cilium in AWS - Experience Report!
 
50 Shades of K8s Autoscaling
50 Shades of K8s Autoscaling50 Shades of K8s Autoscaling
50 Shades of K8s Autoscaling
 
Kontinuierliche Sicherheitstests für APIs mit Testkube und OWASP ZAP
Kontinuierliche Sicherheitstests für APIs mit Testkube und OWASP ZAPKontinuierliche Sicherheitstests für APIs mit Testkube und OWASP ZAP
Kontinuierliche Sicherheitstests für APIs mit Testkube und OWASP ZAP
 
Service Mesh Pain & Gain. Experiences from a client project.
Service Mesh Pain & Gain. Experiences from a client project.Service Mesh Pain & Gain. Experiences from a client project.
Service Mesh Pain & Gain. Experiences from a client project.
 
50 Shades of K8s Autoscaling
50 Shades of K8s Autoscaling50 Shades of K8s Autoscaling
50 Shades of K8s Autoscaling
 
Blue turns green! Approaches and technologies for sustainable K8s clusters.
Blue turns green! Approaches and technologies for sustainable K8s clusters.Blue turns green! Approaches and technologies for sustainable K8s clusters.
Blue turns green! Approaches and technologies for sustainable K8s clusters.
 
Per Anhalter zu Cloud Nativen API Gateways
Per Anhalter zu Cloud Nativen API GatewaysPer Anhalter zu Cloud Nativen API Gateways
Per Anhalter zu Cloud Nativen API Gateways
 
Aus blau wird grün! Ansätze und Technologien für nachhaltige Kubernetes-Cluster
Aus blau wird grün! Ansätze und Technologien für nachhaltige Kubernetes-Cluster Aus blau wird grün! Ansätze und Technologien für nachhaltige Kubernetes-Cluster
Aus blau wird grün! Ansätze und Technologien für nachhaltige Kubernetes-Cluster
 

Dernier

Call Girls In Doddaballapur Road ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Doddaballapur Road ☎ 7737669865 🥵 Book Your One night StandCall Girls In Doddaballapur Road ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Doddaballapur Road ☎ 7737669865 🥵 Book Your One night Stand
amitlee9823
 
Call Girls In Attibele ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Attibele ☎ 7737669865 🥵 Book Your One night StandCall Girls In Attibele ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Attibele ☎ 7737669865 🥵 Book Your One night Stand
amitlee9823
 
Call Girls Jalahalli Just Call 👗 7737669865 👗 Top Class Call Girl Service Ban...
Call Girls Jalahalli Just Call 👗 7737669865 👗 Top Class Call Girl Service Ban...Call Girls Jalahalli Just Call 👗 7737669865 👗 Top Class Call Girl Service Ban...
Call Girls Jalahalli Just Call 👗 7737669865 👗 Top Class Call Girl Service Ban...
amitlee9823
 
Vip Mumbai Call Girls Thane West Call On 9920725232 With Body to body massage...
Vip Mumbai Call Girls Thane West Call On 9920725232 With Body to body massage...Vip Mumbai Call Girls Thane West Call On 9920725232 With Body to body massage...
Vip Mumbai Call Girls Thane West Call On 9920725232 With Body to body massage...
amitlee9823
 
CHEAP Call Girls in Saket (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Saket (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Saket (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Saket (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
Call Girls In Hsr Layout ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Hsr Layout ☎ 7737669865 🥵 Book Your One night StandCall Girls In Hsr Layout ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Hsr Layout ☎ 7737669865 🥵 Book Your One night Stand
amitlee9823
 
➥🔝 7737669865 🔝▻ Bangalore Call-girls in Women Seeking Men 🔝Bangalore🔝 Esc...
➥🔝 7737669865 🔝▻ Bangalore Call-girls in Women Seeking Men  🔝Bangalore🔝   Esc...➥🔝 7737669865 🔝▻ Bangalore Call-girls in Women Seeking Men  🔝Bangalore🔝   Esc...
➥🔝 7737669865 🔝▻ Bangalore Call-girls in Women Seeking Men 🔝Bangalore🔝 Esc...
amitlee9823
 
Call Girls Bommasandra Just Call 👗 7737669865 👗 Top Class Call Girl Service B...
Call Girls Bommasandra Just Call 👗 7737669865 👗 Top Class Call Girl Service B...Call Girls Bommasandra Just Call 👗 7737669865 👗 Top Class Call Girl Service B...
Call Girls Bommasandra Just Call 👗 7737669865 👗 Top Class Call Girl Service B...
amitlee9823
 
Call Girls Indiranagar Just Call 👗 7737669865 👗 Top Class Call Girl Service B...
Call Girls Indiranagar Just Call 👗 7737669865 👗 Top Class Call Girl Service B...Call Girls Indiranagar Just Call 👗 7737669865 👗 Top Class Call Girl Service B...
Call Girls Indiranagar Just Call 👗 7737669865 👗 Top Class Call Girl Service B...
amitlee9823
 

Dernier (20)

Call Girls In Doddaballapur Road ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Doddaballapur Road ☎ 7737669865 🥵 Book Your One night StandCall Girls In Doddaballapur Road ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Doddaballapur Road ☎ 7737669865 🥵 Book Your One night Stand
 
Mature dropshipping via API with DroFx.pptx
Mature dropshipping via API with DroFx.pptxMature dropshipping via API with DroFx.pptx
Mature dropshipping via API with DroFx.pptx
 
Accredited-Transport-Cooperatives-Jan-2021-Web.pdf
Accredited-Transport-Cooperatives-Jan-2021-Web.pdfAccredited-Transport-Cooperatives-Jan-2021-Web.pdf
Accredited-Transport-Cooperatives-Jan-2021-Web.pdf
 
Digital Advertising Lecture for Advanced Digital & Social Media Strategy at U...
Digital Advertising Lecture for Advanced Digital & Social Media Strategy at U...Digital Advertising Lecture for Advanced Digital & Social Media Strategy at U...
Digital Advertising Lecture for Advanced Digital & Social Media Strategy at U...
 
Call Girls In Attibele ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Attibele ☎ 7737669865 🥵 Book Your One night StandCall Girls In Attibele ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Attibele ☎ 7737669865 🥵 Book Your One night Stand
 
Call Girls Jalahalli Just Call 👗 7737669865 👗 Top Class Call Girl Service Ban...
Call Girls Jalahalli Just Call 👗 7737669865 👗 Top Class Call Girl Service Ban...Call Girls Jalahalli Just Call 👗 7737669865 👗 Top Class Call Girl Service Ban...
Call Girls Jalahalli Just Call 👗 7737669865 👗 Top Class Call Girl Service Ban...
 
5CL-ADBA,5cladba, Chinese supplier, safety is guaranteed
5CL-ADBA,5cladba, Chinese supplier, safety is guaranteed5CL-ADBA,5cladba, Chinese supplier, safety is guaranteed
5CL-ADBA,5cladba, Chinese supplier, safety is guaranteed
 
VIP Model Call Girls Hinjewadi ( Pune ) Call ON 8005736733 Starting From 5K t...
VIP Model Call Girls Hinjewadi ( Pune ) Call ON 8005736733 Starting From 5K t...VIP Model Call Girls Hinjewadi ( Pune ) Call ON 8005736733 Starting From 5K t...
VIP Model Call Girls Hinjewadi ( Pune ) Call ON 8005736733 Starting From 5K t...
 
Cheap Rate Call girls Sarita Vihar Delhi 9205541914 shot 1500 night
Cheap Rate Call girls Sarita Vihar Delhi 9205541914 shot 1500 nightCheap Rate Call girls Sarita Vihar Delhi 9205541914 shot 1500 night
Cheap Rate Call girls Sarita Vihar Delhi 9205541914 shot 1500 night
 
Call Girls in Sarai Kale Khan Delhi 💯 Call Us 🔝9205541914 🔝( Delhi) Escorts S...
Call Girls in Sarai Kale Khan Delhi 💯 Call Us 🔝9205541914 🔝( Delhi) Escorts S...Call Girls in Sarai Kale Khan Delhi 💯 Call Us 🔝9205541914 🔝( Delhi) Escorts S...
Call Girls in Sarai Kale Khan Delhi 💯 Call Us 🔝9205541914 🔝( Delhi) Escorts S...
 
Thane Call Girls 7091864438 Call Girls in Thane Escort service book now -
Thane Call Girls 7091864438 Call Girls in Thane Escort service book now -Thane Call Girls 7091864438 Call Girls in Thane Escort service book now -
Thane Call Girls 7091864438 Call Girls in Thane Escort service book now -
 
Vip Mumbai Call Girls Thane West Call On 9920725232 With Body to body massage...
Vip Mumbai Call Girls Thane West Call On 9920725232 With Body to body massage...Vip Mumbai Call Girls Thane West Call On 9920725232 With Body to body massage...
Vip Mumbai Call Girls Thane West Call On 9920725232 With Body to body massage...
 
CHEAP Call Girls in Saket (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Saket (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Saket (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Saket (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
Call Girls In Hsr Layout ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Hsr Layout ☎ 7737669865 🥵 Book Your One night StandCall Girls In Hsr Layout ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Hsr Layout ☎ 7737669865 🥵 Book Your One night Stand
 
BigBuy dropshipping via API with DroFx.pptx
BigBuy dropshipping via API with DroFx.pptxBigBuy dropshipping via API with DroFx.pptx
BigBuy dropshipping via API with DroFx.pptx
 
➥🔝 7737669865 🔝▻ Bangalore Call-girls in Women Seeking Men 🔝Bangalore🔝 Esc...
➥🔝 7737669865 🔝▻ Bangalore Call-girls in Women Seeking Men  🔝Bangalore🔝   Esc...➥🔝 7737669865 🔝▻ Bangalore Call-girls in Women Seeking Men  🔝Bangalore🔝   Esc...
➥🔝 7737669865 🔝▻ Bangalore Call-girls in Women Seeking Men 🔝Bangalore🔝 Esc...
 
April 2024 - Crypto Market Report's Analysis
April 2024 - Crypto Market Report's AnalysisApril 2024 - Crypto Market Report's Analysis
April 2024 - Crypto Market Report's Analysis
 
Discover Why Less is More in B2B Research
Discover Why Less is More in B2B ResearchDiscover Why Less is More in B2B Research
Discover Why Less is More in B2B Research
 
Call Girls Bommasandra Just Call 👗 7737669865 👗 Top Class Call Girl Service B...
Call Girls Bommasandra Just Call 👗 7737669865 👗 Top Class Call Girl Service B...Call Girls Bommasandra Just Call 👗 7737669865 👗 Top Class Call Girl Service B...
Call Girls Bommasandra Just Call 👗 7737669865 👗 Top Class Call Girl Service B...
 
Call Girls Indiranagar Just Call 👗 7737669865 👗 Top Class Call Girl Service B...
Call Girls Indiranagar Just Call 👗 7737669865 👗 Top Class Call Girl Service B...Call Girls Indiranagar Just Call 👗 7737669865 👗 Top Class Call Girl Service B...
Call Girls Indiranagar Just Call 👗 7737669865 👗 Top Class Call Girl Service B...
 

Cloud-native Java EE-volution

  • 1. Mario-Leander Reimer, QAware GmbH mario-leander.reimer@qaware.de Cloud-native Java EE-volution Cloud Native Night Munich München, 06. November 2017
  • 2. 2 Can we evolve existing enterprise applications into the cloud with reasonable effort? Containerization 12-Factor App Principles Microservices Cloud-native Apps Monolithic Deployment Traditional Infrastructure
  • 3. A <<System / Plattform>> IO Business Applications (BDR) A <<Ext. System>> Saferpay A <<System>> SMTP.MUC A <<System>> SOFAK Berechtigter Dritter (PKW), Berechtigter Dritter (Motorrad) A <<System>> P-CODE (BDR) A <<Subsystem>> Tuner APP (BDR) A <<Subsystem>> VIN Decoder (BDR) A <<System>> ITSM SUITE OSMC User Security Context A <<System>> Integrierte Web-Applikation B2I Security Context B2I Security Context A <<System>> OSMC (BDR) H <<System>> Fahrzeug H <<System>> Fahrzeuginterface (PTT) I <<System>> LAAS A <<System>> AOS (BDR) A <<Subsystem>> AOS-TS (BDR) B2I Security Context A <<System>> B2I-UA (BDR) A <<Ext. System>> BZAFS A <<System>> Group Directory A <<System>> APRIL (BDR) A <<System>> Integr. Client-Appl. OSS Tech Security Context (OSS Client Zertifikat) A <<System>> externes System B2I-UB DB AOS-TS DB OSMC DB AOS DB P-CODE DB B2I Security Context I <<Execution Unit>> OpenShift CNAP A <<System>> Billing Service A <<System>> Payment Service A <<System>> Process Service A <<Ext. System>> ASBC A <<Ext. System>> SAP (EAI/TBB) 3 Hyperscale, Antifragility and Continuous Delivery are the driving motivations for the evolution of our systems. Systemverbund Berechtigte Dritte (BDR) Stand R1711
  • 4. 4 Hyperscale, Antifragility and Continuous Delivery are the driving motivations for the evolution of our systems. Stateless Mule ESB No UI, No Database A <<System>> APRIL (BDR)
  • 5. 5 Hyperscale, Antifragility and Continuous Delivery are the driving motivations for the evolution of our systems. StatefulWebapp JEE6: JSF, EJB3, JPA A <<System>> B2I-UA (BDR)
  • 6. 6 Hyperscale, Antifragility and Continuous Delivery are the driving motivations for the evolution of our systems. StatefulWebapp Spring MVC, JPA A <<System>> OSMC (BDR)
  • 7. Facts. We need to establish a single source of truth for a reliable forecast of resources, time and effort. 7 Questionnaire What is the complexity of the application? Which GF ML version is used? Which technology stack is used by X? …. Software Analysis Static code analysis with Windup Architecture analysis with S101 Proof of Concepts Migration of APRIL Migration of B2I-UA QAware Know How Experience from other migrations Time Sheets Veteran Team
  • 8. The essential Design Principles for Cloud Native Apps act as guidelines for the required changes. 8 Design for Distribution: Containers; microservices; API driven development. Design for Performance: Responsive; concurrent; resource efficient. Design for Automation: Automated Dev & Ops tasks. Design for Resiliency: Fault-tolerant and self-healing. Design for Elasticity: Scales dynamically and reacts to stimuli. Design for Delivery: Short roundtrips and automated provisioning. Design for Diagnosability: Cluster-wide logs, metrics and traces.
  • 9. 9 Favor a gradual transition instead of big bang migration to reduce and handle technological risks involved. Loosely coupled microservices. Scales dynamically based on load. Level 3: Cloud Native Fault tolerant and resilient design. Metrics and monitoring built-in. Level 2: Cloud Resilient Adheres to the 12-factor app principles. Cloud friendly app server runtime. Level 1: Cloud Friendly Executed as self-contained image. Runs on virtualized HW and file system. Level 0: Cloud Ready https://www.opendatacenteralliance.org/docs/architecting_cloud_aware_applications.pdf
  • 11. Software Industrialization is a key requirement for successful DevOps and Continuous Delivery. 11 High degree of automation for laborious and repetitive tasks is mandatory Better software quality through a optimized and streamlined tool chain More productivity and satisfaction of the development teams Better efficiency and competitiveness
  • 12. Usage of the Agile Tool Chain (ATC) Migration of all BDR repositories from SVN to Git with full history within 1 week Migration of all existing Jenkins build jobs tothe new build infrastructure More improvements to come … The evolution of the associated build tool chain enables short roundtrips and efficient feature development. 12 Drastically reduced build times for a higher developer productivity and quality Use common sense. Only migrate if you suffer from excessive build times. https://www.slideshare.net/QAware/von-maven-zu-gradle-in-45-minuten-81244540
  • 13. Our Continuous Integration & Deployment Pipeline. 13
  • 15. FROM payara/micro:173 # copy the WAR file into deployments directory COPY target/april-bdr-runtime-1.5.0-SNAPSHOT.war /opt/payara/deployments/ USER root RUN mkdir -p /april/logs && chown -R payara:payara /april USER payara ENTRYPOINT ["java", "-server", "-Dcom.bmw.mastersolutions.gf.domain.dir=/april", "-Dcom.bmw.iap.april.gf.project.data.shared=/april/data", "-Dcom.bmw.mastersolutions.gf.project.logs=/april/logs", "-jar", "/opt/payara/payara-micro.jar"] CMD ["--deploymentDir", "/opt/payara/deployments", "--noCluster"] Simple Dockerfile for Payara Micro. 15
  • 16. version: ‘2’ services: april-bdr-runtime: build: . image: "april-bdr-runtime:1.5.0" volumes: - ./src/test/glassfish/data:/april/data - ./target/glassfish/logs:/april/logs ports: - "8080:8080" A docker-compose.yml for building and running locally. 16 Use volumes to mount local host directories into the container
  • 17. FROM payara/server-full:173 COPY *.asadmin /tmp/ RUN $AS_ADMIN start-domain $PAYARA_DOMAIN && $AS_ADMIN $AS_ADMIN_LOGIN multimode --file /tmp/jvm_options.asadmin && $AS_ADMIN $AS_ADMIN_LOGIN multimode --file /tmp/payara_optimization.asadmin && $AS_ADMIN stop-domain $PAYARA_DOMAIN COPY target/april-bdr-runtime-1.5.0-SNAPSHOT.war $DEPLOY_DIR RUN ${PAYARA_PATH}/generate_deploy_commands.sh # RUN $AS_ADMIN start-domain --dry-run --postbootcommandfile $DEPLOY_COMMANDS $PAYARA_DOMAIN COPY start-domain.sh $PAYARA_PATH/start-domain.sh ENTRYPOINT $PAYARA_PATH/start-domain.sh More sophisticated Dockerfile for Payara Server. 17
  • 18. Industrialized migration of all deployment artifacts for a quick, easy and unified containerization. 18 BMW Staging Tool XML Files kompose OpenShift Deployment YAML Files Dockerfile + docker-compose.yml go2cnap Local Development Cloud DeploymentTraditional Deployment
  • 20. resources: # CPU is specified in units of cores # Memory is specified in units of bytes # required resources for a Pod to be scheduled and started requests: memory: "128Mi" cpu: "1" # the Pod will be restarted if limits are exceeded # so be careful not to set them too low! limits: memory: "1Gi" cpu: "2" Define Resource Constraints carefully. 20
  • 21. -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap -server -Xmx320m -Xss256k -XX:MaxMetaspaceSize=160m -XX:CompressedClassSpaceSize=32m # Do not use G1GC -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:NewRatio=1 -XX:+CMSParallelRemarkEnabled # Use for small heaps on 64-bit VMs -XX:+AggressiveOpts -XX:+UseCompressedOops -XX:+UseCompressedClassPointers -XX:+UseStringDeduplication # optional -XX:+UnlockDiagnosticVMOptions -XX:NativeMemoryTracking=summary Tune your JVM! 21 Since jdk8_131 Extra memory settings GC tuning. Fancy tuning. Diagnostics.
  • 23. apiVersion: v1 kind: ConfigMap metadata: name: april-aos-runtime-config data: april-aos.properties: | com.bmw.iap.april.jwt.secret=some-secret osmc.username=april osmc.url=https://osmc-int.bmwgroup.net ... april-feature-togglz.properties: | WRITE_TEXT5_TO_SOFAK_INVOICES=false ... log4j2.xml: | <?xml version="1.0" encoding="UTF-8"?> <Configuration monitorInterval="60"> <Appenders> ... </Appenders> <Loggers> ... </Loggers> </Configuration> 23 Use ConfigMaps, Secrets and Volumes to provide file based configuration data to your deployments. spec: containers: - name: april-aos-runtime image: 'april-aos-runtime:1.5.0' imagePullPolicy: Always ports: - containerPort: 8080 volumeMounts: - mountPath: /april/data name: april-aos-runtime-config-vol volumes: - name: april-aos-runtime-config-vol configMap: name: april-aos-runtime-config
  • 24. Use Apache DeltaSpike for some extra configuration features as well as other CDI extension magic. 24 DeltaSpike consists of a number of portable CDI extensions that provide useful features for Java application developers. Set of ready-to-use modules, including a core module and a number of optional modules for providing additional enterprise functionality to your applications. Core module with type-safe project stages and powerful interface based configuration mechanism Data and JPA module enhanced JPA experience with declarative queries, reducing boilerplate to a minimum Security module for intercept and security checking on method calls. Test-Control module for writing CDI-based tests easily @Configuration(prefix = "some.", cacheFor = 30, cacheUnit = TimeUnit.SECONDS) public interface SomeConfiguration { @ConfigProperty(name = "url") String url(); @ConfigProperty(name = "timeout", defaultValue = "30000") long timeout(); }
  • 26. # container will receive requests if probe succeeds readinessProbe: httpGet: path: /admin/ping port: 8080 initialDelaySeconds: 30 timeoutSeconds: 5 # container will be killed if probe fails livenessProbe: httpGet: path: /admin/healthcheck port: 8080 initialDelaySeconds: 60 timeoutSeconds: 10 Liveness and Readiness Probes for Metrics endpoints. 26
  • 27. <!-- http://metrics.dropwizard.io/3.1.0/manual/servlets/ --> <servlet> <servlet-name>adminServlet</servlet-name> <servlet-class> com.codahale.metrics.servlets.AdminServlet </servlet-class> </servlet> <servlet-mapping> <servlet-name>adminServlet</servlet-name> <url-pattern>/admin/*</url-pattern> </servlet-mapping> 27 Retrofitting metrics, health and admin endpoints using the Dropwizard Metrics library in 30 minutes. <dependencies> <dependency> <groupId>io.dropwizard.metrics</groupId> <artifactId>metrics-core</artifactId> <version>${metrics.version}</version> </dependency> </dependencies> Usage of Dropwizard Metrics to retrofit metrics, health and admin endpoints Easy integration with any JEE7 application Definition of Custom Health Checks Used as Liveness und Readiness Probes
  • 29. 29 Retrofitting resiliency using Netflix Hystrix is easy. Use Netflix Hystrix for the resilient (synchronous) call of any external system Circuit Breaker and Bulk Heading implementation Easy integration with any JEE7 application Can be used easily with Jersey Client for REST Calls Can be integrated easily with JSR 236 Concurrency API via HystrixConcurrencyStrategy Integrates seemlessly with Dropwizard Metrics <dependencies> <dependency> <groupId>com.netflix.hystrix</groupId> <artifactId>hystrix-core</artifactId> <version>${hystrix.version}</version> </dependency> </dependencies>
  • 31. Alternatively, just use the MicroProfile 1.2 APIs. 31
  • 33. <hazelcast> <properties><property name="hazelcast.discovery.enabled">true</property></properties> <network> <join> <!-- deactivate normal discovery --> <multicast enabled="false"/> <tcp-ip enabled="false" /> <!-- activate the Kubernetes plugin --> <discovery-strategies> <discovery-strategy enabled="true" class="com.hazelcast.kubernetes.HazelcastKubernetesDiscoveryStrategy"> <properties> <!-- configure discovery service API lookup --> <property name="service-name">MY-SERVICE-NAME</property> <property name="service-label-name">cluster01</property> <property name="service-label-value">true</property> <property name="namespace">MY-KUBERNETES-NAMESPACE</property> </properties> </discovery-strategy> </discovery-strategies> </join> </network> </hazelcast> https://github.com/hazelcast/hazelcast-kubernetes 33
  • 35. 35 Cloud-native Application Development: Components all along the software lifecycle. DESIGN BUILD RUN 1:1 ?:1 Complexity unit Data integrity unit Coherent and cohesive feature unit Decoupled unit Planning & Assignment unit Knowledge unit Development unit Integration unit Release unit Deployment unit Runtime unit (crash, slow-down, access) Scaling unit
  • 36. 36 Dev Components Ops Components?:1 System Subsystems Components Services Current starting point DecompositionTrade-Offs Microservices Nanoservices Macroservices Monolith + More flexible to scale + Runtime isolation (crash, slow-down, …) + Independent releases, deployments, teams + Higher utilization possible − Distribution debt: Latency − Increasing infrastructure complexity − Increasing troubleshooting complexity − Increasing integration complexity
  • 37. Logical view on the package structure of APRIL. 37
  • 38. 38 „Decomposing the Monolith“ Base Runtime (Mule ESB 3.7) Monitoring Finance Adapter Logging Cert Adapter Vehicle Adapter Commercial Adapter Security APRIL Runtime Tracing … Portal Adapter B2I Adapter Session Adapter Log Adapter Score Adapter Legacy Adapter Togglz FASTA Adapter All the business components with their REST and SOAP interfaces are contained in one single humongous deployment unit. Cross-cutting components
  • 39. 39 „Decomposing the Monolith“ Base Runtime (Mule ESB 3.7) Monitoring B2I Adapter Logging User Adapter Portal Adapter Integration Adapter Security APRIL AOS Deployment Tracing … Base Runtime (Mule ESB 3.7) Monitoring Logging Commercial Adapter Security APRIL Commercial Deployment Tracing Base Runtime (Mule ESB 3.7) Monitoring Logging Vehicle Adapter Security APRIL Vehicle Deployment Tracing Base Runtime (Mule ESB 3.7) Monitoring Logging Finance Adapter Security APRIL Finance Deployment Tracing Base Runtime (Mule ESB 3.7) Monitoring Score Adapter Logging FASTA Adapter Cert Adapter OSS Legacy Adapter Security APRIL Client Deployment Tracing … One deployment unit per system context
  • 40. Transform: extract a portion of the existing functionality into a new and modern system. Coexist: both systems coexist for some time. Calls agains the old functionality are diverted. Eliminate: old functionality will be removed from legacy system once no more clients are using it. Ideal for Web- and API-Monoliths. Slightly problematic for Non-RESTful URL structures. Stepwise evolution of legacy systems and Cloud-native reconstruction using the Strangler Pattern. 40https://martinfowler.com/bliki/StranglerApplication.html
  • 41. High level overview after the reconstruction. 41 Process MQseries OTP APRIL Payment OpenShift Billing Payment APRIL UI B&P B2ILAAS EAI/SAP Saferpay OSMC
  • 42.
  • 43. QAware GmbH München Aschauer Straße 32 81549 München Tel.: +49 (0) 89 23 23 15 – 0 Fax: +49 (0) 89 23 23 15 – 129 github.com/qaware linkedin.com/qaware slideshare.net/qaware twitter.com/qaware xing.com/qaware youtube.com/qawaregmbh