Earlier quoted context omitted.
How do you organize teams if not around services? As the GP points out, the whole point of SOA is to scale people. Yes, this makes rearchitecture hard, but that is always the case at scale. The problem of territoriality and resistance to change needs other solutions (tldr; clueful management and mature leadership level ICs who cut across many teams to align architecture vision and resolve disputes between local staff…
Organize teams around products. The point is to increase value delivered to the customer through the product, not to produce left-pad-as-a-service.
Modules, not microservices
521–530 of 671 posts
Re: Modules, not microservices
#522Earlier quoted context omitted.
You can run most applications on a single server - IBM S/390 big iron has very high reliability, redundancy and I/O bandwidth.
Yes but it’s literally a single point of failure. You probably want at least two servers in separate physical locations. Also how do you do deployments without interruption of service on a single server?
Re: Modules, not microservices
#523Re: Modules, not microservices
#524Earlier quoted context omitted.
Another way to look at this is microservices reduce the blast radius of problems.
Sometimes. If the services are all interrelated, you’re as dead on the water with Microservices was you would be in a monolith.
Split up services where it makes sense and don't over do it. That's how I design my projects.
Re: Modules, not microservices
#525Earlier quoted context omitted.
> I don't really think microservices are fundamentally more scalable It depends on what you are scaling. I think microservices are fundamentally more scalable for deployment, since changes can be rolled out only to the services that changed, rather than everywhere. Unless your language and runtime support hot-loading individual modules at runtime.
I disagree, in my opinion micro-services hinder scalability of deployment, and development - at least the way I see most businesses use them. Typically they break out their code into disparate repositories, so now instead of one deployment you have to run 70 different ci/cds pipelines to get 70 microservices deployed, and repo A has no idea that repo B made breaking changes to their API. Or lib B pulled in lib D that…
We keep object definitions in a separate repo to not duplicate them and generate a maven dependence from that. Pretty simple actually. We mainly run on Java thought. Would be more complicated when there are multiple languages.
Protobuf or Json schema could come to the rescue if needed.
Re: Modules, not microservices
#526Earlier quoted context omitted.
The systems are not only organized on the programmers managers, but their managers too, all the way up the chain.
Very good point. Tying that back into the Conway's law angle on all of this... I've been a couple levels up the chain at times in my career. When I've seen technical decisions at this level done well is when those people realize that their organizational decisions are inevitably technical decisions because of Conway's law. When the impact of Conway's law is not explicitly considered, things will often look random at…
But if you chnage the dataflow in a few microservices so that the accounts team no longer deals / works directly with the sales team you have chnaged the organisation.
plus it's way easier to monitor activity etc
Re: Modules, not microservices
#527Earlier quoted context omitted.
Another way to look at this is microservices reduce the blast radius of problems.
Sometimes. If the services are all interrelated, you’re as dead on the water with Microservices was you would be in a monolith.
So if a database service is not available you simply return stale, cached data until the service is back up.
Re: Modules, not microservices
#528Earlier quoted context omitted.
> Servers can only get so big. If your monolith needs more resources than a single server can provide, then you can chop it up into microservices 200 threads, 12TB of RAM, with a pipe upwards of 200GB/s. This isn't even as big as you can go, this is a reasonable off the shelf item. If your service doesn't need more than this, maybe don't break it up. :) I believe that this level of service can no longer accurately be…
This cannot be emphasized enough. The top of the line configuration you can get today is a dual EPYC 9654. That nets you 384 logical cores, up to 12 TB of RAM, and enough PCIe lanes to install ~40 NVMe drives, which yields 320 TB of storage if we assume 8 TB per drive. All for a price that is comparable to a FAANG engineer's salary.
Let alone - AWS Lets you get that machine for less than a junior engineer salary ($7.5 per hour, roughly equivalent to $32 of hourly wage = $67k)
Re: Modules, not microservices
#529Earlier quoted context omitted.
You can run most applications on a single server - IBM S/390 big iron has very high reliability, redundancy and I/O bandwidth.
What if I have $500/month to spend and still need high reliability and redundancy?
Re: Modules, not microservices
#530Earlier quoted context omitted.
You can run most applications on a single server - IBM S/390 big iron has very high reliability, redundancy and I/O bandwidth.
What if I have $500/month to spend and still need high reliability and redundancy?