• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Java Application Servers Are Dead!
 

Java Application Servers Are Dead!

on

  • 18,241 views

Java Application Server have long dominated the middleware market. This presentations show the weaknesses of them and some alternatives.

Java Application Server have long dominated the middleware market. This presentations show the weaknesses of them and some alternatives.

Statistics

Views

Total Views
18,241
Views on SlideShare
17,233
Embed Views
1,008

Actions

Likes
34
Downloads
138
Comments
3

18 Embeds 1,008

http://blog.jonasbandi.net 556
http://blog.ik.am 142
https://twitter.com 103
https://ocean.cybozu-dev.com 56
http://feedly.com 42
https://booster-sqli.bluekiwi.net 41
http://10.1.5.39 29
http://www.dnug-bern.ch 10
http://feeds.feedburner.com 7
http://newsblur.com 6
http://digg.com 5
https://home.jolicloud.com 3
https://www.linkedin.com 2
http://plus.url.google.com 2
https://dnug-bern.ch 1
http://feedproxy.google.com 1
http://www.conferize.com 1
http://www.inoreader.com 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel

13 of 3 previous next Post a comment

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
  • I could not agree more, I currently work in an environment that heavily relies on on WAS... this heavy-weight ist soo cumbersome, even the smallest of changes/testing takes forever... not to mention the ridiculous complexity of configuration, deployment, proprietary JVM etc.
    Are you sure you want to
    Your message goes here
    Processing…
  • Is there a video of you talking on this, in english preferably, till I manage to learn german ? Thankyou
    Are you sure you want to
    Your message goes here
    Processing…
  • Good work!

    I would add the impact that virtualization and clouds have on application servers - have you ever tried to scale an application server cluster dynamically by adding new VMs? It's a nightmare.

    Application servers come from a time where hosts were (expensive) physical hardware and optimal utilization was a key objective in OPS. This implies the lifetime of a server was years and not days or weeks - rebuilding an env from scratch was a (painful) one time effort, nowadays it's daily business for 'cloud'-companies - but still painful with application servers.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Java Application Servers Are Dead! Java Application Servers Are Dead! Presentation Transcript

    • 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