The second layer in our proposed cloud ontology is the cloud software environment layer (also dubbed the software platform layer). The users of this layer are cloud applications’ developers, implementing their applications for and deploying them on the cloud. The providers ofthe cloud software environments supply the developers with a programming-language-level environment with a set of well-defined APIs to facilitate the interaction between the environments and the cloud applications, as well as to accelerate the deployment and support the scalability needed of those cloud applications. The service provided by cloud systems in this layer is commonly referred to as Platform as a Service (PaaS). One example of systems in this category is Google’s App Engine,which provides a python runtime environment and APIs for applications to interact with Google’s cloud runtime environment. Another example is Sales Force Apex language that allows the developers of the cloud applications to design, along with their applications’ logic, their page layout, workflow, and customer reports.
Developers reap several benefits from developing their cloud application for a cloud programming environment, including automatic scaling and load balancing, as well as integration with other services (e.g. authentication services, email services, user interface) provided to them through the PaaS-provider. In such a way, much of the overhead of developing cloud applications is all eviated and is handled at the environment level. Furthermore, developers have the ability to integrate other services to their applications on-demand. This in turn makes the cloud application development a less complicated task, accelerates the deployment time and minimizes the logic faults in the application. In this respect, a Hadoop deployment on the cloud would be considered a cloud software environment, as it provides its applications’ developers with a programming environment, i.e. map reduce framework for the cloud. Similarly, Yahoo’s Pig , a high-level language to enable processing of very large files on the hadoop environment may be viewed as an open-source implementation of the cloud platform layer. As such, cloud software environments facilitate the process of the development of cloud applications.