SlideShare ist ein Scribd-Unternehmen logo
1 von 63
Downloaden Sie, um offline zu lesen
Java App
Servers are
Dead!
Eberhard Wolff
Freelancer
Head Technology Advisory Board adesso
http://ewolff.com
Eberhard Wolff - @ewolff
Code
Eberhard Wolff - @ewolff
2003
App Server =
Java EE or
Servlet
Container
Eberhard Wolff - @ewolff
An Application
on a server
needs an
Application Server!
Eberhard Wolff - @ewolff
Why??
The Price We Pay
What now?
Eberhard Wolff - @ewolff
App Server...
•  …container for multiple applications
•  ... infrastructure
•  …deployment
•  …monitoring
Eberhard Wolff - @ewolff
App Server...
•  …container for multiple applications
•  ... infrastructure
•  …deployment
•  …monitoring
Eberhard Wolff - @ewolff
Multiple Applications
•  Isolation
•  ClassLoader
•  Can lead to non-trivial problems
App Server
App 1 App 2 App 3 App 4
Eberhard Wolff - @ewolff
Isolation
•  ClassLoader is not enough
•  CPU?
•  Memory?
•  Filesystems?
•  Applications are not isolated
•  Even individual parts are not isolated
•  i.e. JMS might eat away resources
from web requests
Eberhard Wolff - @ewolff
Isolation is Impossible
•  Operating systems isolate processes
from each other
•  CPU, memory …
•  Resource allocation: #1 feature for
operating systems
•  Either the JVM becomes an
operating systems
•  …or isolation won’t be perfect
Eberhard Wolff - @ewolff
Multiple Applications
•  Is that really what happens?
•  Java EE spec talks about
“components”
•  not Apps
App Server
App 1 App 2 App 3 App 4
Eberhard Wolff - @ewolff
One Application
App Server
App 1 App 2 App 3 App 4
Eberhard Wolff - @ewolff
One Application
App Server
•  Component e.g. WAR, EJB JAR …
•  Different ClassLoader isolation
needed
•  OSGi like
•  Memory/CPU isolation still missing
Component 1 Component 2App
Eberhard Wolff - @ewolff
What It Is More Like…
App Server
App 1
App Server
App 1
App Server
App 1
App Server
App 1
App Server
App 1
App Server
App 1
Cluster
App Server:
container for
one
application
Eberhard Wolff - @ewolff
App Server...
•  …container for multiple applications
•  ... infrastructure
•  …deployment
•  …monitoring
Eberhard Wolff - @ewolff
App Server...
•  …container for multiple applications
•  ... infrastructure
•  …deployment
•  …monitoring
Eberhard Wolff - @ewolff
Infrastructure
•  Two Phase Commit
•  Net / Threads
•  APIs
Eberhard Wolff - @ewolff
Infrastructure:

Two Phase Commit
•  Idea: Coordinate multiple
transactional resources
•  A talk in its own right
•  2 DBs: Consider a different
architecture
•  DB + JMS: Tx Synchronization
might help
•  http://bit.ly/JMS-2PC
Eberhard Wolff - @ewolff
Infrastructure:

Two Phase Commit
•  Slows down the good case in favor
of the bad case
•  No 100% - 2PC can fail
•  Of limited use in distributed
systems
•  E.g. REST + 2PC?
•  NoSQL + 2PC?
•  Limits scalability
Eberhard Wolff - @ewolff
Infrastructure: Net / Threads
•  Support i.e. for HTTP and thread
pooling
•  Connection pooling
•  Can be done inside the application
•  Embedded servers (Tomcat, Jetty)
Eberhard Wolff - @ewolff
Infrastructure: APIs
•  EJB, CDI, JPA, JSF...
•  Version tied to App Server version
•  App depends on Application Server
•  New APIs can’t be used until new
App Server in production
•  Version conflicts might arise
Eberhard Wolff - @ewolff
Infrastructure: APIs
•  Usually not every need covered
•  …so additional libraries are used
•  App Server APIs can be replaced by
libraries
•  Makes application more portable
Eberhard Wolff - @ewolff
Infrastructure:

Application independent?
•  Each application has its own
infrastructure
•  E.g. database connections
•  + specific configuration
•  Might even add its own libraries to
the AppServer
•  Big no-no if the App Server should
be application independent
Eberhard Wolff - @ewolff
Dependencies

App Server / Application
App Server
Application
Libraries
Infrastructure
Specific
configuration
Cyclic dependency
i.e. one component
Application
Servers

are just

another part of
the Application
Eberhard Wolff - @ewolff
You Don‘t Agree?
•  Can you deploy your application on a
different server?
•  On a different version of the same server?
•  Without modifications to the server?
•  Do you deploy other applications on the
App Server?
•  Could you?
•  Is the application server or an installation
script in your version control?
Eberhard Wolff - @ewolff
Application Server: Just One
Kind of Infrastructure 
•  App Server focus on interactive
(web) applications
•  Other types of application:
•  Batches
•  Integration
•  Map / Reduce
•  App Servers are no universal
infrastructure
Eberhard Wolff - @ewolff
App Server...
•  …container for multiple applications
•  ... infrastructure
•  …deployment
•  …monitoring
Eberhard Wolff - @ewolff
App Server...
•  …container for multiple applications
•  ... infrastructure
•  …deployment
•  …monitoring
Eberhard Wolff - @ewolff
Deployment
•  Deployment Format: WAR, EAR, JAR...
•  No way to define dependencies outside
Application
•  i.e. App Server version, database etc
•  Operations usually work with deb, RPM…
•  Completely different tool chain
•  Also: Usually Unix services to start
applications
Eberhard Wolff - @ewolff
App Server...
•  …container for multiple applications
•  ... infrastructure
•  …deployment
•  …monitoring
Eberhard Wolff - @ewolff
App Server...
•  …container for multiple applications
•  ... infrastructure
•  …deployment
•  …monitoring
Eberhard Wolff - @ewolff
Monitoring
•  Provided by JMX
•  Can be integrated in SMNP etc J
•  New tools arise
•  Logs + Logstash / Kibana or Splunk
•  REST based monitoring resources
•  Scripts for monitoring
App Server are
needed for
monitoring &
deployment
App Server
come with
their own
Ops Tool Set
Eberhard Wolff - @ewolff
App Server...
•  …container for multiple applications
•  ... provide infrastructure
•  …support deployment
•  …support monitoring
1 App per server ..or per cluster
App Server part of the application
Deployment & monitoring OK
but different tools
The Price

We Pay
Eberhard Wolff - @ewolff
Slower Turn Around
•  Code
•  Package a WAR
•  Install it
•  Have it unpacked
•  Test
•  Solutions: JRebel, Spring Loaded
•  But: Why is it done at all??
Why??
Eberhard Wolff - @ewolff
App Server: Complex
Deployment
•  Deployment: not just an application
•  But also an Application Server
•  App Server configuration more
complex than Application
configuration
•  Look at automation scripts with
Puppet / Chef etc
Eberhard Wolff - @ewolff
Cyclic Dependency
Application – App Server
•  Application and App Server must fit
each other
•  Configuration must be compatible
•  For each developer and each testing
stage
•  Old configuration e.g. for bug fixes
•  Hard to get right
Eberhard Wolff - @ewolff
Deployment Is Important
•  Continuous Delivery means a lot
more deployment
•  Must optimize deployment
Commit
Acceptance
Tests
Capacity
Tests
Explorative
Tests
Production
Many times per day
Eberhard Wolff - @ewolff
Continuous Delivery
•  Applications deployed more
frequently
•  …in many different stages
•  Simple deployment even more
important
•  App Servers become bigger headache
Continuous
Delivery increases
demand for
simple
infrastructure.
Eberhard Wolff - @ewolff
Different Ops Mindset
•  App Server administrator?
•  Deployment, monitoring etc. have
been solved already!
•  Package manager
•  Ops Monitoring
•  Why not stick to general solutions?
Eberhard Wolff - @ewolff
DevOps
•  DevOps and Continuous Delivery:
focus on “normal” tools and
approaches
•  Dev will see more than only Java
Apps and App Servers
•  Need different tools
Eberhard Wolff - @ewolff
Micro Services
•  Build software composed of services
•  Service has business meaning
•  i.e. Order, Catalog etc
•  Services (re)deployed
independently
•  …instead of deployment monolith
•  …and communicate e.g. via REST
Eberhard Wolff - @ewolff
Micro Services: eCommerce
Catalog
Order Processing
Customer
Recommendation
Install and
configure App
Server for each
Microservice??
Eberhard Wolff - @ewolff
Micro Services
•  Service might have different non-functional
requirements
•  So different infrastructure might be needed
•  E.g. asynchronous applications
•  Traditional Servlets
•  Batches
•  Map / reduce
•  ….
•  App Server just provide one kind of
infrastructure
Eberhard Wolff - @ewolff
The Price We Pay
App
Server
Slow Turn
Around
Standard
OPs Tools
Continuous
Delivery
Micro
Services
App Server specific
OPs tools
Deployment
complex
One infrastructure
doesn’t fit all
One App Server
per Micro Service?Smaller
deployment units
Eberhard Wolff - @ewolff
RIP Application Server!
What now??
Eberhard Wolff - @ewolff
The Re-Rise of the
Applications
•  Create a JAR files
•  …that contains a main class
•  Custom infrastructure
•  E.g. HTTP server
•  Or Batch
•  …
Eberhard Wolff - @ewolff
Monitoring & Deployment
•  Rely on standard Ops deployment
and monitoring tools
•  REST based monitoring URLs
•  Evaluate log files
Eberhard Wolff - @ewolff
Application: Benefit
•  Easier to Deploy: Just a JAR
•  + command line
•  + config file
•  Debug & run in IDE
•  Acceptance tests etc much easier
•  Ensured: Infrastructure compatible
with application
Spring Boot

Actuator &
CRaSH Demo
Eberhard Wolff - @ewolff
Deploy Demo
•  mvn package
•  Show java –jar with JAR
Eberhard Wolff - @ewolff
Actuator Demo
•  Open
http://localhost:8080/
monitor.html
•  Show metrics / trace
•  Show info and
application.properties
Eberhard Wolff - @ewolff
Demo CRaSH
•  ssh -p 2000 user@localhost
•  Password in log output
•  help
•  Mention jpa / jdbc / problems
•  thread top CTRL-C
•  metrics
•  dashboard
Eberhard Wolff - @ewolff
Technologies
•  Spring Boot
•  see my talk on Wednesday
•  Dropwizard by Yammer
•  Vert.x
•  see Tim Fox’s talk this evening
•  Play Framework
Eberhard Wolff - @ewolff
Thank You!!
eberhard.wolff@gmail.com
@ewolff

Weitere ähnliche Inhalte

Andere mochten auch

Spring4とSpring Bootで作る次世代Springアプリケーション #jjug #jsug
Spring4とSpring Bootで作る次世代Springアプリケーション #jjug #jsugSpring4とSpring Bootで作る次世代Springアプリケーション #jjug #jsug
Spring4とSpring Bootで作る次世代Springアプリケーション #jjug #jsugToshiaki Maki
 
IBM WebSphere application server
IBM WebSphere application serverIBM WebSphere application server
IBM WebSphere application serverIBM Sverige
 
Great Java Application Server Debate
Great Java Application Server DebateGreat Java Application Server Debate
Great Java Application Server DebateHamed Hatami
 
WebSphere App Server vs JBoss vs WebLogic vs Tomcat
WebSphere App Server vs JBoss vs WebLogic vs TomcatWebSphere App Server vs JBoss vs WebLogic vs Tomcat
WebSphere App Server vs JBoss vs WebLogic vs TomcatWASdev Community
 
WebSphere App Server vs JBoss vs WebLogic vs Tomcat (InterConnect 2016)
WebSphere App Server vs JBoss vs WebLogic vs Tomcat (InterConnect 2016)WebSphere App Server vs JBoss vs WebLogic vs Tomcat (InterConnect 2016)
WebSphere App Server vs JBoss vs WebLogic vs Tomcat (InterConnect 2016)Roman Kharkovski
 
Blazing Performance with Flame Graphs
Blazing Performance with Flame GraphsBlazing Performance with Flame Graphs
Blazing Performance with Flame GraphsBrendan Gregg
 
WAS vs JBoss, WebLogic, Tomcat (year 2015)
WAS vs JBoss, WebLogic, Tomcat (year 2015)WAS vs JBoss, WebLogic, Tomcat (year 2015)
WAS vs JBoss, WebLogic, Tomcat (year 2015)Roman Kharkovski
 

Andere mochten auch (7)

Spring4とSpring Bootで作る次世代Springアプリケーション #jjug #jsug
Spring4とSpring Bootで作る次世代Springアプリケーション #jjug #jsugSpring4とSpring Bootで作る次世代Springアプリケーション #jjug #jsug
Spring4とSpring Bootで作る次世代Springアプリケーション #jjug #jsug
 
IBM WebSphere application server
IBM WebSphere application serverIBM WebSphere application server
IBM WebSphere application server
 
Great Java Application Server Debate
Great Java Application Server DebateGreat Java Application Server Debate
Great Java Application Server Debate
 
WebSphere App Server vs JBoss vs WebLogic vs Tomcat
WebSphere App Server vs JBoss vs WebLogic vs TomcatWebSphere App Server vs JBoss vs WebLogic vs Tomcat
WebSphere App Server vs JBoss vs WebLogic vs Tomcat
 
WebSphere App Server vs JBoss vs WebLogic vs Tomcat (InterConnect 2016)
WebSphere App Server vs JBoss vs WebLogic vs Tomcat (InterConnect 2016)WebSphere App Server vs JBoss vs WebLogic vs Tomcat (InterConnect 2016)
WebSphere App Server vs JBoss vs WebLogic vs Tomcat (InterConnect 2016)
 
Blazing Performance with Flame Graphs
Blazing Performance with Flame GraphsBlazing Performance with Flame Graphs
Blazing Performance with Flame Graphs
 
WAS vs JBoss, WebLogic, Tomcat (year 2015)
WAS vs JBoss, WebLogic, Tomcat (year 2015)WAS vs JBoss, WebLogic, Tomcat (year 2015)
WAS vs JBoss, WebLogic, Tomcat (year 2015)
 

Ähnlich wie Java App Servers are Dead! Why Microservices and Spring Boot are the Future

Java Application Servers Are Dead! - Short Version
Java Application Servers Are Dead! - Short VersionJava Application Servers Are Dead! - Short Version
Java Application Servers Are Dead! - Short VersionEberhard Wolff
 
Micro Service – The New Architecture Paradigm
Micro Service – The New Architecture ParadigmMicro Service – The New Architecture Paradigm
Micro Service – The New Architecture ParadigmEberhard Wolff
 
Micro Services - Small is Beautiful
Micro Services - Small is BeautifulMicro Services - Small is Beautiful
Micro Services - Small is BeautifulEberhard Wolff
 
Microservice With Spring Boot and Spring Cloud
Microservice With Spring Boot and Spring CloudMicroservice With Spring Boot and Spring Cloud
Microservice With Spring Boot and Spring CloudEberhard Wolff
 
Micro Services - Smaller is Better?
Micro Services - Smaller is Better?Micro Services - Smaller is Better?
Micro Services - Smaller is Better?Eberhard Wolff
 
Software Architecture for DevOps and Continuous Delivery
Software Architecture for DevOps and Continuous DeliverySoftware Architecture for DevOps and Continuous Delivery
Software Architecture for DevOps and Continuous DeliveryEberhard Wolff
 
Continuous Delivery and Micro Services - A Symbiosis
Continuous Delivery and Micro Services - A SymbiosisContinuous Delivery and Micro Services - A Symbiosis
Continuous Delivery and Micro Services - A SymbiosisEberhard Wolff
 
Java Architectures - a New Hope
Java Architectures - a New HopeJava Architectures - a New Hope
Java Architectures - a New HopeEberhard Wolff
 
Microservice - All is Small, All is Well?
Microservice - All is Small, All is Well?Microservice - All is Small, All is Well?
Microservice - All is Small, All is Well?Eberhard Wolff
 
Micro Services - Neither Micro Nor Service
Micro Services - Neither Micro Nor ServiceMicro Services - Neither Micro Nor Service
Micro Services - Neither Micro Nor ServiceEberhard Wolff
 
Spring Boot
Spring BootSpring Boot
Spring Bootgedoplan
 
Continuous Delivery & DevOps in the Enterprise
Continuous Delivery & DevOps in the EnterpriseContinuous Delivery & DevOps in the Enterprise
Continuous Delivery & DevOps in the EnterpriseEberhard Wolff
 
High Availability and Scalability: Too Expensive! Architectures for Future E...
High Availability and Scalability: Too Expensive! Architectures for Future E...High Availability and Scalability: Too Expensive! Architectures for Future E...
High Availability and Scalability: Too Expensive! Architectures for Future E...Eberhard Wolff
 
AppSec DC 2019 ASVS 4.0 Final.pptx
AppSec DC 2019 ASVS 4.0 Final.pptxAppSec DC 2019 ASVS 4.0 Final.pptx
AppSec DC 2019 ASVS 4.0 Final.pptxJosh Grossman
 
AppSec DC 2019 ASVS 4.0 Final.pptx
AppSec DC 2019 ASVS 4.0 Final.pptxAppSec DC 2019 ASVS 4.0 Final.pptx
AppSec DC 2019 ASVS 4.0 Final.pptxTuynNguyn819213
 
NoSQL Riak MongoDB Elasticsearch - All The Same?
NoSQL Riak MongoDB Elasticsearch - All The Same?NoSQL Riak MongoDB Elasticsearch - All The Same?
NoSQL Riak MongoDB Elasticsearch - All The Same?Eberhard Wolff
 
Apex world 2018 continuously delivering APEX
Apex world 2018 continuously delivering APEXApex world 2018 continuously delivering APEX
Apex world 2018 continuously delivering APEXSergei Martens
 

Ähnlich wie Java App Servers are Dead! Why Microservices and Spring Boot are the Future (20)

Java Application Servers Are Dead! - Short Version
Java Application Servers Are Dead! - Short VersionJava Application Servers Are Dead! - Short Version
Java Application Servers Are Dead! - Short Version
 
Micro Service – The New Architecture Paradigm
Micro Service – The New Architecture ParadigmMicro Service – The New Architecture Paradigm
Micro Service – The New Architecture Paradigm
 
Micro Services - Small is Beautiful
Micro Services - Small is BeautifulMicro Services - Small is Beautiful
Micro Services - Small is Beautiful
 
Microservice With Spring Boot and Spring Cloud
Microservice With Spring Boot and Spring CloudMicroservice With Spring Boot and Spring Cloud
Microservice With Spring Boot and Spring Cloud
 
Micro Services - Smaller is Better?
Micro Services - Smaller is Better?Micro Services - Smaller is Better?
Micro Services - Smaller is Better?
 
Software Architecture for DevOps and Continuous Delivery
Software Architecture for DevOps and Continuous DeliverySoftware Architecture for DevOps and Continuous Delivery
Software Architecture for DevOps and Continuous Delivery
 
Continuous Delivery and Micro Services - A Symbiosis
Continuous Delivery and Micro Services - A SymbiosisContinuous Delivery and Micro Services - A Symbiosis
Continuous Delivery and Micro Services - A Symbiosis
 
Java Architectures - a New Hope
Java Architectures - a New HopeJava Architectures - a New Hope
Java Architectures - a New Hope
 
Microservice - All is Small, All is Well?
Microservice - All is Small, All is Well?Microservice - All is Small, All is Well?
Microservice - All is Small, All is Well?
 
Micro Services - Neither Micro Nor Service
Micro Services - Neither Micro Nor ServiceMicro Services - Neither Micro Nor Service
Micro Services - Neither Micro Nor Service
 
Spring Boot
Spring BootSpring Boot
Spring Boot
 
Legacy Sins
Legacy SinsLegacy Sins
Legacy Sins
 
Spring Boot
Spring BootSpring Boot
Spring Boot
 
Continuous Delivery & DevOps in the Enterprise
Continuous Delivery & DevOps in the EnterpriseContinuous Delivery & DevOps in the Enterprise
Continuous Delivery & DevOps in the Enterprise
 
High Availability and Scalability: Too Expensive! Architectures for Future E...
High Availability and Scalability: Too Expensive! Architectures for Future E...High Availability and Scalability: Too Expensive! Architectures for Future E...
High Availability and Scalability: Too Expensive! Architectures for Future E...
 
AppSec DC 2019 ASVS 4.0 Final.pptx
AppSec DC 2019 ASVS 4.0 Final.pptxAppSec DC 2019 ASVS 4.0 Final.pptx
AppSec DC 2019 ASVS 4.0 Final.pptx
 
AppSec DC 2019 ASVS 4.0 Final.pptx
AppSec DC 2019 ASVS 4.0 Final.pptxAppSec DC 2019 ASVS 4.0 Final.pptx
AppSec DC 2019 ASVS 4.0 Final.pptx
 
Vagrant to-aws-flow
Vagrant to-aws-flowVagrant to-aws-flow
Vagrant to-aws-flow
 
NoSQL Riak MongoDB Elasticsearch - All The Same?
NoSQL Riak MongoDB Elasticsearch - All The Same?NoSQL Riak MongoDB Elasticsearch - All The Same?
NoSQL Riak MongoDB Elasticsearch - All The Same?
 
Apex world 2018 continuously delivering APEX
Apex world 2018 continuously delivering APEXApex world 2018 continuously delivering APEX
Apex world 2018 continuously delivering APEX
 

Mehr von Eberhard Wolff

Architectures and Alternatives
Architectures and AlternativesArchitectures and Alternatives
Architectures and AlternativesEberhard Wolff
 
The Frontiers of Continuous Delivery
The Frontiers of Continuous DeliveryThe Frontiers of Continuous Delivery
The Frontiers of Continuous DeliveryEberhard Wolff
 
Four Times Microservices - REST, Kubernetes, UI Integration, Async
Four Times Microservices - REST, Kubernetes, UI Integration, AsyncFour Times Microservices - REST, Kubernetes, UI Integration, Async
Four Times Microservices - REST, Kubernetes, UI Integration, AsyncEberhard Wolff
 
Microservices - not just with Java
Microservices - not just with JavaMicroservices - not just with Java
Microservices - not just with JavaEberhard Wolff
 
Deployment - Done Right!
Deployment - Done Right!Deployment - Done Right!
Deployment - Done Right!Eberhard Wolff
 
Data Architecture not Just for Microservices
Data Architecture not Just for MicroservicesData Architecture not Just for Microservices
Data Architecture not Just for MicroservicesEberhard Wolff
 
How to Split Your System into Microservices
How to Split Your System into MicroservicesHow to Split Your System into Microservices
How to Split Your System into MicroservicesEberhard Wolff
 
Microservices and Self-contained System to Scale Agile
Microservices and Self-contained System to Scale AgileMicroservices and Self-contained System to Scale Agile
Microservices and Self-contained System to Scale AgileEberhard Wolff
 
How Small Can Java Microservices Be?
How Small Can Java Microservices Be?How Small Can Java Microservices Be?
How Small Can Java Microservices Be?Eberhard Wolff
 
Data Architecturen Not Just for Microservices
Data Architecturen Not Just for MicroservicesData Architecturen Not Just for Microservices
Data Architecturen Not Just for MicroservicesEberhard Wolff
 
Microservices: Redundancy=Maintainability
Microservices: Redundancy=MaintainabilityMicroservices: Redundancy=Maintainability
Microservices: Redundancy=MaintainabilityEberhard Wolff
 
Self-contained Systems: A Different Approach to Microservices
Self-contained Systems: A Different Approach to MicroservicesSelf-contained Systems: A Different Approach to Microservices
Self-contained Systems: A Different Approach to MicroservicesEberhard Wolff
 
Microservices Technology Stack
Microservices Technology StackMicroservices Technology Stack
Microservices Technology StackEberhard Wolff
 
Software Architecture for Innovation
Software Architecture for InnovationSoftware Architecture for Innovation
Software Architecture for InnovationEberhard Wolff
 
Five (easy?) Steps Towards Continuous Delivery
Five (easy?) Steps Towards Continuous DeliveryFive (easy?) Steps Towards Continuous Delivery
Five (easy?) Steps Towards Continuous DeliveryEberhard Wolff
 
Nanoservices and Microservices with Java
Nanoservices and Microservices with JavaNanoservices and Microservices with Java
Nanoservices and Microservices with JavaEberhard Wolff
 
Microservices: Architecture to Support Agile
Microservices: Architecture to Support AgileMicroservices: Architecture to Support Agile
Microservices: Architecture to Support AgileEberhard Wolff
 
Microservices: Architecture to scale Agile
Microservices: Architecture to scale AgileMicroservices: Architecture to scale Agile
Microservices: Architecture to scale AgileEberhard Wolff
 
Microservices, DevOps, Continuous Delivery – More Than Three Buzzwords
Microservices, DevOps, Continuous Delivery – More Than Three BuzzwordsMicroservices, DevOps, Continuous Delivery – More Than Three Buzzwords
Microservices, DevOps, Continuous Delivery – More Than Three BuzzwordsEberhard Wolff
 

Mehr von Eberhard Wolff (20)

Architectures and Alternatives
Architectures and AlternativesArchitectures and Alternatives
Architectures and Alternatives
 
Beyond Microservices
Beyond MicroservicesBeyond Microservices
Beyond Microservices
 
The Frontiers of Continuous Delivery
The Frontiers of Continuous DeliveryThe Frontiers of Continuous Delivery
The Frontiers of Continuous Delivery
 
Four Times Microservices - REST, Kubernetes, UI Integration, Async
Four Times Microservices - REST, Kubernetes, UI Integration, AsyncFour Times Microservices - REST, Kubernetes, UI Integration, Async
Four Times Microservices - REST, Kubernetes, UI Integration, Async
 
Microservices - not just with Java
Microservices - not just with JavaMicroservices - not just with Java
Microservices - not just with Java
 
Deployment - Done Right!
Deployment - Done Right!Deployment - Done Right!
Deployment - Done Right!
 
Data Architecture not Just for Microservices
Data Architecture not Just for MicroservicesData Architecture not Just for Microservices
Data Architecture not Just for Microservices
 
How to Split Your System into Microservices
How to Split Your System into MicroservicesHow to Split Your System into Microservices
How to Split Your System into Microservices
 
Microservices and Self-contained System to Scale Agile
Microservices and Self-contained System to Scale AgileMicroservices and Self-contained System to Scale Agile
Microservices and Self-contained System to Scale Agile
 
How Small Can Java Microservices Be?
How Small Can Java Microservices Be?How Small Can Java Microservices Be?
How Small Can Java Microservices Be?
 
Data Architecturen Not Just for Microservices
Data Architecturen Not Just for MicroservicesData Architecturen Not Just for Microservices
Data Architecturen Not Just for Microservices
 
Microservices: Redundancy=Maintainability
Microservices: Redundancy=MaintainabilityMicroservices: Redundancy=Maintainability
Microservices: Redundancy=Maintainability
 
Self-contained Systems: A Different Approach to Microservices
Self-contained Systems: A Different Approach to MicroservicesSelf-contained Systems: A Different Approach to Microservices
Self-contained Systems: A Different Approach to Microservices
 
Microservices Technology Stack
Microservices Technology StackMicroservices Technology Stack
Microservices Technology Stack
 
Software Architecture for Innovation
Software Architecture for InnovationSoftware Architecture for Innovation
Software Architecture for Innovation
 
Five (easy?) Steps Towards Continuous Delivery
Five (easy?) Steps Towards Continuous DeliveryFive (easy?) Steps Towards Continuous Delivery
Five (easy?) Steps Towards Continuous Delivery
 
Nanoservices and Microservices with Java
Nanoservices and Microservices with JavaNanoservices and Microservices with Java
Nanoservices and Microservices with Java
 
Microservices: Architecture to Support Agile
Microservices: Architecture to Support AgileMicroservices: Architecture to Support Agile
Microservices: Architecture to Support Agile
 
Microservices: Architecture to scale Agile
Microservices: Architecture to scale AgileMicroservices: Architecture to scale Agile
Microservices: Architecture to scale Agile
 
Microservices, DevOps, Continuous Delivery – More Than Three Buzzwords
Microservices, DevOps, Continuous Delivery – More Than Three BuzzwordsMicroservices, DevOps, Continuous Delivery – More Than Three Buzzwords
Microservices, DevOps, Continuous Delivery – More Than Three Buzzwords
 

Kürzlich hochgeladen

Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rick Flair
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentPim van der Noll
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesThousandEyes
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demoHarshalMandlekar2
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfNeo4j
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Mark Goldstein
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesKari Kakkonen
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 

Kürzlich hochgeladen (20)

Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demo
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 

Java App Servers are Dead! Why Microservices and Spring Boot are the Future

  • 1. Java App Servers are Dead! Eberhard Wolff Freelancer Head Technology Advisory Board adesso http://ewolff.com
  • 2. Eberhard Wolff - @ewolff Code
  • 3. Eberhard Wolff - @ewolff 2003
  • 4. App Server = Java EE or Servlet Container
  • 5. Eberhard Wolff - @ewolff An Application on a server needs an Application Server!
  • 6. Eberhard Wolff - @ewolff Why?? The Price We Pay What now?
  • 7. Eberhard Wolff - @ewolff App Server... •  …container for multiple applications •  ... infrastructure •  …deployment •  …monitoring
  • 8. Eberhard Wolff - @ewolff App Server... •  …container for multiple applications •  ... infrastructure •  …deployment •  …monitoring
  • 9. Eberhard Wolff - @ewolff Multiple Applications •  Isolation •  ClassLoader •  Can lead to non-trivial problems App Server App 1 App 2 App 3 App 4
  • 10. Eberhard Wolff - @ewolff Isolation •  ClassLoader is not enough •  CPU? •  Memory? •  Filesystems? •  Applications are not isolated •  Even individual parts are not isolated •  i.e. JMS might eat away resources from web requests
  • 11. Eberhard Wolff - @ewolff Isolation is Impossible •  Operating systems isolate processes from each other •  CPU, memory … •  Resource allocation: #1 feature for operating systems •  Either the JVM becomes an operating systems •  …or isolation won’t be perfect
  • 12. Eberhard Wolff - @ewolff Multiple Applications •  Is that really what happens? •  Java EE spec talks about “components” •  not Apps App Server App 1 App 2 App 3 App 4
  • 13. Eberhard Wolff - @ewolff One Application App Server App 1 App 2 App 3 App 4
  • 14. Eberhard Wolff - @ewolff One Application App Server •  Component e.g. WAR, EJB JAR … •  Different ClassLoader isolation needed •  OSGi like •  Memory/CPU isolation still missing Component 1 Component 2App
  • 15. Eberhard Wolff - @ewolff What It Is More Like… App Server App 1 App Server App 1 App Server App 1 App Server App 1 App Server App 1 App Server App 1 Cluster
  • 17. Eberhard Wolff - @ewolff App Server... •  …container for multiple applications •  ... infrastructure •  …deployment •  …monitoring
  • 18. Eberhard Wolff - @ewolff App Server... •  …container for multiple applications •  ... infrastructure •  …deployment •  …monitoring
  • 19. Eberhard Wolff - @ewolff Infrastructure •  Two Phase Commit •  Net / Threads •  APIs
  • 20. Eberhard Wolff - @ewolff Infrastructure:
 Two Phase Commit •  Idea: Coordinate multiple transactional resources •  A talk in its own right •  2 DBs: Consider a different architecture •  DB + JMS: Tx Synchronization might help •  http://bit.ly/JMS-2PC
  • 21. Eberhard Wolff - @ewolff Infrastructure:
 Two Phase Commit •  Slows down the good case in favor of the bad case •  No 100% - 2PC can fail •  Of limited use in distributed systems •  E.g. REST + 2PC? •  NoSQL + 2PC? •  Limits scalability
  • 22. Eberhard Wolff - @ewolff Infrastructure: Net / Threads •  Support i.e. for HTTP and thread pooling •  Connection pooling •  Can be done inside the application •  Embedded servers (Tomcat, Jetty)
  • 23. Eberhard Wolff - @ewolff Infrastructure: APIs •  EJB, CDI, JPA, JSF... •  Version tied to App Server version •  App depends on Application Server •  New APIs can’t be used until new App Server in production •  Version conflicts might arise
  • 24. Eberhard Wolff - @ewolff Infrastructure: APIs •  Usually not every need covered •  …so additional libraries are used •  App Server APIs can be replaced by libraries •  Makes application more portable
  • 25. Eberhard Wolff - @ewolff Infrastructure:
 Application independent? •  Each application has its own infrastructure •  E.g. database connections •  + specific configuration •  Might even add its own libraries to the AppServer •  Big no-no if the App Server should be application independent
  • 26. Eberhard Wolff - @ewolff Dependencies
 App Server / Application App Server Application Libraries Infrastructure Specific configuration Cyclic dependency i.e. one component
  • 28. Eberhard Wolff - @ewolff You Don‘t Agree? •  Can you deploy your application on a different server? •  On a different version of the same server? •  Without modifications to the server? •  Do you deploy other applications on the App Server? •  Could you? •  Is the application server or an installation script in your version control?
  • 29. Eberhard Wolff - @ewolff Application Server: Just One Kind of Infrastructure •  App Server focus on interactive (web) applications •  Other types of application: •  Batches •  Integration •  Map / Reduce •  App Servers are no universal infrastructure
  • 30. Eberhard Wolff - @ewolff App Server... •  …container for multiple applications •  ... infrastructure •  …deployment •  …monitoring
  • 31. Eberhard Wolff - @ewolff App Server... •  …container for multiple applications •  ... infrastructure •  …deployment •  …monitoring
  • 32. Eberhard Wolff - @ewolff Deployment •  Deployment Format: WAR, EAR, JAR... •  No way to define dependencies outside Application •  i.e. App Server version, database etc •  Operations usually work with deb, RPM… •  Completely different tool chain •  Also: Usually Unix services to start applications
  • 33. Eberhard Wolff - @ewolff App Server... •  …container for multiple applications •  ... infrastructure •  …deployment •  …monitoring
  • 34. Eberhard Wolff - @ewolff App Server... •  …container for multiple applications •  ... infrastructure •  …deployment •  …monitoring
  • 35. Eberhard Wolff - @ewolff Monitoring •  Provided by JMX •  Can be integrated in SMNP etc J •  New tools arise •  Logs + Logstash / Kibana or Splunk •  REST based monitoring resources •  Scripts for monitoring
  • 36. App Server are needed for monitoring & deployment
  • 37. App Server come with their own Ops Tool Set
  • 38. Eberhard Wolff - @ewolff App Server... •  …container for multiple applications •  ... provide infrastructure •  …support deployment •  …support monitoring 1 App per server ..or per cluster App Server part of the application Deployment & monitoring OK but different tools
  • 40. Eberhard Wolff - @ewolff Slower Turn Around •  Code •  Package a WAR •  Install it •  Have it unpacked •  Test •  Solutions: JRebel, Spring Loaded •  But: Why is it done at all?? Why??
  • 41. Eberhard Wolff - @ewolff App Server: Complex Deployment •  Deployment: not just an application •  But also an Application Server •  App Server configuration more complex than Application configuration •  Look at automation scripts with Puppet / Chef etc
  • 42. Eberhard Wolff - @ewolff Cyclic Dependency Application – App Server •  Application and App Server must fit each other •  Configuration must be compatible •  For each developer and each testing stage •  Old configuration e.g. for bug fixes •  Hard to get right
  • 43. Eberhard Wolff - @ewolff Deployment Is Important •  Continuous Delivery means a lot more deployment •  Must optimize deployment Commit Acceptance Tests Capacity Tests Explorative Tests Production Many times per day
  • 44. Eberhard Wolff - @ewolff Continuous Delivery •  Applications deployed more frequently •  …in many different stages •  Simple deployment even more important •  App Servers become bigger headache
  • 46. Eberhard Wolff - @ewolff Different Ops Mindset •  App Server administrator? •  Deployment, monitoring etc. have been solved already! •  Package manager •  Ops Monitoring •  Why not stick to general solutions?
  • 47. Eberhard Wolff - @ewolff DevOps •  DevOps and Continuous Delivery: focus on “normal” tools and approaches •  Dev will see more than only Java Apps and App Servers •  Need different tools
  • 48. Eberhard Wolff - @ewolff Micro Services •  Build software composed of services •  Service has business meaning •  i.e. Order, Catalog etc •  Services (re)deployed independently •  …instead of deployment monolith •  …and communicate e.g. via REST
  • 49. Eberhard Wolff - @ewolff Micro Services: eCommerce Catalog Order Processing Customer Recommendation
  • 50. Install and configure App Server for each Microservice??
  • 51. Eberhard Wolff - @ewolff Micro Services •  Service might have different non-functional requirements •  So different infrastructure might be needed •  E.g. asynchronous applications •  Traditional Servlets •  Batches •  Map / reduce •  …. •  App Server just provide one kind of infrastructure
  • 52. Eberhard Wolff - @ewolff The Price We Pay App Server Slow Turn Around Standard OPs Tools Continuous Delivery Micro Services App Server specific OPs tools Deployment complex One infrastructure doesn’t fit all One App Server per Micro Service?Smaller deployment units
  • 53. Eberhard Wolff - @ewolff RIP Application Server!
  • 55. Eberhard Wolff - @ewolff The Re-Rise of the Applications •  Create a JAR files •  …that contains a main class •  Custom infrastructure •  E.g. HTTP server •  Or Batch •  …
  • 56. Eberhard Wolff - @ewolff Monitoring & Deployment •  Rely on standard Ops deployment and monitoring tools •  REST based monitoring URLs •  Evaluate log files
  • 57. Eberhard Wolff - @ewolff Application: Benefit •  Easier to Deploy: Just a JAR •  + command line •  + config file •  Debug & run in IDE •  Acceptance tests etc much easier •  Ensured: Infrastructure compatible with application
  • 59. Eberhard Wolff - @ewolff Deploy Demo •  mvn package •  Show java –jar with JAR
  • 60. Eberhard Wolff - @ewolff Actuator Demo •  Open http://localhost:8080/ monitor.html •  Show metrics / trace •  Show info and application.properties
  • 61. Eberhard Wolff - @ewolff Demo CRaSH •  ssh -p 2000 user@localhost •  Password in log output •  help •  Mention jpa / jdbc / problems •  thread top CTRL-C •  metrics •  dashboard
  • 62. Eberhard Wolff - @ewolff Technologies •  Spring Boot •  see my talk on Wednesday •  Dropwizard by Yammer •  Vert.x •  see Tim Fox’s talk this evening •  Play Framework
  • 63. Eberhard Wolff - @ewolff Thank You!! eberhard.wolff@gmail.com @ewolff