Java Architectures - a New Hope
Upcoming SlideShare
Loading in...5
×
 

Java Architectures - a New Hope

on

  • 1,415 views

Large Java Enterprise Applications

Large Java Enterprise Applications

Statistics

Views

Total Views
1,415
Views on SlideShare
1,381
Embed Views
34

Actions

Likes
10
Downloads
25
Comments
0

5 Embeds 34

https://twitter.com 27
http://www.slideee.com 4
https://www.linkedin.com 1
https://tweetdeck.twitter.com 1
http://www.linkedin.com 1

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
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Java Architectures - a New Hope Java Architectures - a New Hope Presentation Transcript

  • Java Architectures Eberhard Wolff http://ewolff.com A New Hope
  • Eberhard Wolff - @ewolff What happens with a talk titled like this?
  • Architecture of Enterprise Java Apps View slide
  • Eberhard Wolff - @ewolff View slide
  • Eberhard Wolff - @ewolff
  • Eberhard Wolff - @ewolff How can I implement a new feature???
  • Eberhard Wolff - @ewolff!
  • Eberhard Wolff - @ewolff ECommerce System Spring & OSGi New Stuff
  • Eberhard Wolff - @ewolff New StuffSpring & OSGi New Stuff ECommerce System
  • Eberhard Wolff - @ewolff HTTP New Stuff Links No legacy code Any technology " Small code base
  • Eberhard Wolff - @ewolff Micro Services •  Component Model •  Component… •  Separate process •  Individual deployment unit •  GUI+Logic •  Small services+GUI – unlike SOA
  • Eberhard Wolff - @ewolff Online Shop Order Catalog Search Billing
  • Eberhard Wolff - @ewolff Online Shop elasticsearch Spring Batch Oracle Spring MVC MongoDB Order Catalog Search Billing
  • Service might be even smaller
  • Eberhard Wolff - @ewolff Continuous Delivery
  • Eberhard Wolff - @ewolff Continuous Delivery:
 Build Pipeline Commit Stage Automated Acceptance Testing Automated Capacity Testing Manual Explorative Testing Release
  • Eberhard Wolff - @ewolff Without Micro Services •  Modify order process slightly •  Billing, Search & Catalog unchanged Order Catalog Search Billing
  • Eberhard Wolff - @ewolff Order Catalog Search Billing
  • Eberhard Wolff - @ewolff Continuous Delivery:
 Everything Tested etc Commit Stage Automated Acceptance Testing Automated Capacity Testing Manual Explorative Testing Release Order Catalog Search Billing
  • Eberhard Wolff - @ewolff Build Pipeline •  Just one component changed! •  Lots of unneeded work •  Takes much too long
  • Eberhard Wolff - @ewolff With Micro Services Commit Stage Automated Acceptance Testing Automated Capacity Testing Manual Explorative Testing ReleaseOrder
  • Eberhard Wolff - @ewolff Release •  Just a single component •  Faster feedback •  Easier deployment •  Rollback of single service also easier
  • Eberhard Wolff - @ewolff How to scale agile? Implement more feature
  • Eberhard Wolff - @ewolff Conways Law Architecture copies communication structures of the organization
  • Eberhard Wolff - @ewolff Online Shop Order Catalog Search Billing Component = Team
  • Eberhard Wolff - @ewolff Micro Service •  Team independent from each other •  No code dependencies •  Can use individual technology stack •  Can even deploy independently •  Speed up development
  • Eberhard Wolff - @ewolff Architecture Challenges •  Code Reuse? •  Handling interfaces? •  Managing dependencies between (>100) Services? •  Global architecture? •  Global refactorings?
  • Install and configure App Server for each Microservice??
  • Simple Java Application? What about Operations?
  • Spring Boot Demo
  • Eberhard Wolff - @ewolff Why Spring Boot? •  Easier deployment •  i.e. just a JAR •  Built in operations support
  • Eberhard Wolff - @ewolff Other Technologies •  Dropwizard by Yammer •  vert.x •  Play Framework
  • Micro Services as a Component System
  • Eberhard Wolff - @ewolff Components Collaborate Micro Service Micro Service Link Data Replication REST Messaging
  • Micro Service can easily integrate with Legacy
  • Deploy & Operate?
  • Eberhard Wolff - @ewolff Component Model •  No restriction on language etc •  Individual processes •  + infrastructure (database etc) •  JARs, WARs, EARs: No good fit •  Virtual machines as components? •  Overhead??
  • Eberhard Wolff - @ewolff Docker •  No true virtualization •  Linux Containers (lxc) •  i.e. shared kernel •  i.e. separate file systems
  • Eberhard Wolff - @ewolff Docker File Systems •  Read only base images •  +read/write image •  Can be stacked Application Read / Write Java Ubuntu
  • Eberhard Wolff - @ewolff Docker •  Linux only •  So: Run it in VM •  Controlled by Vagrant
  • Docker Demo
  • Eberhard Wolff - @ewolff Vagrant VM Docker Container Redis Port 6379 6379 6379
  • Eberhard Wolff - @ewolff Communication Between Docker Container •  Via ports •  Via data volumes
  • Docker is a Component System
  • Eberhard Wolff - @ewolff Example •  Log file analysis •  ELK Stack •  Elasticsearch: Store •  Logstash: Parse •  Kibana: Web based GUI •  Install three servers •  Automate installation ... !
  • Eberhard Wolff - @ewolff Dockerized ELK Stack •  1 Vagrantfile (25 lines) •  6 Dockerfiles (total 28 lines) •  1 HTML file (11 lines) •  1 Config (Logstash) (29 lines) •  Total: 93 lines, 9 files •  Including one RegExp !
  • Eberhard Wolff - @ewolff Vagrant VM Container user-registration 8080 8081 Port 8081 Container elasticsearch Container logstash 9200 9200 Port 9200 9200 link Container kibana Port 8080 8080 8080 Browser Volume /log
  • Demo ELK Stack
  • Eberhard Wolff - @ewolff Links •  https://github.com/ewolff/user- registration •  http://www.heise.de/developer/ artikel/Episode-44-Modularisierte- Architektur-fuer-grosse- Systeme-2195818.html •  http://projects.spring.io/spring-boot/ •  http://www.docker.com/ •  http://www.docker.com/tryit
  • Eberhard Wolff - @ewolff
  • Eberhard Wolff - @ewolff Micro Services •  A new hope against Java Monoliths •  Also great for legacy •  Spring Boot for implementation •  Docker as component model & runtime
  • Eberhard Wolff - @ewolff Thank You!! eberhard.wolff@gmail.com @ewolff