TE
TechEcho
StartseiteTop 24hNeuesteBesteFragenZeigenJobs
GitHubTwitter
Startseite

TechEcho

Eine mit Next.js erstellte Technologie-Nachrichtenplattform, die globale Technologienachrichten und Diskussionen bietet.

GitHubTwitter

Startseite

StartseiteNeuesteBesteFragenZeigenJobs

Ressourcen

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. Alle Rechte vorbehalten.

Microservices are a tax your startup probably can't afford

260 Punktevon nexo-v1vor etwa 9 Stunden

54 comments

asimvor etwa 7 Stunden
&gt; Microservices only pay off when you have real scaling bottlenecks, large teams, or independently evolving domains. Before that? You’re paying the price without getting the benefit: duplicated infra, fragile local setups, and slow iteration. For example, Segment eventually reversed their microservice split for this exact reason — too much cost, not enough value.<p>Basically this. Microservices are a design pattern for organisations as opposed to technology. Sounds wrong but the technology change should follow the organisational breakout into multiple teams delivering separate products or features. And this isn&#x27;t a first step. You&#x27;ll have a monolith, it might break out into frontend, backend and a separate service for async background jobs e.g pdf creation is often a background task because of how long it takes to produce. Anyway after that you might end up with more services and then you have this sprawl of things where you start to think about standardisation, architecture patterns, etc. Before that it&#x27;s a death sentence and if your business survives I&#x27;d argue it didn&#x27;t because of microservices but inspite of them. The dev time lost in the beginning, say sub 200 engineers is significant.
评论 #43927220 未加载
评论 #43928164 未加载
评论 #43927289 未加载
评论 #43928182 未加载
评论 #43930552 未加载
评论 #43927335 未加载
评论 #43928399 未加载
评论 #43929252 未加载
评论 #43928459 未加载
评论 #43927485 未加载
mindcrashvor etwa 6 Stunden
I know about a org with ~2-3 devs who decided microservices would be cool. I warned not to go that way because they would surely face delivery and other issues which they wouldn&#x27;t have when building the solution based on a architecture archetype which could be a better fit for the team and solution, which I evidently decided should be a modular monolith. (the codebase at that point was already a monolith, in fact, but had a large amount of tech debt due to the breakneck speed in which features needed to be released)<p>They ignored me and went the microservices way.<p>Guess what?<p>2 years later the rebuild of the old codebase was done.<p>3 years later and they are still fighting delivery and other issues they would never have had if they didn&#x27;t ignore me and just went for the &quot;lame&quot; monolith.<p>Moral of this short story: I can personally say everything this article says is pretty much true.
评论 #43927414 未加载
评论 #43927433 未加载
评论 #43927579 未加载
评论 #43927847 未加载
评论 #43927597 未加载
评论 #43927861 未加载
jihadjihadvor etwa 7 Stunden
Microservices [0]<p>&gt; grug wonder why big brain take hardest problem, factoring system correctly, and introduce network call too<p>&gt; seem very confusing to grug<p>0: <a href="https:&#x2F;&#x2F;grugbrain.dev&#x2F;#grug-on-microservices" rel="nofollow">https:&#x2F;&#x2F;grugbrain.dev&#x2F;#grug-on-microservices</a>
评论 #43927253 未加载
评论 #43927810 未加载
评论 #43927443 未加载
didipvor etwa 6 Stunden
Micro services show their benefits in a large organization.<p>It’s a tool to solve people issues. They can remove bureaucratic hurdles and allow devs to somewhat be autonomous again.<p>In a small startup, you really don’t gain much from them. Unless if the domain really necessitates them, eg. the company uses Elixir but all of the AI toolings are written in Python&#x2F;Go.
评论 #43927897 未加载
评论 #43928003 未加载
评论 #43927998 未加载
jerfvor etwa 6 Stunden
Microservices are the software architecture analog to Conway&#x27;s Law. You can&#x27;t help but introduce some sort of significant architecture boundary at the boundary between teams, and while that doesn&#x27;t have to be &quot;microservices&quot; that&#x27;s certainly a very attractive option. But on the flip side, introducing those heavier-weight boundaries on to yourself, internal to a team, can be very counterproductive.<p>I can&#x27;t prove this scales up forever but I&#x27;ve been very happy with making sure that things are carefully abstracted out with dependency injection for anything that makes sense for it to be dependency-injected, and using module boundaries internally to a system as something very analogous to microservices, except that it doesn&#x27;t go over a network. This goes especially well with using actors, even in a non-actor-focused language, because actors almost automatically have that clean boundary between them and the rest of the world, traversed by a clean concept of messages. This is sometimes called the Modular Monolith.<p>Done properly, should you later realize something needs to be a microservice, you get clean borders to cut along and clean places to deal with the consquences of turning it into a network service. It isn&#x27;t perfect but it&#x27;s a rather nice cost&#x2F;benefit tradeoff. I&#x27;ve cut out, oh, 3 or 4 microservices out of monoliths in the past 5 years or so. It&#x27;s not something I do everyday, and I&#x27;m not optimizing my modular monoliths for that purpose... I do modular monoliths because it is also just a good design methodology... but it is a nice bonus to harvest sometimes. It&#x27;s one of the rare times when someone comes and quite reasonably expects that extracting something into a shared service will be months and you can be like &quot;would you like a functioning prototype of it next week&quot;?
评论 #43928213 未加载
xcskier56vor etwa 6 Stunden
Microservices make sense from a technical perspective in startups if:<p>- You need to use a different language than your core application. E.g. we build Rails apps but need to use R for a data pipeline and 100% could not build this in ruby.<p>- You have 1 service that has vastly different scaling requirements that the rest of your stack. Then splitting that part off into it&#x27;s own service can help<p>- You have a portion of your data set that has vastly different security and lifecycle requirements. E.g. you&#x27;re getting healthcare data from medicare.<p>Outside of those, and maybe a few other edge cases, I see basically no reason why a small startup should ever choose microservices... you&#x27;re just setting yourself up for more work for little to no gain.
评论 #43927924 未加载
评论 #43928068 未加载
评论 #43928124 未加载
mikeocoolvor etwa 5 Stunden
I pretty much agree with everything in this article — it’s next to impossible service boundaries right in a startup environment.<p>Though, if you’re on a small team and really want to use micro services two places I have found it to be somewhat advantageous:<p>* wrapping particularly bad third party APIs or integrations — you’re already forced into having a network boundary, so adding a service at the boundary doesn’t increase complexity all that much. Basically this lets you isolate the big chunk of crappy code involved in integrating with the 3rd party, and giving it a nice API your monolith can interact with.<p>* wrapping particularly hairy dependencies — if you’ve got a dependency with a complex build process that slows down deployments or dev setup — or the dependency relies on something that conflicts with another dependency — wrapping it in its own service and giving it a nice API can be a good way to simplify things for the monolith.
roguecodervor etwa 6 Stunden
You only need microservices for massive scale or to enable micromanagement of teams, but that doesn&#x27;t mean you have to give up on clear module boundaries.<p>You can get the architectural benefits of microservices by using message-passing-style Object-Oriented programming. It requires the discipline not to reach directly into the database, but assuming you just Don&#x27;t Do That a well-encapsulated &quot;object&quot; is a microservice that runs in the same virtual machine as the other mircoservices.<p>Java is the most mainstream language that supports that: whenever you find yourself reaching for a microservice, instead create a module, namespace the database tables, and then expose only the smallest possible public interface to other modules. You can test them in isolation, monitor the connections between them, and bonus: it is trivial to deploy changes across multiple &quot;services&quot; at the same time.
评论 #43927704 未加载
siliconc0wvor etwa 6 Stunden
The biggest wins for microservices aren&#x27;t really technical, they&#x27;re organizational. They force you to break a problem down and allow each team to own a piece of it, including end to end delivery. This allows specialization of labor which is a key driver of productivity - including an ability to experiment and innovate. Every change is incremental by default, and well-documented external APIs are the only way to talk to other domains- no shared databases, filesystems, or internal APIs. It&#x27;s not free and definitely takes some discipline and tooling to enforce shared standards (every service should have metrics, logging, tracing, discovery, testing, CI&#x2F;CD, etc) but you&#x27;d need to build that muscle with a monolith as well.
评论 #43928504 未加载
评论 #43927917 未加载
hoshvor etwa 4 Stunden
One of the advantages of the BEAM &#x2F; OTP ecosystem (Erlang, Elixir, and friends) is that you can construct &quot;microservices&quot; and think through what that means, all within a monolith. When it comes time to break it out, you can.<p>&gt; Microservices only pay off when you have real scaling bottlenecks, large teams, or independently evolving domains.<p>The BEAM language platform can cover scaling bottlenecks (at least within certain ranges of scale) and independently evolving domains, but has many of the advantages of working with a monolith when the team is small and searching for product-fit.<p>Like anything there are tradeoffs. The main one being that you&#x27;d have to learn how to write code with immutable data structures, and you have to be more thoughtful on how concurrent processes talk to each other, and what kind of failure modes you want to design into things. Many teams don&#x27;t know how to hire for more Erlang or Elixir developers.
no_wizardvor etwa 7 Stunden
They have their place. In my experience, a good rule of thumb[0] is if there are actual benefits from being a standalone service.<p>For example, we have a authentication microservice at work. It makes sense that it lives outside of the main application, because its used in a multiple different contexts and the service boundary allows for it to be more responsive to changes, upgrades and security fixes than having it be part of the main app, and it deploys differently than the application. It also adds enough intentional friction that we don&#x27;t accidentally put logic where it doesn&#x27;t belong as part of the user authentication process. It has helped keep the code focused on only primary concerns.<p>That said, you can&#x27;t apply any of these patterns blindly, as is so often the case. A good technical leader should push back when the benefits don&#x27;t actually exist. The real issue is lack of experience making technical decisions on merits.<p>This includes high level executive leaders in the organization. At a startup especially, they are still often involved in many technical decisions. You&#x27;d be surprised (well maybe not!) how the highest leadership in a company at a startup will mandate things like using microservices and refuse to listen to anything running counter to such things.<p>[0]: <a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Rule_of_thumb" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Rule_of_thumb</a>
评论 #43927347 未加载
评论 #43927406 未加载
dkarlvor etwa 6 Stunden
My current take on microservices is that people pay serious attention to modularity and API design in the context of microservices. They work hard to break down the problem properly and design good interfaces between parts of the system.<p>In monoliths, they generally don&#x27;t.<p>There&#x27;s no logical reason why you couldn&#x27;t pay as much attention to decomposition and API design between the modules of a monolith. You could have the benefit of good design without all the architectural and operational challenges of microservices. Maybe some people succeed at this. But in practice I&#x27;ve never seen it. I&#x27;ve seen people handle the challenges of microservices successfully, and I&#x27;ve never seen a monolith that wasn&#x27;t an incoherent mess internally.<p>This is just my experience, one person&#x27;s observations offered for what they&#x27;re worth.<p>In practice, in the context of microservices, I&#x27;ve seen an entire team work together for two weeks to break down a problem coherently, holding off on starting implementation because they knew the design wasn&#x27;t good enough and it was worth the time to get it right. I&#x27;ve seen people escalate issues with others&#x27; designs because they saw a risk and wanted to address it.<p>In the context of monoliths, I&#x27;ve never seen someone delay implementation so much as a day because they knew the design was half-baked. I rarely see anyone ask for design feedback or design anything as a team until they&#x27;ve screwed something up so badly that it can&#x27;t be avoided. People sometimes make major design decisions in a split second while coding. What kind of self-respecting senior developer would spend a week getting input on an internal code API before starting to implement? People sometimes aren&#x27;t even aware that the code they wrote that morning has implications for code that will be written later.<p>Theoretically this is okay because refactoring is easy in a monolith. Right? ... It is, right?<p>I&#x27;m basically sold on microservices because I know how to get developers to take design seriously when it&#x27;s a bunch of services talking to each other via REST or grpc, and I don&#x27;t know how to get them to take the internal design of a monolith seriously.
评论 #43928497 未加载
评论 #43928396 未加载
bitcuriousvor etwa 5 Stunden
I&#x27;ll go against the grain and say that microservices have advantages for small dev teams embedded in non-tech orgs.<p>1. You get to minimize devops&#x2F;security&#x2F;admin work. Really a consequences of using serverless tooling, but you land on a something like a microservices architecture if you do.<p>2. You get can break out work temporally. This is the big one - when you&#x27;re a small team supporting multiple products, you often don&#x27;t have continuity of work. You have one project for a few months, completely unrelated product for another few months. Microservice architectures are easier to build and maintain in that environment.
评论 #43928578 未加载
评论 #43928253 未加载
4ndrewlvor etwa 3 Stunden
The article almost gets there, but the key is this:<p>Microservice architecture is a deployment strategy.<p>If you have a problem with deployments (eg large numbers of teams, perhaps some external suppliers running at different cadences, or with different tech stacks) the microservices are a fine solution to this.
Ensorceledvor etwa 6 Stunden
Years ago I attended a local meetup where the CTO of a local startup gave a presentation on their, mostly successful, microservice rollout.<p>In the Q&amp;A after ward, another local startup CTO asked about problems their company was having with their microservices.<p>The successful CTO asked two questions: &quot;How big is your microservices tooling team?&quot; and &quot;How big is your Dev Ops Team?&quot;<p>His point was, if you&#x27;re development team is not big enough to afford dedicated teams to tooling and dev ops, it&#x27;s not big enough to afford microservices.
评论 #43928154 未加载
addisonjvor etwa 5 Stunden
I hope this is more common knowledge these days... but this is good framing and makes really clear the costs.<p>What this article doesn&#x27;t cover... and where a good chunk of my career has been, is when companies are driven to break out into services, which might be due to scale, team size, or becoming a multi-product company. Whatever the reason, it can kill velocity during the transition. In my experience, if this is being done to support becoming multi-product, this loss in velocity comes at the worst time and can sink even very component teams.<p>As an industry, the gap between what makes sense for startups and what makes sense for scale <i>can</i> be a huge chasm. To be clear, I don&#x27;t think it means you should invest in micro-services on the off-chance you need to hit scale (which I think is where <i>many</i> convince themselves of) nor does it mean that you should always head to microservices even when you hit those forcing functions (scaling monoliths is possible!)<p>That said, modularity, flexibility, and easy evolution are super important as companies grow and I do really think the next generation of tools and platforms will be benefit to better suiting themselves to evolution and flexibility than they do today. One idea I have thought for some time is platforms that &quot;feel&quot; like a monolith, but are 1) more concrete in building firmer interfaces between subsystems and 2) have flexibility in how calls happen between these interfaces (imagine being able to run a subsystem embedded or transparently to move calls over an RPC interface). Certainly that is &quot;possible&quot; with well structured code in platforms today... but it isn&#x27;t always natural.<p>I am not sure the answer, but I really hope the next 10 years of my career has less massive chasms crossed via huge multi-year painful efforts and more cautious, careful evolution enabled by well considered tool and platforms.
bob1029vor etwa 6 Stunden
Monolith really is the best path and I question if you couldn&#x27;t make it work in ~100% of cases if you genuinely tried to.<p>One should consider if they can dive even deeper into the monolithic rabbit hole. For example, do you <i>really</i> need an external hosted SQL provider, or could you embed SQLite?<p>From a latency &amp; physics perspective, monolith wins every time. Making a call across the network might as well take an eternity by comparison to a local method. Arguments can be made that the latency can be &quot;hidden&quot;, but this is generally only true for the more trivial kinds of problems. For many practical businesses, you are typically in a strictly serialized domain which means that you are going to be forced to endure every microsecond of delay. Assuming that a transaction was not in conflict doesn&#x27;t work at the bank. You need to be sure every time before the caller is allowed to proceed.<p>The tighter the latency domain, the less you need to think about performance. Things can be so fast by default that you can actually focus on building what the customer is paying for. You stop thinking about the sizes of VMs, who&#x27;s got the cheapest compute per dollar and other distracting crap.
评论 #43928266 未加载
评论 #43928461 未加载
rglovervor etwa 4 Stunden
The best architecture approach I&#x27;ve ever found is:<p>1. Start with a monolith<p>2. If necessary, set up a job server that can be vertically&#x2F;horizontally scaled and then give it a private API, or, give it access to the same database as the monolith.<p>For an overwhelming number of situations, this works great. You separate the heavy compute workloads from the customer-facing CRUD app and can scale the two independent of one another.<p>The whole microservices thing always seemed like an attempt by cloud providers to just trick you into using their services. The first time I ever played with serverless&#x2F;lambda, I had a visceral reaction to the deployment process and knew it would end in tragedy.
PathOfEclipsevor etwa 3 Stunden
I don&#x27;t know what the &quot;right&quot; answer is, but I worked at a company that built a fairly unwieldy monolith that was dragging everyone down as it matured into a mid-sized company. And, once you&#x27;re successfully used at scale it becomes much more difficult to make architectural changes. Is there a middle ground? Is there a way to build a monolith while making it easier to factor apart services earlier rather than later? I don&#x27;t know, and I don&#x27;t think the article addresses that either.<p>The article does mention &quot;invest in modularity&quot;, but to be honest, if you&#x27;re in frantic startup mode dumping code into a monolith, you&#x27;re probably not caring about modularity either.<p>Lastly, I would imagine it&#x27;s easier to start with microservices, or multiple mid-sized services if you&#x27;re relying on advanced cloud infra like AWS, but that has its own costs and downsides.
gleennvor etwa 6 Stunden
Has anyone tried something like Polylith which lets you build all your code like normal functions for local dev and testing and then seemlessly pull out parts to network services as needed?<p><a href="https:&#x2F;&#x2F;github.com&#x2F;polyfy&#x2F;polylith">https:&#x2F;&#x2F;github.com&#x2F;polyfy&#x2F;polylith</a>
alaitheavor etwa 5 Stunden
Pretty sure I saw someone say this in the past, but microservices might as well have been a psyop pushed out by larger, successful startups onto smaller, earlier-stage companies and projects. I say &quot;might as well&quot; because I don&#x27;t think there&#x27;s any evidence for it, but the number of companies and projects that have glommed onto the microservices idea, only to find their development velocity grind to a halt, has to be in the hundreds at least (thousands?). Whether the consequences were intended or not, microservices have been a gift on the competitive landscape for the startups that pushed microservices in the first place.
karmakazevor etwa 5 Stunden
I&#x27;ve worked in monoliths done poorly and well, as well as bad and good implementations of microservices (even if done for the wrong reasons). The part of this post on &#x27;if you go microservices&#x27; doesn&#x27;t state things strongly enough. My takeaways comparing what worked vs what didn&#x27;t:<p>- Use one-way async messaging. Making a UserService that everything else uses synchronously via RPC&#x2F;REST&#x2F;whatever is a very bad idea and an even worse time. You&#x27;ll struggle for even 2-nines of overall system uptime (because they don&#x27;t average, they multiply down).<p>- &#x27;Bounded context&#x27; is the most important aspect of microservices to get right. Don&#x27;t make &lt;noun&gt;-services. You can make a UserManagementService that has canonical information about users. That information is propagated to other services which can work independently each using the eventually consistent information they need about users.<p>There&#x27;s other dumb things that people do like sharing a database instance for multiple &#x27;micro&#x27;-services and not even having separately accessible schemas. In the end if done well, each microservice is small and pleasant to work on, with coordination between them being the challenging part both technically and humanly.
parpfishvor etwa 6 Stunden
I’ve read a lot of pros&#x2F;cons about micro services over the last decade, but don’t have a clear definition for what qualifies.<p>My current job insists that they have a “simple monolith” because all the code is in a single repo. But that repo has code to build dozens of python packages and docker containers. Tons of deploy scripts. Different teams&#x2F;employees are isolated to particular parts of the codebase.<p>It <i>feels</i> a lot like microservices, but I don’t know what the defining feature of microservices is supposed to be
评论 #43928084 未加载
johncoltranevor etwa 6 Stunden
In 2016-17, I was involved with a rather large mictoservice-heavy rewrite project tha didn&#x27;t go particularly well. The main reason was that microservices were actually a good fit for the _planned_ organisational structure, but not for the one that was eventually put in place. When you go from 4 vertically integrated independent teams to 2 backend devs, 2 frontend devs, and 1 &quot;devops&quot; without stopping 5 minutes to rethink the architecture, of course shit will happen.
phodgevor etwa 3 Stunden
This article conflates the Monolith|Microservices and Monorepo|Polyrepo dichotomies. Although it is typical to choose Microservices and Polyrepo together or Monolith with Monorepo, it&#x27;s not strictly necessary and the two architectural decisions come with different tradeoffs.<p>For example you may be forced to split out some components into separate services because they require a different technology stack to the monolith, but that doesn&#x27;t strictly require a separate source code repository.
CharlieDigitalvor etwa 5 Stunden
Google had a really great paper on this about 2 years back titled <i>Towards Modern Development of Cloud Applications</i>[0] that talks about how teams often:<p><pre><code> &gt; ... conflate logical boundaries (how code is written) with physical boundaries (how code is deployed) </code></pre> It&#x27;s very easy to read and digest and I think it&#x27;s a great paper that makes the case for building &quot;modular monoliths&quot;.<p>I think many teams do not have a practical guide on how to achieve this. Certainly, Google&#x27;s solution in this case is far too complex for most teams. But many teams can achieve the 5 core benefits that they mentioned with a simpler setup. I wrote a about this in a blog post <i>A Practical Guide to Modular Monoliths with .NET</i>[1] with a GitHub repo showing how to achieve this[2] as well as a video walkthrough[3]<p>This approach has proven (for me) to be easy to implement, package, deploy, and manage and is particularly good for startups with all of the qualities mentioned in the Google paper without much complexity added.<p>[0] <a href="https:&#x2F;&#x2F;dl.acm.org&#x2F;doi&#x2F;pdf&#x2F;10.1145&#x2F;3593856.3595909" rel="nofollow">https:&#x2F;&#x2F;dl.acm.org&#x2F;doi&#x2F;pdf&#x2F;10.1145&#x2F;3593856.3595909</a><p>[1] <a href="https:&#x2F;&#x2F;chrlschn.dev&#x2F;blog&#x2F;2024&#x2F;01&#x2F;a-practical-guide-to-modular-monoliths&#x2F;" rel="nofollow">https:&#x2F;&#x2F;chrlschn.dev&#x2F;blog&#x2F;2024&#x2F;01&#x2F;a-practical-guide-to-modul...</a><p>[2] <a href="https:&#x2F;&#x2F;github.com&#x2F;CharlieDigital&#x2F;dn8-modular-monolith">https:&#x2F;&#x2F;github.com&#x2F;CharlieDigital&#x2F;dn8-modular-monolith</a><p>[3] <a href="https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=VEggfW0A_Oo" rel="nofollow">https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=VEggfW0A_Oo</a>
ngrillyvor etwa 3 Stunden
The team responsible for a single microservice at a Big Tech company is often as large as, or even larger than, the entire engineering team of a startup. The same can be true for the size of the codebase. This is why it often doesn&#x27;t make sense for a startup to introduce microservices.
duxupvor etwa 6 Stunden
I can&#x27;t imagine a small team following ALL the rules of microservices benefiting much at all. It makes no sense.<p>For large orgs where each service has a dedicated team it starts to make sense... but then it becomes clear that microservices are an organizational solution.
metalrainvor etwa 5 Stunden
I think separately deployed services built from same monolithic codebase makes a lot of sense. You get to choose resources per service, but can get the benefits of sharing code&#x2F;tests.
root_axisvor etwa 6 Stunden
The problem is the &quot;micro&quot; part. Service oriented architecture is generally the way to go, but the service boundaries should be defined by engineering constraints, not as arbitrarily small.
评论 #43928028 未加载
Cthulhu_vor etwa 6 Stunden
I&#x27;ve seen microservices get introduced at companies... it never solved a real problem, it was more to scratch a developer&#x27;s itch, or cargo cult ideas. It started to fall apart when they tried to figure out how to get an order service to fetch the prices of a product from the product pricing service, only to realise they need to hold onto the product price at the time of placing the order (it was a high volume &#x2F; short product life cycle type of e-commerce), so uhh.. maybe we should duplicate this product into the order service? And then it would need to end up at a payment or invoicing service, more data duplication. And everything had to go through a central message bus to avoid web-like sprawl.<p>The other one was a microservice architecture in front of the real problem, a Java backend service that hid the real real problem, one or more mainframes. But the consultants got to play in their microservices garden, which was mostly just a REST API in front of a Postgres database that would store blobs of JSON. And of course these microservices would end up needing to talk to each other through REST&#x2F;JSON.<p>I&#x27;ve filed this article in my &quot;microservices beef&quot; bookmarks folder if I ever end up in another company that tries to do microservices. Of course, that industry has since moved on to lambdas, which is microservices on steroids.
vjvjvjvjghvvor etwa 6 Stunden
I always tell people if they can’t handle writing decent libraries they also won’t handle microservices. Especially when a 3 person team cranks out 15 microservices, ideally with different languages.
abhisekvor etwa 6 Stunden
Totally agree. Micro services unnecessarily makes thing complicated for small teams. IMHO it solves the problem of velocity ONLY when a large engineering team is slowed down due to too much release &amp; cross cutting dependencies on a monolith. Although I see people solving with modular monoliths, merge queues and CODEOWNERS effectively.<p>Few cases where microservices makes sense probably when we have a small and well bounded use-case like webhooks management, notifications or may be read scaling on some master dataset
评论 #43927409 未加载
bzmrgonzvor etwa 6 Stunden
I agree, most startups could do with a decent hypervisor plus vps for web visibility, but honestly selfhosting is fine. I&#x27;m surprise no one has built a startup environment in a box of boxes (pfsense&#x2F;truenas&#x2F;proxmox&#x2F;minIO&#x2F;openwrt)&lt;should cover almost any techstack imaginable&gt;, if you want bleeding edge, add microcloud from canonical or incus.
lenerdenatorvor etwa 6 Stunden
You don&#x27;t know what your micro services need to be until you start running into the problems posed by your monolith.
yawnxyzvor etwa 5 Stunden
I&#x27;ve found using Cloudflare Workers really productive, esp. their R2 and Durable Objects bindings. Are these technically &quot;microservices&quot; and should they be avoided if following trad software patterns?<p>Using them makes it easy to build endpoints for things like WhatsApp and other integrations
utmb748vor etwa 5 Stunden
From my experience, microservices were great if there are more devs, organizational advantage over tech.<p>CI&#x2F;CD - infra can be as code, shared across, K8s port-forward for local development, better resource utilization, multiple envs end so on, available tooling, if setup correctly, usually keeps working.<p>Not mentioned plus, usually smaller merge requests, feature can be split and better estimated, less conflicts during work or testing... possibility to share in packages.<p>Also if there are no tests, doesnt matter if its monorepo or MS, you can break easily or spend more time.<p>You should afford tests and documentation, keep working on tech debt.<p>Next common issue I see, too big tech stack cos something is popular.
stevebmarkvor etwa 5 Stunden
&gt; In reality, business logic doesn’t directly map to service boundaries<p>Love this quote, it should be a poster on the wall of any dev who pushes Domain Driven Design on an engineering team.
nottorpvor etwa 5 Stunden
IT is full of cult-like concepts that promise to solve all your problems. Microservices is just one of them.<p>The catch is to keep them all in mind and use them in moderation.<p>Like everything else in life.
sisvevor etwa 5 Stunden
I wish more people would understand that it&#x27;s a big middle between monolith ans microservice ans that it most likely the correct for most situations.<p>Context and nuances
Havocvor etwa 6 Stunden
You can always use microservice like architecture and not slice it too finely ie too micro.<p>Stuff like k8s works fine as docker delivery vehicle
mountainrivervor etwa 6 Stunden
I honestly can’t believe we are still talking about microservices.<p>Just use regular sized services
monero-xmrvor etwa 6 Stunden
My friend briefly worked at a company where every API was a lambda. Each lambda had a git repo. Lambdas would often call into other lambdas. In order to make a feature, it might involve touching 10+ lambdas. They had over 200 lambdas after a year. Total nightmare
评论 #43927760 未加载
评论 #43927594 未加载
goji_berriesvor etwa 6 Stunden
here&#x27;s my take on this issue: <a href="https:&#x2F;&#x2F;www.gojiberries.io&#x2F;building-together-separately-challenges-of-software-development&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.gojiberries.io&#x2F;building-together-separately-chal...</a>
mgaunardvor etwa 6 Stunden
Even worse, I&#x27;ve seen large systems where everything was built as nanoservices.
评论 #43928282 未加载
nicman23vor etwa 5 Stunden
people underestimate how much a single 5 euro vps with a lamp stack can do
demarqvor etwa 6 Stunden
Startups and micro services shouldn’t even be in the same sentence
swisniewskivor etwa 4 Stunden
I see this a lot (&quot;if you are a startup, just ship a monolith&quot;).<p>I think this is the wrong way to frame it. The advice should be &quot;just do the scrappy thing&quot;.<p>This distinction is important. Sometimes, creating a separate service is the scrappy thing to do, sometimes creating a monolith is. Sometimes not creating anything is the way to go.<p>Let&#x27;s consider a simple example: adding a queue poller. Let&#x27;s say you need to add some kind of asynchronous processing to your system. Maybe you need to upload data from customer S3 buckets, or you need to send emails or notifications, or some other thing you need to &quot;process offline&quot;.<p>You could add this to your monolith, by adding some sort of background pollers that read an SQS queue, or a table in your database, then do something.<p>But that&#x27;s actually pretty complicated, because now you have to worry about how much capacity to allocate to processing your service API and how much capacity to allocate to your pollers, and you have scale them all up at the same time. If you need more polling, you need more api servers. It become a giant pain really quickly.<p>It&#x27;s much simpler to just separate them then it is to try to figure out how to jam them together.<p>Even better though, is to not write a queue poller at all. You should just write a Lambada and point it at your queue.<p>This is particularly true if you are me, because I wrote the Lambda Queue Poller, it works great, and I have no real reason to want to write it a second time. And I don&#x27;t even have to maintain it anymore because I haven&#x27;t worked at AWS since 2016. You should do this to, because my poller is pretty good, and you don&#x27;t need to write one, and some other schmuck is on the hook for on-call.<p>Also you don&#x27;t really need to think about how to scale at all, because Lambda will do it for you.<p>Sure, at some point, using Lambda will be less cost effective than standing up your own infra, but you can worry about that much, much, much later. And chances are there will be other growth opportunities that are much more lucrative than optimizing your computer bill.<p>There are other reasons why it might be simpler to split things. Putting your control plane and your data plane together just seems like a head ache waiting to happen.<p>If you have things that happen every now and then (&quot;CreateUser&quot;, &quot;CreateAccount&quot;, etc) and things that happen all the time (&quot;CaptureCustomerClick&quot;, or &quot;UpdateDoorDashDriverLocation&quot;, etc) you probably want to separate those. Trying to keep them together will just end up causing your pain.<p>I do agree, however, that having a &quot;Users&quot; service and an &quot;AccountService&quot; and a &quot;FooService&quot; and &quot;BarService&quot; or whatever kind of domain driven nonsense you can think of is a bad idea.<p>Those things are likely to cause pain and high change correlations, and lead to a distributed monolith.<p>I think the advice shouldn&#x27;t be &quot;Use a Monolith&quot;, but instead should be &quot;Be Scrappy&quot;. You shouldn&#x27;t create services without good reason (and &quot;domain driven design&quot; is not a good reason). But you also shouldn&#x27;t &quot;jam things together into a monolith&quot; when there&#x27;s a good reason not to. N sets of crud objects that are highly related to each other and change in correlated ways don&#x27;t belong in different services. But things that work fundamentally differently (a queue poller, a control-plane crud system, the graph layer for grocery delivery, an llm, a relational database) should be in different services.<p>This should also be coupled with &quot;don&#x27;t deploy stuff you don&#x27;t need&quot;. Managing your own database is waaaaaaay more work that just using Dynamo DB or DSQL or Big Table or whatever....<p>So, &quot;don&#x27;t use domain driven design&quot; and &quot;don&#x27;t create services you don&#x27;t need&quot; is great advice. But &quot;create a monolith&quot; is not really the right advice.
评论 #43931852 未加载
mvdtnzvor etwa 2 Stunden
The opposite of &quot;microservices&quot; is not &quot;monoliths&quot;. The organisation I work at has something like 250-300+ microservices all in a monolith. This is the best of both worlds for large applications, in my opinion.<p>(It&#x27;s no coincidence that this company was largely loaded up with ex-Googlers in the early days).
bossyTeachervor etwa 6 Stunden
Problem is that, come recruiting time, interview gatekeepers are filtering out candidates who don&#x27;t have the shiny words of the season, see micro services, unit tests, lots of abstractions, etc. It&#x27;s like a dating app game. Everyone knows is overblown but they are still playing the game. The idea that not every company needs to make the same architectural and technological decisions is a concept way too complex for interview gatekeepers.
评论 #43928103 未加载
httpzvor etwa 4 Stunden
Obligatory KRAZAM video on microservices <a href="https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=y8OnoxKotPQ" rel="nofollow">https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=y8OnoxKotPQ</a>
mannyvvor etwa 7 Stunden
If you don&#x27;t know what you&#x27;re doing any architecture will be fine.<p>If you don&#x27;t understand the benefit of xyz then don&#x27;t do it.<p>Our microservice implementation is great. It scales with no maintenance, and when you have three people that makes a difference.
评论 #43927376 未加载
评论 #43927291 未加载
jmyeetvor etwa 6 Stunden
Microservices are a fad.<p>Every service boundary you have to cross is a point of friction and a potential source of bugs and issues so by having more microservices you just have more than go wrong, by definition.<p>A service needs to maintain an interface for compatibility reasons. Each microservice needs to do that and do integration testing with every service they interact with. If you can&#x27;t deploy a microservice without also updating all its dependencies then you don&#x27;t have an independent service at all. You just have a more complicated deployment with more bugs.<p>The real problem you&#x27;re trying to solve is deployment. If a given service takes 10 minutes to restart, then you have a problem. Ideally that should be seconds. But more ideally, you should be able to drain traffic from it then replace it however long it takes and then slowly roll it out checking for canary changes. Even more ideally, this should be largely automated.<p>Another factor: build times. If a service takes an hour to compile, that&#x27;s going to be a huge impediment to development speed. What you need is a build system that caches hermetic artifacts so this rarely happens.<p>With all that above, you end up with what Google has: distributed builds, automated deployment and large, monolithic services.
sergiotapiavor etwa 6 Stunden
microservices are a gigantic waste of time. like TDD.<p>it takes skill and taste to use only enough of each. unfortunately a lot of VC $$$ has been spent by cloud companies and a whole generation or two of devs are permasoiled by the micro$ervice bug.<p>don&#x27;t do it gents. monolith, until you literally cannot go further, then potentially, maybe, reluctantly, spin out a separate service to relieve some pressure.
评论 #43928055 未加载
评论 #43928165 未加载