Consistency, Coupling, and Complexity at the Edge
Cassini image of Saturn from within its shadow taken July 19, 2013 courtesy of NASA.

Consistency, Coupling, and Complexity at the Edge

There has been a lot of stories published over the past decade on the subject of breaking monoliths up into microservices. Not all of these stories have happy endings, however. If you break up a monolith into microservices that all have to be updated at the same time you release new features, then you didn't get to realize much of the benefits for all of that effort. Microservices that are overly dependent on each other are said to be tightly coupled.

If the internal parts of the monolith all depend on each other and then you break it up into microservices, then how can you avoid the resulting microservices from also being tightly coupled? The answer lies in how you break up that monolith and what each microservice is responsible for.

These microservices almost always publish APIs. For the longest time, API design was bespoke with little to no emphasis on consistency. This lack of consistent design made it difficult to learn and use these APIs. How would you like it if, when driving a car, you had to learn a completely different set of rules for every separate make and model? That difficulty started to be addressed with the introduction of RESTful APIs which gave us a sort of rules-of-the-road for how to call APIs no matter what they did or who provided them. Recently, a new pattern of consistent API design surfaced called GraphQL. Like REST, GraphQL rules are also consistent but not with REST. Which type of API design should you chose?

Another recent trend is the introduction of Backends for Frontends which are client type specific microservices that provide an orchestrating and simplifying facade layer over the more data focused microservices. Since BfFs reside between the client and the other backend services, they are typically also known as edge services. They run in the Virtual Private Cloud but only just so. Another type of edge service is known as the API gateway.

If you are interested in how REST, GraphQL, and edge services can help you realize the full benefits of breaking up your monolithic application into microservices, then you will be interested in this article that I wrote entitled Consistency, Coupling, and Complexity at the Edge. This article also covers the different layers in a typical modern enterprise application and what types of features or requirements are best implemented in which of those layers in order to lower complexity and raise feature velocity.

要查看或添加评论,请登录

Glenn Engstrand的更多文章

  • Code Migration Using LLMs

    Code Migration Using LLMs

    Last year, I evaluated how effective Large Language Models were in writing unit tests. This year, I decided to evaluate…

    2 条评论
  • A Comparative Analysis of C# and Kotlin

    A Comparative Analysis of C# and Kotlin

    When it comes to developing high-performance backend microservices, choosing the right programming language and…

  • Experimenting with LLMs for Developer Productivity

    Experimenting with LLMs for Developer Productivity

    LLMs (or Large Language Models) is the latest craze in the world of Artificial Intelligence. It is getting a lot of…

  • Top Ten Frontend Architecture Trends of 2023

    Top Ten Frontend Architecture Trends of 2023

    Have you ever run across any of the following buzzwords and wondered how it all fits within the larger picture of…

  • Devops Renaissance

    Devops Renaissance

    We live in a time of renaissance for what is now called devops maturity. It has never been easier to develop and deploy…

  • GraphQL vs REST

    GraphQL vs REST

    GraphQL was originally released by Facebook in 2015. Since then, it has steadily increased in popularity to the point…

    4 条评论
  • Writing Microservices in Go

    Writing Microservices in Go

    Go is a general purpose programming language from Google. Rob Pike, one of Go’s inventors, gave a presentation about Go…

  • What Does a Software Architect Do?

    What Does a Software Architect Do?

    You can learn a lot about the culture of a technology company by examining what they expect from their software…

  • Spring Boot vs Dropwizard

    Spring Boot vs Dropwizard

    By just about every conceivable accounting, Java is the most popular server side programming language for enterprise…

  • AI vs IA

    AI vs IA

    Artificial Intelligence has become a mainstream topic and an industry with a market size reported to be in the…

社区洞察

其他会员也浏览了