Microservices
KRAZAM0 HN recommenders · 2021–2025
4M views · comedy · evergreen · Uploaded 2020-03-25
A short KRAZAM comedy sketch in which engineers explain an absurdly tangled microservices architecture to a manager. It parodies how backend complexity gets justified with jargon.
Posted as a joke or shorthand whenever a thread touches microservices, architecture sprawl, naming, or talking to management.
38:47RailsConf 2014 - All the Little Things by Sandi Metz
Confreaks
1:01:39"Simple Made Easy" - Rich Hickey (2011)
Strange Loop Conference
25:06"Making Impossible States Impossible" by Richard Feldman
elm-conf
1:00:19How To Design A Good API and Why it Matters
Google TechTalks
10:13The Problem with Time & Timezones - Computerphile
Computerphile
31:44The Value of Values with Rich Hickey
InfoQ
1:04:04Overwatch Gameplay Architecture and Netcode
GDC Festival of Gaming
1:02:26Solving Problems the Clojure Way - Rafal Dittwald
Clojure/north
20 comments from Hacker News
Wingman is cool and all, but OmegaStar is really holding things up - still waiting on ISO timestamp support: [VIDEO] [LINK] Shout out to the Galactus team!
I think this is more a revolt against unnecessary complexity, which I think is a discussion to be had. I am not solving drastically more difficult problems than I did twenty years ago, yet the amount of complexity, maintenance, and overhead is staggering. Why? Oh, because "that's how they do it at the FAANG". [VIDEO]
Having worked in big tech and small startups, I think GraphQL is a brilliant way to solve an organizational problem that massive tech companies have. It's that the team maintaining the API is different from the team that needs changes to the API. Due to the scale of the organization the latter doesn't have the access or know-how to easily add fields to that API themselves, so they have to wait for the maintainers to add the work to their roadmap and get back to it in a few quarters. Relevant Krazam: [VIDEO] At a small start-up, if the GET /foo/:fooId/bar/ endpoint is missing a field baz you need, you can usually just add it yourself and move on.
[VIDEO] ("Microservices" by KRAZAM) But, parody aside, I'm with you: there must be one for every route in their API, and then another 250 for doing schema validation. I was being funny when I wrote that, but in the far left of their diagram is a circle named "apimeta"
I was just feeling down as I completed a 3 hour code screen where I was supposed to be recording my screen the whole time I worked, but somehow I botched it and don't have any recording to show. Awkward and my own fault... Those chicken diagrams got a legitimate smile and chuckle out of me though. Thanks for the day brightener!! Reminded me a bit of this "Microservices" youtube sketch which also includes a surreal architecture diagram (and is very funny): [VIDEO]
Why would your Linux get messed up? > That sounds horrible^Hy unproductive A friend of mine works for BlackRock, they simply work on remote Windows virtual desktops. He is not complaining about speed/efficiency. A different friend works for ALDI (like Walmart just smaller), he got an issued MacBook (Pro?). When he connected an external USB hard drive the next day (or sooner?) he got an email about it because some automated scanner thing found something suspicious on it. So at these sizes software development is already inefficient. But mostly because of the complexity. (You know ... [VIDEO] )
>The fundamental anonymity model Google have employed is that the VPN tunnel is authenticated using "blind tokens" which are signed by an authorization service "Zinc." The Zinc service validates OAuth credentials passed in from the client app to verify a user's subscription, then signs the blind token created by the client app to authorize the user's session with the actual VPN backend "Copper." Ostensibly, this will separate the user's Google identity from the VPN identity since the VPN service only knows that it got a valid, signed user token, not what user that token belongs to. In video form for those not keeping up: [VIDEO]
> First off, it's not dangerous. It's just loosely defined. I'm not sure about this. Some people might take it at face value and end up with dozens if not hundreds of services for a domain that doesn't quite need them. Ergo, the project that they work on might have the development velocity plummet, because it has too much accidental complexity and ops overhead. That's how you get humorous parody videos like these ("Microservices" by KRAZAM): [VIDEO] As anyone who has ever seen SOLID or DRY taken as gospel, many people out there would probably agree with the claim that some general advice can definitely be dangerous.
I think we are mixing two different scopes in the the discussion here. If you are naming a company or a product that will be offered to clients, name it something unique that'll appear in searches. However, if you're writing a piece of software that's not going to go outside the company, having descriptive name is the way to go. You can even name your products with generic descriptive names, if your company's name is unique enough, then that'll act as a namespace for product with generic names. Think of packages in Java, C#, we don't debate about that we have to use a cute name for a X.java or X.CS, because that problem has already been solved by namespaces. Product name Excel and Office works for Microsoft because that "Microsoft" acts as namespace and "Microsoft Office" and "Microsoft Excel" are unique enough to be fully qualified names. The ntietz entry is talking about using cute names for internal services, which is very bad idea. Please enjoy [VIDEO]
To add one new property to an existing entity we need to currently update and deploy 5 services multiplied by review / testing / acceptance / production environments plus the api client and sometimes the messages depending on what kind of field it is. So it takes 3-5 hours instead of 20-30 minutes. This pretty much sums up our current situation: [VIDEO]
Anything in a foreign language seems to be impenetrable to Google Play. It's also got a goldfish brain so when you reject an incorrect guess it'll make the exact same guess next time. Doesn't seem hard with a an entire datacentre of ML servers to go "hmm, this was wrong 5 seconds ago, maybe it's still wrong now". But then again this is how I imagine it works, so maybe its just waiting for the new previous query service to be released: [VIDEO]
Congratulations, you are one of today's lucky 10,000 [1] to discover Krazam. Start with Microservices: [VIDEO] [1] [LINK]
> but now I'm an adult that wouldn't call an official war strike "Operation Beastmaster" (real name from the Iraq invasion). Why? That name’s dope. If you can’t give cool names to military operations of all things, then you can’t give cool names to anything. And as someone else pointed out, the US military does have a framework for how they name operations. They at least avoid sounding like our names in the software industry: [VIDEO] :P
I realize you're being sarcastic (I think), but I actually would put microservices in the same boat. There was a huge push to microservices in the mid teens, and a lot of companies came to hugely regret it. There is a reason this video, [VIDEO] , is so popular. And it's not that "no one is using microservices", it's just that tons of companies realized they added almost as many complications as they alleviated, and that for many teams they were just way too premature. And a lot of the companies that I've seen have the most success with microservices are also the most pragmatic about them: they use them in some specific, targeted areas (e.g. authn and authz), but otherwise they're content using a well-componentized monolith where they can break off independent services later if there is an explicit reason to do so.
The Big Tech monolith (`bingo`, `papaya`, etc.) is a fantastic callback to this video: [VIDEO] . Although that video is perhaps ironically about microservices.
> Even if the Netflix microservices architecture is an objectively good idea (which I honestly have no opinion on I have no opinion on that either, but at least this[0] story by ThePrimeagen didn't make it sound all too great. (Watch this classic[1] before for context, unless you already know Wingman, Galactus, etc.) [0]: [LINK] [1]: [VIDEO]
Yeah, but OmegaStar still doesn't support ISO timestamps like they said they would a month ago! (Reference: [VIDEO] )
good article see also this important technical clarity video -which I think is very realistic to real life technical conversations with management: [VIDEO] I think a lot of engineers would rather try to solve a thorny technical problem or even re-architect a whole system than have to explain anything in words to a senior manager or VP. As a result, those of us who can communicate well in both engineering and management speak tend to rise in the ranks More seriously, good communication is REALLY REALLY hard -communication is not writing a good article, doc or giving a good lecture on the backend. communication is making sure the intended audience understands the situation well enough to make an informed decision on the task in hand. It means getting feedback on their understanding of the situation, trying repeated ways to get your message heard until it does. -What I mean is having empathy for the audience or recipient's point of view and spending time to make sure they understand what you are telling them.
"Delivering this feature goes against everything I know to be right and true. And I will sooner lay you into this barren earth, than entertain your folly for a moment longer." -- Krazam, "Microservices", [VIDEO]
My old company Canva, was pretty good about this and I'm bringing that to the culture at my current place. Krazam has excellently parodied this unserious naming indulgence of programmers[1]. "See, Bingo knows everyone's name-O. So we get the user ID from there." Racoon, Wingman, EKS (Entropy Chaos Service), RGS, Barbie Doll, Ringo-2. 1. [VIDEO]