In-Depth
10 Reasons Why Architects and Developers Should Care about Cloud Computing
By Hanu Kommalapati, Sr. Technical Director, Microsoft Corp.
Cloud computing has come a long way during the past few years; enterprises no longer are curious onlookers but are active participants of this IT inflexion. Application developers and architects have much to gain from this new trend in computing. Cloud enables architects and developers with a self-service model for provisioning compute, storage, and networking resources at the speed the application needs.
The traditional on-premise computing model constrains IT agility due to the less-than-optimal private cloud implementations, heterogeneous infrastructures and procurement latencies, and suboptimal resource pools. Because cloud platforms operate highly standardized infrastructures with unified compute, storage, and networking resources, it solves the IT agility issues pervasive in the traditional IT model.
The following are among the benefits IT architects and developers will realize by moving to the cloud:
Benefit #1: Collection of Managed Services
Managed services are those to which a developer can subscribe without worrying about how those services were implemented or are operated. In addition to highly automated and self-service enabled compute services, most cloud platforms tend to offer storage, queuing, cache, database (relational and non-relational), security, and integration services. In the absence of managed services, some applications (such as hybrid-cloud applications) are impossible to write or will take a long time for developers to create the necessary plumbing code by hand.
Using cache service as an example, a developer can build a highly scalable application by merely declaring the amount of cache (e.g., 4GB) and the cache service will automatically provision the necessary resources for the cache farm. Developers need not worry about the composition and size of cache nodes, installation of the software bits on the nodes, or cache replication, and they don’t have to manage the uptime of the nodes. Similar software appliance characteristics can be attributed to the other managed services such as storage and database.
Benefit #2: Accelerated Innovation through Self-service
Developers can implement their ideas without worrying about the infrastructure or the capacity of the surrounding services. In a typical on-premise setting, developers need to acquire the VM capacity for computing tasks and database capacity for persistence, and they must build a target infrastructure environment even before deploying a simple application such as “Hello, world!”
Cloud allows developers to acquire compute, storage, network infrastructure, and managed services with a push of a button. As a result, developers will be encouraged to try new ideas that may propel companies into new markets. As history proves, often great technology success stories come from grass-root developer and architect innovations.
Benefit #3: Agile Application Security
Developers will have to write their own code (aka, reinvent the wheel) to enable industry-standard authentication and authorization schemes in their Web applications. For instance, if an application needs to leverage multiple OpenID providers (Microsoft Live, Google ID, Facebook, or Twitter to name a few) on the Internet, the developer must manually write forking code to understand multiple tokens, parse them to a canonical format, and apply authorization rules before the user is granted access to an application feature.
Some cloud vendors provide access control services that will enable such authentication and authorization schemes through mere configuration. Such authentication and authorization services will translate security tokens from different providers into a canonical format that the application understands right away. Such services also free the developer from understanding the arcane details of OpenID protocols, and the token nuances of each OpenID provider implementation.
Benefit #4: Hybrid Cloud and Multi-enterprise Applications
Cloud platforms, especially the platform-as-a-Service (PaaS) kind, tend to enforce architecture consistency and standards-based network and wire protocols for service deployments. Also, public clouds, as the adjective suggests, have broader network visibility with services being accessible over the Internet through flexible security schemes. To make composite solutions easier, some cloud vendors provide service bus as a managed service for publishing and subscribing services from a plethora of deployment dispositions including public, private, on-premise, hosted, and partner installations.
In the absence of such service bus technologies, developers will have to spend valuable time writing code and dealing with enterprise bureaucracy related to networking configuration, infrastructure acquisition for DMZ installations, and capacity planning, among other issues. Of course, developers still need to do the capacity planning for the behind-the-firewall hosted services and applications that turn out to be easier than the DMZ battles.
Benefit #5: Accelerated Delivery of New Platform Capabilities by Cloud Vendors
Cloud vendors tend to bring new capabilities to market iteratively, as fine-grained releases, at an accelerated pace compared to that of upgrades to on-premise software packages and operating systems. This is because clouds, especially the PaaS type, run on a standardized hardware and software platform inside the providers’ own data centers; this allows the deployment of features in a controlled manner with predictable impact to the deployed customer applications. This accelerated feature delivery allows a developer to take full advantage of the vendor’s investments that help their enterprises build innovative solutions.
Benefit #6: Up-to-date Application Platforms
Developers always get to work with the latest technologies and services as soon as they are published by their cloud provider. Developers will no longer be bogged down by on-premise IT deployment latencies. A developer can incorporate the latest development trends into the application as the newer frameworks and services tend to accomplish application functionality with increasingly smaller amounts of code.
Essentially developers could avoid the nightmares of being bogged down by years-old operating systems and application platforms due to organizational deployment dynamics. This benefits the companies they work for and increases the intrinsic value of the developer’s skills portfolio.
Benefit #7: Enhanced Reusability of Services
Poor capacity planning is often an issue of reusability in an on-premise deployment. Due to budget constraints and delivery schedules, developers tend to focus on meeting the needs of the current project when they create and deploy services. As a result, the services can run into scalability issues once the services are exposed to consumers across the enterprise.
With a cloud-based service deployment model, the developer need not worry about scalability. By increasing the number of service instances through configuration, the developer can meet the needs of the new service consumers with relatively minor (and sometimes no) effort. One caveat is that while the cloud deployment solves capacity issues, the onus of designing the service for broader reuse still rests on the developer’s shoulders.
Benefit #8: Solution Agility through ISV Marketplace and Datasets
Developers can pick the right ISV component/service from the palette (marketplace) and innovate instead of being bogged down by the on-premise procurement delays and the ensuing time-to-market issues. The state-of-the-art encryption service, best-of-breed application monitoring service, or a highly productive application framework will be a few clicks away.
Some cloud providers enable data-as-a-service by allowing the owners to publish public and private datasets through industry-standard protocols for friction-free consumption by developers. This allows developers to incorporate the appropriate data into their applications without worrying about the network and wire protocol incompatibilities. In the absence of such data services, vendor protocol differences and procurement delays can make a developer’s life difficult when incorporating datasets from multiple vendors is required.
Benefit #9: Leverage Existing Skills for Cloud Applications
The critical success factor of the broader adoption of a cloud platform is the developer ecosystem. Most cloud platforms allow the reuse of the existing skills either in the Java or .NET space. The cloud platforms, especially PaaS and IaaS (Infrastructure as a Service), are highly compatible with their on-premise counterparts, making applications highly portable across deployments. Most of the server-based Web applications and Web services can be ported with minor or no changes.
Benefit #10: Superior Systemic Qualities of Cloud-Deployed Solutions
Often, due to a suboptimal implementation of the infrastructure, applications can go down. Developers must incorporate defensive programming techniques to recover from such failures. Most cloud platforms are built and operated through standard practices so the amount of defensive code a developer must write is relatively small compared to a typical on-premise operated environment.
This means that developers will get high availability in a systematic way. Cloud platforms enable elastic scalability through large resource pools of highly available compute, storage, and networking resources for application consumption. Combine this with a catalog of managed services with similar systemic qualities and a complete cloud ecosystem is at a developer’s disposal for building highly scalable, available, reliable, and high-performance applications.
A Final Word
I may have overlooked a few important developer and architect benefits when compiling this list, but I am optimistic that I have captured the essential ones. Cloud computing makes IT more agile and enables developers and architects to innovate and makes IT a strategic asset in leading the business.
Hanu Kommalapati is a senior technical director at Microsoft Corp. where he is responsible for the adoption of cloud computing among customers and partners.