TE
科技回声
首页24小时热榜最新最佳问答展示工作
GitHubTwitter
首页

科技回声

基于 Next.js 构建的科技新闻平台,提供全球科技新闻和讨论内容。

GitHubTwitter

首页

首页最新最佳问答展示工作

资源链接

HackerNews API原版 HackerNewsNext.js

© 2025 科技回声. 版权所有。

Is there any place for monoliths in 2021? (2020)

38 点作者 clubdorothe将近 4 年前

19 条评论

rollulus将近 4 年前
In the cons of monoliths: &quot;High coupling between components&quot; is listed. I think this is a misconception, and a popular one: some people apparently believe that if you take software, and introduce some RPC form at &quot;component&quot; boundaries, things are magically decoupled. I.e., just because execution happens in a different process, it is decoupled. And this fallacy is what leads to the distributed monolith.<p>Or am I missing something?
评论 #28062098 未加载
评论 #28062090 未加载
评论 #28062668 未加载
评论 #28062551 未加载
评论 #28062130 未加载
评论 #28062378 未加载
评论 #28062153 未加载
评论 #28062261 未加载
评论 #28062114 未加载
zinekeller将近 4 年前
&gt; If we analyze most of the successful migrations into microservices, they were driven almost exclusively from necessity rather than preference.<p>This is basically how everything should work. There&#x27;s no need to rush things if you don&#x27;t <i>need</i> it now, especially that some that do convert are disappointed at the results (it&#x27;s not the microservices themselves, it&#x27;s the specific migration planning, design, and maintenance.)<p>&gt; So maybe there’s no point in keep discussing microservices vs monoliths.<p>Wikimedia has monoliths for text-based systems and microservices for (some) media-based systems, and it make sense: transcoding is unpredictable workload (for them, I imagine this is more common for YouTube) while database operations (at Wikipedia&#x27;s scale) is very predictable and doesn&#x27;t warrant the additional complexity. Even in their planning for multi-datacenter operations (<a href="https:&#x2F;&#x2F;www.mediawiki.org&#x2F;wiki&#x2F;Wikimedia_Performance_Team&#x2F;Active-active_MediaWiki" rel="nofollow">https:&#x2F;&#x2F;www.mediawiki.org&#x2F;wiki&#x2F;Wikimedia_Performance_Team&#x2F;Ac...</a>), they are more concerned with disaster recovery and slowness to logged-in users, not quick scalability.
评论 #28062304 未加载
BiteCode_dev将近 4 年前
Most softwares are monoliths in 2021. The exceptions are over hyped, because the day to day lives of administration and corporate devs are boringly standard.
recursivedoubts将近 4 年前
microservices: let&#x27;s take the hardest problem in software construction, factoring the system properly, and introduce network connections and deployment complexity into it.<p>yeah, there&#x27;s a place for monoliths, and developers who are willing to ignore the industries ludicrous fads and faang-chasing have the advantage.
评论 #28061982 未加载
评论 #28062447 未加载
评论 #28062217 未加载
eric4smith将近 4 年前
Every project should be started as a monolith. Period.<p>Then as it grows and it makes sense to decouple at the edges then it makes sense.<p>And these micro services only make sense when there is a team responsible for each one.<p>Otherwise the whole thing is like a game of chess - you will forget to make a move at some point.
评论 #28063138 未加载
loourr将近 4 年前
After much debate my company recently switched back to a monolithic architecture and it may be the greatest decision we&#x27;ve ever made.<p>It dramatically simplifies so many aspects of development, which means you can have developers working on more impactful features and you don&#x27;t have to worry about create a meta structure for keeping things consistent across all your micro services which is one of the biggest benefits I didn&#x27;t see mentioned in this article.<p>And in many systems with interdependent logic (which ours is), not duplicating data and not having micro services calling other micro services in loops become incredibly difficult things to avoid.<p>I highly recommend the monolith for anyone who is not trying to cope with epic scaling issues.<p>All hail the monolith!
cientifico将近 4 年前
In my experience, the architecture is not relevant at all for the success of a business.<p>It&#x27;s alignment with the company structure is.<p>The same way Conway&#x27;s law tells us that company structure and the communications should be in sync, the architecture should match the teams.<p>As a rule of thumb... the good architecture is the one that minimize the communication within the different teams.
评论 #28062135 未加载
dasil003将近 4 年前
I feel all these black and white comparisons of monolith vs microservices tend towards being overly reductive and miss the crux of the matter.<p>First, &quot;microservice&quot; is a terrible name (we should have just stuck with SOA), it leads to all kinds of agile consultant snake-oil salesmen claiming some ideal size for a service. That&#x27;s bullshit. Services should be defined by their interfaces, full stop. If you can&#x27;t come up with a stable interface between two services such that the interface changes orders of magnitude than the code within each service, or if you find yourselves always having to deploy the services in pairs due to leaky abstraction on the interface, <i>then they probably shouldn&#x27;t be two services</i>.<p>Second, SOA is primarily a tool for scaling teams. Yes there are some tangential benefits in terms of code base size, CI build time, etc, but those are false economies if you have a small team that has to deal with the overhead of many services. Modern web-scale architectures are really about factoring things to leverage specialists to scale very large tech platforms.<p>Third, and perhaps most importantly. In any rapidly growing business you need to evolve quickly. You should not expect to design a perfect architecture day one, you should plan to evolve the architecture continuously, so that every two orders of magnitude growth you look up and realize you&#x27;ve replaced most of what you&#x27;ve previously written one way or another. Small startups that focus on &quot;microservices&quot; before they are anywhere near 100 engineers tend to die before traction.
silvestrov将近 4 年前
&gt; Developers always want to try the new flashy things [...] On the other hand, management mostly sees risks .. mostly wants new fancy features<p>I have the inverse experience: management wants to brag about tech and therefore force ill-suited tech onto the developers.<p>I&#x27;ve had managers that wants a CDN because that&#x27;s what all professionals do and they don&#x27;t take a moment to think about added risk by adding more components to the system (or even if it adds any benefit at all).
评论 #28061937 未加载
评论 #28061885 未加载
glutamate将近 4 年前
Microservices Pros: Code reusability?<p>Please ELI5 how I get better code reuseability in microservices than in my monolith with separated concerns into libraries and helper modules.
评论 #28061990 未加载
评论 #28061880 未加载
评论 #28061827 未加载
littlecranky67将近 4 年前
Hearing a lot about monolith vs. microservices, can someone shed some light how &quot;pluggable&#x2F;plug-in driven monoliths&quot; fit in? To Quote Martin Fowler on monoliths:<p>&gt; Change cycles are tied together - a change made to a small part of the application, requires the entire monolith to be rebuilt and deployed.<p>But this is not true. I worked at some C# &quot;monolith&quot; ~2010ish, and we used MEF framework to build pluggable .dll files that you could just &quot;drop&quot; into the deployment folder. As long as you stuck to the same interfaces (through a shared interfaces project) you could build and ship individual parts of the application in separate teams. Even exceptions could not harm the full system (when they were properly caught in the host) - and segfaults shouldn&#x27;t happen in a managed system (but yes, they did, mostly through P&#x2F;Invokes).<p>I always liked the good old &quot;Winamp model&quot; where you would just drop some dlls and got new visualization plugins enabled - each more different than the other.
madeofpalk将近 4 年前
&gt; Is there any place for monoliths in 2020?<p>&gt; Is there any place for monoliths in 2021?<p>maybe one year we&#x27;ll get our answer!
评论 #28062110 未加载
fortytw2将近 4 年前
Many of the points in this article are entirely a matter of implementation, not inherent to or ingrained in any particular architectural choice.<p>You can just as easily build a highly modular and decoupled monolith as you can a tightly coupled and fragile microservice. The same point holds true for many of the other pro&#x2F;cons the author brought up.
halfmatthalfcat将近 4 年前
It really depends on the framework being used. Some frameworks are essentially micro-in-monolith (Akka) and some encourage the microservice framework (Federated Apollo GraphQL) due to their use case.<p>I think it ultimately it depends on the tools being used and the team building them because there&#x27;s tradeoffs to going each way.
tester756将近 4 年前
Monoliths pros:<p>Way easier to debug
cwitty88将近 4 年前
Decent write-up. I agree that most things should start as a monolith and only move to microservices if no other solution will solve the problem. You can scale a monolith quite effectively with a little planning.
评论 #28062116 未加载
lobo_tuerto将近 4 年前
I think tou can reap the benefits of both: monolith + microservices (nanoservices?) with something like Elixir &#x2F; Erlang.
mat0将近 4 年前
Yes
KingOfCoders将近 4 年前
Yes.