4 ms·
Indeed. It just replaces internal calls between services of your monolith with flaky and slower network calls.
by kabes 8y ago
Indeed. It just replaces internal calls between services of your monolith with flaky and slower network calls.
- crdoconnor 8y agoThis can sometimes be worthwhile in a corporate environment even if technically it makes things harder, because it solves a major political / communication problem. However, for the expense of dealing with the complications of an additional network boundary to worthwhile, some of the following must hold: * You need architect who has an overview of the whole system creates abstractions that make sense and puts the API boundaries in the correct place, avoiding the "tightly coupled microservices" antipattern. * You need good devops people who can track problems that span service boundaries. This is the one area where the company can't skimp (i.e. no outsourcing of this position). Without these people you get an epic political clusterfuck where everybody ends up blaming "the other" team for their problems. * The two services need to be built by two teams which, for whatever reason, cannot be relied upon to communicate or work effectively with one another (different orgs, different country, different company maybe). * The two teams possibly use different programming languages. I believe these reasons are probably the reason why it worked wonders for Martin Fowler. Then startups read his blog and decided that every team needed to build 15 microservices and the whole world went crazy (thanks Martin).
- vlkr 8y ago"Although the evidence is sparse, I feel that you shouldn't start with microservices unless you have reasonable experience of building a microservices system in the team." https://martinfowler.com/bliki/MonolithFirst.html https://martinfowler.com/bliki/MonolithFirst.html
- crdoconnor 8y agoYeah, he wrote that after he realized that the microservice movement he spawned had gone nuts.
- CogitoCogito 8y agoIt occurred to me a couple years ago when designing my deployment architecture that the majority of the complexity was just this. Instead of letting linkers/module systems do the work, I was doing all that stuff first by hand and then basically writing my own form of linking logic to solve a problem we created ourselves. Reminded me of when I read about the old ways people used to link code by hand... And yes we were definitely cargo-culting...microservices were totally unnecessary for us. The only positive result is that it forced clean boundaries, but those could just as well have been forced by thoughtful architectural design anyway.
- klodolph 8y agoIf it only forces clean boundaries then I agree, you shouldn’t be using microservices. The main benefits of microservices are things like fault isolation and better security, since you can run different components with different privileges.
- collyw 8y agoThis is exactly how I view microservies (assuming that you know how to build a monolith in a modular way). At the end of the day its only going to increase complexity.
- JamesBarney 8y agoI think what you said is true even if you don't know hot build a monolith in a modular way.
- spreiti 8y agoAnd to add to that: Transaction handling will be vastly different in most cases between local calls and network calls.
- sixdimensional 8y agoCounterpoint: if network calls weren’t flaky and slow would it make a difference in deciding whether to separate modules via a physical machine boundary?
- danmaz74 8y agoBut network calls ARE inherently flakier and slower. What good does it to imagine they weren't?
- sixdimensional 8y agoIt helps demonstrate where additional investment and development might be warranted. If we have hit a physical limit in networking, then that is one thing - but if we are only hitting an artificial limit because our technology and infrastructure is not sufficiently advanced - then this problem is actually showing an opportunity. As an architect you have to sometimes ignore constraints to understand if the final picture you would assemble makes any sense. If the final picture you assemble makes sense, then working backwards through the limitations, to find out, are these really limitations or are these opportunities to innovate? That's my thought as to why you would imagine they are not a limitation. To aid in brainstorming, innovation and identify opportunities for improvement, or alternative solutions you would not have seen if you simply accept the bottleneck as a given.
- spdionis 8y agoAs GP said the network is inherently flakier and slower and yes, we are very close to the physical limit.
- marcosdumay 8y agoAs people already said, there is little point on talking about hypotheticals, since those properties are inherent... But there are tools that can distribute a program over a network, and let your functions run at any node with the right capabilities "just like" (the network allowing) if it was local. This is another point that the microservices pushers miss. It's a solved problem, and can be done in a much better way than what they push around.