Cloud computing began to be implemented after vigorous development. At this stage, some enterprises have begun to work on deployment. According to a survey on cloud computing deployment by enterprise CIOs, 19% of enterprises are already deploying or applying cloud computing, and 28% of enterprises are considering deploying cloud computing in the near future, 53% of enterprises do not have a timetable for deploying cloud computing. In the face of such data, the implementation of cloud computing is not so easy, there are a series of problems to face. For enterprises, cloud deployment scale, cloud computing security, and cloud computing costs all need to be addressed.
In fact, in a simple sense, cloud deployment aims to simplify the workflow and make the business more automated, so as to achieve higher efficiency without the participation of more people. In this way, cloud deployment seems to be a revolutionary event, bringing the same practical significance as virtualization, IaaS and other technologies. That is, it is easy to mislead people and feel that enterprises can fully rely on standardized processes for cloud deployment. For enterprise cloud deployment, refer to the following four processes.
Automated deployment
One of IaaS's advantages is its ability to develop, test, and deploy software more conveniently. In traditional development environments, developers usually use fewer servers than applications to save money. In addition, the incompatibility of the development environment makes it inconvenient for developers to switch from one project to another, and it is time-consuming to re-build the environment. This problem can be solved in the cloud. Developers allocate the same deployment for applications in each branch of the project. In this way, you can save money and end the resource deployment unavailable state while saving the code.
The full deployment of a program requires at least one application server, one database server, or cache and auxiliary server. However, the firewall or database server attachments of the project may become very tight only when the code is controlled and deployed by developers. However, if you do not deploy a development environment, it will take a very short and expensive time to establish an appropriate development environment. Even so, developers are reluctant to close the environment that is difficult to build.
The requirements of different program versions and the complexity of Branch Deployment make environment deployment very complex. The traditional way for system administrators and developers to manage the virtualization environment is to first install the relevant software and code in the standard image, and then enable the image. In this way, you need to create a new image when the developer needs to update the relevant operating system or database software version or change the code organization mode on the server. In this way, many different images make it very difficult to automate the task of Starting project deployment.
The deployment solution can use a common small machine with an operating system. In this case, you need to create an application environment to start all necessary servers and install necessary software on the servers, check the corresponding branches and versions of different codes to ensure that all servers are available. That is, the database server is started first, and then a series of tests are started to ensure availability. Finally, the application server starts and tests to test the communication activities between different servers. All failures during the test must be recorded and retested. If the attempt fails again, the system will log on again. If the deployment environment fails, all servers will be stopped to save costs.
Automatic Scaling
The most common application of IaaS is "cloudbursting", which has more than 10 times of traffic. In the deployment architecture, the following conditions can be defined: monitor local workloads and IaaS servers. Once the load exceeds a certain value, The IaaS provider will specify a new server. When the workload is reduced, The IaaS server will be terminated. "Cloudbursting" is much more complex than "autoscaling.
First, automatic scaling is very limited for a single cloud computing, so it is not feasible to switch from private cloud to IaaS. Second, you may need to copy/recreate the database server or have an IaaS ECS. Third, modern network applications usually need supporting application servers (high-speed cache servers and firewalls) to create and connect. Finally, you need to distribute all traffic in the concentrated URL so that you can intelligently balance the load in multiple data centers or clouds and select routes. To solve these complexity problems, we can find the correct "cloudbursting" instead of simply scaling ".
Automatic Recovery of database servers
In the cloud, database servers have more difficulties than application servers, as long as the application servers are fully utilized. However, the database server is another thing. The application server should read and write data on the database server, so that the database server must always be available and connected to the Internet. Database servers need to connect to the network, which makes it difficult to back up data. In order to take data snapshots, there will always be several seconds of terminals. In this way, good cloud architecture and Deployment Scenarios become very important, and database backup and disaster recovery can be simplified. From the perspective of architecture, we need a master database server and a slave database server.
Deploy the database server: Start the master database server, retrieve the latest snapshots of the master database server, migrate data to the master database server, and start the database software on the master database server to ensure the normal operation of the database server, update DNS. Start the slave server, retrieve the latest snapshot of the slave server, migrate data to the slave server, and connect to the master server. Make sure that the replication function and slave server database work normally, update DNS, and create snapshot backup operations from the database server to ensure that the snapshot backup operations are normal.
Failover to slave database server: If the master database server fails to complete the task, update the DNS of the new master database server, stop the backup of the new master database server, and start the new slave server, make sure that the latest slave server snapshot, data is migrated to the slave server, the new host connection is copied, the copy is verified, and the process of the slave database server is updated, the DNS is updated, and the snapshot backup function is created for the new host, and verify whether it works properly.
Automated code deployment
Many software engineering departments have implemented some integration work, which can greatly improve the quality of automated verification code, each line of new code must undergo a rigorous test. In fact, deploying new code for the application server is rarely automated and time-consuming. However, the environment for deploying automated code is very easy and efficient.