HTTP2 looks very promising for drastically simplifying the current frontend build pipelines and improving the responsiveness of the UI. The move to MVC on the client side has added a huge amount of complexity to the frontend requiring NodeJS and specialised build tools (Grunt and Gulp for example) to enable developers to work productively but also build an optimized artifact for deployment.
Infrastructure as a Service (IaaS) or “Cloud Computing” has exploded with AWS being the dominant force in the market currently and players like Google and Microsoft investing heavily in the sector to catch up. IaaS has fundamentally changed the way websites are delivered to market, scaling infrastructure is now a thing of the past for 99% of websites on the internet due to the flexibility that these IaaS companies provide. We are now in the age of Platform as a Service (PaaS) where all the underlying complexity and infrastructure management is completely abstracted away and a simple YAML file is all that is required to declare the state and minimum level of replication required for an application. This is the age of containers!
We are still in the infancy of containers however it would be foolish to deny that Docker isn’t the absolute powerhouse for application containerisation currently. The interesting thing is that we can now develop in a container, and then ship the container through its various environments all the way to production. Ironically Google are the most likely to rise to power in a container driven world as they have the most experience running massive containerised implementations.
Currently lots of people are using interpreted languages like PHP, Python, Ruby, etc and building out their containers from known Linux distros like Ubuntu, Debian, Centos, etc. This gives the container a large footprint, Ubuntu for example is at least 200MB before you start installing packages. I’m particularly interested in this space as this seems crazy to me to have such a large starting point just to serve some generated HTML. Building containers using busybox or Alpine Linux is the next thing people try to get their containers down to a small size as the base layer for these distros are around 8-10MB, a fraction of the size of a full blown distribution. This is great, we’ve reduced our footprint significantly however we can do better…
I’m of the option that we will likely see the meteoric rise of the Go language over the next few years. The reason for that is Microservices. Microservices are small discreet services that do one specific thing and do it well, essentially the unix philosophy for Service Oriented Architecture (SOA). The great thing about GoLang is that you can create statically compiled binaries which means you can ship a single binary file in the scratch Docker container which is the smallest possible footprint for a container and the ultimate in simplicity. The performance of the binary is in a different league to the interpreted languages and GoLang is an incredibly simple language with beautiful syntax (this is my own biased opinion). No Linux distribution, just a single binary file, if that isn’t elegant I dont know what is?
I strongly believe that HTTP2, containerisation, microservices and GoLang are going to be fundamental to the next wave of web development. I think that Google will be the player to watch in this space from an IaaS/PaaS point of view however they need to open data centres in Australia for Google Cloud Platform if they want mass adoption by the Oceanic market.