Migrating applications to a cloud computing platform can be done on two levels. The first is to choose between the so-called IaaS (infrastructure as a service) level, while the second is over PAAs (Platform as a service).
IaaS provides more flexible development
Development at the IaaS level is essentially "cloud" the computing infrastructure. The advantage of developing an application based on IaaS is that the application developer gets a high degree of flexibility in development and can tailor the required environment and architecture to suit the needs of the application. However, although the most flexible development at this level, but this is both sides of the body, which means that all software architectures, developers must build on their own, which is sometimes not a simple task, especially when you want to deal with the system architecture of fault tolerance and scale scalability problems.
And the scale of the system-related issues, can be said to build system architecture is not easy to deal with a link. Simply put, development on IaaS can get the most flexibility, but developers need better skills and are responsible for more of the parts themselves.
PAAs provides a ready-made platform for program development and execution, and the platform itself is highly professionally managed
In contrast, the advantages on the PAAs level emerge. PAAs providers basically provide not just the "cloud" computing infrastructure, but the "cloud" of the operating platform.
The biggest difference between the platform and the infrastructure is that the platform provides a more high-end application development and execution environment. In PAAs development, management, and running applications, there is no need or touch to the underlying computing infrastructure, which is hidden and encapsulated by a more high-end, more abstract platform. Developers can use dedicated development tools for the platform they use, including APIs, SDKs, and even an integrated development environment. However, the problems of scale scalability, fault tolerance, security, and optimization of energy efficiency are all handled by the platform. Also is because touches cannot reach, therefore also does not need to bother.
As you can imagine, the platform itself is an expert on these issues, and it is usually better for them to deal with these problems than you do yourself.
Running the platform "cloud" saves the effort and time that the application developer constructs the platform on its own. Most of the time, you can say that this is to get more professional people, with more focused resources, to complete the platform construction work. These people focus on the platform, so they can build the best platform, so that all developers on this platform to develop applications to benefit.
From this point of view, "cloud" is a way of division of labor. The IaaS provider is responsible for infrastructure construction, management, and management of expertise and services, while the PAAs provider further extends the scope of responsibility to the platform level. In such a division of labor, application developers can focus more on the development of their own applications without consuming too much cost and resources beyond the application.
Freedom from a self-built platform or system architecture is an important value that PAAs can provide. Perhaps when you start trying to cloud your application, the first problem you encounter is the lack of computational resources. You need more servers, lots of storage space, and more importantly--lots of bandwidth. Using computing resources on the cloud, saves time and effort and saves money. In the general system architecture, you can solve the problem of system scale expansion.
How to overcome energy efficiency problems in data access
However, slowly, as your system grows larger, you will find that it is not by continuing to increase computing resources that there is a way to continue to face a larger scale of service. Because the bottleneck in the system's operational energy efficiency is not in the lack of these resources, but from the limitations of the system architecture. The most common of these is the effectiveness of data access.
Many applications begin with a system-efficiency bottleneck that can occur in the absence of a variety of computing resources, such as the server's CPU computing power, memory capacity, storage capacity, or network bandwidth. However, as more computing resources are invested, these bottlenecks are resolved, and after a certain scale, bottlenecks are transferred elsewhere, which is usually access to data.
Just as many people will use the system architecture, there are centralized relational databases. In such a framework, no matter how many entities of the database server to do load balancing and fault tolerance, because the nature of relational database, to a certain scale (whether the size of services or data scale), to expand its size, it will become a simple job.
Not that the relational database can not reach a large scale, but it will require more sophisticated skills and experience to do. This has always been a difficult technical issue.
If you look at the platforms at the PAAs level, you'll find that addressing the scale of data processing is often one of their key concerns, such as Datastore on Google App engine or hbase in Hadoop.
When you're using a platform like Google App engine, the way to deal with persistent data is to have the option of using its datastore, which is an unrelated way of storing data, The relational data manipulation model that many application developers are accustomed to using is transformed into a PAAs platform that can only use unrelated data manipulation models, and I think it's mainly based on scale scalability considerations.
Based on this platform, the operation of the data model, directly is to deal with the large-scale "massive" scale of data processing. Because of the data manipulation models and mechanisms used on these platforms, it is possible to take account of data of this size.
So when you develop applications on this PAAs platform, how to dynamically configure the relevant computing resources according to the service scale, will be automatically handled by the platform, when the relevant computing resources are wrong, the platform's fault-tolerant mechanism, will help your application continue to function as far as possible. And when you're working on the size of the data or the size of the service, because the platform can afford more data access, it does not make data access a bottleneck in scaling up the system. That's what the PAAs platform can do--to really focus on your application, and to give the PAAs provider the platform and even the programming model.
Development limitations on PAAs platforms
However, as you begin to develop applications based on PAAs platforms, you may find a number of technical limitations, such as applications on Google App engine, which do not have any external network connectivity except for HTTPS URL access and email. Also cannot accept network connections from outside.
Your application will not be able to make any access to the file system, and even your application cannot generate additional threads, and the length of time to execute is limited. And, more importantly, some program design models are also limited, as mentioned in the previous paragraph, the data access model may be limited--only use the unrelated data access model.
The application developer may initially face these limitations and feel tied up and even unreasonable. But think carefully about the reasons behind it, it is not difficult to understand these limitations, for the platform to cloud the operation is inevitable inherent nature.
The running platform wants to cloud the computing resources of the virtualization, that is, the resources of the entity cut into virtual digital, so that the running of multiple applications, as if the entity, independent computing resources in general. Because of the virtualization relationship, the platform must ensure that resources are properly utilized to optimize resources. Also, you cannot allow applications to interfere with other applications or even derive security problems.
We can say that these restrictions are the platform must do, otherwise, under the premise of virtualization, can not use resources, there may be security problems.
While there are limitations to developing applications on PAAs, it is because of these measures that the Platform is able to achieve the technical benefits it wants to provide.