The drive to think Cloud-First is not really new
Cloud-First may sound like the Next Big Thing, but is it really? Of course, the services provided by Amazon, Google and Azure are new, but the mechanism that determines whether to use these services to fulfill your business needs are anything but; it is just an extension of older paradigms such as “Buy before build”, and if you look closer, the drivers are even older and more generic.
When I started programming, somewhere just after the last dinosaur died, I started out using a Basic version for the MSX. This allowed me to create nice drawings, animations and simple games. However, I quickly bumped into the limits of this environment and moved to writing in Z80 assembly language. This was an order of magnitude more powerful, but it was also much more verbose than Basic, and the smallest of errors would crash the entire computer. I quickly learned to return to Basic for simple programs that didn’t really need all the speed and efficiency of assembler.
This little anecdote shows the basic choice you make many times for each system you design: do I take the maximum amount of control, or do I leverage the work of others to more easily deliver the desired functionality, and reduce the risk of errors? This can manifest on many levels, from the choice of programming language to the deployment environment.
Do I use a low-level language that is more efficient, but requires me to explicitly allocate and free memory, or do I use a language with a garbage collector because the small performance penalty does not bother me? Do I use an ORM framework, or do I write all my queries by hand? Do I write my own video player, or do I embed content from YouTube or Vimeo? In most cases the higher level solution – the solution that requires the least work from the software engineer – will enable you to deliver faster, with less initial cost. Cloud-First is just an extension of this idea.
Cloud services enable you to easily and quickly create systems without having to spend much time on all kinds of infrastructural services. The platform already took care of those. There may still be reasons to not use the cloud service – cost may be a factor, or it may not support exactly what you need. So in the same way that you could end up writing your queries manually in a lower level language, you could end up deciding that cloud services are not the right choice for your case. But given the advantages that they have, you should always consider them.