DevOps and the Cloud
DevOps and cloud are two completely independent aspects of software delivery. You can deliver software using cloud platforms via traditional organizational structures and have a complete DevOps culture without using any cloud-based platforms; however, cloud platforms do make enacting the DevOps principles easier in many cases.
Cloud platforms generally blur the distinction between development and ops, as they are systems that are designed for automation and management via code-level APIs or scripting. Operational changes can be implemented by developers within application code, and operations people are writing code to manage how environments become available for use by applications.
The big picture, in this case, becomes not only the application but also the range of services offered by cloud providers that could be used by the applications, how these would be implemented, and the communication between systems.
Cloud environments have really enabled DevOps to become mainstream as the level of dynamic infrastructure creation and management needed for a true DevOps environment has become not only possible and affordable to organizations of all sizes, but actually the preferred way of working in those environments.
Automation, repeatability, creation and destruction of environments, and infrastructure as code are all elements that have been built into cloud platforms from the ground up.
Role of the Internet in Modern Systems
It may sound obvious to say that modern internet-based systems are dependent on the internet, but it is worth taking a moment to think about the actual impact this is having as systems become more complex, modular, and cloud based.
Before the internet was widely used, most systems were delivered as client/server systems over a leased line-based WAN. So everything was fully under your control; the full end-to-end connectivity and infrastructure were all dedicated to you.
However, this situation is very rare these days. Most connectivity now travels over the public internet. This is true of the connection between your users and your system, and increasingly between your system and third-party dependent services. The quality of this connectivity is largely beyond your control.
Moving into the cloud, however, gives you even less control over the connectivity in and out of your systems. When hosting systems within a data center, you can discuss and understand the nature of connectivity to the internet that are in place and use this as a deciding factor when choosing a data center. In the cloud this level of detail is rarely made public.
Despite its increased importance to people running web-based systems, the performance of the public internet is an area that is often overlooked.