Editor's note: This article is Eucalyptus Bae CEO Marten Mickos.
The software has not changed since its inception: run the application, then the application is running on the platform. But with the development of infrastructure, the fundamentals of application design and deployment do change-sometimes very fiercely.
For example, the emergence of a PC, x86 architecture in the 1980 and the birth of a client/server model have dramatically changed the application design principles. Then, with the advent of the web and open source technology in the middle of the 1990, the upheaval again. Whenever this happens, developers are forced to rethink the way software is developed and deployed.
Now there is a new leap in infrastructure capabilities, led by Amazon Web Services (especially in the context of a leap in network speed). Obviously, in order to take full advantage of the new cloud facilities, the applications that have been successful on AWS must be fundamentally different from those that run on the enterprise server-even if it is not the same as the application running on the virtual server. In addition, there are other factors that determine that cloud applications must be designed to be different from the past. The following are some of the key factors that determine how the new and Old World evolves:
Scalability
The Old world's expansion is achieved through expansion-to accommodate more users or data, just buy a larger pair of servers.
In the new world, scalability is usually achieved by scaling horizontally. To increase is not a larger machine, but the same kind of multiple machines. In the cloud world, those machines are virtual machines.
Elastic
Previously, software was unreliable, and flexibility was achieved at the hardware level.
Today, underlying infrastructure hardware is seen as a weak link, so applications must be adapted to adapt. The application does not guarantee that every virtual machine instance works correctly. It doesn't matter if a single virtual machine fails for a while, and the application must be prepared for it.
Take Netflix, it's the most advanced cloud user, and it's the furthest step on the road to cloud applications. They have a process called Chaosmonkey that randomly kills virtual machine instances under the application load. What is the purpose of this? is to ensure that the application is functioning and resilient: forcing application developers to develop more flexible applications by allowing applications to face random instances of loss.
Explosive
In the old world, applications such as finance and payroll are generally stable and predictable. The number of system users at a particular time, and the number of records to be processed are basically known.
In the new world, workloads are changeable and unpredictable. Today's software systems must reach farther, reaching consumers and devices with service needs that are unpredictable and cannot be measured (think about the 12306 sites that become the target). The new architecture is needed to adapt to the unpredictable fluctuations of the independent application load. Although we are now on the cloud, but obviously in the initial stage.
Software diversity
In the past, software didn't have much variety. Each app is written in one language and uses a database. Companies are generally backed up with one or a few operating systems. The software stack is simple enough to be boring (at least for now).
And in the new World of clouds, things are very different. An application may use many different languages, different libraries, different toolkits, and different database products. At the same time, because you can create and start your own mirrors in the cloud and tailor them to specific requirements, a company's applications must be able to run on a variety of configurations.
From virtual machine to cloud
There is a difference between the relatively new hypervisor and the modern way of thinking in the cloud. The hypervisor performance of virtualization's pioneer and leader VMware is basically not the same as the physical machine.
In the cloud, the virtual is not the representative of the physical server, but the representative of the Computing unit.
User Patience
In the old world, users are taught to be patient. Because the system's response may take a long time to complete some simple extraction or update requests, new features are also slow to add.
In the new world, users are impatient. They can hardly tolerate delays and are unwilling to wait. They want the software to be constantly updated, if not every day, at least weekly. You can find relevant evidence in your self service IT. Where you're not handing a note to the IT department and then waiting a few days to respond, the user needs resources that can be delivered.
(Responsible editor: The good of the Legacy)