Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.

Designing for Autonomy

456 Aufrufe

Veröffentlicht am

The much hyped "Microservice Architecture" tells us to design our services to be autonomous. Let's find out what this means and how we can achieve it. In this talk I will guide you through the fascinating world of asynchronous communication, event-driven systems and distributed data.

Veröffentlicht in: Software
  • Loggen Sie sich ein, um Kommentare anzuzeigen.

  • Gehören Sie zu den Ersten, denen das gefällt!

Designing for Autonomy

  1. 1. Designing for Autonomy Matthias Noback @matthiasnoback
  2. 2. Microservice envy
  3. 3. https://leanpub.com/microservices-for-everyone
  4. 4. A microservice architecture can help you... - Define team responsibilities - Scale your development team - Prevent big balls of mud at the code-level - Scale horizontally
  5. 5. The problem is designing for autonomy
  6. 6. http://www.symfony-project.org/plugins/drTwitterFeedPlugin.html
  7. 7. <?php class drTwitterFeedComponents extends sfComponents { public function executeStatusUserTimeline() { $query = new TwitterStatusUserTimelineQuery(); $query->setParameters($this->getVar('query_parameters')); $this->feed = new TwitterStatusCachedFeedDoctrine($query); $this->feed->fetchTweets(); $this->tweets = $this->feed->getTweets($this->getVar('limit')); } }
  8. 8. From imperative To reactive
  9. 9. Do this. Do that. Do something else. Do this. When "this has happened", do that. When "that has happened", do something else.
  10. 10. Process managers
  11. 11. Add drawing: states, events and new commands
  12. 12. Solving the command issue 1. Process the first step of the process, then emit an event about it. 2. Let other services respond to this event and take their own step, emitting an event about it, and so on.
  13. 13. Insight in the process 1. Use process managers to send new commands based on incoming events. 2. Let the process manager keep track of the current state of each process.
  14. 14. What about queries?
  15. 15. "What's the current state of something-something?"
  16. 16. The current state is the result of all past events
  17. 17. Solving the query issue 1. Services publish their events. 2. Other services subscribe to these events and update their own state accordingly. 3. They can build up any projection they like. This gives them the answers they need, without even asking.
  18. 18. Thanks! https://joind.in/talk/d8d31 @matthiasnoback

×