Top 5 techniques for building the worst microservice system ever - William Brander - NDC London 2023

NDC Conferences
23 May 202340:43

Summary

TLDRIn this humorous and insightful talk, William Brander from South Africa discusses the pitfalls of building microservice systems, using the metaphor of a scooter to illustrate their fragility. He shares his experience from supporting distributed systems at Particular Software and humorously outlines the top five techniques to create the worst microservice architecture, including unnecessary complexity, big bang rewrites, and not invented here syndrome. The talk is a satirical guide on how not to build microservices, highlighting common mistakes and offering lessons to avoid them.

Takeaways

  • 🛵 The analogy of a microservice architecture being like a scooter with high center of gravity and low pivot point, easily leading to disaster, is used to illustrate the fragility of poorly designed microservices.
  • 🗣️ The speaker, William Brander, humorously introduces himself as an 'okayest programmer' passionate about creating bad systems, setting a light-hearted tone for the discussion.
  • 🔧 Brander's experience in support at Particular Software has exposed him to many poorly designed systems, providing him with insights into common microservices pitfalls.
  • 💾 The speaker criticizes the tendency to default to microservices over monoliths without considering the trade-offs, advocating for a balanced approach to system architecture.
  • 🌳 The Strangler Fig Pattern is highlighted as a common technique for transitioning from a monolith to microservices, but its impact on system throughput and performance is questioned.
  • 📉 The discussion of .NET's garbage collection and its impact on system performance during high load reveals how distributed systems can suffer from decreased throughput due to increased complexity.
  • 🔄 The pitfalls of big bang rewrites are explored, showing how they often fail due to underestimated complexity, emotional attachment, and the pressure to deliver new features.
  • 🤝 The 'not invented here' syndrome is criticized for leading to the creation of custom solutions instead of utilizing existing frameworks, which can increase system complexity.
  • 🔍 The importance of defining service boundaries based on verbs (actions) rather than nouns (objects) is emphasized to reduce cross-service communication and improve system design.
  • 🔗 The Engine Pattern is introduced as a potential solution to reduce data duplication across services by keeping logical and physical boundaries separate, allowing for more maintainable systems.
  • 💡 The talk concludes with a reminder that while the speaker has described techniques to create bad systems, the intent is to highlight anti-patterns and encourage better system design.

Q & A

  • What is the main theme of William Brander's talk?

    -The main theme of William Brander's talk is discussing the top five techniques to build the worst microserver system ever, using humor and real-world examples to highlight common mistakes in system design.

  • Why does William Brander consider himself the 'world's okayest programmer'?

    -William Brander uses the term 'world's okayest programmer' humorously to convey that he has experience with both good and bad systems, implying that his average skill level allows him to relate to a wide range of developers who have made similar mistakes.

  • What is the 'Strangler fig pattern' mentioned in the script?

    -The 'Strangler fig pattern' is a technique used in software development for transitioning from a monolithic architecture to a microservices architecture by incrementally decomposing the monolith into smaller, independent services.

  • Why does Brander argue that microservices are often implemented for the wrong reasons?

    -Brander argues that microservices are often implemented not for the stated benefits of decreased coupling and increased independent deployability, but rather to increase complexity and decrease performance, or simply to avoid being seen as using a monolithic architecture.

  • What does Brander suggest is the first technique to mess up a system when transitioning from a monolith to microservices?

    -The first technique suggested by Brander to mess up a system is to put an HTTP call in front of everything, which introduces network hops and can decrease performance due to the overhead of network operations.

  • What is the issue with big bang rewrites according to the script?

    -According to the script, big bang rewrites often fail because they don't account for the complexity and time required to rewrite large systems. Developers often underestimate the effort, leading to missed deadlines and business dissatisfaction.

  • Why does Brander recommend against creating custom frameworks?

    -Brander recommends against creating custom frameworks because of the 'Not Invented Here' syndrome, where developers reinvent the wheel instead of using existing, proven solutions, leading to potential inefficiencies and maintenance headaches.

  • What is the 'Engine pattern' mentioned by Brander?

    -The 'Engine pattern' is a technique where a central service exposes a contract that other services must comply with. These services implement the required interfaces and are compiled into a separate assembly that the central service can utilize, reducing data duplication and coupling.

  • What is the problem with defining service boundaries based on nouns rather than verbs, as discussed in the script?

    -Defining service boundaries based on nouns rather than verbs can lead to logical and physical coupling, where services need to communicate across boundaries to perform actions, thus creating a complex and interdependent system that is difficult to maintain.

  • What is the final advice given by Brander regarding the techniques he has discussed?

    -Brander's final advice is not to apply the techniques he has discussed, as they are meant to illustrate common pitfalls in system design. Instead, developers should strive to avoid these mistakes and aim for good system design practices.

Outlines

plate

このセクションは有料ユーザー限定です。 アクセスするには、アップグレードをお願いします。

今すぐアップグレード

Mindmap

plate

このセクションは有料ユーザー限定です。 アクセスするには、アップグレードをお願いします。

今すぐアップグレード

Keywords

plate

このセクションは有料ユーザー限定です。 アクセスするには、アップグレードをお願いします。

今すぐアップグレード

Highlights

plate

このセクションは有料ユーザー限定です。 アクセスするには、アップグレードをお願いします。

今すぐアップグレード

Transcripts

plate

このセクションは有料ユーザー限定です。 アクセスするには、アップグレードをお願いします。

今すぐアップグレード
Rate This

5.0 / 5 (0 votes)

関連タグ
MicroservicesSystem DesignSoftware ArchitectureDeveloper HumorBig Bang RewriteCQRSEvent SourcingDDDTech TalkIndustry Satire
英語で要約が必要ですか?