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.

Microservices – Please, Don’t (2016)

136 pointsby s4iover 2 years ago

21 comments

preommrover 2 years ago
My crazy advice: Build a monolith as microservices.<p>By which I mean focus on Domain Driven Development, focus strongly on modularity even when, and this is the key part, it&#x27;s not required because it&#x27;s in a monolith.<p>There are a great deal of advantages to microservices like teams being able to focus on a subset that can still be accomplished with a well designed monolith. While still avoiding the biggest headaches with microservices like managing a crazy network of deployments, across multiple environments where teams don&#x27;t have the neccessary discipline to communicate.<p>If at a certain point scalability does become a big enough issue, then it&#x27;s much more manageable to segment what&#x27;s needed (and even transition back if needed). It still might take months, but the quality of the transition is much higher.
评论 #32803998 未加载
评论 #32803044 未加载
评论 #32804247 未加载
评论 #32804523 未加载
评论 #32803201 未加载
评论 #32803481 未加载
评论 #32804128 未加载
评论 #32804552 未加载
评论 #32804524 未加载
评论 #32804149 未加载
评论 #32807420 未加载
userbinatorover 2 years ago
A lot of these programming fads seem to come and go over the years. I&#x27;ve witnessed the same cycle with OOP, then FP. What a lot of people don&#x27;t seem to realise is that by trying to split up a system into more smaller pieces in an attempt to decrease complexity, it&#x27;s often the case that you end up with even more complexity, just hidden in the interactions between the pieces.
评论 #32802942 未加载
评论 #32802760 未加载
评论 #32803027 未加载
评论 #32803129 未加载
评论 #32802766 未加载
评论 #32807647 未加载
CHY872over 2 years ago
There are many excellent problem solving techniques in software engineering. Taken as religion, to extremes, most of these will lead the zealot to destruction. Microservices have their place, as do monoliths.<p>The author&#x27;s most valuable point is roughly &#x27;don&#x27;t believe the hype&#x27; - and that&#x27;s timeless. On the specifics, they&#x27;re certainly right on each point, but they missed the (imo main) one of &#x27;by forcing a conceptual boundary between different pieces of the application, one can build true silos around competences and so scale their org more effectively&#x27;. Put simply, a 200 person monolith will usually feel like it has 200 people working on it. That same org split into 5 groups of 40 can be more nimble. In some cases this is due to infra (&#x27;we need to get off Java 8&#x27; is easier if the software can be run in 5 pieces). In some cases this is due to problem scope (less intertwining of concepts possible).
评论 #32803435 未加载
yonixwover 2 years ago
&gt; Fallacy #5: Better for Scalability<p>&gt; [The assumption: only by - ] .. packaging your services as discrete units .. [you can] via .. Docker .. [achieve] horizontal scalability.<p>&gt; However, it’s incorrect ... [to assume it can] only .. [with a] microservice.<p>Interesting, how monolith can do the same?<p>&gt; You can create logical clusters of your monolith<p>&gt; which only handle a certain subset of your traffic.<p>Oh... so MS... but with extra steps. lol. not to mention we usually care about the DB scale also, which is harder to scale as a monolith with segmented traffic.
评论 #32802894 未加载
评论 #32802884 未加载
wjosseyover 2 years ago
Sean Kelly (aka Stabby), is one of the most talented engineers I’ve ever worked with, and is someone who understands the challenges and pitfalls of architecture ahead of his time, as this article highlights so well. To this day, I try to channel Sean’s approaches to design, coding, and architecture, in my own work.<p>Sean is a treasure in the Boston and Golang community, and folks should seek out his wisdom and guidance.
brad0over 2 years ago
I reacted to this headline quite negatively. Reading the article, it’s actually quite reasonable. It’s trying to cut through all the incorrect reasons microservices&#x2F;service oriented architecture is adopted. Kudos to that!<p>IMO service oriented architectures should be adopted when your engineering organisation has gotten too large to manage a monolith.<p>The service interface generally can’t be modified after it’s available. You can do the same with a monolith but it’s harder to enforce.
评论 #32804505 未加载
dvfjsdhgfvover 2 years ago
This is part of the problem: people say &quot;do&quot; or &quot;don&#x27;t&quot; or &quot;considered harmful&quot; and suddenly this becomes a fashion everybody seems to follow no matter what. I saw the same with OOP, at some point it was almost a heresy to say there are many cases when OO design is inefficient or problematic. You would be labelled as uneducated or ignorant. For the same reason I&#x27;d never use a goto at work even though I know it has some limited valid uses. Etc. etc.<p>One would think that by know everybody understood that each technology has its own advantages and limitations and it makes zero sense to follow current trends but rather to examine the project well and use the tech that fits best, regardless what current &quot;evangelists&quot; say.
revskillover 2 years ago
The issue with these articles, is, they assumed, bad architect divided wrong domains into &quot;wrong microservices&quot;, then concluded, &quot;microservice&quot; is bad strategy.<p>Step 1: Understand the domain first.<p>Step 2: Use microservice for each domain.<p>If you failed at step 1, step 2 is wrong.<p>Monothlich architecture just &quot;skips&quot; step 1, and use one big fat service for all.
评论 #32803035 未加载
评论 #32803300 未加载
评论 #32803200 未加载
fibonaccover 2 years ago
I would recommend just using SAM or Chalice for MS on AWS and layering on Step Functions&#x2F;Fargate&#x2F;ECS Anywhere for hybrid setups if you are not using Kubernetes. The only difference is that you are coupled to AWS but if you are already have been using AWS for everything else, its very natural and easy to just learn a new product and integrate it to your existing infra setup on AWS.<p>CDK is also another interesting tool in that you can create classes that handles existing series of scaffolding and automation and it feels naturally code like but drift detection still requires improvement vs Terraform&#x27;s.<p>If you work for a large company where they have mandated Kubernetes then obviously its gonna be difficult but I am seeing a trend where companies are starting to &quot;hedge&quot; their bets as K8 projects take far longer to get to market and requires more experts to keep it going so I&#x27;m half heartedly learning Kubernetes, especially on the back of my mind the existing AWS solutions offer far quicker time to market and accomplishes the same thing.
oneplaneover 2 years ago
My advice: there is no universal services advice, therefore, don&#x27;t adopt (or un-adopt) things just because someone wrote about it. At the same time: don&#x27;t ignore pain, regardless if it&#x27;s because you&#x27;re too big, too small, too segregated or too monolithical.
dangover 2 years ago
Related:<p><i>Microservices? Please Don&#x27;t</i> - <a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=13167188" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=13167188</a> - Dec 2016 (122 comments)<p><i>Microservices – Please, don’t</i> - <a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=12572859" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=12572859</a> - Sept 2016 (93 comments)<p><i>Microservices</i> - <a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=12508655" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=12508655</a> - Sept 2016 (146 comments)
Noumenon72over 2 years ago
I spent years reading on here about how microservices are bad, but I don&#x27;t understand how you can avoid them when everything has to be in a container network to run. Airflow workers, containers that wrap GPL licensed code, little FastAPI interfaces to Bokeh functions, a customized Keycloak. Everything has its own dependencies and deploy process. We have like eight developers and seventeen git repos and I have no idea how to keep it from getting worse.
atomflunderover 2 years ago
Interestingly, I think that almost all of the downsides listed in the article and in the comments go away if you use a good framework for creating microservices (example for this: [0]):<p>No internal glue code, no overhead by writing network interfaces, no slow HTTP calls (faster gRPC instead), no manual handling of asynchronous tasks.<p>[0]: <a href="https:&#x2F;&#x2F;github.com&#x2F;jina-ai&#x2F;jina" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;jina-ai&#x2F;jina</a>
ameliusover 2 years ago
&gt; Microservices – Please, Don’t<p>Sadly, most OSes, Linux included, are built as a bunch of microservices. Systemd is effectively a management system for microservices.
TrianguloYover 2 years ago
Moved from a monolith to a microservices project. The main and almost only benefit (and the reason I asked to move) is that startup time is now practically non-existent (from 8-10 minutes to 30-40 seconds). This allows for faster testing and iterative-programming approach, which is the type of programming I do.
wintorezover 2 years ago
Also, micro-frontends
bedersover 2 years ago
Approaches like Polylith allow you to delay any decision on how or if to split up your services until you are ready. In the meantime you can gradually stake out your boundaries by defining suitable interfaces.
jschrfover 2 years ago
Every time the monolith&#x2F;microservices debate comes up, there&#x27;s a git submodule fan out there (somewhere?) with a single tear rolling down their face.
lr4444lrover 2 years ago
Gotta keep the &quot;devops&quot; teams employed, though!
hsuduebc2over 2 years ago
I love how these paradigmas change every two years.
tacitusarcover 2 years ago
I find the hackernews obsession with bashing micro services tiresome. We get it, your organization didn’t need the scale&#x2F;had a relatively simple problem&#x2F;couldn’t solve bad code by doing microservices.<p>Sometimes it’s the wrong call. Sometimes it’s the right one. It’s not a panacea, obviously. Can’t we just use our expertise and judgement to determine the correct architecture? There are always trade-offs. Our job is to rigorously evaluate them and make a good decision, not blindly follow or dismiss any particular implementation.
评论 #32803142 未加载