Monday, 14 October 2013

How developer's are using the cloud

Several improvements in Java EE 7 are relevant. Obviously, the new batch specification, JSR 352, is tremendously valuable, and not only for cloud computing. It’s able to take significant amounts of work that might otherwise have to be done synchronously and break it down into smaller units and perform those asynchronously. In addition, the Java EE role definitions have been updated to better map to the security requirements we see in cloud environments, such as the difference between someone administering platform as a service [PaaS], on which the application is running, versus administering the application itself that is being hosted. Software also works better in a cloud environment when we get rid of certain assumptions. One way to do this is through dependency injection, which was introduced in Java EE 5 and, as of Java EE 7, now applies across the entire Java set of enterprise specifications and is called Context and Dependency Injection [CDI]. Instead of going out and finding what you need as a component, you simply declare what you need. If you need to connect to a database, the component declares that it needs to be connected to a database and then it allows whatever environment it’s running in to provide it with a connection to that database based on how that environment is configured. IaaS manages the requisite networking and server hardware, and it typically hosts virtual machines, each of which is running an operating system—all of which is below the level of Java EE. We imagine that every data center, every private cloud, and every public cloud will be providing IaaS: infrastructure services that platforms and applications can take advantage of through standardized IaaS APIs. Generally speaking, what developers are looking for is PaaS. Developers need to be able to describe an application hosting environment: an application server or a cluster of application servers, which are often combined with a database. And they need to have their application exposed to the real world, protected by a firewall, and automatically balanced by a load balancer. In other words, they’re not interested in building or installing their own firewall, load balancer, or database. They want to be able to take an application, including necessary components and their database design, and deploy it in a way that is accessible and secure. So, think of an application that you’re deploying for a mobile platform; it’s probably going to consist of a significant number of RESTful interfaces that are exposed to a mobile platform. Those RESTful interfaces will be exposed through a URL that will come to a load balancer that spreads requests across an elastically scaled application server infrastructure, providing both high availability and elastic scalability. The application servers will be running the application logic, which will be transforming information from a database or other data services into RESTful responses that are sent back to the mobile application itself. All of the complexity of provisioning, configuring, monitoring, and scaling the application infrastructure is provided and managed by PaaS.

No comments:

Post a Comment