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

Cloud Chaos and Microservices Mayhem

Cloud Chaos and Microservices Mayhem

The way we use Java has changed. Applets - or any browser-side Java - are a long, long, time ago. Java moved to the back end, and stayed there, but the back-end has gotten bigger, more distributed, and more complicated. Some things that were a good idea ten years ago turn out to be a terrible idea in the cloud; and what used to be ‘good enough’ for testing really isn’t anymore. Managing microservices architecture demands a lot of us, to ensure observability, operational resiliency, and organisational agility. This talk will introduce some of the new tools, patterns, and best practices for Java development in 2022. It also gives a tour of some of the most painful anti-patterns Holly has seen as a former consultant with the IBM Garage.

Holly Cummins

June 15, 2022
Tweet

More Decks by Holly Cummins

Other Decks in Programming

Transcript

  1. #RedHat @holly_cummins hardware old way cloud way logs logs container

    logs container logs container logs container logs
  2. #RedHat @holly_cummins hardware old way cloud way logs logs container

    logs container logs container logs container logs
  3. #RedHat @holly_cummins hardware old way cloud way logs logs container

    logs container logs container logs container logs aggregation + correlation
  4. #RedHat @holly_cummins hardware old way cloud way logs logs container

    logs container logs container logs container logs aggregation + correlation open telemetry open tracing
  5. #RedHat @holly_cummins // This is the working definition of a

    server class machine: // >= 2 physical CPU's and >=2GB of memory answer(ish): actual hotspot source code
  6. #RedHat @holly_cummins takeaway: don’t shrink your containers too much or

    your JVM will make bad decisions advice accurate as of June 2022. all performance advice should be independently verified. do not try this at home without testing first. your mileage may vary.
  7. #RedHat @holly_cummins wait, isn’t that the opposite of the advice

    in the previous section? should my containers be big or small?
  8. #RedHat @holly_cummins this is the chaos part :) wait, isn’t

    that the opposite of the advice in the previous section? should my containers be big or small?
  9. #RedHat @holly_cummins Hey boss, I created a Kubernetes cluster. I

    forgot it for 2 months. … and it’s €1000 a month.
  10. #RedHat @holly_cummins 2017 survey 25% of 16,000 servers doing no

    useful work “perhaps someone forgot to turn them off”
  11. #RedHat @holly_cummins “I did find a setting on your plan

    that set the max cacheable file size to 15GB and it looks like your zipfile is 18GB big” $11,448.30
  12. #IBMGarage + IBM Cloud © 2020 IBM Corporation @holly_cummins “we’re

    moving too slowly. we should modernise our COBOL application into microservices.
  13. #IBMGarage + IBM Cloud © 2020 IBM Corporation @holly_cummins “we’re

    moving too slowly. we should modernise our COBOL application into microservices. … but our release board only meets twice a year.”
  14. #IBMGarage + IBM Cloud © 2020 IBM Corporation @holly_cummins “every

    time we touch one microservice, all the others break.”
  15. #RedHat @holly_cummins “each of our microservices has duplicated the same

    object model … with twenty classes and seventy fields”
  16. #IBMGarage + IBM Cloud © 2020 IBM Corporation @holly_cummins “ohhhh,

    we weren’t expecting your service to do that … “
  17. #IBMGarage + IBM Cloud © 2020 IBM Corporation @holly_cummins “uh,

    what do you mean you corrected the typo in your json?”
  18. #IBMGarage + IBM Cloud © 2020 IBM Corporation @holly_cummins If

    you’re going to do microservices, you need to get good at automation. And testing.
  19. IBM Cloud © 2020 IBM Corporation the test pyramid (you

    can TDD at every level!) end-to-end tests unit tests contract tests
  20. #RedHat @holly_cummins demo recap: • consumer-driven contract testing can save

    your bacon • pact is a mock for the consumer • pact is a functional test for the producer • shared json contracts aligns expectations across services