TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Avoiding the Distributed Monolith

132 pointsby jetheredgeabout 7 years ago

7 comments

dkostonabout 7 years ago
Not sure why a contract development shop is putting stuff like this on their blog. Perhaps they have small clients asking for microservices when unnecessary?<p>Agree that this headline is presumptive and so is the article. Not every piece of engineering is a &quot;slap it together in 3 weeks&quot; build and many systems are designed with independent parts that use different technologies and scale at different rates.<p>I think what the author was trying to say is: &quot;If you don&#x27;t have enough experience to derive an architecture that isn&#x27;t just some battle of buzz words or copying off blogs posts, you&#x27;re in for a crude awakening when you have to maintain, scale, and refactor your work. Also, creating and maintaining a continuous delivery architecture with tons of moving parts is a lot of work&quot;.<p>At large companies (and small) devops, engineers, architects, CTOs, and many other players collaborate to develop an architecture which evolves over time and includes legacy systems, greenfield projects, duct tape, off-the-shelf bits, vendor-specific bits, open source bits, and other concerns that all have to work together. These organizations already have massive teams (or small and really good teams) taking care of making sure everything works together.<p>If you have a small team, little funding, and&#x2F;or little experience you are probably getting in over your head trying to architect and orchestrate tons of moving pieces. It really depends on what you are building, your budget, and your team as to how you should build. Some industries and products require complexity, scale, and proper function from the beginning while others are accepting of bugs, scaling issues, and long delays.<p>TLDR: There&#x27;s not a simple playbook that defines how everything should be engineered. Also, don&#x27;t read some poorly written blog post which provides zero insight on the complexities of approaching an engineering challenge and decide to choose X or Y approach.
评论 #16805464 未加载
toss1about 7 years ago
TFA has some excellent lists to test whether you&#x27;re just building a distributed monolith or actual separate microservices.<p>The key that was not mentioned was the interfaces. In my experience, the key is to carefully define the functions and scope of each separate component, then do a lot of up-front work building a clean interface for sending data and&#x2F;or messages between the components.<p>Once this is done, the team on Componnt A should be able to make, rollout, and&#x2F;or move to different hardware, and&#x2F;or add&#x2F;subtract hardware at will without the team on component B even noticing. All teams should be able to keep their paws 100% out of each others&#x27; code and data structures.<p>Then, you have independent components that can actually be immediately scaled to meet unexpected load changes by throwing HW at them, thus buying time to streamline the code. You also have a structure that you can upgrade and maintain with much greater freedom.<p>Without the clean and stable interfaces, he&#x27;s right, you have only a distributed monolith.<p>I&#x27;d recommend starting the first version with a quick-to-build near-monolith throw-away, get some experience with the actual data flow, then decide on the actual components and interfaces.
评论 #16807550 未加载
评论 #16811890 未加载
sebringjabout 7 years ago
Just noting this as I have some successful use cases of microservices as it may help others. What I mean by successful is I have reused them in many projects without having to modify them for each project, meaning they stood alone with only needing some config items to add one or more clients.<p>1) Authentication - JWT and OAuth provider related, can be used with multiple clients or installed per client 2) Pre signing of S3 uploads (very tiny file to do this one) 3) Ecommerce api w &#x2F; shipping using fedex and stripe 4) Plugable CMS with JS dropped on a page used for UI and auth and S3 used as content store with an API sitting in between<p>I guess some of them could be considered just an API? But if you can reuse it generally and the scope is fairly narrow, that is more of what a microservice should be. There is also the tradeoff where you may be thinking if this is so tiny, why even do it?...which is probably a good thing to consider before adding more complexity.
评论 #16805344 未加载
评论 #16805384 未加载
Clubberabout 7 years ago
But Microservices means I&#x27;m good because Agile in the Cloud.
评论 #16805153 未加载
blackflame7000about 7 years ago
The growth of microservices is the result of the growth of working remotely. If you have a large organization in one place most days out of the week its easy to coordinate proprietary interfaces. With the growth of Agile development and the ability to have independent groups working on manageable subtasks is natural. Microservices are simply an application of Divide and Conqure at the macroscopic level.
ukuleleabout 7 years ago
No, truly I am.
评论 #16804962 未加载
评论 #16805131 未加载
KyleGalvinabout 7 years ago
The quote at the end “don’t even consider microservices unless you have a system that’s too complex to manage as a monolith.” causes me to laugh.<p>I have never fundamentally disagreed with a well-known domain expert as much as I have with Martin Fowler, and I have had a fairly successful career despite my attitude of &quot;do things the way M.F. wouldn&#x27;t&quot;.<p>On one hand I find it frustrating how people take his ideas as gospel. On the other hand I&#x27;m humbled to think there isn&#x27;t necessarily &quot;one right way&quot; and other schools of thought can find success.
评论 #16805962 未加载