The following tip draws from a presentation Shlomo Swidler gave on migrating legacy applications to the cloud as part of the TechTarget BAA Group's Java University. This series covers Java development issues, as well as important technologies that have come to affect Java in recent years.
Development teams today face uncharted territory when it comes to cloud application and integration. As more services are able to run on cloud platforms, the cloud becomes more central to development. According to Shlomo Swidler, founder of cloud computing consultancy Orchestratus, the cloud can be developers' gateway to better reliability and delivery of value to customers. To achieve that success with applications in the cloud, Swidler offers these tips: use efficient cloud APIs, have a solid service-oriented component architecture in place, and make the right deployment and management choices.
In the past, the mode of delivery was tangible; companies mailed hardware to customers or provided locations where customers could pick it up. Nowadays, the most successful businesses provide fast, easy ways for customers to access value online. If customers can't get to it, then the service is a failure.
The cloud helps fast-track the delivery process by reducing the time it takes developers to write certain kinds of code, said Swidler. It also eliminates wasted time. "No more waiting for hardware to arrive from manufacturers," he explained. "With cloud, you have immediate access to the hardware.
"It might seem counterintuitive to say that you have the possibility of greater reliability of your deliveries in the cloud if the provider is taking more control, but in fact you do," Swidler continued. "Whenever a provider offers you a service, the fact that it's cloud means that you can control [the service] via an API."
Cloud APIs, architecture and deployment
In fact, effective cloud APIs are critical to successful cloud application and integration design. They enable developers to reconfigure applications and integrate components without having to change or write new code. "Make sure that everything -- and I mean everything -- has an API," advised Swidler. "Services need to talk to each other via an API so that you have the flexibility to reconfigure them when you need to." That means faster, easier recovery from failures.
Swidler suggested breaking down each service into a series of smaller, more manageable components. Once in the cloud, those services can be operated, scaled and recovered independently. "The effect of downtime is mitigated overall," he said. "It also makes it easier to optimize small individual components, as opposed to large components, all at once."
When moving from traditional hardware to the cloud, developers must decide among IaaS, PaaS, or customer hardware options. Choosing correctly is critical to successful cloud applications. In making this deployment choice, developers should consider the complexity of the application and the amount of control required, according to Swidler. "Today you can deploy relatively simple applications on PaaS and more complex ones on IaaS," he said.
No matter the deployment method, all cloud initiatives require a solid management strategy. When moving to the cloud, it is important to be able to track, monitor and visualize the necessary aspects of applications. "Look into the right kind of management framework that will help you abstract away that low-level management into higher-level constructs, such as managing a single stack or service as one unit," Swidler suggested.