4 ms·
I don't quite agree with much of this article. It paints the industry with a broad brush and not everyone has had the same experience - least of which me. The a
by redact207 5y ago
I don't quite agree with much of this article. It paints the industry with a broad brush and not everyone has had the same experience - least of which me. The article starts:
> The shift from building applications in a monolithic architecture hosted on a server you could go and touch, to breaking them down into multiple microservices, packaged up into containers, orchestrated with Kubernetes, and hosted in a distributed cloud environment, marks a clear jump in the level of complexity of our software. Add to that expectations of feature-rich, consumer-grade experiences, which are secure and resilient by design, and never has more been asked of developers.
Comparing the most complicated way to build and run an app with something that isn't as complicated is just a straw man. Today you can still build a simple, monolithic app and deploy it into a completely managed service. All the points raised address certain problems:
- microservices - sliced out of a monolith when complexity or scalability becomes difficult
- containerisation - deploy an app with all of its dependencies down right down to the OS
- orchestration - ensure reliability when pods/tasks fail, rolling updates, commoditize hardware
- distributed cloud environment - remove the need for on-prem, or have the ability to elastically scale without monthly VPS commitments
- secure & resilient by design - apps that make money should have good uptime, not leak data
None of those are mandatory for all apps - it's pick and choose as and when you get the need. But also what is the alternative provided from "years ago" when things were seemingly simpler?
- microservices - ever tried keeping velocity when building XMLSOAP based apps?
- containerisation - write a bunch of ansible scripts or maintain disk images that can be sent to server fleets with bash scripts, else more scripts to apt-get/apk install stuff. On windows before package managers? enjoy shipping zips and exes with your code.
- orchestration - scripts?
- distributed cloud environment - build your own datacentre if you're big enough, lease out some racks if your not and have a systems team maintain them, patch them, RAID stripe disks and swap out dying infrastructure; or sign up to managed VPSs and raise a requisition order each time you want a new server that'll take a week to go through.
- secure & resilient by design - a lot to do for a 6-9s uptime; so just lock down your release process with a ton of bureaucracy and approval gates by different teams. not releasing is great to improve uptime SLAs.
I don't have a good impression of the "good old days". The complexity was always there, it was just managed by different teams.
The real question is should a software developer need to know and work across all of these things, or are people who no longer have "systems management" job move into DevSecOps and augment a software team?