News for hackers. Stuff that matters.
Re:Prime Video Abandons Serverless Distributed Stack for Mon... by bawolff on Thursday May 04, 2023 @02:21AM (#35811826)
I'm pretty convinced that microservices are one of those things that make sense 5% of the time and the other 95% is cargo culting.
Re:Prime Video Abandons Serverless Distributed Stack for Mon... by The_Colonel on Thursday May 04, 2023 @02:41AM (#35811998)
I agree, my intuition would put it to 1% vs. 99% (difficult to quantify of course).

I haven't yet seen a project/product which would need microservice architecture for technical reasons. If you need to scale, you can just scale monoliths (perhaps serving in different roles).

The use case for microservice architecture is IMHO an organizational / high level architecture driven. I've worked in a big company (20K employees) which was completely redesigning its back-office IT solution which ended up as a mesh of various microservices serving various needs, worked on by different teams. There monolith didn't make sense, because there was no single purpose, no single product.

Re:Prime Video Abandons Serverless Distributed Stack for Mon... by rostos on Thursday May 04, 2023 @02:59AM (#35812157)
That organizational/architecture benefit is strong though.
Re:Prime Video Abandons Serverless Distributed Stack for Mon... by citrin_ru on Thursday May 04, 2023 @03:18AM (#35812318)
It’s depends on how you slice services. For one micro-service per a team I see benefits. On another end of a spectrum a single team managing 10-20 micro-services with more than one service per developer. IMHO it creates more problems than solves. Also it is usually a waste of HW resources because a library call it is cheaper then a network request.
Re:Prime Video Abandons Serverless Distributed Stack for Mon... by whstl on Thursday May 04, 2023 @09:08AM (#35814681)
I think it depends on more than that.

A single team managing 10 microservices that actually make sense to be microservices (like the PDF renderer example above [1]) is kinda good and perfectly manageable.

A team with one single microservice that would actually work better if it was part of a monolith is already in the "creates more problems than it solves" territory.

[1] https://news.ycombinator.com/item?id=35812294

Re:Prime Video Abandons Serverless Distributed Stack for Mon... by The_Colonel on Thursday May 04, 2023 @03:22AM (#35812344)
I would frame it as a necessity rather than a benefit. Having siloed teams (services) is usually a problem which is better to avoid as much as you can.
Re:Prime Video Abandons Serverless Distributed Stack for Mon... by dtech on Thursday May 04, 2023 @05:16AM (#35812963)
Having autonomous teams is great for scaling and allowing everyone to go fast, without teams constantly blocking each other.

Having hundreds of engineers work in a single monolith in a single repo without any kind of (enforced) boundaries is a one way ticket to a big ball of mud. You need to invest heavily in tooling to make it work, and e.g. Google does so.

Having a network in between teams is a relatively easy way to enforce boundaries.

Re:Prime Video Abandons Serverless Distributed Stack for Mon... by The_Colonel on Thursday May 04, 2023 @07:47AM (#35813917)
It allows everyone to go fast as long as the work is constrained within one service. It goes very slow once service / team coordination needs to happen and one team alone is not able to deliver the feature. This then often leads to services duplicating logic, amassing responsibilities in order to do as much as possible within "my" service to avoid this coordination bottleneck.
Re:Prime Video Abandons Serverless Distributed Stack for Mon... by dtech on Thursday May 04, 2023 @03:29PM (#35820866)
Then you're either not setting up your team responsibilities right, or you're not allowing cross-team contribution, both are fixable mistakes.
Re:Prime Video Abandons Serverless Distributed Stack for Mon... by henry_bone on Thursday May 04, 2023 @03:02AM (#35812182)
Seems like Conway's law applies:-

"Any organization that designs a system (defined broadly) will produce a design whose structure is a copy of the organization's communication structure." -- Melvin E. Conway

https://en.wikipedia.org/wiki/Conway%27s_law

Re:Prime Video Abandons Serverless Distributed Stack for Mon... by pjc50 on Thursday May 04, 2023 @07:50AM (#35813945)
Came here to say this - and it applies in the other direction. Microservices allow you to split work between teams without having to coordinate deployment and iteration cadence quite so tightly.

If you have a single team, you shouldn't be doing microservices.

Re:Prime Video Abandons Serverless Distributed Stack for Mon... by baobabKoodaa on Thursday May 04, 2023 @05:26PM (#35822301)
I mostly see organizations with multiple internal dev teams who all have shared responsibility over all of the microservices (e.g. no-one is responsible for any service). The worst of both worlds: all of the complexity of microservices architecture, without the benefit of specialization and splitting work between teams.
Re:Prime Video Abandons Serverless Distributed Stack for Mon... by mwcampbell on Friday May 05, 2023 @06:44AM (#35827533)
The organizational structure doesn't have to be reflected in the built artifact(s), though. Just look at Chrome. It has who knows how many teams working on it, but gets built into a single giant DLL (or executable, depending on your platform). And newer languages like Go and Rust make it easier to link everything into one big artifact like this.
Re:Prime Video Abandons Serverless Distributed Stack for Mon... by boxed on Thursday May 04, 2023 @03:14AM (#35812294)
I built a little microservice on the side of my monolith for PDF creation. It used headless chrome and ghostscript to render html to a nice PDF. The problem I had with having that code inside the monolith was that it increased my docker image creation for deploys by a lot. And that code pretty much never changed anyway.

I did feel a bit embarrassed having to make a microservice after having argued against them so much over the years. Hopefully I can stop producing PDFs soon so I can delete the entire thing :P

Re:Prime Video Abandons Serverless Distributed Stack for Mon... by The_Colonel on Thursday May 04, 2023 @03:28AM (#35812379)
That honestly seems like a reasonable use case for (what I call) auxiliary services serving the monolith. As I imagine, there's no real business logic, no data storage / transactions, no authentication/authorization (besides the service being hidden in the private network probably).
Re:Prime Video Abandons Serverless Distributed Stack for Mon... by foepys on Thursday May 04, 2023 @03:55AM (#35812541)
That's exactly what my team did at a former company. We generated reports through a legacy document engine because some customers cannot switch/update their report templates and so we moved the logic out of the monolith into a service to get rid of a large portion of our dependencies.

Moved the monolith to .NET Core, kept the report service on .NET Framework. A win for everybody.

Re:Prime Video Abandons Serverless Distributed Stack for Mon... by jon-wood on Thursday May 04, 2023 @05:00AM (#35812874)
This is absolutely the way to go in my experience. Keep related functionality together, that'll probably result in a big monolith, with maybe a few smaller services orbiting it with very specific roles, or dramatically different traffic patterns. One project I worked on consisted of two monoliths, because we were at the intersection of two business domains, and it didn't make sense to attempt to slap those radically different concepts into one model.
Re:Prime Video Abandons Serverless Distributed Stack for Mon... by mike_hearn on Thursday May 04, 2023 @05:02AM (#35812886)
Doesn't Docker use cached image layers to solve that? Your PDF rendering could be in one layer that never changes, and the rest goes on top.
Re:Prime Video Abandons Serverless Distributed Stack for Mon... by franga2000 on Thursday May 04, 2023 @05:40AM (#35813086)
The problem is when you have more than one such service. Now when one of them changes, all of them need to be rebuilt. You can solve this with multi-stage builds, but those only work if your build result can be easily copied.
Re:Prime Video Abandons Serverless Distributed Stack for Mon... by mike_hearn on Thursday May 04, 2023 @10:08AM (#35815564)
Is the issue here that images shouldn't be thought of as layers, but rather a tree of cached directory nodes? I don't quite follow what's meant by building here, are you referring to compiling or merging the resulting build artifacts into a final container image?

Non-copyable build outputs sound a bit wild - you're thinking of builds that encode absolute paths into the output binaries?

Re:Prime Video Abandons Serverless Distributed Stack for Mon... by boxed on Thursday May 04, 2023 @07:25AM (#35813782)
In theory yes, but that doesn't work well on github actions for example. The cache layering seems quite bad there for some reason.
Re:Prime Video Abandons Serverless Distributed Stack for Mon... by Guid_NewGuid on Thursday May 04, 2023 @06:37AM (#35813420)
I feel like it's a semantics thing. To me the meaning of microservices has undergone semantic drift to the antipattern in the article where every little component or database table is its own service with an associated "pizza team".

It's fine to just have plain "services" to do things like this where you need to leverage another OS/framework/whatever and just hive off something like PDF conversion while your core application remains a monolith.

Re:Prime Video Abandons Serverless Distributed Stack for Mon... by dontlaugh on Thursday May 04, 2023 @07:01AM (#35813612)
You can produce multiple docker images from the same codebase quite easily. You can deploy and scale them separately. None of that requires separate repositories or expensive RPC instead of local function calls.
Re:Prime Video Abandons Serverless Distributed Stack for Mon... by boxed on Thursday May 04, 2023 @07:22AM (#35813765)
Who said I have separate repositories?
Re:Prime Video Abandons Serverless Distributed Stack for Mon... by darkwater on Thursday May 04, 2023 @08:26AM (#35814207)
What's the difference if they are in one or two repo if they produce two artifacts that are separated? You *will* have network calls between the two, unless you are marrying yourself with a deployment/operational platform that can run the two artifacts together. (ok, there could be a few but I really don't see how this is just using a "monorepo" instead of a "multirepo")
Re:Prime Video Abandons Serverless Distributed Stack for Mon... by pnt12 on Thursday May 04, 2023 @08:13AM (#35814114)
I feel you - I worked on a project with pdf generation and the tool to generate it was quite heavy.
Re:Prime Video Abandons Serverless Distributed Stack for Mon... by manicennui on Thursday May 04, 2023 @10:11PM (#35824523)
Re:Prime Video Abandons Serverless Distributed Stack for Mon... by 12907835202 on Thursday May 04, 2023 @03:18AM (#35812314)
Depends if you're counting all the WordPress level projects. Then it'd be 0.01% Vs 99.99% I'd imagine.

But that just puts into perspective how silly this argument is because I have no idea what a project means to other people.

Re:Prime Video Abandons Serverless Distributed Stack for Mon... by golergka on Thursday May 04, 2023 @04:43AM (#35812772)
I'm developing an ML based sideproject. All the modern ML tools are written in python, which is a reality good language for it. However, it is an abysmal project for writing business logic and third party integrations, and if I have some free time I will split the whole thing into one Python and one Typescript service.
Re:Prime Video Abandons Serverless Distributed Stack for Mon... by Cthulhu_ on Thursday May 04, 2023 @07:02AM (#35813618)
There's also developer push from two sides; developers want to do microservices because it gives them gratification (new problems to solve! new architectures! Rewrite!), and employers want to attract developers (we do microservices! Blockchain! IoT!). So much in software development these days is hype and self-gratification.
Re:Prime Video Abandons Serverless Distributed Stack for Mon... by pjmlp on Thursday May 04, 2023 @07:24AM (#35813778)
The problem is that we are now in the golden age of Web services, where everything is headless and controlled via API, so the business logic plugging all those APIs need to live somewhere.

Naturally it could be a single container taking care of all those integrations.

Re:Prime Video Abandons Serverless Distributed Stack for Mon... by silisili on Thursday May 04, 2023 @02:38AM (#35811970)
I absolutely agree, buuuut also realize we as programmers don't even have the same definition of what a microservice is.

A lot of people here say...one service per team. But to me that is, or can be, a monolith. Often a team is a product line, so you have one service for that product. Is that a monolith? I don't know either, I guess.

I -do- know most people who go around promoting that sweet microservice life end up being the worst. They seem to want every db table to be its own service, introduce tons of message passing and queues, etc, for absolutely no reason. I think we can probably all agree that is about the worst way to go about it.

Re:Prime Video Abandons Serverless Distributed Stack for Mon... by oaiey on Thursday May 04, 2023 @02:49AM (#35812074)
Yes! It is about splitting your business in reasonable chunks/domain/boundaries. Pizza rules/rewrite rules ... that is all nonsense.

But doing it right, is nevertheless hard. Because cutting your business into chunks ... is not as easy as it always looks.

Re:Prime Video Abandons Serverless Distributed Stack for Mon... by bottlepalm on Thursday May 04, 2023 @03:59AM (#35812565)
Every service needs it’s own database. Then you need to handle all the DLQ errors between services as well.
Re:Prime Video Abandons Serverless Distributed Stack for Mon... by klabb3 on Thursday May 04, 2023 @04:56AM (#35812839)
Devils advocate, but is it possible microservices need a shared feature-ful message passing layer, and good tooling, to be working well? Eg schema, auth, flow control, ttl, persistence, partitioning etc in the message layer, a la Kafka? I mean it’s kind of implied that microservices can only work if they can talk to each other, and “talking” is a lot more nuanced than we tend to think.
Re:Prime Video Abandons Serverless Distributed Stack for Mon... by bottlepalm on Thursday May 04, 2023 @05:08AM (#35812919)
Comm requires massive overhead versus simply 'calling a function'. Calling a function doesn't fail. Maybe the code in it does, but not the call to the function itself.

This is why microservice costs often far outweighs the benefits, but they rarely consider the cost in their crusade to 'break up the monolith'

Re:Prime Video Abandons Serverless Distributed Stack for Mon... by klabb3 on Thursday May 04, 2023 @03:10PM (#35820611)
Absolutely. But in the cases where it a monolith is not doable, such as highly heterogenous hardware requirements for different “services”, it seems like the messaging stack plays a more important role (even if that’s only needed in 5% of use cases). Typical HTTP request-response, which is often fine for a monolith, is not enough for building say task queues. A strong messaging layer can reduce the need of ad-hoc wheel reinvention.
Re:Prime Video Abandons Serverless Distributed Stack for Mon... by lrem on Friday May 05, 2023 @03:35AM (#35826347)
meh

In my org in Google we average over one microservice per engineer. I'll be adding two in the next couple weeks. With the right automation setup you don't notice them any more than you do server instances.

Re:Prime Video Abandons Serverless Distributed Stack for Mon... by princevegeta89 on Thursday May 04, 2023 @02:37AM (#35811967)
Microservices have lately seemed to me to be a buzzword for the ears of executives and stakeholders. To someone who isn't technical enough, it seems really "cool" from the outside, but on the inside, it's more than often a shitshow with teams and managers messing around to get these services working with each other properly while wasting a lot of time.
Re:Prime Video Abandons Serverless Distributed Stack for Mon... by Garlef on Thursday May 04, 2023 @03:05AM (#35812205)
> lately

"lateley" as in "for the last 5 years"?

Re:Prime Video Abandons Serverless Distributed Stack for Mon... by andreiursan on Thursday May 04, 2023 @03:24AM (#35812354)
Re:Prime Video Abandons Serverless Distributed Stack for Mon... by my_usernam3 on Thursday May 04, 2023 @03:44AM (#35812486)
Yeah that seems closer to my experience. From my perspective, 2016ish was peak. At least thats when I had to to argue the most against trying to needlessly break up services.
Re:Prime Video Abandons Serverless Distributed Stack for Mon... by bottlepalm on Thursday May 04, 2023 @04:02AM (#35812575)
Not only that, if you spoke out against microservices you were labeled not a ‘team player’ outcasted to maintain ‘old’ code that runs the entire company as a bunch of hot new devs create a mountain of crap services only to quit when they got bored.
Re:Prime Video Abandons Serverless Distributed Stack for Mon... by wg0 on Thursday May 04, 2023 @02:22AM (#35811837)
As for me,I have been trying to discover that 5% that cannot be done without microservices.
Re:Prime Video Abandons Serverless Distributed Stack for Mon... by avereveard on Thursday May 04, 2023 @02:30AM (#35811904)
Remove reliability intercorrelations, so for example that your cart api and payment gateway is up and collecting orders no matter to what happens to the front-end services.

But then for perfect decorrelation you'd also need independent databases behind the microservices, and queues between them for horizontal communication,and few are actually going all in with that, and so fall in the 95% where they go trough te motion and the effort of splitting microservices,but reap no actual benefit from it.

Re:Prime Video Abandons Serverless Distributed Stack for Mon... by bawolff on Thursday May 04, 2023 @02:27AM (#35811870)
Like any tool, there is nothing that cannot be done without microservices. However that doesn't mean they never make sense. Microservices have certain costs and certain benefits. I can believe there are certain situations where the benefits outweigh the costs. Its just not most situations. But that doesn't mean it never exists. I could believe it makes sense in extremely large apps with huge number of different groups working on them, where the communication complexity outweighs the other complexities microservices bring.
Re:Prime Video Abandons Serverless Distributed Stack for Mon... by qaq on Thursday May 04, 2023 @02:46AM (#35812043)
That's very hypothetical. Building a distributed system just might always be way more resource intensive than comparable monlith regardless of number of developers involved.
Re:Prime Video Abandons Serverless Distributed Stack for Mon... by kristopolous on Thursday May 04, 2023 @02:42AM (#35812009)
There's a bunch of things I'd like to have them do. If they could span across machines like clusters that would be amazing.

If I could trivially package them up and deploy them locally with intrinsically less effort and wall-time then the old way, that'd be amazing.

If I could somehow get the horizontal scaling promises and redundancy as some kind of built-in, like I can with say, memcache, that's be cool.

If I could do these kinds of "hard" things with them more trivially, that'd be really nice.

There's a lot of things I want them to do but it's a god-damn bull-riding rodeo every time I try to get there.

And before you reply, I know you're an expert and can do all these things trivially. That's amazing. The vast majority of the industry creates a giant fragile spaghetti knot with them and I am not a full time k8s admin nor do I want this to be a career trajectory. It should be like you know, wine, ffmpeg, imagemagick, virtualbox, lua, qemu, redis, gnuplot, lvm2, gdb, ssh, sqlite; tools like that. It's pretty easy to get them to do really nice things. Those things deliver on their promises and potential pretty nicely.

It's nice that nobody feels a need to hype curl or squid. They just work. Isn't that nice? I mean look at gdb's website: https://www.sourceware.org/gdb/ it doesn't even have CSS animations --- in fact, it doesn't even have CSS.

Re:Prime Video Abandons Serverless Distributed Stack for Mon... by jddj on Thursday May 04, 2023 @03:04AM (#35812193)
Did you ever play with the Erlang VM?
Re:Prime Video Abandons Serverless Distributed Stack for Mon... by kristopolous on Thursday May 04, 2023 @06:00AM (#35813191)
Absolutely. It's pretty brilliant. I thought about mentioning it. I don't hate it. It's a bit exotic to trust with the likes who tend to fill the ranks of development teams which try to force every language into looking like C++ of Java but I dunno, send them off to a retreat in the mountains to microdose and take lessons from an erlang yogi for 12 weeks and have them come back.
Re:Prime Video Abandons Serverless Distributed Stack for Mon... by freeone3000 on Thursday May 04, 2023 @02:46AM (#35812044)
Your asks seem easily answered with docker + kubernetes. Actually, this is in fact the use case for kubernetes — a fault tolerant distributed system running arbitrarily, simply packaged code. This has to be what you’ve tried — what issue are you running into?
Re:Prime Video Abandons Serverless Distributed Stack for Mon... by NBJack on Thursday May 04, 2023 @02:59AM (#35812155)
Kubernetes isn't something I'd put in the same sentence as 'easy'. Docker is a close contender for the same.

I still recall the day when my local Docker builds necessitated a new router to properly manage streaming traffic at home while I downloaded a few GBs of layer images. Or the time I wanted to setup a 'simple' hosted Kubernetes cluster of my own in my lab for testing, only to discover the nightmare that is networking on it. Then there was the grim discovery that Docker containers were much more sensitive to the hosting environment than I had assumed, resulting in some fun "but it worked and tested fine" moments.

Did they all work eventually for me? Yes. Was it simple? Not by my standards.

If you find all that simple, kudos to you.

Re:Prime Video Abandons Serverless Distributed Stack for Mon... by adql on Thursday May 04, 2023 @06:35AM (#35813411)
When they say k8s is "easy" they mean "for developers", not people/automation running it.

Like, compared to implementing hitless rollback over bare metal services k8s way is "easy", just set some stuff in YAML and have proper healtchecks in your app.

Re:Prime Video Abandons Serverless Distributed Stack for Mon... by mplewis on Thursday May 04, 2023 @03:08AM (#35812237)
The issue I encounter is the overhead in setting up a repeatable, easy-to-use dev environment, and working out the bugs locally before I push to a prod-like system.
Re:Prime Video Abandons Serverless Distributed Stack for Mon... by kristopolous on Thursday May 04, 2023 @05:56AM (#35813172)
trying to using the actual software to accomplish these actual tasks. You're right though, that is the promise of the software - it doesn't deliver.

I wish I had infinite time to document all the issues. This isn't a small nuanced detailed thing - it falls deeply, systemically fundamentally short and in practice you still get the magical monolithic system it tried to kill but now with more obfuscation, complexity and a theatrical slight of hand to convince yourself it isn't that.

Instead of the server being configured for the monolithic app, it's now extensively and carefully configured for the myriad of containers, hostnames, configurations and connections of the containers running the microservice app.

It's in practice the same problem with a different costume.

The other promise of it being a collection of smaller constrained services running on tcp ports talking to each other ... that's nothing new. You've invented the idea of computer networks.

Re:Prime Video Abandons Serverless Distributed Stack for Mon... by alkibiades on Thursday May 04, 2023 @02:23AM (#35811839)
microservices make a lot of sense organizationally where each feature team can own their own feature service.
Re:Prime Video Abandons Serverless Distributed Stack for Mon... by bawolff on Thursday May 04, 2023 @02:33AM (#35811935)
My opinion is that there is a point where that is true... but its at a really high scale. Each team owning a separate service introduces a lot of complexity in managing all the services. There is a point where communication complexity of not microservices overwhelms the complexity implicit in microservices, but i think it is at a really high scale.

You also have to consider things like it is now harder for people to see the system as a holistic whole (the tricky bugs are often in the composition of components) and a lot of subtle effects that beings. Even just increasing the friction for people to move between teams or friction for security people to apply consistent standards across all groups.

Re:Prime Video Abandons Serverless Distributed Stack for Mon... by wg0 on Thursday May 04, 2023 @02:27AM (#35811863)
OR each team can write their features as a python package, rust crate, go module to be included in the main app. Libraries, versioned.
Re:Prime Video Abandons Serverless Distributed Stack for Mon... by avereveard on Thursday May 04, 2023 @02:34AM (#35811946)
Yeah I see a lot of things that could be libraries packaged as services, so now each invocation incur in network latency and every transaction needs a two phase commit. And because each service need its own replica, deployment pipeline, and versioned internal api, production and deployment cost skyrocket
Re:Prime Video Abandons Serverless Distributed Stack for Mon... by bcrosby95 on Thursday May 04, 2023 @02:48AM (#35812062)
Because, you see, if you surround shit with other shit, that original shit doesn't look quite so bad in comparison. So take your shit monolith, surround it by shit services that distributed it across a shitty network, and now your original self inflicted shit design is just 1/3rd of the shit you gotta deal with. Totally not as bad as it used to be!
Re:Prime Video Abandons Serverless Distributed Stack for Mon... by emodendroket on Thursday May 04, 2023 @02:31AM (#35811913)
Which brings along all kinds of headaches that greater segregation solves. You can go in circles all day about this stuff.
Re:Prime Video Abandons Serverless Distributed Stack for Mon... by mjr00 on Thursday May 04, 2023 @02:46AM (#35812051)
And then team 1 needs to upgrade pandas to 2.0, but team 2 is still on pandas 1, so when the main app pulls them in nothing works, so you need to start a cross-team committee to schedule the work to upgrade a single library...

Separate services aren't a silver bullet, but as an fyi to the younger software developers, we tried "just have all teams work on the same code base and deployable artifact" for a long while and it didn't work very well either.

Re:Prime Video Abandons Serverless Distributed Stack for Mon... by NBJack on Thursday May 04, 2023 @03:10AM (#35812261)
That's easy: we'll make the ultimate build system! It will scale, and maintain packages, and compile all the things transitively. Just give me $xx million dollars and a few years, and I'll give you the perfect solution.

Just press this button to start the upgrade build and....boom! 10,000 services and their dependencies being built on a ton of hardware; we can practically gurantee your change in dependency will be checked... Whoops, turns out your one dependency change cascaded into about 1.5% breakage....no, I don't know who owns those packsges; why do you ask? That's not my job!

/s

Re:Prime Video Abandons Serverless Distributed Stack for Mon... by charcircuit on Thursday May 04, 2023 @02:51AM (#35812095)
All the teams will need to migrate sooner or later so figuring out all of the potential problems in migrating and having everyone do it an once is more efficient than each team needing to figure it out separately.
Re:Prime Video Abandons Serverless Distributed Stack for Mon... by mjr00 on Thursday May 04, 2023 @02:59AM (#35812151)
That's not how it plays out in reality. usually nothing gets done because "upgrade this package" is never on anyone's priority list. Or teams end up doing shit like JAR shading or forking and renaming a package with some _v2 or whatever suffix to be able to support both the old and new version simultaneously in the main code base. And then of course nobody ever updates the runtime (hello, enterprise monoliths still running on Java 6/7!) It ends up being a complete mess.
Re:Prime Video Abandons Serverless Distributed Stack for Mon... by NBJack on Thursday May 04, 2023 @03:13AM (#35812286)
I'm just grateful a language like Java has any sort of namespace solution to dependency nightmares.

I have lost track of how many times I did a git pull on a Python based solution only to find I broke all the things when I tried to upgrade one package.

Re:Prime Video Abandons Serverless Distributed Stack for Mon... by wg0 on Thursday May 04, 2023 @04:11AM (#35812612)
Imagine a solo developer, writing an app that is composed of packages/libraries/crates from the get go.

Now in one place such an engineer uses pandas 2 in other place pandas 1 but it is just one single app. What does it say about the quality of engineering and mental focus of such a solo developer that cannot accomplish same thing with the same API - OR cannot refactor the already written code for Pandas 1 to Pandas2.

Sounds to me like more of an engineering discipline and engineering mindfulness problem.

Fix is simple with a simple rule - everyone has to use the latest major version, always.

Micro services do not make any sort of people's communication go away, they move it to different boundaries. From dependencies to the business layer/interfaces which is lot harder to navigate and negotiate.

Imagine needing a field in your downstream service. They refuse because they don't see it their domain and you cram it on your side and what not. Ask anyone working in micro services environment and they'll tell you it is a recurring issue every quarter if not more.

Re:Prime Video Abandons Serverless Distributed Stack for Mon... by selcuka on Thursday May 04, 2023 @02:27AM (#35811861)
I would argue that in such cases those are not "micro" services anymore, they are services. In that case it makes sense to develop and deploy them separately, then find a way to make them talk to each other. Microservices is a different architectural decision.
Re:Prime Video Abandons Serverless Distributed Stack for Mon... by tyfon on Thursday May 04, 2023 @02:30AM (#35811907)
Until one team need a feature in another service that makes their development grind to a halt and the other team is not prioritizing.

I have only seen this from the business side (I'm not a developer), but I have seen teams start coding in another teams service just to be able to proceed.

It's not always good to create silos like this either.

Re:Prime Video Abandons Serverless Distributed Stack for Mon... by NBJack on Thursday May 04, 2023 @03:04AM (#35812200)
Sounds like someone has been in the trenches of a certain online retail company.

As a developer, I have certainly seen the same. Pretty sure this very scenario is where I heard the term "away team" used in the industry: send your folks over to change things, and under our guidance they can check in the code.

Re:Prime Video Abandons Serverless Distributed Stack for Mon... by XorNot on Thursday May 04, 2023 @02:28AM (#35811875)
I mean even then, it's still easier just to share one code-base and then shard service aspects if you have to.

You need truly gargantuan scale before things become logically separate code-bases.

Re:Prime Video Abandons Serverless Distributed Stack for Mon... by emodendroket on Thursday May 04, 2023 @02:31AM (#35811918)
Not in my experience.
Re:Prime Video Abandons Serverless Distributed Stack for Mon... by mehdix on Thursday May 04, 2023 @03:00AM (#35812164)
Once I was called to a meeting in a sibling department as a cloud advisor. They wanted to migrate to AWS cloud.

The conversation went as below.

- Does your app work fine?

- Yes.

- Do you have any problems?

- No.

- Why do you want to migrate then?

- Silence.

Re:Prime Video Abandons Serverless Distributed Stack for Mon... by doctor_eval on Thursday May 04, 2023 @03:33AM (#35812425)
- Because boss said we have to.
Re:Prime Video Abandons Serverless Distributed Stack for Mon... by OtomotO on Thursday May 04, 2023 @03:16AM (#35812301)
- Because we are innovative and it's the future! /s
Re:Prime Video Abandons Serverless Distributed Stack for Mon... by deanCommie on Thursday May 04, 2023 @03:16AM (#35812304)
Customer doesn't know their own requirements?

Your job is to figure out what they actually need even if they don't understand it?

Seems pretty par the course.

There are dozens of reasons to migrate to the cloud. Do they apply to everyone? No. Are they always worth the cost? No. But the whole "cloud vs not cloud" argument that happened, got settled ("cloud"), and is now being restarted by the DHH-like is not data-driven and full of exaggerations and fear-mongering from both sides.

Then you add on top of that that the main product of moving to the cloud is "operations" which is typically measured in "hours of human capital being impacted outside of core working hours". When the market is booming, tech humans are expensive and fickle, and don't want to undertake more operations than they should have to, and companies are forced to pay cloud providers.

But in today's 2023 climate, any company looking around to decide how much to spend on cloud just says "Why would we pay for something when we can just ask our engineers to work more hours, and invite them to quit if they don't like it, oh wait nobody else is hiring anyway"

No cost calculator of $$$ saved considers that overtime is free in our industry.

tl;dr the cloud backlash is overblown, more companies/businesses would benefit from cloud than not.

Re:Prime Video Abandons Serverless Distributed Stack for Mon... by 123pie123 on Thursday May 04, 2023 @05:20AM (#35812984)
because they want "cloud" on ther Resume/ CV
Re:Prime Video Abandons Serverless Distributed Stack for Mon... by amoss on Thursday May 04, 2023 @07:22AM (#35813767)
The CFO read an article in Forbes that said we would save money by migrating to the cloud, so we now have an unlimited budget for consultants to build us a cloud platform....
Re:Prime Video Abandons Serverless Distributed Stack for Mon... by est on Thursday May 04, 2023 @03:09AM (#35812247)
> make sense 5% of the time

Micro-services were invented by an outstanding software outsourcing company to milk billable hours and offload responsibilities in large org.

Re:Prime Video Abandons Serverless Distributed Stack for Mon... by oblio on Thursday May 04, 2023 @03:20AM (#35812330)
Which company? Thoughtworks?
Re:Prime Video Abandons Serverless Distributed Stack for Mon... by YetAnotherNick on Thursday May 04, 2023 @03:15AM (#35812296)
Microservices works better if you don't trust other team. While having trust seem like a basic thing, this is absolutely not the case for a lot of companies.

With microservices, it is easy to see services which are down or have high error rate or latency, have clear API contract and call out the team for breaking API contract, and assign cost for which the teams have incentive to reduce, or at least not increase it.

Re:Prime Video Abandons Serverless Distributed Stack for Mon... by __turbobrew__ on Thursday May 04, 2023 @03:27AM (#35812377)
Another pain with monoliths is that they can only be deployed if the entire monolith is passing all tests. When you cannot deploy your changes because someone else on an entirely orthogonal team broke something in the monolith which is not related to you it gets old really quick.

Large monolithic repos with many independent targets for testing and deployment work the best at huge scales. If you are only a few hundred engineers, monorepo with monolithic deployments and tests work fine.

Re:Prime Video Abandons Serverless Distributed Stack for Mon... by bottlepalm on Thursday May 04, 2023 @03:57AM (#35812553)
Tests passing should be a gate to merge into main. Tests can also be run in parallel.
Re:Prime Video Abandons Serverless Distributed Stack for Mon... by kubanczyk on Thursday May 04, 2023 @04:23AM (#35812661)
Two green changes merged to a green main can produce a red main.

This is not a commonly known fact. Just to take an example of GitHub, this check is disabled by default:

> Require branches to be up to date before merging

> Whether pull requests targeting a matching branch must be tested with the latest code.

Re:Prime Video Abandons Serverless Distributed Stack for Mon... by arp242 on Thursday May 04, 2023 @04:41AM (#35812757)
> Two green changes merged to a green main can produce a red main.

I'm sure this happens occasionally, but I've never experienced it, and it seems to be rare enough that it's not that big of a concern. Especially since it'll be easily remedied by either just fixing the error or just reverting one or both of the changes.

Re:Prime Video Abandons Serverless Distributed Stack for Mon... by bottlepalm on Thursday May 04, 2023 @05:14AM (#35812950)
It's definitely an issue if you're treating main as 'good to deploy'. Also with more devs the chance of this happening is pretty good. Definitely want to enforce a branch is up to date before allowing merge (though with a lot of devs this can become difficult) not sure if there is some sort of merge/test pipeline solution out there.
Re:Prime Video Abandons Serverless Distributed Stack for Mon... by lxgr on Thursday May 04, 2023 @09:20AM (#35814833)
It completely depends on your organization's merge volume and your codebase's complexity. I've seen it happen many times working on a large monolith. But requiring a passing integration branch build before merging to master, or a merge queue, solves that.
Re:Prime Video Abandons Serverless Distributed Stack for Mon... by byroot on Thursday May 04, 2023 @05:22AM (#35812999)
> Require branches to be up to date before merging

Because this really doesn't scale well with the number of developers.

For larger teams the solution is to use a merge queue, e.g. https://shopify.engineering/successfully-merging-work-1000-d...

I haven't tried it, but GitHub is now offering such feature in public-beta: https://github.blog/changelog/2023-02-08-pull-request-merge-...

Re:Prime Video Abandons Serverless Distributed Stack for Mon... by withinboredom on Thursday May 04, 2023 @04:02AM (#35812573)
I'd ask why people are merging things that break the tests? I worked on a monolith with hundreds of devs and I can count the time the tests failed because someone force-merged something in an emergency on one hand. It was generally unacceptable to merge something when tests failed; you had to have a really good reason.
Re:Prime Video Abandons Serverless Distributed Stack for Mon... by anonzzzies on Thursday May 04, 2023 @05:37AM (#35813070)
Yes, this seems weird; merging breaking code is not an option. The 'breaking team' will have to wait/fix on their side, not us waiting on them for deployment of our working and tested features.
Re:Prime Video Abandons Serverless Distributed Stack for Mon... by withinboredom on Thursday May 04, 2023 @05:50AM (#35813126)
There are some extreme circumstances where pushing broken tests to production make sense. For example, if you push a simple change to simply `return false` and disable a feature in code. In this case, the tests using it will probably fail but the desired behavior happens in production. At this point, you have a bit more time to set the tests to 'skip' while the load is shed in production. Even if you break tests on purpose, you should fix them asap as you are blocking literally every other team in the company. Thus, you need a really good reason to do so (like if you didn't do it asap, global downtime would ensue).
Re:Prime Video Abandons Serverless Distributed Stack for Mon... by Akronymus on Thursday May 04, 2023 @06:06AM (#35813231)
Currently we have the problem of merges of two working branches occasionally resulting in a broken one. How does one solve that?
Re:Prime Video Abandons Serverless Distributed Stack for Mon... by withinboredom on Thursday May 04, 2023 @06:35AM (#35813408)
Don’t merge. Rebase only. Keep a linear history.

When committing, do a ff-only of ‘main’ to your branch. Yes, this forces everyone to rebase before “merging” but in practice, this results in the least amount of failures, tests being run after you resolved any conflicts, etc.

If you can use GitHub merge queues, that solves a ton of this, and you can run tests on the final merge before actually merging instead of relying on rebasing.

Re:Prime Video Abandons Serverless Distributed Stack for Mon... by whstl on Thursday May 04, 2023 @09:12AM (#35814726)
"Don’t merge. Rebase only. Keep a linear history."

This. It makes life so much simpler. With teams that don't have a lot of experience with git, however, I tend to use the "Squash and Merge" feature, coupled with forcing a linear history.

Re:Prime Video Abandons Serverless Distributed Stack for Mon... by lxgr on Thursday May 04, 2023 @09:18AM (#35814808)
Requiring a passing integration branch before merging to master. Merging the integration branch then becomes a fast-forward merge.

Alternatively, if you have a low enough merge volume, requiring mergers (by policy) to squash and rebase (and re-run tests before attempting to merge) can work too, as others have already mentioned.

Re:Prime Video Abandons Serverless Distributed Stack for Mon... by jmillikin on Thursday May 04, 2023 @06:01AM (#35813196)
1. Add a test with a time-bomb (such as a test certificate with 365-day duration), wait a year, and now your test fails without having changed.

2. Add a test with a network dependency, and when that dependency is slow / down / turned off, the test starts failing.

3. Add a dependency on a third-party Github repo that clones from `main`, and the next time some dev touches a file in that repo your test starts failing.

4. Add a test that allocates memory in proportion to size of the codebase (e.g. because it tries to build a giant in-memory tarball of all the .mp4 assets). Eventually it will get flaky when it starts scraping up against the build machine's limit. Extra fun if your builds run without defined memory limits on machines of different sizes.

In a monolithic build, there's all sorts of ways for a single person to cause other teams' tests to fail, even months or years after they've left the company. Some of them can be prevented mechanically (such as by running tests without network access), but a lot come down to "tell them to stop doing that".

That's why big companies never run one build per repo.

Re:Prime Video Abandons Serverless Distributed Stack for Mon... by withinboredom on Thursday May 04, 2023 @06:29AM (#35813375)
Hmm. We never had those specific issues. For (1), we had time bombs for sure, but those usually highlighted coverage issues. Dev ops would disable your test and tell you to fix your code.

IRT (2), network dependencies were forbidden in-general. Over any long enough timespan, the rate of failure is 100%. If you wanted to use the network, you had to consider the failure case and handle it in your tests.

For (3), all dependencies were committed as part of the repo. All dependencies had to be reviewed for any issues before being used, so this made sense. You simply weren’t allowed to just randomly include a new dependency without a review/PR to add it.

For (4), our dev environments had less memory than build machines and the same as production. If you couldn’t build it in a dev environment, it wasn’t getting committed without special treatment from dev ops (and a really good reason).

Re:Prime Video Abandons Serverless Distributed Stack for Mon... by jmillikin on Thursday May 04, 2023 @08:38AM (#35814321)
Yeah, all of those mitigations don't work as well when you've got thousands of engineers whose work would be blocked if some intern's badly written test blows up.

A monolithic build means that your ability to develop and deploy your team's code is dependent on every other team. As the number of teams gets larger, that multiplier really hurts.

Re:Prime Video Abandons Serverless Distributed Stack for Mon... by withinboredom on Thursday May 04, 2023 @10:41AM (#35816118)
It's a learning experience. If everyone learns from it, it probably (most likely) won't happen again. Everyone learns how to write better tests. And, like I said, if you absolutely need to merge something right this exact second and it can't wait until someone disables the failing test (or you can't do it yourself for some reason), you can always merge it even with failing tests.
Re:Prime Video Abandons Serverless Distributed Stack for Mon... by __turbobrew__ on Thursday May 04, 2023 @12:57PM (#35818552)
Average tenure at most companies is 2/3 years. You cannot rely on people learning from mistakes because there are always new people, you need to make it so they cannot make mistakes or if they make a mistake it isn’t going to block the whole company from executing.
Re:Prime Video Abandons Serverless Distributed Stack for Mon... by withinboredom on Thursday May 04, 2023 @01:05PM (#35818693)
Organizations learn, it gets embedded in the culture, tooling, and automation. I shared some of the rules that were embedded in our organization via style guides and onboarding.

There were a thousand automated checks to prevent you from doing the same thing as someone else that caused downtime in the past. It was virtually impossible to commit code that deleted/truncated a table, for example.

Re:Prime Video Abandons Serverless Distributed Stack for Mon... by nikita2206 on Thursday May 04, 2023 @05:03AM (#35812891)
IMO for these rare occasions it should be okay to unmerge PRs. Or what could also be done is you only deploy cherry-picked releases, granted that you have a way of tracking commits in the upstream such that no commit ever gets lost.
Re:Prime Video Abandons Serverless Distributed Stack for Mon... by __turbobrew__ on Thursday May 04, 2023 @02:58PM (#35820411)
That is possible, but at that point you need a integrations/release team to babysit the builds and make sure everything integrates back together cleanly.

The last thing I want to do is have my build broken by someone on another team and then have to track them down and babysitting the revert. That is easily an hour of my time wasted.

Re:Prime Video Abandons Serverless Distributed Stack for Mon... by exitheone on Thursday May 04, 2023 @05:53AM (#35813149)
It's not only tests, a rollback because your pdf generation has a bug will also mean rolling back for example a customer facing new API, slowing down the API team until the monolith is fixed or the change reverted and rebuilt.
Re:Prime Video Abandons Serverless Distributed Stack for Mon... by citrin_ru on Thursday May 04, 2023 @06:02AM (#35813203)
1. Monolithic app and VCS mono-repo are orthogonal and can be mixed in different combinations (with different tradeoffs).

2. How about an old way of blocking deployments less: parts of this monolithic apps developed as libraries with a stable API, a new version of a library released only after its own tests has passed, next you can increment dependency version in the monolith and run integration tests, if they failing you can revert to the old library version and still go ahead with the deployment (if you don't depend on something added in the latest library release). If you depend on this new feature and a component providing it is broken micro-services would not help you.

> If you are only a few hundred engineers, monorepo with monolithic deployments and tests work fine.

And here lies a very important problem IMHO - many (if not majority) of organizations (which do at least some software development) have less than 100 software developers but the industry best practices (which include micro-service architecture) are defined by FAANG-sized organizations and at least some of these practices are sub-optimal for small shops.

Re:Prime Video Abandons Serverless Distributed Stack for Mon... by adql on Thursday May 04, 2023 @06:10AM (#35813270)
>Another pain with monoliths is that they can only be deployed if the entire monolith is passing all tests. When you cannot deploy your changes because someone else on an entirely orthogonal team broke something in the monolith which is not related to you it gets old really quick.

You can just... not allow code not passing test into master branch. They can fuck around in their own one, that's what branches are for

Re:Prime Video Abandons Serverless Distributed Stack for Mon... by __turbobrew__ on Thursday May 04, 2023 @02:54PM (#35820362)
Tests can pass before they are merged but fail after merge. Tests can also regress over time and become flaky.
Re:Prime Video Abandons Serverless Distributed Stack for Mon... by drw85 on Thursday May 04, 2023 @10:36AM (#35816031)
Aren't you just hiding the flaws in the overall system by confiding the tests to your microservice?

That's my experience at least. Things still break, you just notice it later.

Re:Prime Video Abandons Serverless Distributed Stack for Mon... by bottlepalm on Thursday May 04, 2023 @03:55AM (#35812542)
The problem is when the company re-orgs you can easily end up with many more microservices than there are teams. Then you’re really up a creek.
Re:Prime Video Abandons Serverless Distributed Stack for Mon... by nomilk on Thursday May 04, 2023 @04:21AM (#35812651)
I haven't worked on a microservice architecture yet, but this is a very interesting idea that I hadn't heard before. That micro services can potentially give greater visibility of each team's performance, improving accountability.
Re:Prime Video Abandons Serverless Distributed Stack for Mon... by adql on Thursday May 04, 2023 @06:16AM (#35813302)
It's way too easy to just add a lot of friction if you go too far.

I also think it would be way healthier if teams acted as "maintainers" rather than "sole developer" of a service.

For example if team A wants feature from service team B manages they should be free (after communicating that so there is no confict/work duplication) to just make that feature and submit pull request to the team B.

Then team B can make sure it's up to their standard but that's shorter work than getting the whole machine of "submit a ticket for team B to add feature, find manpower to do it, and schedule work" running.

Re:Prime Video Abandons Serverless Distributed Stack for Mon... by lxgr on Thursday May 04, 2023 @09:22AM (#35814868)
It's incredibly easy to game that architecture in a low-trust environment, though. If a team owns the interface definition of their microservice, they can just declare all callers' problems an instance of "holding it wrong".
Re:Prime Video Abandons Serverless Distributed Stack for Mon... by IshKebab on Thursday May 04, 2023 @05:14AM (#35812952)
I think the trust issue doesn't really justify microservices. Assuming everyone is using interoperable languages you can still have a monolith with clear API contacts and separate ownership by using traditional libraries.

That is a good point about reliability and cost though. I hadn't heard that before.

Re:Prime Video Abandons Serverless Distributed Stack for Mon... by YetAnotherNick on Thursday May 04, 2023 @05:25AM (#35813012)
What if some team makes the their part 10 times slower. This is not a theoretical scenario, but one I saw happening many times. While technically you could partition and monitor each part of the monolith separately, but then you are just reinventing microservice architecture.
Re:Prime Video Abandons Serverless Distributed Stack for Mon... by IshKebab on Thursday May 04, 2023 @12:34PM (#35818125)
You just run a profiler. It's better and arguably easier than microservice profiling since it doesn't only measure at the interface, can measure fine grained memory usage, etc.

Google "continuous profiling".

I'm not sure why you would think that that reinvents microservices.

Microservices is just taking a monolith and moving the components into separate processes that communicate via RPC.

Re:Prime Video Abandons Serverless Distributed Stack for Mon... by YetAnotherNick on Thursday May 04, 2023 @09:08PM (#35824163)
In my experience, profiling is hard and a lot of times doesn't show the issue. e.g. for unnamed goroutines it is hard to see which goroutine profiler is referring to. Or say if some code change increased CPU usage without increase in time/memory, it will affect the entire monolith performance. Yes a good maintainer could pinpoint the issue, but remember my premise was that it is low trust environment, and saying I think your code change increased CPU usage involves talking to managers and being in 2 meetings. And in microservice they would have to deal with their alerts to not miss the SLA.

> Microservices is just taking a monolith and moving the components into separate processes that communicate via RPC.

Microservice architecture divides the responsibility much more than that. They have separate redis cache, local cache, tests, and even likely has different DB etc.

Re:Prime Video Abandons Serverless Distributed Stack for Mon... by lxgr on Thursday May 04, 2023 @09:16AM (#35814783)
That's my experience too. Microservices are first and foremost a technology to dilute responsibility, and if you're clever about it, you can even let it fall through the cracks completely.
Re:Prime Video Abandons Serverless Distributed Stack for Mon... by MattPalmer1086 on Thursday May 04, 2023 @03:16AM (#35812303)
This right here is one of the reasons I got out of software development. Not micro services in particular, but just the unthinking application of some new pattern to everything.

Everyone wants to do the new cool thing. Everyone wants it on their CV. To be followed some years later by everyone saying how awful it is, and moving on to the next fad. Rinse, repeat, round and round we go with no actual intelligence being applied.

Re:Prime Video Abandons Serverless Distributed Stack for Mon... by mpweiher on Thursday May 04, 2023 @03:19AM (#35812325)
Yes.

However, I think there is something hiding inside the µservices movement that is actually much more generally applicable and useful: API-first development.

And of course good old OO.

Re:Prime Video Abandons Serverless Distributed Stack for Mon... by cglong on Thursday May 04, 2023 @03:25AM (#35812363)
My team owns an API monolith that hosts several completely unrelated endpoints. I keep thinking this would be a good candidate for breaking into microservices, but I do wonder if I'm buying into the hype.
Re:Prime Video Abandons Serverless Distributed Stack for Mon... by Smaug123 on Thursday May 04, 2023 @03:36AM (#35812437)
Massive architectural refactors are so attractive (at least to the kind of mind that likes Factorio) and so expensive. At least make sure you've got some concrete benefits that you think might arise from breaking apart the monolith, so you can do some semblance of a cost-benefit analysis!
Re:Prime Video Abandons Serverless Distributed Stack for Mon... by bottlepalm on Thursday May 04, 2023 @03:51AM (#35812523)
You are. People like you nuked all productivity we had at my last company.
Re:Prime Video Abandons Serverless Distributed Stack for Mon... by cglong on Thursday May 04, 2023 @01:53PM (#35819469)
Well, I've been sitting on this thought for two years now, so they probably weren't exactly like me :)
Re:Prime Video Abandons Serverless Distributed Stack for Mon... by adql on Thursday May 04, 2023 @06:38AM (#35813426)
That is probably the best use case for microservices (althought I'd just call them "services" at that part).

That assuming they are big enough to warrant that in the first place.

IMO if it is a dozen unrelated endpoints but all of that still takes less than dev/month to manage it's probably entirely wasted effort to "fix it"

And if any of them grows to warrant dev/month or more.... separate that one and only that one out of that.

Re:Prime Video Abandons Serverless Distributed Stack for Mon... by cmrdporcupine on Thursday May 04, 2023 @08:01AM (#35814029)
When you say unrelated, are you sure? Do they share -- or should they share -- a common underlying relational data model?

My biggest grief with microservices is the fact that it's effectively become a war on having a coherent logical normalized relational data model inside an organization.

Re:Prime Video Abandons Serverless Distributed Stack for Mon... by cglong on Thursday May 04, 2023 @01:52PM (#35819460)
This is a good question to think about. Right now, they don't have any relationship beyond serving different parts of my group, but perhaps they could be redesigned in a more cohesive way.
Re:Prime Video Abandons Serverless Distributed Stack for Mon... by cmrdporcupine on Thursday May 04, 2023 @03:14PM (#35820664)
The core pessimal problem presented by microservices is this: someday some stakeholder is going to ask for some information to be joined together or interlinked -- and that information will have been unwisely put into separate services ... and now you'll be doing joins manually via web service calls -- over the network -- and somewhere the ghost of E.F. Codd is spinning in circles and cursing you.

I think it's actually quite rare for companies to have data so actually autonomous and unrelated that it does not logically relate to anything else in the organization.

Re:Prime Video Abandons Serverless Distributed Stack for Mon... by thatwasunusual on Thursday May 04, 2023 @04:07AM (#35812593)
The problem I see in many projects, is that they start out as - or implementing - a microservice architecture. I think this is backwards; you should start with a monolith and separate out concerns into microservies if it makes sense, not because it's "cool."
Re:Prime Video Abandons Serverless Distributed Stack for Mon... by knightofmars on Friday May 05, 2023 @04:51PM (#35835020)
I agree, but aside from it being seen as "cool", what drives some engineers to go microservice first architecture is having experienced the inability of an organization to acknowledge that they actually do need to re-write a monolith as two or more services or undergo a general re-architecting of the monolith. Getting buy-in from the business is extremely difficult as clearly communicating the actual effort and impact that re-architecting the monolith would require is nearly impossible. This is usually due to poor separation of domains via lack of modules within the monolith, spaghetti code, circular or other strange dependency trees, tables with relationships or data that should never have existed in those tables, and a whole other set of other bizarre issues that were due to lack of planning and general discipline by engineers along the way.

If you have a microservice first architecture, the perception is, it's easier to describe effort to re-write an individual service or split it into two services as there is a clearly delineated body of work. Bizarre service-to-service dependencies may still exist and a poorly implemented microservice architecture is still a potential challenge.

Point being, organizations incentivize bad economic decisions on the part of engineers through the inability to recognize that rework is a necessary aspect of developing software and by constantly eschewing rework in favor of feature delivery it sends a strong message to the engineer about what to prioritize.

Re:Prime Video Abandons Serverless Distributed Stack for Mon... by nomilk on Thursday May 04, 2023 @04:18AM (#35812638)
I had to google what 'cargo culting' meant. But I laughed when I found out.

https://en.wikipedia.org/wiki/Cargo_cult_programming#:~:text....

Re:Prime Video Abandons Serverless Distributed Stack for Mon... by latexr on Thursday May 04, 2023 @04:50AM (#35812808)
Do you have a link to documentation on that method of highlighting text? Hard to search for due to the all the non-letter characters.
Re:Prime Video Abandons Serverless Distributed Stack for Mon... by oefrha on Thursday May 04, 2023 @05:20AM (#35812989)
Text fragments: https://wicg.github.io/scroll-to-text-fragment/

Currently supported on all non-Firefox major browsers. https://caniuse.com/url-scroll-to-text-fragment

Re:Prime Video Abandons Serverless Distributed Stack for Mon... by latexr on Thursday May 04, 2023 @06:00PM (#35822697)
Thank you.

Seems Brave is an exception amongst Chromium browsers. They don’t implement it for privacy reasons.

https://github.com/brave/brave-browser/issues/22906

Re:Prime Video Abandons Serverless Distributed Stack for Mon... by sorcix on Thursday May 04, 2023 @09:01AM (#35814585)
Re:Prime Video Abandons Serverless Distributed Stack for Mon... by esjeon on Thursday May 04, 2023 @04:21AM (#35812654)
Yeah, but writing a big chunk of new code always involves either gambling or cargo culting, until you nail the actual requirements and the design. MSA is just a methodology to contain risks from the uncertainty, and it never says you must build everything in MSA. It's often better to migrate mature code into (semi-)monolithic services.
Re:Prime Video Abandons Serverless Distributed Stack for Mon... by siva7 on Thursday May 04, 2023 @04:32AM (#35812697)
The problem is more like that many people don't understand the tradeoffs and when to use microservices. This becomes even more obvious when you ask them what their current architecture is and what problems they hope to solve for that needs a transition to another architecture.
Re:Prime Video Abandons Serverless Distributed Stack for Mon... by bewo001 on Thursday May 04, 2023 @08:39AM (#35814331)
The reason for doing microservices I've been given by a two person developer team that had created a 15+ microservice single-server k8s monster was: 'this is how it is done today' Yeah, IT is like the fashion industry.
Re:Prime Video Abandons Serverless Distributed Stack for Mon... by 444Duarte on Thursday May 04, 2023 @04:50AM (#35812811)
The article is about Serverless, which is not necessarily microservices
Re:Prime Video Abandons Serverless Distributed Stack for Mon... by klabb3 on Thursday May 04, 2023 @05:00AM (#35812875)
Yes but can we also consider “3p APIs that should have been a library” as microservices? It feels like that model has sneaked in as common practice but it suffers the same (and more) problems as multiple (1p) microservices.
Re:Prime Video Abandons Serverless Distributed Stack for Mon... by ImPleadThe5th on Thursday May 04, 2023 @05:11AM (#35812936)
I really feel like microservices primarily solve people/team organizing problems more than it solves any computing problems.
Re:Prime Video Abandons Serverless Distributed Stack for Mon... by haspok on Thursday May 04, 2023 @07:50AM (#35813938)
It's called Conway's law.
Re:Prime Video Abandons Serverless Distributed Stack for Mon... by datadeft on Thursday May 04, 2023 @06:01AM (#35813198)
Microservices make sense for a lot more than 5%. If fact I think it is much closer to the 80/20, 80% working on serverless, 20% not. Video streaming obviously not going to work on AWS Lambda to begin with.
Re:Prime Video Abandons Serverless Distributed Stack for Mon... by adql on Thursday May 04, 2023 @06:17AM (#35813313)
They really don't unless you routinely put a bunch of tiny self-contained apps.

The "pain" of figuring out how to deploy your "normal app" quickly amortizes over just how much easier and more reliable code is.

Re:Prime Video Abandons Serverless Distributed Stack for Mon... by datadeft on Thursday May 04, 2023 @06:38AM (#35813425)
I finally realised after using Lambda for almost a decade (started to use it when it was released 9 years ago) that instead of think about apps that you map to lambda functions you should think about features instead.

A simple example: I have a SPA that has the following features: auth(login, logout), dashboard, feature a, feature b. I can write a few very simple lambda functions and deploy these the same way (IaC). What do we (my team) win? We can implement each function in a language we want. You have a feature that is too slow? Rewrite it in Rust. You have an amazing Python lib for feature a? Use Python. What else? We almost never touch auth, so if a feature has a bug it does not impact the entire application. Security is better because we can allow individual functions to access part of the infra they really need to access. Lambda functions can call other lambda functions as well.

Downside is that we cannot use a shared cache that is easy with a monolith. People need to design the boxes well which functionality goes to which lambda function. We have to use distributed trace ids to track requests.

Re:Prime Video Abandons Serverless Distributed Stack for Mon... by adql on Thursday May 04, 2023 @09:14AM (#35814750)
I kinda thought about making "monolithic lambda", where there is just interface to get the request, respond to request, logging, and maybe some queue to talk with other components, for some of my personal tools.

Basically cut down the cruft when deploying another small self-contained feature but still keep the code running (savings of few MB memory are meanigless if you just have few dozen features that might run at the same time anyway).

Then I realized it's basically reinventing the ancient idea of "application server" like JBoss and EJB... which is kinda the case for lambda anyway.