For most web users, “the cloud” is a marketing term with no specific meaning, for business users the term may mean virtualized servers that they can lease to host their applications and make those applications available on the web without having to host the infrastructure themselves. For the more sophisticated business they might need a Cloud Hosting provider who has services that provide scalable storage and resources management that can be throttled up and down as needed.
For a business to host this type of technology a substantial cash outlay is required. By leveraging from a cloud hosting provider's existing infrastructure a business can reduce the costs of doing business on the web and have a mechanism to grow. So in general a cloud based architecture now provides a more scalable infrastructure for business and everyday web users.
If your an everyday web user with a blog your blogging site may well be hosted in a cloud based environment. What this means from the hosting point of view is that it can be easily moved from physical server to physical server at the click of a mouse, its memory needs can be increased as required and if its getting real busy thanks to the high quality content you provide then its CPU and storage resources can be dynamically increased as needed.
Applications like WordPress are incredibly popular and dominate a large chunk of the Internet, the remainder of web traffic comes from a pool of less common apps and your biggest players on the Internet, like news sites, eCommerce stores, search engines and the like.
Hosting these apps has moved from physical servers to virtual machines to container based virtualisation. Virtual machines provided a software mechanism to enable more bang for the buck from the pool of under utilised physical servers most business had running. Container Virtualization goes one step further by sharing the servers core operating system components in a highly secured but very dense environment so that even more virtual environments can be deployed from the same server.
One of the biggest issues in Internet systems is doing updates, particularly security updates. The more virtual environments the more difficult it becomes to perform updates that are going to work first go and provide no disruptions. This is often due to the way the application environment has been built or deployed by the users who purchase the virtual machine resources. There are other reasons but the core issue is that testing an application in a development environment and then running it in a production environment usually results in two different outcomes.
The last 12 months has seen a new cloud technology come to maturity. The big move is to host your application in “Application Containers” and the #1 (and only) application container environment available right now is called Docker.
Docker differs from a virtual machine or normal container as its a package environment delivered as an image that's instanced on the web/application server. It enforces a discipline for the developer of the application to package the app for deployment in any infrastructure. So testing on a laptop will produce the same result as running it in a large cloud infrastructure.
The original philosophy of Docker was one application – one container, but realistically a web server, cache engine and database server support can easily be packaged together as a single image and with access to persistent shared storage that container could then be instanced inside a cloud and moved, scaled or redistributed as often as needed. Additionally the application container can also be used as the basis for a new image and repackaged. With repackaging there is no need to worry about the size of the image's file system, it auto scales to suit.
From a hosting perspective Application Containers need more plumbing to put multiple web sites together on the same server, they also need disk that can be shared into the applications image at run time.
From a businesses point of view, where the developers and architect understand how to scale web technology a loosely coupled dynamically scalable system can be designed and built, then deployed just like any other application image.
From a security point of view, there is total isolation between each application container and the OS it is running in, the attack surface of an application container is smaller and hence less vulnerable.
For the end user, cheaper hosting that can be run anywhere is just around the corner!