Why intuitive troubleshooting has stopped working
honeycomb.io
honeycomb.io
I am running a monolith, and troubleshooting is still pretty easy.
We’re operating distributed microservice ecosystems on top of a deep stack of frameworks, abstractions and runtimes that are all running on other people’s servers (aka 'the cloud').
Yikes, good luck.
Snark aside, I just want to remind most people out there: you do not work for Google or Facebook, and your systems do not have to be architected as if you are the next Google or Facebook. Neither of these companies started existence with microservice architectures or whatever. Save yourself the pain. Build a product. Find some customers. Worry about the architecture astronautery later.
For everything else, I'm quite happy with https://sentry.io and https://www.skylight.io for my troubleshooting needs.
Don’t worry, I know a physical therapy regime that will fix you right up: no medicines or scans required
Wonderful! what is it?
Every day before bed, don’t touch your left knee to your right pinky
It's a vicious circle.
I would. I don't run server farms and don't need to provision entire environments so K8s would be extreme overkill for anything I do. Docker makes sense to formally define system requirements but even that I use sparingly.
I develop embedded systems though and usually only trace coffee machines.
I do host stuff on AWS and gladly use all the services they provide. Neat, easy and less maintenance, but the most important thing for me personally is that I work with an account that doesn't use my own credit card.
I can understand the applicants though, there is a fear to commit to solutions where any experience might not increase their market value. But from my experience that fear is highly exaggerated. There are people that reject candidates on these accounts but usually not the good one that know they need to invest in engineers. There are also quite a few bosses that are only interested in the newest tech. They have absolutely no idea what that means, but they will buy it. And a lot of cloud software hits the sweet spot for them.
I would.
Like you said ; one point is probably market value and another future relevance. I have had discussions with hiring managers lately and almost none that I talked to actually use most or any of the buzzwords they put in their ads. They just say they do to get more applications.
Some of us developers do want to focus on things that are useful to people, that we can describe to non-tech people we meet in public. Are those of us who run bootstrapped, all-remote SaaS companies going to have trouble hiring?
- many frontend engineers would run away from companies that hire for jQuery skills. Frontend engineers nowadays usually want to write React and use Vercel and what not (even though the product may only require jQuery)
- many backend engineers would run away from companies that hire for PHP. Backende engineers nowadays usually want to write Python/Go/Kotlin/Java, well, anything except PHP, even though modern PHP is well-suited for most SaaS/web-products
- many infrastructure engineers would only apply for companies that use K8s, modern CI/CD pipelines (e.g., GitHub/GitLab) and cloud providers (e.g., AWS, GCP) and run away from anything that smells like on-prem installations using Ansible/Chef/custom bash scripts, even though the vast majority of web products out there do not need K8s/AWS/Terraform/etc.
I think in general, engineers do want to build useful stuff for people but only if they get to play with the coolest tech.
Maybe, but is it pleasant to use?
My memories of PHP are not fond at all, it is a really miserable language to write. Maybe it has the features it needs but is it actually nice to use?
Same with JQuery. There's a lot of rose colored glasses these days for JQuery, imo. It is not fun to write.
Also the complexity lift to use React versus using JQuery is minor compared to the complexity lift distributed K8s microservices have over an NGinx server with a custom bash script.
The extra complexity of the scalable microservices architecture might be sufficient to actually sink your startup. The extra complexity of using React over JQuery costs... Essentially nothing.
Edit: I guess what I'm really saying is that choosing a different backend technology or frontend framework isn't remotely the same as choosing to build a scalable distributed microservice architecture over a static bare metal server.
Choosing a technology is a choice based on what you want to work with and what you think you can hire other people to work with.
Choosing K8s terraform distributed microservices for scalability early on is the most premature optimization you can possibly make. Get a customer before thinking about scaling.
Isn't that what we expect from evolving technologies? (And well, if you are doing <?php all over, bare Python with print statements has the same complexity, with about the same downsides. Nobody will want to touch it, for very good reasons.)
jQuery is a very predictive mark for decades old leggacy cruft that nobody is allowed to improve. The modern equivalent is vanilla JS, that is simpler, about as powerful, and perfectly viable to hire for. There's actually no technical problem with jQuery, it just correlates very well with bad companies.
The infrastructure world has a real problem. A large part of it is that Puppet, Ansible and Chef are all badly managed centralized, complex pieces of software, and custom bash scripts can be anything. Also, cloud offerings tend to minimize on-call incidents, and companies normally have very bad policies about on-call time (kept secret until the candidate has no other option).
A purely community oriented ops tool (Apache style) would do wonders here. As would better labor laws (on the US mostly).
(And edit here, the trend on newer ecosystems, like Go, Rust and Haskell - and old language where the ecosystem is mostly new, is to make the backend frameworks simpler. So you get a nicer to use system with less complexity to stop you from solving issues.)
Also: if you are an engineer that has managed to run successful systems for years but didn't use microservices, K8s, AWS and all the other stuff you shouldn't even bother to apply for many jobs because you are "not up-to-date". Heck, reading the job ads from my company even they probably wouldn't hire me or a lot of my colleagues if we applied.
That makes business opportunities for more flexible engineers.
gonna borrow that phrase.
Interestingly, 90's industrial automation sort of feels like it was trying to build systems like that. The control cabinets are filled with simple, discrete, computational blocks that control valves and actuators based on sensor inputs.
Getting back to the sci-fi, I realized that the crystal swapping could just be the high level interface to all the complex code below. They really wouldn't need to do anything except light up when they are detected correctly, but still control complex code hiding below the surface... Maybe written on demand by AI that reads the crystals as prompts.
I don't know where this is all heading, but maybe someday swapping databases will be as complicated as changing a lightbulb.
So maybe those crystals are more like app-configurations that we already have: you can tune things in a predictable way, but as soon as it goes beyond that you need to change the code.
One thing that has remained constant in our lives is the number of people who are capabable of working on complex software has steadily increased. What happens if that number suddenly decreases?
Personally I find it a bit hilarious when I think about it too much. We can fit a terabyte on something that fits on our thumbnail comfortably, and we can provide enough computation power to run most any plausible control system comfortably in a phone form factor, but the superadvanced aliens way smarter than us and millennia if not more beyond us need massive crystals.
I suppose we can hypothesize that some variant of "hyperspace" requires vast computational powers to work at all, and maybe some of the other advanced stuff does (e.g. one imagines the holodeck or anything even resembling it would possibly require more computing power than our entire world has), but it's hard to imagine "life support" requires some massive crystal to run.
Science fiction has always had a complicated relationship with computers. The exponential power increases of so many decades is just hard to deal with. Even if you understand that exponential power increases are occurring, that doesn't mean you can correctly understand what that means in practice.
(In the alien's defense, one thing they may legitimately have on us, and for which unspecified "crystals" clearly made out of a very hard and durable substance may even make some sense, is longevity. A crystal that "merely" stored a few gigabytes and had the computation power of a modern cell phone, but that could be accidentally left behind in someone's grave for 20,000 years and work just as well as the day it was made would have a lot of legitimate uses, even if they had the capability of making things with a lot more power that wouldn't last as long. But even then I don't see swapping these things around like they're a fancy puzzle from Rubiks or you're trying to solve an ancient Sudoku as being a likely use case.)
The cloud really provides two things for most applications:
(1) Data synchronization at scale. This could be provided by a much, much thinner cloud that basically just syncs files but using CRDTs to make that more robust. Applications could use these services to sync state for collaboration. The vast majority of the brains could be at the endpoint.
(2) The cloud is copy protection and DRM. It gives software publishers an easy place to put a toll booth. This could be solved by a reboot of the concept of local licensing, or by just periodically calling out to a license server. Yes people will pirate your software but those people aren't going to pay anyway.
The issue with this is the web is zero install cross platform and it is hard to compete with that.
They couldn't even run their code locally, just bits of it. Serverless code could not run without a server. A specific provider's servers.
Call me old-fashioned, but I develop with a few docker containers locally, then release them to a plain old linux server, and it's working great. Sure, my humble business isn't Google, but neither are yours, right?
Basically they store 100x more data than they need because of data duplication between microservices. The company didn't even have that much customers (<1000), data or even enough users (a handful per company), but duplication was still generating several terabytes.
It's amazing how much complexity people are able to cram into simple system.
(Interestingly enough there's another recent comment on another article here talking about this exact issue: https://news.ycombinator.com/item?id=32320660 )
https://docs.aws.amazon.com/lambda/latest/dg/images-test.htm...
Sure it's not impossible to go around that, start mocking or run some alternative locally for debugging but I don't think this extra level of complexity is necessary (at least not always).
It happens in nature too. Your skull has fewer bones in it than the skulls of many fish and humans do not by any stretch have the largest genome in nature.
The optic nerve connects to the front of your retina giving you a blind spot, then pokes a hole in the retina to get out to the back and off to the visual cortex which is at the other end of the brain. Intelligent design would do better.
[1] https://forum.donanimhaber.com/store/c9/ef/2d/c9ef2d955e3f99...
Currently we're constantly expanding the complexity of our systems, but since they don't understand their underlying purpose, they can't help us manage that complexity without drastically limiting their flexibility, there's no working around that.
But if they knew what they were doing, instead of "I need to reorganise this database stack to reduce overhead" we'll be giving simple commands like "please stop taking over the world" and letting the machines handle the complex details.
For me? Excuse me no, because I design systems to be supportable in production. Tsk.
"For some"? "For many"? Sure! But please don't annoy me before I even start reading with this kind of headline.
It's not just an audience indicator it's a challenge designed to engage, but it just winds me up. A stylistic technique I really dislike, that's all! :-)
Some folks have to use ad blockers to avoid seeing ads, while others train themselves to just ignore ads entirely. Personally, I don't even see them most of the time. If you're in the latter camp, training yourself to ignore headlines like these doesn't seem much harder!
For me it seems to be a nightmare to debug complex stuff, but without the “old” tooling it seems to me that it is quite impossible to do this when buried behind queues, pubsubs, cloud functions and all that.
Any comment on this is quite welcome.
Which you can infer from the diagrams but isn't stated directly in this marketing puff piece.