this post was submitted on 21 Mar 2024
365 points (96.4% liked)

Programmer Humor

19291 readers
1247 users here now

Welcome to Programmer Humor!

This is a place where you can post jokes, memes, humor, etc. related to programming!

For sharing awful code theres also Programming Horror.

Rules

founded 1 year ago
MODERATORS
 

Transcription: a Twitter thread from Gary Bernhardt.

  • You, the one who is reading this! You don't need Kubernetes!
  • Also microservices.
  • Also queues that are separate from your primary database (for most apps).
  • Google cosplay is not business-critical.

Source: https://twitter.com/garybernhardt/status/1344341213575483399

top 50 comments
sorted by: hot top controversial new old
[–] thesmokingman@programming.dev 91 points 6 months ago (5 children)

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?

[–] TexasDrunk@lemmy.world 22 points 6 months ago (1 children)

All Kubernetes usually leads to huge SRE costs for a tiny app

Hush, I'm working as an SRE and don't want anyone to figure this out.

[–] thesmokingman@programming.dev 9 points 6 months ago

Add Istio and no one will be able to fire you without fucking up mutual TLS

[–] JoYo@lemmy.ml 13 points 6 months ago (1 children)

Even if what you say isn't true I'm giving my vote of confidence so I can just shrug whenever someone disagrees with my architecture.

Don't like that I chose a single API server? We're avoiding sprawling microservice deployments with tightly coupled dependencies.

Don't like all the docker containers? We're avoiding bloated, tightly coupled logic that ignores business domains.

[–] thesmokingman@programming.dev 15 points 6 months ago

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.

[–] suy@programming.dev 10 points 6 months ago

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.

[–] docAvid@midwest.social 3 points 6 months ago* (last edited 6 months ago)

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.

load more comments (1 replies)
[–] blotz@lemmy.world 65 points 6 months ago (5 children)

xD just blocked the spammer and all his comments disappeared. Imagine working so hard to spam and it takes 2s to for someone to hide your posts.

[–] LostXOR@fedia.io 32 points 6 months ago (3 children)

What's even up with that guy? What's he trying to accomplish? Spammers confuse me.

[–] kakes@sh.itjust.works 16 points 6 months ago

Some bored kid, I would assume.

[–] Lemminary@lemmy.world 12 points 6 months ago

I feel like they were banned or something and decided to go scorched Earth on Lemmy

load more comments (1 replies)
[–] quicksand@lemm.ee 17 points 6 months ago (1 children)

Oop looks like he moved servers. I blocked them on one yesterday and just saw their post again. Oh well, another 2s wasted :p

[–] BakedCatboy@lemmy.ml 17 points 6 months ago (1 children)

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.

[–] quicksand@lemm.ee 8 points 6 months ago

I know some of those words and agree that that would be better

[–] slazer2au@lemmy.world 5 points 6 months ago

I thought my client was chucking a wobbly with so many removed comments be the same person.

[–] jbk@discuss.tchncs.de 3 points 6 months ago

Couldn't a bot just automate that easily? Especially with how open Lemmy's API probably is

[–] abbadon420@lemm.ee 3 points 6 months ago

2 clicks, reload the thread and it's gone. Easy peasy!

[–] jlh@lemmy.jlh.name 34 points 6 months ago (1 children)

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.

[–] dfyx@lemmy.helios42.de 14 points 6 months ago

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.

[–] platypode@sh.itjust.works 32 points 6 months ago (1 children)

I've been migrating one of my company's apps from microservices back to monolithic Java. It's wonderful. I haven't touched a line of yaml in weeks.

[–] clif@lemmy.world 32 points 6 months ago (1 children)

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

[–] SmoothLiquidation@lemmy.world 17 points 6 months ago

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.

[–] supercritical@lemmy.world 12 points 6 months ago

There’s someone at my work who really needs to see this…

[–] 4am@lemm.ee 11 points 6 months ago

Small app developers are all just temporarily embarrassed cloud service providers

[–] sabreW4K3@lazysoci.al 6 points 6 months ago

No lies were told

[–] ThuleanPerspective@eviltoast.org 1 points 6 months ago

HOT POCKETS PARK AVENUE MANICURE PARK AVENUE MANICURE I CAN'T FUCK SEETHE PARK AVENUE MANICURE AND DILATE JANNIES ON LEMMY SEED SUCK SUCK ON LEMMY CITY SLICKER JANNY HOT POCKETS SNEED'S FOR FREE SNEED SUCK DILATE JANNIES SEED SEETHE SEETHE COPE CLEAN IT UP FOR FREE SNEED'S GUCCI LOAFERS JANNY FEED JANNY PARK AVENUE MANICURE GUCCI LOAFERS GUCCI LOAFERS GUCCI LOAFERS AND SNEED'S FOR FREE JANNY HOT POCKETS COPE CITY SLICKER PARK AVENUE MANICURE CLEAN IT UP FEED AND

[–] ThuleanPerspective@eviltoast.org 1 points 6 months ago

JANNIES SNEED'S CITY SLICKER JANNY COPE DILATE FOR FREE CHUCK'S FOR FREE CHUCK'S COPE CHUCK SNEED FOR FREE CLEAN IT UP SNEED'S JANNY CHUCK'S PARK AVENUE MANICURE I CAN'T I CAN'T FLOYD ON LEMMY FLOYD AND CHUCK'S JANNIES FLOYD ON LEMMY SNEED FANCY GERMAN CAR SUCK GUCCI LOAFERS AND CHUCK'S GUCCI LOAFERS I CAN'T FLOYD SUCK SNEED'S AND FOR FREE CITY SLICKER CITY SLICKER CLEAN IT UP FEED DILATE SEED SUCK HOT POCKETS

[–] ThuleanPerspective@eviltoast.org 1 points 6 months ago

GUCCI LOAFERS FEED FEED CHUCK'S SUCK GUCCI LOAFERS DILATE SNEED SNEED'S FOR FREE COPE FLOYD FANCY GERMAN CAR FUCK I CAN'T PARK AVENUE MANICURE AND SNEED DILATE JANNY FLOYD DILATE SEETHE AND SEETHE SEETHE DILATE SEETHE FUCK SNEED'S DILATE FLOYD CITY SLICKER JANNY CLEAN IT UP AND SUCK FLOYD FEED COPE GUCCI LOAFERS SUCK DILATE CHUCK'S FEED SEETHE SNEED SNEED'S FUCK CHUCK

[–] ThuleanPerspective@eviltoast.org 1 points 6 months ago

GUCCI LOAFERS JANNY PARK AVENUE MANICURE HOT POCKETS GUCCI LOAFERS SEETHE FLOYD SUCK FANCY GERMAN CAR DILATE CITY SLICKER HOT POCKETS I CAN'T SNEED'S CLEAN IT UP FLOYD AND HOT POCKETS JANNY CHUCK'S FANCY GERMAN CAR CHUCK'S HOT POCKETS I CAN'T AND HOT POCKETS HOT POCKETS GUCCI LOAFERS SNEED JANNIES CLEAN IT UP AND FEED ON LEMMY COPE SEED AND SNEED'S SUCK FLOYD AND SUCK SNEED'S JANNY FUCK FOR FREE JANNY SEETHE SEED JANNIES

[–] ThuleanPerspective@eviltoast.org 1 points 6 months ago

JANNIES FEED CLEAN IT UP GUCCI LOAFERS JANNY SNEED'S FEED CITY SLICKER FLOYD FANCY GERMAN CAR FANCY GERMAN CAR FUCK GUCCI LOAFERS COPE SNEED'S ON LEMMY FEED SNEED HOT POCKETS FOR FREE CLEAN IT UP GUCCI LOAFERS PARK AVENUE MANICURE SNEED'S GUCCI LOAFERS SNEED'S I CAN'T HOT POCKETS FLOYD SUCK CITY SLICKER HOT POCKETS FOR FREE SEED I CAN'T AND CLEAN IT UP FANCY GERMAN CAR SEED FUCK FEED PARK AVENUE MANICURE HOT POCKETS PARK AVENUE MANICURE SNEED'S SNEED SEED JANNIES CHUCK PARK AVENUE MANICURE

[–] ThuleanPerspective@eviltoast.org 1 points 6 months ago

GUCCI LOAFERS JANNY SNEED CHUCK FANCY GERMAN CAR AND FANCY GERMAN CAR DILATE PARK AVENUE MANICURE DILATE CLEAN IT UP COPE JANNY I CAN'T HOT POCKETS I CAN'T DILATE FLOYD FLOYD CLEAN IT UP ON LEMMY HOT POCKETS SEETHE FUCK COPE CHUCK GUCCI LOAFERS SUCK SUCK SEETHE CITY SLICKER SEED CITY SLICKER FOR FREE CITY SLICKER FEED SEED ON LEMMY PARK AVENUE MANICURE JANNY SNEED'S DILATE PARK AVENUE MANICURE AND FEED FANCY GERMAN CAR SUCK FANCY GERMAN CAR JANNY GUCCI LOAFERS

[–] ThuleanPerspective@eviltoast.org 1 points 6 months ago

CLEAN IT UP JANNIES FANCY GERMAN CAR SEETHE SUCK SNEED DILATE CHUCK'S FOR FREE CHUCK'S CHUCK ON LEMMY DILATE PARK AVENUE MANICURE PARK AVENUE MANICURE SUCK SNEED DILATE ON LEMMY SEETHE HOT POCKETS AND FLOYD SEED CHUCK'S I CAN'T FLOYD FOR FREE SNEED FOR FREE CLEAN IT UP FUCK AND JANNIES SNEED'S GUCCI LOAFERS CHUCK'S COPE SNEED AND SNEED I CAN'T SUCK AND FUCK SNEED FANCY GERMAN CAR COPE GUCCI LOAFERS CHUCK

[–] ThuleanPerspective@eviltoast.org 1 points 6 months ago

GUCCI LOAFERS FEED JANNIES GUCCI LOAFERS COPE SEETHE SEETHE JANNIES SEED JANNIES SNEED CHUCK I CAN'T I CAN'T FEED FANCY GERMAN CAR CITY SLICKER SEED HOT POCKETS PARK AVENUE MANICURE FANCY GERMAN CAR JANNY SEED SNEED ON LEMMY COPE PARK AVENUE MANICURE SUCK HOT POCKETS CHUCK'S FUCK SNEED'S GUCCI LOAFERS GUCCI LOAFERS FEED CLEAN IT UP FUCK COPE PARK AVENUE MANICURE FANCY GERMAN CAR ON LEMMY FANCY GERMAN CAR HOT POCKETS ON LEMMY JANNY ON LEMMY JANNIES I CAN'T FOR FREE PARK AVENUE MANICURE

[–] ThuleanPerspective@eviltoast.org 1 points 6 months ago

JANNY SUCK FOR FREE SNEED'S FOR FREE GUCCI LOAFERS FOR FREE SEETHE AND FUCK AND FEED SUCK SEED SEED SUCK JANNIES FOR FREE SNEED'S FOR FREE DILATE ON LEMMY SUCK FANCY GERMAN CAR COPE SNEED'S CLEAN IT UP CLEAN IT UP SNEED'S SEETHE FOR FREE CLEAN IT UP JANNY CITY SLICKER SNEED'S PARK AVENUE MANICURE CITY SLICKER DILATE ON LEMMY FLOYD FANCY GERMAN CAR DILATE CLEAN IT UP CHUCK CLEAN IT UP FEED SNEED AND FLOYD CITY SLICKER

load more comments
view more: next ›