Stateless features, server downtime, different database types, and continuous changes to the cloud platform pose challenges for developers of cloud applications, especially for senior developers who are accustomed to developing traditional applications.
Cloud Computing 2009 years still continues its heat in 2008, it is not difficult to predict, the application running on the cloud (hereinafter referred to as cloud applications) will certainly be more and more, followed by, it is certain that more and more developers will have to consider or participate in the development of cloud applications.
The essence of
cloud computing is access to applications and services via the Internet, which are often not run on their own servers but are provided by third parties. For cloud developers, in cloud computing mode, while deploying applications without concern for infrastructure issues, there are new issues, such as the inability of developers to invoke databases in a familiar way, the stateless nature of applications, and the need to adopt different development frameworks.
stateless applications and server downtime
"The biggest challenge in developing cloud applications is that software must be able to tailor and deliver the resources needed to suit the needs of the application." "Fortunately, with the help of the API provided by the cloud platform, cloud application developers can request more resources from the cloud's provider," said Ctolewtucker, Sun's cloud computing department.
developers also have to make redundant designs, recognizing that it is likely that the servers in the cloud are just ordinary servers, said Amitabhsrivistava, vice president of Microsoft's Azure cloud platform, "there is a good chance that the server will go wrong, so you have to consider redundancy when developing cloud applications." ”
Development Cloud applications must also take into account the stateless nature of Web applications (stateless means that the client and server side do not have to save each other's details, the server only needs to process the current request without having to understand all of the request history-the editor note), Srivistava said, " If your program requires the retention of state information, the program will definitely go wrong during the run. The pattern of cloud computing is to terminate it if something is wrong, and then start another program. This can only be achieved if each application is guaranteed to run relatively independently, i.e. State Independent. ”
Srivistava further explains that, for example, there is no local disk in the cloud, and there is no registration, and in stateless applications, these parameters are encapsulated and packaged in the parameters of the call.
Sun Tucker warns: "No State guarantees the application is simple, but to develop really interesting and useful applications need some state information, such as we must save the user's information so as not to require users to constantly log on, That's why we still need the database or something else to save the state. "However, some cloud applications, such as the front-end of the web, need to be dynamically tuned based on the amount of traffic that must be stateless."
Another feature of the
cloud application is that different parts of the application may run separately in different areas of the cloud. For example, an application's presentation layer might run on Facebook, and its storage part might run on Amazon's resilient Storage Service (S3), and the logical part of its application might run in another completely different place.
"and the programs that were previously developed by programmers run on their own servers. "This means that the architecture of the system must be reconsidered when developing cloud applications, especially considering the large-scale nature of cloud applications, not only the large number of users, but also the distributed distribution of computing resources," Tucker said. ”
Tucker added: "Do not think cloud application how mysterious." In fact, there is no trick to develop scalable cloud applications that need to be carefully designed and planned. ”
However, the cloud platform can provide us with some help. In some cases, such as using googleappengine to develop certain applications, the program is naturally extensible, without the developer's consideration. Sometimes we can use some design patterns that can be used to provide extensibility to applications. For example, the multipleavailabilityzones of Amazon's elastic Computing Cloud (EC2) allows developers to deploy an application to multiple locations here.
"Previously, only big companies could do that. A spokesman for the Kaykinton company said. EC2 has a function called resilient IP, which can quickly establish a map of an internet address, transferring requests that are ready to be sent to a failed application instance to a valid instance.
different types of databases
in cloud applications, abstraction and statelessness are also applicable when accessing a database. "For example, Azure provides programmer developers with a completely different way of accessing a standard relational database. "Azure's storage engine does not use relational databases, so many of the methods used to develop applications are not working in the development of cloud applications," said Benday, president of Benjaminday Consulting. ”
He also takes the stored procedures in a relational database as an example to illustrate that in a relational database, the query logic is close to the actual data location, and the programmer can know exactly where the data is and what devices exist, and in the Azure cloud the premise no longer exists.
"The difficulty in accessing a database is that you cannot guarantee that the database you are reading is in a specified location or in a data center or a specified device," Day says, "so ultimately you can only use the most basic SQL query statement, Many stored procedures cannot be used because they are closely related to the specific type of the database. ”
In addition, Day added, Azure's storage engine is very different from the cloud version SQL data Service (sqldataservices) of Microsoft's plan for SQL Server, so developers need to know which database engine they are using. For example, Azure saves a 1MB file as a blob type of data, and SQL Server saves the file in a table.
Development cloud applications and general applications when accessing a database, it is not just azure that has the same problem with Googleappengine.
Petekoomen, Google's app product manager, said: "Googleappengine not only abstracts actual physical hardware, but also abstracts all concepts about devices." "This ensures that when developers upload the code to Google, Google can manage the code separately from the database." "Because Google automates many of these processes, developers must follow certain rules that are quite different from the rules we used to have in the traditional SQL model." ”
when using app, developers store data for the long term in Google's large table (Bigtalbe). "Large tables are not SQL databases. The reason we use a large table instead of a SQL database is because the SQL database supports many features, such as the join feature, which makes it very difficult to run a database on multiple servers. ”
"When using our system to develop cloud applications, we provide a programming model and encourage programmers to take unconventional approaches from the outset, for example, when a developer saves data in multiple locations in a single stored procedure." "The advantage of doing this is to ensure that the application is very efficient in executing the query," he said.
Koomen is opposed to using relational databases in a cloud environment. "We found that relational databases are very difficult to manage in a very large amount of traffic, and that programmers have to devote a lot of time and effort to solving a range of problems with high traffic," he said. ”
must be accustomed to change
Consulting company Modelmetrics has helped customers deploy cloud applications on Salesforce.com and other platforms. They found that a major difference between cloud application development and B/s application development was that "applications on the cloud are changing much faster." Modelmetrics's Ctojohnbarnes said, "For example, salesforce.com several new versions a year, and each new version is likely to have new features and features that are worth using." ”
"As a developer of cloud applications, you have to be technically consistent with the cloud platform, have to focus on a lot of technical blogs, and take an active part in some webinars," Barnes suggests. ”
developers should also understand different design patterns, such as final consistency (eventualconsistency), which is a consistent model for parallel programming, such as distributed shared memory and distributed transactions. Final consistency means that, in a longer period of time, if not updated, all updates are propagated within the system, ultimately ensuring that all copies of the data are identical-the editor note. In this design pattern, if the program changes the data, it may take a few milliseconds to react to the database, "The result of this design pattern is that it's possible to take out the latest values from the database," Barnes said. Programmers develop cloud applications with different programming styles. ”
The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion;
products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the
content of the page makes you feel confusing, please write us an email, we will handle the problem
within 5 days after receiving your email.
If you find any instances of plagiarism from the community, please send an email to:
info-contact@alibabacloud.com
and provide relevant evidence. A staff member will contact you within 5 working days.