Cloud computing promises to be simple. Starting here and there a virtual server and the own virtual cloud infrastructure is ready. Those who think that I’m right with the statement are totally wrong. Virtual servers are only a small component of a virtual infrastructure at a cloud provider. A few virtual machines aren’t a cloud. The complexity sticks in the architecture of the application. And thus in the intelligence that the architect and the software developer included. That this is sometimes not implemented, the one or the other cloud user have showed us more than once impressively. Regularly the same suspects fail when their cloud provider is struggling with himself. Cloud computing ist not simple! I do not mean simple software-as-a-service (SaaS). I am talking about infrastructure-as-a-service (IaaS) and platform-as-a-service (PaaS), and here even granularity about the premier class named scalability and high-availability. And that’s what you should understand and fully take into account if you want to use cloud computing successfully, away from the marketing of the cloud providers.
Software-defined Scalability and Software-defined High-Availability
Currently new terms circulating through the IT stratosphere. Software-Defined Networking (SDN) and Software-Defined Data Center (SDD). A SDN introduces another level of abstraction above the network components. Typically, each router and switch has its own local software through which it is supplied with intelligence by programming. The network administrator tells the router, for example, under what conditions which packet should be routed or not. Within a SDN the task of incorporating a local intelligence for each component is eliminated. The intelligence moves one level up into a management layer in which the entire network is designed and each rule is defined centrally for each component. If the design is completed, it will be rolled out across the network components and the network is configured. With a SDN it should be possible to change a complete network design by “push the button” directly without having to touch each individual component.
The idea of the SDN concept must also be taken into account mandatory when using a cloud infrastructure. Because the use of a PaaS, but much more of an IaaS means a lot of self-responsibility. More than you might think at first glance. To start one or two virtual machines does not mean that one uses a virtual cloud infrastructure. There are and will remain two virtual servers. An IaaS provider only provides the components, such as the aforementioned virtual machines, storage, and other services plus APIs with which the infrastructure can be used. Bottom line, to put it simply, an IaaS provider only supplies its customers with the appropriate resources and tools in order to build their own virtual infrastructure respectively own virtual data center on the providers cloud infrastructure.
One must therefore ensure with software (the own application) that the cloud infrastructure scaled if necessary (Software-Defined Scalability, SDS) and in the event of a failure of a cloud infrastructure component a replacement component (eg, virtual machine) is started and is thus replaced (Software-Defined High-Availability, SDHA). The software therefore provides the scalability and high-availability of the virtual cloud infrastructure so that the web application itself is scaled and fail-safe, and uses the character of each cloud provider.
How a cloud computing infrastructure is used almost to perfection shows Netflix impressively.
Netflix the supreme example
Netflix is the world’s largest cloud service by far. The video streaming service has become responsible for a third of all Internet traffic during peak periods. This user requests must be answered, of course, performant and at any time. Since its launch in 2009 Netflix sets on cloud technologies and has shifted its complete technology stack including the resulting infrastructure to the cloud of the Amazon Web Services in November 2012. Here about 1,000 virtual Linux-based Tomcat Java server and NGINX web server are running. There are also other services such as Amazon Simple Storage Service (S3) and the NoSQL database Cassandra in conjunction with memcached and a distributed memory object caching.
However, this is only one side of the coin. More important is the use of multiple Availability Zones in the Amazon Cloud. Netflix uses a total of three Availability Zones to increase the availability and speed of the own service. Occurs a problem in an Availability Zone, the architecture of the Netflix application is designed that the service can continue to run through the other two. Here Netflix has not relied on the pure marketing promises from Amazon, but developed with the Chaos Gorilla its own software that is testing the stability of the virtual servers Amazon Elastic Compute Cloud (EC2). In short, the failure of a complete EC2 Region or Availability Zone is simulated to ensure that the Netflix service continues to function in an emergency. One of the biggest challenges is in the fact that in the event of an error in an Amazon region, the Domain Name System (DNS) is automatically reconfigured so that Netflix customers do not notice the failure. The different DNS providers APIs make this task not easier. In addition, most have been developed that the settings have to be done manually, which does not make it easier to automate this.
Bottom line, it is to say that Netflix plans ahead for the error case and does not rely on the cloud. Because sometimes something goes wrong in the cloud, as in any ordinary data center. You only need to be prepared for it. Who is more interested in what Netflix makes to reach this state should read “Netflix: The Chaos Monkey and the Simian Army – The model for a good cloud system architecture” (only in German).
Simplicity counts
Maybe I’m asking too much. Finally, cloud computing is a relatively new concept. Nevertheless, Netflix shows impressively that it works. However, when you consider what huge efforts Netflix makes to be successful in the cloud, you just have to say that cloud computing is not simple, and a cloud infrastructure, no matter at which provider, needs to be built with the corresponding architecture. This means, conversely, that the use of the cloud must be more simply in order to achieve the promised cost advantages. Because if one uses cloud computing the right way, it is necessarily not cheaper. In addition to savings in infrastructure costs which are always reckoned up, the other costs as may for the staff with the appropriate skills and the costs for the development of scalable and fault-tolerant applications in the cloud should never be neglected.
The positive sign is that I see first startups on the horizon, who take care of this problem and have set the simple demand of finished cloud resources to their task, without worrying about scalability and high-availability as a user.