Absolutes in programming tend to lead to bad designs. This is more a “I’m gonna stir up some shit on Twitter” post than real wisdom.
No microservices usually leads to bloated, tightly coupled logic that ignores business domains
No monoliths usually leads to sprawling microservice deployments with tightly coupled dependencies and flavor-of-the-week new ones
No Kubernetes usually leads to VPS pets or crazy obstacle courses trying to get SSL termination without a million fucking dependencies in a cloud container orchestration system that isn’t as good as Kubernetes
All Kubernetes usually leads to huge SRE costs for a tiny app
The same shit happened last summer when AWS came out with their “we dropped microservices for a monolith and look at our speed increase” article which ignored good design principles. Sometimes you should split things over business domains so you can deploy and code independently. Sometimes Kubernetes is the best way to handle your scale needs. The stories we normally read are about people doing it wrong (eg AWS making a bunch of microservices inside a domain sending fucking gigs of data between what should have been functions in a single service). Inexperienced folks don’t always know when to move from their minimum viable solution to something that can scale. That doesn’t mean you remove these things, it means you train on when you need them.
Should we abandon design patterns because singletons or flywheels aren’t the correct solution all of the time?
Monoliths are the answer to bad microservices. Microservices are the answer to bad monoliths. It’s all cyclic and four different architects are going to have fifteen different opinions on how your system should be built. Do the thing that makes sense for your team and try to stay flexible.
Precisely, Gary Bernhardt has given a talk on ideology. I don't think he's precisely someone who thinks in absolutes. It's just preaching that some stuff is (probably) used more than it should. I've seen way, way, way worse projects that over engineered things and made things slow and unmanageable, than the opposite. Of course, everyone has seen different things, and our perceptions are amplified and biased by that.
Saying that some projects, at some point in their lifecycle, don't need certain things, is not saying that those things have no place. Also, if one can't design a monolith that isn't bloated and tightly coupled, one definitely has no business designing microservices. Using microservices is neither necessary, nor sufficient to achieve decoupling.
Monolithic services are the ideal way to begin a project, as using basic good practices, we can build a service that does many things with minimal coordination, and as it grows and requirements change or are discovered, we can easily refactor to keep things simple. As the software matures, we find the natural service boundaries, and find that certain pieces would perform better if they were separated out and could scale independently, or act asynchronously. Since we have followed good practices, this should usually be a simple matter of removing a class or module to a new service, and replacing it with a facade, such that the rest of the monolith doesn't have to change at all.
Lemmy really needs pixelfed's naive bayes spam detection, it would be able to easily classify the new accounts after classifying one post as spam, then it would be 0 seconds wasted.
I mean this is kind of bullshit. There's a lot of things that run in containers these days, and kubernetes is the best way to run containers. If you can do everything with static js or managed services, more power to you, but as soon as you have multiple services talking to each other, you should be using kubernetes, and you should probably consider message queues.
I never got into kubernetes but docker swarm mode services (not to be confused with old docker swarm) are pretty similar and they're absolutely amazing for small deployments, even for just a home lab. If there's anything I want to self-host, no matter if it's homeassistant, jellyfin, nextcloud, a mastodon instance, a lemmy instance, GitLab or whatever, I can usually just get a preconfigured container, adjust some lines in a docker-compose.yml to fit my environment and be done with deployment in under 5 minutes without having to worry about dependencies, isolation or most configuration. Same for the stuff I write myself. Most of my stuff has a very simple GitLab CI config of maybe 20 lines and immediately shows up live when I merge my changes into main.
Currently migrating a massive monolithic Java application to microservices... The circle of life continues.
Want to just swap jobs in ~5 years to keep the cycle going? You can migrate this project back to a Java monolith and I'll migrate your monolith back to micros :D
Honestly this just sounds like periodically refactoring everything to remove cruft can be a good thing. Also, it helps you understand how the existing code works if you change it and not break everything.
ON LEMMY ON LEMMY AND SNEED SNEED'S FLOYD CITY SLICKER FEED SNEED'S GUCCI LOAFERS FANCY GERMAN CAR FOR FREE ON LEMMY COPE COPE COPE CLEAN IT UP SUCK FOR FREE PARK AVENUE MANICURE CLEAN IT UP CLEAN IT UP CITY SLICKER COPE FLOYD JANNY FANCY GERMAN CAR I CAN'T JANNIES AND JANNY COPE JANNIES CLEAN IT UP FOR FREE FEED JANNIES JANNIES CLEAN IT UP SEETHE CITY SLICKER FUCK SUCK SNEED JANNY AND CITY SLICKER PARK AVENUE MANICURE CLEAN IT UP AND
SNEED'S ON LEMMY SEETHE PARK AVENUE MANICURE SNEED FANCY GERMAN CAR JANNY SNEED'S FUCK SUCK CLEAN IT UP SEETHE CITY SLICKER SUCK CLEAN IT UP ON LEMMY CHUCK'S AND SUCK HOT POCKETS DILATE CLEAN IT UP HOT POCKETS FEED DILATE CHUCK JANNIES JANNIES AND AND FOR FREE SEETHE GUCCI LOAFERS HOT POCKETS SEETHE FUCK SEETHE JANNIES FEED FEED GUCCI LOAFERS ON LEMMY I CAN'T COPE HOT POCKETS CLEAN IT UP FOR FREE FUCK ON LEMMY I CAN'T
GUCCI LOAFERS JANNY SNEED'S SNEED SNEED'S AND AND CITY SLICKER SEETHE CHUCK FLOYD CHUCK'S SEED SUCK JANNIES SNEED COPE CHUCK FLOYD FLOYD GUCCI LOAFERS SNEED FANCY GERMAN CAR JANNY PARK AVENUE MANICURE SEED CLEAN IT UP CHUCK'S JANNIES FEED ON LEMMY SUCK SNEED JANNY FEED FLOYD FANCY GERMAN CAR SNEED'S PARK AVENUE MANICURE HOT POCKETS I CAN'T CHUCK'S SUCK CLEAN IT UP FUCK I CAN'T AND FOR FREE SNEED SEETHE
ON LEMMY CLEAN IT UP FLOYD DILATE FLOYD SEETHE AND HOT POCKETS DILATE HOT POCKETS COPE AND PARK AVENUE MANICURE FOR FREE FOR FREE JANNIES SUCK CITY SLICKER CHUCK CLEAN IT UP GUCCI LOAFERS CITY SLICKER PARK AVENUE MANICURE JANNY FEED FUCK CLEAN IT UP SUCK SUCK ON LEMMY CHUCK JANNIES SEED I CAN'T CLEAN IT UP JANNIES SEETHE FUCK CHUCK COPE FLOYD SUCK CLEAN IT UP CITY SLICKER CHUCK HOT POCKETS SNEED'S JANNIES I CAN'T CHUCK
CHUCK'S GUCCI LOAFERS JANNIES HOT POCKETS CHUCK FANCY GERMAN CAR AND SNEED'S I CAN'T PARK AVENUE MANICURE SNEED'S DILATE JANNY JANNIES CHUCK'S JANNIES CLEAN IT UP SNEED'S FEED COPE FLOYD ON LEMMY HOT POCKETS AND CHUCK'S COPE I CAN'T AND FEED SEED DILATE DILATE PARK AVENUE MANICURE FANCY GERMAN CAR FANCY GERMAN CAR HOT POCKETS FUCK HOT POCKETS SUCK COPE CLEAN IT UP SEETHE SNEED ON LEMMY FUCK FEED COPE FANCY GERMAN CAR I CAN'T SEED
JANNIES ON LEMMY FLOYD FOR FREE CITY SLICKER CHUCK PARK AVENUE MANICURE CLEAN IT UP CITY SLICKER CHUCK FUCK CITY SLICKER CITY SLICKER DILATE CHUCK'S CHUCK CHUCK FUCK COPE SUCK FANCY GERMAN CAR SUCK COPE FEED JANNIES CHUCK JANNIES FOR FREE JANNY FLOYD PARK AVENUE MANICURE SNEED PARK AVENUE MANICURE SNEED'S CITY SLICKER CHUCK'S DILATE SNEED CLEAN IT UP ON LEMMY CLEAN IT UP SUCK HOT POCKETS ON LEMMY CHUCK'S FANCY GERMAN CAR FANCY GERMAN CAR HOT POCKETS SUCK FLOYD
FUCK CHUCK PARK AVENUE MANICURE CLEAN IT UP FLOYD JANNIES SEETHE SEED SEETHE SEETHE FANCY GERMAN CAR FEED SNEED HOT POCKETS FLOYD I CAN'T I CAN'T AND JANNIES COPE COPE DILATE SUCK SNEED'S CITY SLICKER ON LEMMY SNEED CLEAN IT UP FUCK CLEAN IT UP GUCCI LOAFERS CHUCK'S SUCK JANNY SEED SEETHE FANCY GERMAN CAR SUCK PARK AVENUE MANICURE SNEED'S SEETHE CHUCK SNEED'S ON LEMMY JANNIES JANNIES DILATE CITY SLICKER JANNIES CHUCK
JANNIES CLEAN IT UP FOR FREE PARK AVENUE MANICURE I CAN'T SEED SUCK DILATE CHUCK'S SUCK SNEED DILATE COPE CHUCK'S HOT POCKETS AND COPE SNEED SNEED'S JANNIES AND GUCCI LOAFERS CHUCK'S I CAN'T CHUCK'S CITY SLICKER FUCK FANCY GERMAN CAR SEED SEED CITY SLICKER CHUCK CHUCK'S FEED CITY SLICKER GUCCI LOAFERS FOR FREE FANCY GERMAN CAR FUCK PARK AVENUE MANICURE SEED FLOYD AND HOT POCKETS FOR FREE SEED SNEED'S I CAN'T FUCK FUCK
JANNY SNEED'S CHUCK CHUCK'S CHUCK'S HOT POCKETS JANNIES FANCY GERMAN CAR DILATE ON LEMMY FEED SNEED'S FANCY GERMAN CAR COPE CITY SLICKER FOR FREE SNEED'S SEED SNEED SNEED FUCK SEETHE COPE DILATE FANCY GERMAN CAR PARK AVENUE MANICURE SNEED FLOYD FEED FOR FREE SNEED'S FANCY GERMAN CAR PARK AVENUE MANICURE CITY SLICKER FOR FREE SNEED CLEAN IT UP AND SUCK SEETHE FANCY GERMAN CAR SUCK SEETHE I CAN'T AND FEED HOT POCKETS FLOYD I CAN'T CITY SLICKER
CHUCK DILATE FOR FREE SNEED PARK AVENUE MANICURE SNEED FUCK CHUCK FANCY GERMAN CAR FOR FREE CHUCK PARK AVENUE MANICURE FLOYD CHUCK PARK AVENUE MANICURE SEETHE JANNY PARK AVENUE MANICURE CLEAN IT UP HOT POCKETS PARK AVENUE MANICURE FUCK FLOYD CHUCK'S CITY SLICKER DILATE SNEED'S GUCCI LOAFERS COPE FOR FREE FANCY GERMAN CAR SEED COPE SEED FEED SEED HOT POCKETS GUCCI LOAFERS CLEAN IT UP SEED DILATE GUCCI LOAFERS CHUCK I CAN'T SEETHE SEETHE I CAN'T COPE AND SEETHE
FEED SNEED FUCK CLEAN IT UP SEED CITY SLICKER SEED ON LEMMY SUCK CHUCK HOT POCKETS JANNY JANNIES DILATE SEETHE HOT POCKETS COPE CITY SLICKER SNEED PARK AVENUE MANICURE FOR FREE HOT POCKETS FEED FUCK FOR FREE FANCY GERMAN CAR SUCK HOT POCKETS PARK AVENUE MANICURE I CAN'T CHUCK'S I CAN'T DILATE AND CLEAN IT UP JANNIES FANCY GERMAN CAR GUCCI LOAFERS ON LEMMY ON LEMMY CLEAN IT UP SNEED'S SEETHE SNEED'S CLEAN IT UP CHUCK'S CHUCK DILATE SNEED SUCK
AND I CAN'T FUCK ON LEMMY SEETHE SUCK FOR FREE SEETHE AND SEED JANNY FLOYD SEED JANNY DILATE PARK AVENUE MANICURE CHUCK AND HOT POCKETS HOT POCKETS SEED HOT POCKETS JANNY ON LEMMY SNEED'S SEETHE PARK AVENUE MANICURE FOR FREE SUCK JANNY GUCCI LOAFERS JANNIES SEETHE FOR FREE DILATE CITY SLICKER PARK AVENUE MANICURE CHUCK JANNIES SEED CHUCK'S SNEED SNEED FANCY GERMAN CAR CITY SLICKER SNEED'S SNEED CHUCK'S SNEED'S JANNIES
JANNY SNEED CLEAN IT UP CLEAN IT UP FANCY GERMAN CAR FUCK ON LEMMY ON LEMMY FEED FANCY GERMAN CAR FEED PARK AVENUE MANICURE ON LEMMY COPE SEED FANCY GERMAN CAR GUCCI LOAFERS JANNIES FOR FREE SEED CHUCK'S JANNY CHUCK'S AND FEED SNEED CHUCK'S SNEED'S FANCY GERMAN CAR FUCK FANCY GERMAN CAR CHUCK FANCY GERMAN CAR JANNY AND SNEED CHUCK JANNIES ON LEMMY AND SNEED SEED FEED ON LEMMY FOR FREE FEED SNEED FOR FREE JANNY CITY SLICKER
FANCY GERMAN CAR FANCY GERMAN CAR FOR FREE AND FANCY GERMAN CAR COPE PARK AVENUE MANICURE SEETHE ON LEMMY SEETHE I CAN'T CHUCK AND SNEED'S ON LEMMY JANNIES HOT POCKETS AND FUCK JANNY DILATE FLOYD JANNIES ON LEMMY SEED SNEED SNEED SEED GUCCI LOAFERS I CAN'T ON LEMMY FUCK CHUCK FEED AND SUCK AND CITY SLICKER FOR FREE ON LEMMY CLEAN IT UP SEETHE CHUCK FLOYD SEETHE ON LEMMY SEED JANNIES CHUCK AND
COPE COPE AND SNEED DILATE FEED SUCK HOT POCKETS CHUCK'S PARK AVENUE MANICURE CHUCK'S FUCK SUCK CITY SLICKER SEETHE FEED FLOYD SUCK SEETHE DILATE CHUCK'S CHUCK FOR FREE HOT POCKETS FEED HOT POCKETS FLOYD HOT POCKETS FEED FOR FREE SUCK SNEED SUCK AND SNEED JANNIES CLEAN IT UP SNEED'S SNEED'S GUCCI LOAFERS FLOYD SEETHE SNEED'S SEETHE FUCK HOT POCKETS FOR FREE FANCY GERMAN CAR JANNIES HOT POCKETS
FOR FREE SEETHE CLEAN IT UP FANCY GERMAN CAR CHUCK'S GUCCI LOAFERS AND SNEED CHUCK GUCCI LOAFERS CLEAN IT UP CHUCK'S FUCK AND SEED PARK AVENUE MANICURE SEETHE CHUCK'S SNEED JANNY CHUCK FANCY GERMAN CAR SNEED SEETHE SEED JANNY FEED SEED SEETHE SEED SNEED'S ON LEMMY AND FOR FREE PARK AVENUE MANICURE SEED CHUCK'S FEED COPE PARK AVENUE MANICURE FEED SEETHE AND GUCCI LOAFERS SNEED CHUCK'S SEED COPE FEED JANNIES
FANCY GERMAN CAR ON LEMMY CITY SLICKER SUCK GUCCI LOAFERS CHUCK'S SNEED'S GUCCI LOAFERS FLOYD COPE HOT POCKETS FUCK FEED DILATE CHUCK'S FUCK SNEED SEETHE AND SNEED'S FUCK SNEED'S FOR FREE GUCCI LOAFERS SUCK CHUCK'S SNEED'S FOR FREE ON LEMMY COPE CHUCK'S COPE JANNY SUCK SEED CHUCK'S SEED DILATE AND SNEED'S AND HOT POCKETS SEED CITY SLICKER SUCK CHUCK FLOYD SUCK FEED SEED
SNEED CLEAN IT UP FUCK FOR FREE SEED CITY SLICKER CHUCK JANNIES CHUCK SNEED'S SUCK JANNIES ON LEMMY SNEED ON LEMMY GUCCI LOAFERS AND CLEAN IT UP AND ON LEMMY JANNY CHUCK SNEED'S COPE PARK AVENUE MANICURE PARK AVENUE MANICURE CHUCK'S SNEED ON LEMMY CHUCK'S SNEED JANNIES DILATE FUCK SNEED SUCK SNEED SNEED FOR FREE SEED HOT POCKETS COPE CHUCK HOT POCKETS GUCCI LOAFERS SNEED FLOYD CLEAN IT UP SEED HOT POCKETS
COPE JANNIES FLOYD FANCY GERMAN CAR HOT POCKETS PARK AVENUE MANICURE FANCY GERMAN CAR FLOYD DILATE COPE FANCY GERMAN CAR AND JANNIES FOR FREE COPE CITY SLICKER JANNIES CHUCK'S SNEED'S FOR FREE SEED CHUCK COPE SNEED CLEAN IT UP JANNIES COPE FLOYD DILATE COPE FOR FREE HOT POCKETS CHUCK GUCCI LOAFERS I CAN'T FOR FREE SNEED'S FANCY GERMAN CAR PARK AVENUE MANICURE SEETHE AND JANNY AND SNEED COPE HOT POCKETS PARK AVENUE MANICURE SEETHE I CAN'T CHUCK'S