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

10 Tips for failing at microservices

10 Tips for failing at microservices

Microservices are just a bunch hip new framework plus some AngularJS frontend or React, right?
So, if you want to make sure that you absolutely and definitely fail at your Microservice project, then watch this talk and learn how.

Using real world experience from multiple green field and brown field projects, I can show you:
- how to ignore the mandatory organizational impact
- how to focus on the code only without any regard towards ops and testing
- continuous deployment is for losers. Real projects use their meat cloud for delivery
- jumping onto every new and untested framework is a must
- EventSourcing and CQRS are both free lunches. So, you can add complexity without any real need
- ...and more

If you mind my tips, then surely you will fail at Microservices and your boss will never again try to move away from your beloved vintage monolith.

David Schmitz

March 23, 2017
Tweet

More Decks by David Schmitz

Other Decks in Technology

Transcript

  1. #VoxxedVienna #10TipsMicroservices @koenighotze What’s in it for you? Your boss

    want’s to modernise, but you don’t Things to do to sabotage your project Lessons learned the hard way Things have been anonymised to protect the guilty
  2. #VoxxedVienna #10TipsMicroservices @koenighotze Extreme agile cloud native digital microservices! Disrupt

    or be disrupted! Sounds good. And cloud and agile equal good?!? Industry 4.0! FTW!
  3. #VoxxedVienna #10TipsMicroservices @koenighotze Microservices IMHO Single Bounded Context UI and

    Services Independent Self-Contained Local storage Share nothing User Interface Services Persistence Operations
  4. #VoxxedVienna #10TipsMicroservices @koenighotze Whatever! BLAH BLAH User Interface Services Persistence

    Operations Too lazy to actually read all this stuff…looks boring and I want to look at funny cat pics.
  5. #VoxxedVienna #10TipsMicroservices @koenighotze Technical knowledge - Excitement Groundhog Code -

    Redevelop solutions Maintenance field trips Heisenberg monitoring & Ops The Zoo of Technology
  6. #VoxxedVienna #10TipsMicroservices @koenighotze Jump the Bandwagon $ npm ls |

    grep @0 [email protected] │ ├─┬ [email protected] │ │ │ ├─┬ [email protected] │ │ │ │ └── [email protected] │ │ └── [email protected] ├─┬ [email protected] │ │ ├── [email protected] │ │ │ │ └── [email protected] │ │ │ └── [email protected] │ │ │ └── [email protected] │ │ │ └── [email protected]
  7. #VoxxedVienna #10TipsMicroservices @koenighotze Freedom is a human right Everybody loves

    a puzzle - REST, HAL, SIREN Find new friends while searching for fixes on Stackoverflow Synergies: Polyglot UI with beta status Keep ops on their toes by multi-monitoring and logging (easy win -> Date format!)
  8. #VoxxedVienna #10TipsMicroservices @koenighotze Sharing is a Good ThingTM All microservices

    must share the database Avoid table or schema ownership Insidious dependencies, e.g. Connection pools keep everybody awake at night
  9. #VoxxedVienna #10TipsMicroservices @koenighotze Marketing Pitch Customer Homeaddress Updated Credit acquired

    New Customer Created … Direction of Time Customer Credit Event Store
  10. #VoxxedVienna #10TipsMicroservices @koenighotze Eventsourcing Marketing Pitch Audit trail - Immutable

    history for free Distributed data management Decoupled microservices with CQRS …and much more!
  11. #VoxxedVienna #10TipsMicroservices @koenighotze WET is the new DRY Country: “AU”

    Country: “Das schöne Österreich” … Direction of Time Customer Credit Event Store
  12. #VoxxedVienna #10TipsMicroservices @koenighotze Don’t change messy past events Don’t come

    up with a data strategy Copy and Paste compensation actions Event history as bugfixes Dont’t need it? Play the “We might become google or linkedin!” card
  13. #VoxxedVienna #10TipsMicroservices @koenighotze – Carl Sagan (slightly paraphrased) “If you

    wish to make MICROSERVICES from scratch, you must first create a FRAMEWORK” Wrapping up
  14. #VoxxedVienna #10TipsMicroservices @koenighotze Home made Eventsourcing { "type": "NewCustomerCreated", "id":

    1234, "payload": { } } { "type": "NewCustomerCreated", "id": 1234, "payload": { } } Customer Account Reporting ES V1 ES V1 ES V1
  15. #VoxxedVienna #10TipsMicroservices @koenighotze Runtime surprise Customer V2 Account Reporting ES

    V1 ES V1 ES 2 { "type": "NewCustomerCreated", "id": "1234-5678", "payload": { ... } }
  16. #VoxxedVienna #10TipsMicroservices @koenighotze Cross-cutting dependencies as social tools Job insurance

    via invasive frameworks Building frameworks is fun! Try it! Ideas: Collections, String-Utils, Logging, ORM!
  17. #VoxxedVienna #10TipsMicroservices @koenighotze Who KNOWS how to do it? K

    P T Optimise your Revenue! Who WANTS it to be done? Who has the required PRIVILEGES? Who has TIME to actually do it?
  18. #VoxxedVienna #10TipsMicroservices @koenighotze And the rest of the world? Delivery

    pipeline Production … Handcrafted with love Soulless automation
  19. #VoxxedVienna #10TipsMicroservices @koenighotze Infrastructure is expensive…be proud to take care

    of it Microsoft Word is some kind of automation Play the “we are not google” card If someone asks, say you are using Docker
  20. #VoxxedVienna #10TipsMicroservices @koenighotze The network is reliable Dependencies indicate good

    design, like in Dependency Injection Synchronous dependencies are easy What is half a system good for, anyway? So avoid Circuit breakers
  21. #VoxxedVienna #10TipsMicroservices @koenighotze Meet people while discussion ownership and conflicting

    features Keep the testers busy with side effects Single point of failure -> Easy to find
  22. #VoxxedVienna #10TipsMicroservices @koenighotze The sieve of sanity Agile Rx Microservice

    Actors Augmented reality Cloud AWS WebRTC IoT Blockchain Architecture & Design Sieve
  23. #VoxxedVienna #10TipsMicroservices @koenighotze The sieve of sanity JEE WebSphere Agile

    Rx Microservice Actors Augmented reality Cloud AWS WebRTC IoT Blockchain Architecture & Design Sieve
  24. #VoxxedVienna #10TipsMicroservices @koenighotze Frustrate your coworkers Irritate motivated colleagues If

    you are older than 30…play the “This is _real_ enterprise, kid” card Ivory towers are beautiful Assume people are dumb, and you are smart
  25. #VoxxedVienna #10TipsMicroservices @koenighotze Slow means more time for Twitter! The

    servant of many kings is a free man Change / Requirement Mgmt. are your allies Business people don’t know Eric Evans Conway’s law works both ways
  26. #VoxxedVienna #10TipsMicroservices @koenighotze Programmers do not like other people Avoid

    spread of knowledge Business knows the domain. Devs know tech Nobody should have a big picture, keep them in the dark Meetings mean coffee and biscuits
  27. #VoxxedVienna #10TipsMicroservices @koenighotze And: In case of bugs… It’s always

    the other team’s fault! And: In case of bugs… It’s always the other team’s fault!
  28. #VoxxedVienna #10TipsMicroservices @koenighotze Summary MS mean Work - Fight them

    Greenfield != Brownfield - The perfect excuse Think of the organisational impact. You do not want to change! Embrace the monolith Microservices are a fad. Wait for SOAP 4.0 Dont’t underestimate the power of broken windows