So you’ve got a great idea for an app or your looking to put your newly minted Ruby, Python, Node, etc. skills into practice. Where do you start? Certainly you want to setup source control with a service like Github but what about hosting the app? You may be tempted to start with hosting your app locally. Just getting it working on your laptop is good enough for now, right? It seems simple and expedient but is actually far less efficient and prone to poor quality. Only take this approach if no one will ever use your app but you (and even then I wouldn’t necessarily condone it).
Unless you are building a simple proof-of-concept or a tinker project, host your app in the cloud and host it early. I’m talking about deploying your app in a service such as Heroku, AWS Lambda, or Azure Functions as soon as you have the scaffolding ready in Github, not when you’ve been developing it for a week.
I’m going to give 5 different reasons why you should rush to hosting and deploying your application as soon as you start a project. I’m not going to talk about why you should host in the cloud in general but why you should do it early. The arguments for cloud hosting are well established. It offers scalability, reliability, and allows you to focus on building your app and not managing the hosting infrastructure. Not to mention it’s cheap!
1. It shows end-to-end viability fast
If your app isn’t workable in a hosted environment you want to know quickly. You want fast feedback. Apps don’t just fail because of development; they fail because of the architecture or inability to scale. You don’t want to have to re-engineer your solution late in development because a quirk in the hosting environment. Perhaps you’ve made many assumptions in your design that become stressed once it must be deployed to a cloud environment. Hosting early reveals these early and can avoid unneeded rework.
2. It forces you to think about a deployable architecture
Related to point 1, hosting in the cloud early will drive you to think about the best way to package your app. You will see the “seams” in your application that form the different services that compose your app. These can be hosted, secured, or scaled separately. Segregating your apps into smaller services has a myriad of design benefits and if hosting early gives you one more nudge towards those helpful patterns.
3. Testing closer to reality
The highest value feedback is obtained when you test your app like a user. If the final destination of your app is a cloud environment, get it there early and start testing like the user. Even if that’s hitting an API with a tool like Postman or curl commands it’s helpful to know if your app will work in the “real world.”
4. It gets the pipeline flowing early
Great apps build in quality early and don’t patch it on later. Getting unit test coverage and continuous integration going early is essential if you want to refactor and maintain your code. You need fast and meaningful feedback from build and test failures. Don’t delay in getting that pipeline going. It’s becomes harder as your app gets more complex. Setup a build pipeline with tools like Heroku Flow or AWS CodePipeline as soon as you can.
5. Incremental environment feedback
Have you ever taken the plunge of deploying your app into an environment and it breaks in 50 different ways? If you’ve been developing on it for a while and have many dependencies it can be difficult to untangle the exact source of the issue. You resolve one issue only to be met with another. Hosting early and deploying incremental changes to that environment helps to narrow the cause of the issue. You get a basic template deployed first then add changes and new dependencies incrementally. If something breaks you’ll know why because your changes were small. When pairing this technique with source control and a solid deployment pipeline you can have fast, useful feedback as you bring your app to life.
Many options exist for hosting so there is no excuse to not pick one. Most even offer some type of free-tier options for development usage. So stop stalling and get your app in the cloud!