Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Legacy Systeme modernisieren mit Microservices, Hystrix und RxJava

Holger Kraus
September 18, 2015

Legacy Systeme modernisieren mit Microservices, Hystrix und RxJava

Dieser Vortrag wurde auf den Berlin Expert Days 2015 gehalten: http://bed-con.org/2015/

Als Software-Entwickler ist man nur sehr selten in der Situation, ein völlig neues System auf der Basis neuester Technologien entwickeln zu dürfen. Oft sollen bestehende Systeme nur um viele kleinere Features erweitert werden.

Die Renovierung der grundlegenden Systemarchitektur und die Einführung neuer Programmierparadigmen ist in diesem Umfeld schwierig. Umso wichtiger ist es, dass man die Modernisierung von Altsystemen zu einem fortlaufenden Bestandteil auch des Feature-getriebenen Entwicklungsprozesses macht.

In diesem Vortrag möchten wir zeigen wie auch größere, monolithische Altsysteme mithilfe der offenen Netflix-Bibliotheken schrittweise in Richtung einer Microservice-Achitektur weiterentwickelt werden können. Hystrix kann dabei einen wertvollen Beitrag zur Gesamtstabilität des entstehenden verteilten System leisten.

Der Einsatz von RxJava ein gute Möglichkeit den Anteil von asynchronen Prozessen innerhalb der Legacy-Architektur zu erhöhen. Der Vortrag wird anhand von Beispielen demonstrieren wie der hier angedeutete Modernisierungsprozess umgesetzt werden kann.

Holger Kraus

September 18, 2015
Tweet

More Decks by Holger Kraus

Other Decks in Programming

Transcript

  1. Wir lösen das – persönlich! Modernizing systems with Microservices, Hystrix

    and RxJava Holger Kraus, Arne Landwehr Berlin Expert Days, Berlin, Sep 18, 2015
  2. © 2015 innoQ Deutschland GmbH Current problems ‣ Maintenance is

    difficult ‣ New features need a lot of time ‣ Very unstable ‣ Outdated technology ‣ Doesn’t scale + frustrated developers :(
  3. © 2015 innoQ Deutschland GmbH Stability patterns ‣ Timeouts ‣

    Circuit Breaker ‣ Bulkheads 
 … Fail Fast, Steady State , Handshaking, Test Harness, Decoupling Middleware
  4. © 2015 innoQ Deutschland GmbH Bulkheads and IT ‣ Thread

    pools ‣ Database connection pools ‣ Instances ‣ Server ‣ Data center
  5. © 2015 innoQ Deutschland GmbH ‣ Library from Netflix ‣

    Resilience Library ‣ Command Pattern ‣ Metrics ‣ Dashboard Hystrix
  6. © 2015 innoQ Deutschland GmbH Search Products 2. find external

    products 1. search products 3. find internal products 4. return internal + external products
  7. © 2015 innoQ Deutschland GmbH Current problems ‣ Maintenance is

    difficult ‣ New features need a lot of time ‣ Very unstable => enables further distribution ‣ Outdated technology ‣ Doesn’t scale
  8. © 2015 innoQ Deutschland GmbH Monozon is a typical Monolith

    ‣ hidden dependencies ‣ module boundaries are not clear ‣ distributed business processes ‣ just one technical platform ‣ Everything depends on everything
  9. © 2015 innoQ Deutschland GmbH We need a clear cut!

    https://www.flickr.com/photos/taefit/8528632756
  10. © 2015 innoQ Deutschland GmbH Our mission: Creating smaller systems

    that are ‣ understandable ‣ enhanceable ‣ have clear boundaries and responsibilities ‣ allow technological diversity
  11. © 2015 innoQ Deutschland GmbH Micro architecture ‣ Separate (redundant)

    persistence ‣ Internal, separate logic ‣ Domain models & implementation strategies ‣ Separate UI ‣ Separate development and evolution
  12. © 2015 innoQ Deutschland GmbH Domain architecture ‣ System boundaries

    reflect business dependencies ‣ defines who is responsible for which data ‣ follows the principle of ‣ loose coupling ‣ high cohesion
  13. © 2015 innoQ Deutschland GmbH Ask the monolith ‣ identify

    Bounded Contexts ‣ define boundaries explicitly ‣ The experience with the monolith helps to create clear system boundaries
  14. © 2015 innoQ Deutschland GmbH Macro architecture ‣ defines standards

    across systems ‣ UI integration ‣ communication protocols ‣ representation formats ‣ data redundancy ‣ logging, monitoring, security
  15. © 2015 innoQ Deutschland GmbH Consequences ‣ Transactions contexts are

    bound to just one system ‣ Data should be just changed by the systems that are responsible for it ‣ Processes need Data that are spread over various systems
  16. © 2015 innoQ Deutschland GmbH Time for RxJava! ‣ Reactive

    Extensions for the JVM ‣ Asynchronous streams ‣ Elements of ‣ Iterator patter ‣ Observable pattern ‣ Functional programming
  17. © 2015 innoQ Deutschland GmbH Summary ‣ Use Hystrix to

    stabilize your system! ‣ Use RxJava to increase the amount of async/parallel processes in an easy way! ‣ Introduce Microservices to get control over your system again! ‣ Have fun :)