Ed Burns brings his seventeen years of server side Java experience to bear on the topic of Enterprise Java on Microsoft Azure. Before the advent of cloud infrastructure, the stack was the main thing. This gave rise to many entertaining platform wars, and even personality feuds among the principals. Spring or J2EE? Spring MVC or JSF (or Struts/Wicket/Tapestry/WebWork...)? Spring REST or JAX-RS? Spring DI or CDI? Spring Boot or MicroProfile? Single-vendor proprietary de-facto standard or multi-vendor community developed standard? Ed has seen these "wars" come and go, and even fought in some of them. While "wars" make for great conference talks, blog posts, and articles, at the end of the day creating business value is the whole point of enterprise Java. Ed contends that nowadays, the cloud vendor is the main thing, and the best cloud vendor is one that best supports "all of the above", from lift and shift of existing workloads, to lift and modernize, on through to turn-key PaaS solutions.
This session will briefly survey the history of enterprise Java to establish the need for an "all of the above" enterprise cloud platform, examine some ways enterprises can use the current offerings from Microsoft Azure, and give a peek into what's in store in the near future.
Scaling API-first – The story of a global engineering organization
Enterprise Java on Azure: From Java EE to Spring, we have you covered
1. Enterprise Java on Azure
From Java EE to Spring and more, we’ve got you
covered
Ed Burns @edburns
Principal Architect Java on Azure Developer Experiences
2019-11
3. Professional Biography
Client
NCSA Mosaic (1994)
SGI Cosmo Web Authoring
Sun Netscape 6 OJI
Server
J2EE JSF (2002)
Oracle Java EE
Servlet, JSF, Bean Validation, etc.
Microsoft Azure Cloud (2019)
Books
4. Brief Personal Journey
❑ You must constantly adapt
❑ Not necessarily frequently change jobs
❑ Companies need to adapt too
5. Starting on the Client: Birth of a Big Thing
Oil and Chemistry Building at University of
Illinois in Urbana-Champaign
Home of NCSA Mosaic
First Graphical Web Browser
Gratis and Free software
Built on prior work really well
Ubiquitous (cross platform)
Delivered something everyone
wanted
Easy to author: copy and paste from
view source!
7. Birth of the Monolith: Spring and J2EE
Addressed shared pain points
Transparent development process
Spring rode the crest of vendor
marketing efforts, differentiated
with operational excellence
J2EE had multi-vendor concept,
strong community governance
Photo: Les Chatfield
10. I’m Ready for the Cloud
My response to cloud disruption
Get out from inside of the monolith
Work with the hosting platform
Monolith
Microservices
Helps enterprises scale
34. 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 Azure
WildFly PaaS
46. 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
47. 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
48. 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
49. • High productivity
• Fully-managed platform
• Highly secure, natively
supports SSL
Azure App Service
50. App Service
Web Apps that Scale with
your Business
• Full capability set available including:
- .NET, Node.js, Java, PHP, and Python
- WebJobs for long running tasks
- Integrated VS publish, remote debug…
- CI with GitHub, BitBucket, VSTS
- Auto-load balance, Autoscale, Geo DR
- Virtual networking and hybrid connections
- Site slots for staged deployments
51. • Web Sockets
- Integrate real-time communication scenarios
- SignalR and Socket.io libraries supported
• Always On
- Keeps your Web App active (warm)
- Standard Mode Web App or higher
- Recommended if you have Web Jobs
• Custom HTTP Handler Mappings
• Virtual Applications & Directories
Additional Application Settings
App Service
52. • Retrieve as Environment Variables
• Retrieve as Key/Value from ConfigurationManager
App Settings and Connection Strings
App Service
// node.js
var value = process.env.APPSETTING_JobServiceUri;
var value2 = process.env.SQLAZURECONNSTR_JobDatabase;
53. • Log File Targets
- File System (Shared Cloud Drive)
- Azure Blob Storage
• Web Server Log
- File System or Azure Blob Storage
• Detailed Error Messages
• Failed Request Tracing
- File System Only
Diagnostics Log Files
App Service
54. • Easy API consumption
- Integration with Swagger API metadata
- Client SDK code generation (C#, Java, and JavaScript)
• Simple Access Control
- Easily secure APIs using Azure AD or Social Logins (Facebook, Twitter, Google, Microsoft Account)
• Workflow Integration with Azure Logic Apps
• First Class Tooling Support
- Visual Studio and Visual Studio Code
- Maven
API Apps
App Service
55. 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
56. 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
57. 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
58. 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
59. 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
60. • 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
61. Monitor your apps
Gain insights with Azure
monitor
Aggregate metrics
Identify reliability issues
62. 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)
• ….