Icebergs and Lumberjacks: Skip the Infrastructure, Get Straight to Development
Infrastructure is for sysadmins, but Heroku is for developers.
And what does that even mean?
What’s the difference?
Professional development is hard.
It’s a skill that can take years to hone. The tools that developers use can be foreign to other folks. Things like “the
CLI” or “
IDE’s” or “
git”. Like any other specialization, developers speak their own language, and over the decades have developed tools that are aimed at their use case.
Also the craft of development is hard. If you think about it, we are writing step by step instructions for computers to execute. We are pretty darn close to running at the bottom of the stack, right?
They say that 90% of the iceberg is underwater and not visible. The same can be said about development. Writing code in Java, Ruby, Python or what have you is the easy part. It’s the details that you do not see that cause you the most trouble.
The invisible 90% is what gets you. What sort of things are these?
This is where the sysadmins come in. They have to build the parts of the app that no one ever sees. They build the plumbing that the app runs on. Before you write a line of code, you have to acquire (or build) and configure a lot of things.
Say, you want to have an application that simply serves HTML traffic and has part of its data connected to Salesforce.
What would you need to build to accomplish this simple app?
- Code deployment system
- CI/CD pipeline
- Container orchestration system
- Self healing containers
- Load balancing
- A database
- Management for the database
- A connection to Salesforce with retry logic and incremental sync logic
- Monitoring for all of the above
- Patching and security for all of the above
- 24/7/365 pager for all of the above
At its most basic, that is what you would have to build before your developers even start writing code!
Want to use Kubernetes (K8s)? That’s just as hard. If we think of it like needing a house, infrastructure is going to the lumber yard, and buying wood so that you can build a house. Even with Kubernetes, functions as a service, docker — you still have to assemble, configure and maintain all of those things, as well as the interconnections between them.
And, K8s, FaaS, Docker? They were born out of looking at how Heroku is doing things.
- 12factor? We wrote it.
- Buildpacks? We invented them.
git push heroku main? You guessed it. Invented here.
When I started in the industry, we did not even have lumber yards. We had to cut down trees and get our lumber that way! We had to call and have folks send us servers. We then had to assemble those servers, and put them into racks. Next we had to install the operating system and any software packages that we needed. That’s on premises for you. The most control, and the most manual labor plus time.
IaaS has elevated the game.
IaaS gives us a lumber store. And it’s really awesome. You can go in, and find a vast array of different types and sizes of lumber, lots of connectors, electrical stuff and plumbing. You can pick and choose from a huge menu of services with most IaaSs. However you have to choose the correct menu items, and then you have to configure them correctly, integrate them, and manage those services and integration.
Oh and by the way, after you’re done with all of that lumber and your house is built, who’s going to fix your house when something goes wrong with it?
When we say Heroku is easier to use than Infrastructure, this is exactly what we mean. Instead of buying lumber, you are buying a Condo with landscaping and maintenance included.
You buy the Condo and your interior decorators (developers) can get started on choosing the color of the tile, ordering couches and hanging the art.
Moments after requesting an environment, you can have a completely managed production application hosting environment. This includes managed CI/CD pipeline, build environments, load balancers and compute resources. You can use the open source Buildpack technology to fine tune your compute resources, attach managed Postgres, Redis and Apache Kafka data stores. You can also pick from a vast array of third party backing services to help manage, monitor and maintain your application.
Heroku allows developers to skip building infrastructure, and get straight to development.
It also manages all of that built infrastructure. These two things allow Heroku customers to be able to focus on the development of the apps they want to build rather than building or managing infrastructure to host their developers and code.
So next time you hear Infrastructure as a Service or decide you want to build a new app, think about Heroku, and the capabilities of the Salesforce platform to take care of the underlying infrastructure for you — so you can focus on building the application that you want.
About the author
Greg Nokes has 30 years experience as an Architect, Sysadmin and DevOps professional.