Diese Präsentation wurde erfolgreich gemeldet.
Die SlideShare-Präsentation wird heruntergeladen. ×

Java EE microservices architecture - evolving the monolith

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Wird geladen in …3
×

Hier ansehen

1 von 50 Anzeige

Java EE microservices architecture - evolving the monolith

Herunterladen, um offline zu lesen

With the ascent of DevOps, microservices, containers, and cloud-based development platforms, the gap between state-of-the-art solutions and the technology that enterprises typically support has greatly increased. But some enterprises are now looking to bridge that gap by building microservices-based architectures on top of Java EE.

In this webcast, Red Hat Developer Advocate Markus Eisele explores the possibilities for enterprises that want to move ahead with this architecture. However, the issue is complex: Java EE wasn't built with the distributed application approach in mind, but rather as one monolithic server runtime or cluster hosting many different applications. If you're part of an enterprise development team investigating the use of microservices with Java EE, this webcast will guide you to answers for getting started.

With the ascent of DevOps, microservices, containers, and cloud-based development platforms, the gap between state-of-the-art solutions and the technology that enterprises typically support has greatly increased. But some enterprises are now looking to bridge that gap by building microservices-based architectures on top of Java EE.

In this webcast, Red Hat Developer Advocate Markus Eisele explores the possibilities for enterprises that want to move ahead with this architecture. However, the issue is complex: Java EE wasn't built with the distributed application approach in mind, but rather as one monolithic server runtime or cluster hosting many different applications. If you're part of an enterprise development team investigating the use of microservices with Java EE, this webcast will guide you to answers for getting started.

Anzeige
Anzeige

Weitere Verwandte Inhalte

Diashows für Sie (20)

Andere mochten auch (20)

Anzeige

Ähnlich wie Java EE microservices architecture - evolving the monolith (20)

Weitere von Markus Eisele (18)

Anzeige

Aktuellste (20)

Java EE microservices architecture - evolving the monolith

  1. 1. Java EE Microservices Architecture Evolving the monoliths
  2. 2. @myfear blog.eisele.net Red Hat Developer Advocate
  3. 3. monolith / ˈmɒn(ə)lɪθ/ noun noun: monolith; plural noun: monoliths
  4. 4. The Curse Of The Monolith We know how to operate them • We know how to develop • We know how to deploy • We know how to scale but there is a price to pay • Large code-bases • Hard to understand and modify • Complex configuration
  5. 5. service oriented /ˈsəːvɪs/ noun
  6. 6. The Curse Of SOA Increased everything • Interoperability • Federation • Business and technology alignment but there is a price to pay • Centralized infrastructures • Restricted communication protocols • Vendor driven movement
  7. 7. micro services /ˈmʌɪkrəʊ/ noun
  8. 8. What Are Microservices? SOA for DevOps • Single, self-contained, autonomous • Easy(er) to understand individually • Scalability • Testing independently • Individually deployed, has own lifecycle • Single service going down should not impact other services • Right technology stack for the problem (language, databases, etc) • Fail fast • Faster innovation, iteration We want flexible systems and organizations that can adapt to their complex environments, make changes without rigid dependencies and coordination, can learn, experiment, and exhibit emergent behavior. „
  9. 9. Why now? Why me?
  10. 10. Enterprise Goals and Objectives Resistant to Change and Economically Efficient Developers Left Alone Technology-Centric Versus Business-Centric
  11. 11. Single Vendor Platform decisions increasingly unattractive OpenSource moves quickly into this direction Platform as a Service offerings mature Increasing need for business value from software Quicker turnaround cycles for changes required
  12. 12. We need to build systems for flexibility and resiliency, not just efficiency and robustness.
  13. 13. And we need to start building them today with what we have.
  14. 14. From monolith to microservice architecture ?
  15. 15. Technology alone won’t solve your problem.
  16. 16. Software Design Outer Architecture Methodology and Organization Distributed Systems Platform As A Service
  17. 17. Organisation • Autonomous, self-directed teams • Transparency • Small (2-pizza rule) • Purpose, Trust, Empathy driven • Feedback • Experimentation • Respond quickly to change • Own services, delivery, operations • Build it, you own it
  18. 18. Model culture after open source organizations: meritocracy, shared consciousness, transparency, network, platforms. (Christian Posta, Red Hat) „
  19. 19. DEV Continuously deliver software Focus on adding value, not maintenance Deliver features faster OPS Minimize manual, repetitive work Stabilize operating environments Encounter issues of reduced complexity Resolve problems quicker
  20. 20. WATERFALL AGILE http://blog.procademysoftware.com/agile-is-waterfall/
  21. 21. Software Design Architecture Principles • Single Responsible Principle • Service Oriented Architecture • Encapsulation • Separation of Concern • Loose Coupling • Hexagonal Architecture Design Patterns • Domain-driven Design • Bounded Contexts • Event Sourcing • CQRS • Eventual Consistency • Context Maps
  22. 22. Design Constraints • Availability • Scalability • Performance • Usability • Flexibility
  23. 23. Best Practices • Design for Automation • Designed for failure • Service load balancing and automatic scaling • Design for Data Separation • Design for Integrity • Design for Performance
  24. 24. Strategies For Decomposing Verb or Use Case e.g. Checkout UI Noun e.g. Catalog product service Single Responsible Principle e.g. Unix utilities
  25. 25. Distributed Systems • The network is unreliable • Design time coupling • Unintended, run-time coupling • Components will fail • Design for resilience, not just robustness
  26. 26. Control Dependencies • What components depend on the others • Which teams need to engage to make a change • What services need to be changed if one changes • Coordination, contention, synchronization, blocking • Hidden dependencies
  27. 27. Platform as a Service • Docker, Kubernetes • Developer focused workflow • Source 2 Image builds • Build as first-class citizen • Deployments as first-class citizen • Software Defined Networking (SDN) • Docker native format/packaging • Run docker images • CLI/Web based tooling
  28. 28. Outer Architecture Load Balancer ServiceAA DBClient Cache APIGateway Security Service Registry Operational Capabilities (Scaling, SLA, Monitoring, Logging, Deployment) Developer Enablement (Documentation, Discovery, Debugging)
  29. 29. Why now? Why me?
  30. 30. Java EE 7 Features
  31. 31. Migration Approaches
  32. 32. Load Balancer App ServiceSDApp ServiceSD Java EE .ear .war .war .jar .jar .jar .jar DBClient App ServiceSD App ServiceSD ServiceAA .war .jar .jar DBCache GLUE
  33. 33. Load Balancer App ServiceSDApp ServiceSD Java EE .ear .war .war .jar .jar .jar .jar DB Client App ServiceSD App ServiceSD ServiceAA .war .jar .jar DBCache /service /order Read-only Access!
  34. 34. Let’s look at some patterns
  35. 35. Aggregator App Service1 App ServiceSD App Service1 App ServiceWQ App Service3 App ServiceTR DB DB DB Client Cache Cache Cache Load Balancer
  36. 36. LB / Proxy App Service1 App ServiceSD App Service1 App ServiceWQ App Service3 App ServiceTR DB DB DB Client Cache Cache Cache
  37. 37. Load Balancer App Service1 App ServiceBN App Service1 App ServiceFD App Service3 App ServiceSA DB DB DB Client CacheCacheCache
  38. 38. Load Balancer App Service1 App ServiceRE App Service1 App ServiceGH App Service3 App ServiceDR DB DB DB App Service3 App ServiceKJ DB Client Cache Cache Cache Cache
  39. 39. Load Balancer App Service1 App ServiceXY App Service1 App ServiceEW App Service3 App ServiceCV DB DB DB App Service3 App ServiceTR DB App Service3 App ServiceYU Load Balancer Client Client Cache Cache Cache Cache
  40. 40. Respect The Challenge • No silver bullet; distributed systems are *hard* • Dependency hell, custom shared libraries • Fragmented and inconsistent management • Team communication challenges • Health checking, monitoring, liveness • Over architecting, performance concerns, things spiraling out of control fast
  41. 41. http://martinfowler.com/bliki/MicroservicePremium.html The fulcrum of whether or not to use microservices is the complexity of the system you're contemplating. (M.Fowler) “
  42. 42. Lessons Learned Today • Correct functional decomposition is crucial for microservices: • pretty hard to get right from the start • a modular system can evolve to microservices • balance the needs with the costs • work on it evolutionary • Java EE can be a platform for microservices • You need a lot more than just technology
  43. 43. Fit all the pieces together
  44. 44. http://bit.ly/ModernJavaEE • Understand the challenges of starting a greenfield development vs tearing apart an existing brownfield application into services • Examine your business domain to see if microservices would be a good fit • Explore best practices for automation, high availability, data separation, and performance • Align your development teams around business capabilities and responsibilities • Inspect design patterns such as aggregator, proxy, pipeline, or shared resources to model service interactions

×