27. Java on Azure for Wherever You Are in your Cloud Journey
Java EE on
Azure IaaS
Azure
Container
Instances
Azure
Kubernetes
Service
Azure
RedHat
OpenShift
Azure Spring-
Cloud Service
Azure
Functions
Azure Stack
39. Responsibilities
User management
Project and quota management
Application lifecycle
Cluster creation
Cluster management
Monitoring and logging
Network configuration
Software and security updates
Platform support
Customer Microsoft and Red Hat
Virtual network
Azure DNS
Azure Load
Balancer (Master)
Azure Load
Balancer (Router)
Public IP Public IP Public IP
Azure Active
Directory
OpenShift API/administration console App 1 App 2
User
App
definition
Azure VMs (Master)
Scale sets
Azure Premium SSD Managed Disks
Node 1 Node 2 Node 3
api-server • controller-manager • etcd
Azure VMs (Infrastructure)
Scale sets
Azure Premium
SSD Managed
Disks
Node 1 Node 2 Node 3
registry • router
Azure VMs (Application)
Scale sets
Azure Premium SSD Managed Disks
Node 1 Node 2 Node N
application pods
Azure Blob
Storage
OpenShift SDN
Node 3 Node 4
Azure Key
Vault
40. Virtual network
Azure DNS
Azure Load
Balancer (Master)
Azure Load
Balancer (Router)
Public IP Public IP Public IP
Azure Active
Directory
OpenShift API/administration console App 1 App 2
User
App
definition
Azure VMs (Master)
Scale sets
Azure Premium SSD Managed Disks
Node 1 Node 2 Node 3
api-server • controller-manager • etcd
Azure VMs (Infrastructure)
Scale sets
Azure Premium
SSD Managed
Disks
Node 1 Node 2 Node 3
registry • router
Azure VMs (Application)
Scale sets
Azure Premium SSD Managed Disks
Node 1 Node 2 Node N
application pods
Azure Blob
Storage
OpenShift SDN
Node 3 Node 4
Azure Key
Vault
Responsibilities
User management
Project and quota management
Application lifecycle
Cluster creation
Cluster management
Monitoring and logging
Network configuration
Software and security updates
Platform support
Customer Microsoft and Red Hat
Microsoft Red Hat
41. Middleware + Data services Service catalog
Azure and OpenShift self-service
OpenShift application lifecycle management
Build automation Deployment automation
Container ContainerContainer Container Container
Container orchestration Cluster services
Networking Storage Registry Telemetry Security
Container runtime and packaging
Red Hat Enterprise Linux
Physical infrastructure on Azure
Setup, maintenance, and
monitoring provided by Red Hat
Premium support from Red Hat
Hosted in the Azure
region of your choice
VPN connectivity back to the
customer environment
Rapidly deploy and scale
containerized apps and services
An entire OpenShift cluster
dedicated to your organization
Youfocus
onapps
MicrosoftandRed
Hatfocuson
infrastructure
42. Spring Boot
BUILD ANYTHING
Spring Cloud
COORDINATE ANYTHING
Spring Boot is designed to get you up and running as quickly as possible, with minimal upfront configuration of Spring
Spring Cloud provides a set of tools that makes communication between microservices easier
Spring based microservices development
43. Spring Cloud Apps
Spring Cloud
ComponentsSpring Cloud Components Cloud ServicesApp Consumers
High effort required to manage cloud
infrastructure for Spring boot applications
Application lifecycle is difficult to manage
Painful to troubleshoot application issues
Common Challenges
44. Azure Spring Cloud
A fully managed service for Spring Boot microservices
Fully managed
Infrastructure
Built-in application
lifecycle
management
Ease of monitoring
More choices and full integration into Azure’s ecosystem and services
Enterprise Ready
45. Spring Cloud - Architecture
Responsibiliti
es
DIY with
Spring
Boot
Azure Spring
Cloud Service
Application
iteration,
debugging
CI/CD
Build and
manage
Clusters
Host Spring
Cloud
Components
Monitoring
and logging
Patching
Scaling
Support
Customer Pivotal Microsoft
46. Simplify your cloud infrastructure for Spring boot applications
Responsibiliti
es
DIY with
Spring
Boot
Azure Spring
Cloud Service
Application
iteration,
debugging
CI/CD
Build and
manage
Clusters
Host Spring
Cloud
Components
Monitoring
and logging
Patching
Scaling
Support
Customer Pivotal Microsoft
Microsoft Pivotal.
Azure Spring Cloud
47. • Simple app lifecycle
management
• Easily deploy source
code or build artifacts
• Automatically wire your
app with Spring Cloud
infrastructure
• Integrated CI/CD
pipeline for deployment
Built-in application lifecycle management
48. Monitor your apps
Gain insights with Azure
monitor
Aggregate metrics
Identify reliability issues
49. Q3 2019 Q4 2019 Q1 2020 Q2 2020
June
Limited Private Preview
• Application lifecycle management
• Config server
• Eureka
• Manual scaling
General Availability
• 99.9x SLA
• Available in more Azure Regions
• Production grade app monitor
and diagnostics (e.g. app runtime
inspection)
• Circuit breaker dashboard
• Auto scale
• E2E dev experience in IntelliJ
…
Other features based on customer
feedback and market trends (e.g.
Enterprise grade security)November
Public Preview
• Full billing
• Customer support
October
Private Preview public announcement
• Additional capabilities in Config
server
• Azure monitor
• Diagnostics
• Distributed tracing
• Build service
• Blue green deployment
• Service binding
• SSL
• UX revamp
• Documentation
• Deployment experience w/ Maven
Roadmap (Calendar Year)
• Log streaming
• Alerts based on monitoring data
• Basic tier
• MSI support for Azure resources
• Custom domain
• Interactive self-diagnostics
• Auto patching systems and app
runtime
• Jenkins integration
• VNET
Future
Candidates
• .NET core/Steeltoe
• mTLS among
customers’
applications
• Support certificate
for outband traffic
(e.g. from app to
Data services)
• ….
Learn,
Volvo
Peter Miklosik,
Purushotham Muktha
Arne Hjelmqvist
Microsoft
Ed Burns
Caroline Atelius
Forms and reports with WLS, running this on Premise
Legacy application
Oracle Linux 7.4
WLS 1212.2.1.0
FMW 12c
Oracle DB
They do have 10g, but they are moving that to 12c before moving to the cloud
Oracle Restful Datasource (ORDS), integrates via JDBC. If you are using JPA, it just works
Forms and reports, report builder. Long term goal is to allow this full system to support dynamic scale up/scale down, with quick responsiveness. The existing WLS Kubernetes Operator does not support the full FMW.
JDK 1.8u72. This needs to be upgraded because it is not docker friendly.
1. They do have 10g, but they are moving that to 12c before moving to the cloud
2. Oracle BI Publisher
3. Shut down the datacenter and move it to the cloud.
Peter suggest do the office stuff local to Gothenburg first, then do the factories.
They are starting to talk about serverless. But not in this area. We can follow up with them about Azure Functions. This would be a complete rewrite.
12
16
Would note here that at the time of writing, Functions 2.0 supports Java SE 8 LTS.
Java SE 11 support should be coming soon.
Would provide a development example or two in order to crystallize implications.
For example, if you bundle Zulu in a Docker image and run it on AKS, you are fully supported via Azul for any version.
Would discuss a bit here how Jenkins works on Azure even though it isn’t managed.
Setup on IaaS using an available template (or do it yourself starting from OS).
Use available Azure Jenkins plugins/Azure Pipelines to deploy artifacts to Azure and integrate with GitHub, etc.
Their existing IDE is basically forms and reports.
They have .NET, so they use Visual Studio.
Mention that we as an industry have finally achieved the dream of software re-use.
This one shows a very simple, but also very commonplace solution with three JBoss EAP inscances running in VMs, fronted by an Azure load balancer, connecting with App Server JDBC connection to an Oracle database, and using the elastic stack for logs.
Infinispan is a distributed in-memory key/value data store with optional schema, available under the Apache License 2.0.
This is a more involved solution
It is a good idea to close this section with a demo.
The demo setup instructions are on GitHub. Please review it. Reach out for help if needed.
Feel free to highlight the parts most important to the customer.
JOEY
In a traditional Red Hat OpenShift Container Platform deployment, you need to deploy and manage a lot of supporting infrastructure.
You end up managing a lot of things yourself, from cluster creation, network configuration, monitoring and logging, to securing, patching and updating the cluster.
This takes time and effort.
Cluster architecture is 3 master nodes including etcd, 3 infra nodes and 4+ application nodes
Red Hat publishes a “sync” container image which runs on the OpenShift cluster to lifecycle cluster components (registry, router, web-console, etc.)
Cluster deployment uses “Azure Managed Apps” under the cover, which allows cluster(s) to be deployed in the end customer’s Azure subscription, without the customer being able to modify the clusters, but allowing RH/MSFT access
JOEY
With Azure Red Hat OpenShift, our aim was to simplify the cluster operations so that you focus on building, deploying and scaling apps with confidence.
Microsoft and Red Hat manage all the cluster infrastructure, apply security best practices, monitor and operate the VMs.
https://azure.microsoft.com/en-us/pricing/details/openshift/
Encryption - By default, there is encryption at rest. The Azure Storage platform automatically encrypts your data before persisting it, and decrypts the data before retrieval.
Are master and infrastructure nodes abstracted away as they are with Azure Kubernetes Service (AKS)?
No. All resources, including the cluster master, run in your customer subscription. These types of resources are put in a read-only resource group.
JOEY
https://access.redhat.com/documentation/en-us/reference_architectures/2018/html-single/deploying_and_managing_openshift_3.9_on_azure/
All of these capabilities are enabled by containerizing your workloads. This is a precondition of using OpenShift.
1) Need to manage lots of infrastructure components
For Spring Cloud microservices architecture, establishing technology to do dynamic scaling of infrastructure, is a mountain to climb
We have to take care of even service discovery. Lots of things we shouldn't be doing, we have to do it.
2) Difficult to manage app lifecycle
"Updating apps has been an issue, mainly because of the monitoring side of stuff."
“It is painful to handle things around application lifecycle, like application security, A/B testing.”
3) Difficult to monitor and troubleshoot
“Troubleshooting microservices is a pain. Which one is up or down. That is why we are using Hystrix and Zipkin
"When we are troubleshooting in production, it is a pain. We do have logs but sometimes we cannot get detailed logs in prod.
Azure:
1) Build and manage high availability environment to host Spring Cloud middleware
- Config, discovery, circuit breaker, tracing, monitoring, app lifecycle
2) Build and manage underlying Kubernetes-based infrastructure to host microservice apps
3) Auto wire up microservice apps with Spring Cloud middleware
Customer:
1) Create Azure Spring Cloud instance
2) Upload Java app – Source| JAR