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

Microservice Architectures with Kubernetes and ...

Microservice Architectures with Kubernetes and PaaS

I am going to take a somewhat tangential approach to the subject. You see, most discussions about the Microservices architecture are centered around technological aspects: which language to choose, how to create the most RESTful services, which service mesh is more appropriate, etc.

However at VSHN we have long ago figured out that the most important factor of success for software projects is people. And the thesis of my talk today is that the choice of Microservices as an architectural pattern has more to do with the organizational structure of your organization, rather than the technological constraints and features of the final deliverable.

Blog post: https://www.vshn.ch/en/blog/microservices-or-not-your-team-has-already-decided/

Adrian Kosmaczewski

November 04, 2021
Tweet

More Decks by Adrian Kosmaczewski

Other Decks in Technology

Transcript

  1. VSHN – The DevOps Company Adrian Kosmaczewski, Developer Relations Microservice

    Architectures with Kubernetes and PaaS Thank you so much for this opportunity to talk about Microservice architectures today. My name is Adrian Kosmaczewski, and I’m in charge of Developer Relations at VSHN. Speaker notes 1
  2. VSHN – The DevOps Company Pronounced ˈvɪʒn – like "vision"

    The DevOps Company Switzerland’s leading DevOps, Docker & Kubernetes partner Founded 2014, 46 VSHNeers located in Zürich 24/7 support ISO 27001 certi ed & ISAE 3402 Report Type 1 veri ed First Swiss Kubernetes Certi ed Service Provider Just a few words about VSHN; that’s how you pronounce the name, and we’re "The DevOps Company". We’ve been in Zurich since 2014, we’re 46 VSHNeers and we’re Switzerland’s leading DevOps, Docker & Kubernetes partner, offering 24/7 support to our customers. We’ve got a few certifications, and most importantly, we were the First Swiss Kubernetes Certified Service Provider back in 2016. Speaker notes 2
  3. VSHN – The DevOps Company We’re partners with many companies

    very active in the Cloud Native space, you might recognize some of the logos on this slide. Speaker notes 3
  4. VSHN – The DevOps Company We also run our own

    "Platform as a Service" offering called "APPUiO". We’ve created our own suite of tools to manage lots of Kubernetes services from a central location, called "Project Syn". Last but not least, we have developed our own Kubernetes operator for backups, called K8up, which just like Project Syn is 100% open source on GitHub. Speaker notes 4
  5. VSHN – The DevOps Company Microservice Architectures Thank you so

    much for this opportunity to talk about Microservice architectures today. Speaker notes 5
  6. VSHN – The DevOps Company I am going to take

    a somewhat tangential approach to the subject. You see, most discussions about the Microservices architecture are centered around technological aspects: which language to choose, how to create the most RESTful services, which service mesh is more appropriate, etc. Photo by <a href="https://unsplash.com/@lucabravo? utm_source=unsplash&utm_medium=referral&utm_conten Bravo</a> on <a href="https://unsplash.com/s/photos/technology? utm_source=unsplash&utm_medium=referral&utm_conten Speaker notes 6
  7. VSHN – The DevOps Company However at VSHN we have

    long ago figured out that the most important factor of success for software projects is people. And the thesis of my talk today is that the choice of Microservices as an architectural pattern has more to do with the organizational structure of your organization, rather than the technological constraints and features of the final deliverable. Photo by <a href="https://unsplash.com/@marvelous? utm_source=unsplash&utm_medium=referral&utm_conten Meyer</a> on <a href="https://unsplash.com/s/photos/software-team? utm_source=unsplash&utm_medium=referral&utm_conten Speaker notes 7
  8. VSHN – The DevOps Company De nition First of all

    we must define the Microservices architecture. What is it? Speaker notes 8
  9. VSHN – The DevOps Company "Microservices" is an architectural pattern

    in which the functionality of the whole system is decomposed into completely independent components, communicating with each other over the network. Speaker notes 9
  10. VSHN – The DevOps Company The counterpart of the Microservices

    architecture is what is commonly referred to as the "Monolith", which has been the most common approach for web applications and services in the past 25 years. In a Monolith, all functions of the application, from data management to the UI are contained in the same binary. Speaker notes 10
  11. VSHN – The DevOps Company Own implementation & data Single

    purpose Strong cohesion "Share nothing" architecture Small, lightweight, and fast Microservices Features In a Microservices architecture, each service is responsible of its own implementation and data storage. Microservices are fine grained, and have a single purpose. They have strong cohesion, that is, the operations they encapsulate have a high degree of relatedness. They are an example of the "Single Responsibility Principle". They are also deployed separately, with visibly bounded contexts, and they require DevOps approaches to their deployment and management, such as automation and CI/CD pipelines. Very importantly, the Microservices architecture is a "share nothing architecture", in which individual services never share common code through libraries, instead restricting all interaction and communication through the network connecting them. And last but not least, Microservices (as the name implies) should be as small as possible, have low requirements of memory, and should be able to start and stop in seconds. Speaker notes 11
  12. VSHN – The DevOps Company Given all of these characteristics,

    Microservices are, by far, the most complex architectural pattern ever created. It is difficult to plan, it can dramatically increase the complexity of projects, and for some teams, experience has shown that it was impossible to cope with. Photo by <a href="https://unsplash.com/@barkiple? utm_source=unsplash&utm_medium=referral&utm_conten Barkiple</a> on <a href="https://unsplash.com/s/photos/complex? utm_source=unsplash&utm_medium=referral&utm_conten Speaker notes 12
  13. VSHN – The DevOps Company This idea of "components sending

    messages to one another" is absolutely not new. Back in 1966, one of the greatest computer scientists of all time, Alan Kay, coined the term "Object Oriented Programming". The industry coopted and deformed his original definition, which was the following: Speaker notes 13
  14. VSHN – The DevOps Company Source: OOP to me means

    only messaging, local retention and protection and hiding of state- process, and extreme late-binding of all things. www.purl.org/stefan_ram/pub/doc_kay_oop_en Alan Kay designed in the 1970s the Smalltalk programming language, based on these concepts. And after reading the texts above, it becomes clear that to a large extent, the Microservices architecture is an implementation of Alan Kay’s ideas of messaging, decoupling and abstraction, taken to the extreme. Speaker notes 14
  15. VSHN – The DevOps Company REST To achieve the current

    state of Microservices, though, many other breakthroughs were required. During the 2000s, the emergence of XML, the SOAP protocol, and its related web services made the term "Service Oriented Architecture" a very common staple in architectural discussions. The rise of Agile methodologies made the industry pivot towards the REST approach instead of SOAP. During the last decade, the rise of DevOps and the rise of containerization through Docker and Kubernetes finally enabled teams to deploy thousands of containers as a microservice architecture, thanks to the whole catalog of Cloud Native technologies. Speaker notes 15
  16. VSHN – The DevOps Company Parallel development Best tool for

    each service More ef cient system High availability Progressive update Pros If Microservice architectures are so complex, why use them? It turns out, they can bring many benefits: Since each component can be completely isolated from the others, once teams agree on their interfaces they can be developed, documented, and tested thoroughly, 100% independently from others. This allows teams to move forward in parallel, implementing features that have 0% chance of collision with one another. Teams are also encouraged to choose the programming language that fits best the particular task that their microservice must fulfill. Since they are by definition "micro" services, they are designed to be quickly launched and dismissed, so that they only intervene when required, making the whole system more efficient and responsive. The size of microservices also allows for higher availability, since it is possible to have many of them behind a load balancer; should any instance of a microservice fail, it can be quickly dismissed and a new one instantiated in its place, without loss of availability. Systems can be updated progressively, with each team fixing bugs and adding functionality without disturbing the others. As long as interfaces are respected (and eventually versioned) there is no reason for the system to suffer from updates. Speaker notes 16
  17. VSHN – The DevOps Company Performance Required experience Cost Feasibility

    Team structure Complexity Cons But there are many reasons not to choose the Microservices architectural approach; among the most important: Performance: a system built with Microservices must take into account the latency between those services; and in this respect, Monolithic applications are faster; a function call is always faster than a network call. Team maturity: Microservices demand a certain degree of experience and expertise from teams; those new to Microservices have a higher chance of project failures. Cost: creating a Microservices system will be costlier, if anything, because of the overhead created by each individual service. Feasibility: sometimes it is simply not possible to use Microservices, for example when dealing with legacy systems. Team structure: this is a decisive factor we will talk about extensively later. Complexity: it is not uncommon to end up with systems composed of thousands of concurrent services, and this creates challenges that we will also discuss later. I would like to talk now about the last two points, which are in our experience the biggest issues in Microservice implementations: team structure and management of complexity. Speaker notes 17
  18. VSHN – The DevOps Company 1. Conway’s Law One of

    the decisive factors that constrain teams' ability to implement microservices is often invisible and overlooked: their own structure. Again, this phenomenon is not new. Speaker notes 18
  19. VSHN – The DevOps Company In 1968, Melvin A. Conway

    wrote an article for the Datamation magazine called "How Do Committees Invent?" in which the following idea stands out: Speaker notes 19
  20. VSHN – The DevOps Company Source: The basic thesis of

    this article is that organizations which design systems (…) are constrained to produce designs which are copies of the communication structures of these organizations. www.melconway.com/Home/Committees_Paper.html There is extensive evidence of this fact through research; the industry agrees that this is indeed the case. In that situation, I do not need to point out that the choice of a Monolithic versus a Microservices architecture is already ingrained in the very hierarchical chart representing the organization. Speaker notes 20
  21. VSHN – The DevOps Company One of the services we

    offer at VSHN tackles, precisely, this very issue. In our "DevOps workshop" we evaluate the degree of "agility" of organizations. Based on that information, we reverse engineer their structure through Conway’s Law in order to find a starting point for their digital transformation. Speaker notes 21
  22. VSHN – The DevOps Company 2. Complex vs. Complicated Another

    point that I want to make today is the distinction of "Complex" versus "Complicated", as these two words can sometimes be confused with one another in everyday language, and the word "Simple" can be used as an antonym of both. Speaker notes 22
  23. VSHN – The DevOps Company Complex complexus plectere ⇒ to

    intertwine Complicated complicare plicare ⇒ to fold "Complex" is borrowed from the Latin complexus, meaning "made of intertwined elements". "Complexus" is itself derived from plectere ("bend, intertwine"). This word has been used since the XVI century to qualify that which is made of heterogenous elements. It shares the same root (plectere) with the medical term "plexus" meaning "interlacing" and used since the 16th century as a medical term for "network of nerves or blood vessels". (Source: Dictionnaire historique de la langue française by Alan Rey) On the other hand, "Complicated" has a similar origin but a different construction: it comes from the Latin complicare, literally meaning "to fold by rolling up". Figuratively speaking this was taken as close to the notion of embarrassment or awkwardness. The word is composed of the word plicare which means "to fold". Watches commonly known as "Complications" (such as the Patek Philippe Calibre 89, the Franck Muller Aeternitas Mega and the "Référence 57260" de Vacheron Constantin) are… complicated machines by definition. In short, "Complex" and "Complicated" stem from slightly different roots: the Latin root plectere ("to intertwine") in the former, and plicare ("to fold") for the latter. Complex conveys the idea of a network of intertwined objects, whose state and behavior are continuously altered by the interaction with their peers in said network. The word complicated implies an intrinsic apparent "obscurity" through folding unto itself, inviting to an "unfolding" discovery process. Speaker notes 23
  24. VSHN – The DevOps Company Complex Microservices architecture Complicated Monoliths

    Or, put in another way: individual Microservices should not be complicated, but a Microservice architecture is complex by definition. Monoliths, on the other hand, tend to become very complicated as time passes. Neither are simple. Software developers have a strong relationship with complication; complicated systems are great to brag about on Hacker News, but maintainers also cry about them in private. Speaker notes 24
  25. VSHN – The DevOps Company Complicated ⇒ Complex Best Practices

    A "best practice" has one and only one basic job: to help engineers translate the complicated into the complex. Most software-related disasters are caused by a simple fact: because of deadlines, organization, tooling, or just plain ignorance, software developers have a tendency to build complicated, instead of complex, systems. This is another point we take care of in our DevOps Workshop, through the evaluation of the current assets (source code, current databases, security and network requirements, deployment procedures and rhythms, etc.) Speaker notes 25
  26. VSHN – The DevOps Company Migrate or Rewrite? The complication

    of Monoliths by itself is not problematic; it makes for tightly bound systems, which tend to be very fast, because as we said, a function call is faster than a network call. After all, we have been building very successful monoliths in the past. But they tend to have problems with availability and scalability. Microservices represent a diametrally oposed approach, based on complexity rather than complication, but one that solves those issues. Speaker notes 26
  27. VSHN – The DevOps Company There is a tension, then,

    between complexity and complication on one side, and organizational forces on the other. Put in other words, there is a tension between monolithic and microservices systems on one side, and more or less hierarchical structures on the other. Achieving equilibrium between these forces is, then, the engineering challenge faced by software architects these days. Photo by <a href="https://unsplash.com/@mattiabericchia? utm_source=unsplash&utm_medium=referral&utm_conten Bericchia</a> on <a href="https://unsplash.com/s/photos/equilibrium? utm_source=unsplash&utm_medium=referral&utm_conten Speaker notes 27
  28. VSHN – The DevOps Company 7 Tips Many teams face

    today the task, either requested internally (from their management) or externally (through customer demand or vendor requirements) of migrating their monoliths into Microservice-based architectures. Architects can thankfully apply a few techniques to find an equilibrium. Speaker notes 28
  29. VSHN – The DevOps Company 1. No need to migrate

    all 2. Identify components correctly 3. Network bandwidth is not in nite! 4. Reduce inter-service communication 5. Testing strategy 6. Standardize around containers 7. Automate all the things! 1. Start your migration path knowing that very often one does not need to migrate the whole application to Microservices. Some parts can and should remain monolithic, and in particular, proven older systems, even if written in COBOL or older technologies, can still deliver value, and can play a very important role in the success of the transition. 2. Identify components correctly, so that when isolated they will be neither only functionality-driven, nor only data-driven, nor only request-driven, but rather driven by these three factors (functionality, data, and request) at the same time. Pay attention to the organizational chart, and use that as a basis for the decomposition in microservices. 3. Remember that network bandwidth is not infinite. Some interfaces should be "chunky", while others should be "chatty". Plan for latency issues from the start. 4. Reduce inter-service communication as much as possible, which can be done in many ways: 1. Consolidating services together 2. Consolidating data domains (combining database schemas or using common caches) 3. Using technologies such as GraphQL to reduce network bandwidth 4. Using messaging queues, such as RabbitMQ. 5. Adopt Microservice-friendly technologies, such as Docker containers, Kubernetes, Knative, or Red Hat’s OpenShift and Quarkus. Speaker notes 29
  30. VSHN – The DevOps Company As mentioned previously, we regularly

    help organizations in their digital transformation towards microservices, Kubernetes, OpenShift, DevOps, CI/CD, GitLab, and DevOps in general, to support your teams with the tooling they will need in the future. Borrowing Henny Portman’s Team Topologies concept, VSHN can support both as an "Enabling Team" (DevOps workshop, consulting) and a "Platform Team" (Kubernetes/Openshift) to build microservices on, ensuring stability and peace of mind. Speaker notes 30
  31. VSHN – The DevOps Company Conclusion Microservices: Great bene ts,

    but huge challenges Reverse-engineer Conway’s Law Complex is better than complicated. Going beyond the hype, Microservice architectures bring great benefits, but can become huge challenges to software teams. The best way to tackle those challenges consists in reverse engineering Conway’s Law, and start by the analysis of the human organization of your teams first. Make them independent, agile, and free to choose the best tools for their job. Encourage them to negotiate with one another the interfaces of their respective components. Let us create and run complex, not complicated, systems. We cannot get away from complexity; that is our job as engineers. But we can drop the complicated bit. Speaker notes 31
  32. VSHN – The DevOps Company  Embed structure in your

    activities, and remove it from your hierarchy. All of this means that, in order to achieve success with the Microservice architecture, you must embed structure in your activities, and remove it from your hierarchy. It is not about making the structure go away; but just moving it to where it does the most good. Speaker notes 32
  33. VSHN – The DevOps Company Adrian Kosmaczewski, Developer Relations –

    VSHN AG – Neugasse 10 – CH-8005 Zürich – +41 44 545 53 00 – – Thanks! [email protected] vshn.ch [email protected] Thank you for your attention. Speaker notes 33