Designing and Developing Cross-Cutting Features
Every developer has had to integrate with another system, API or component. Tis article provides strategies to handle the change and for he separating system boundaries.
The content has been bookmarked!
There was an error bookmarking this content! Please retry.

Posted by Hanu Kommalapati and William H. Zack on Oct 03, 2011
Cloud service development requires a different approach than the traditional software development lifecycle as the cloud provider becomes a critical success factor of the overall project. In a traditional software development setting, more emphasis is put on the functional aspects because it is deployed on an on-premise infrastructure with implicit security, compliance, control, operational transparency and perceived service level requirements. Another important factor is the cost of operations. It often takes back seat, especially in cost centers, due to the sunk cost and horizontal charge models. The main objective of this paper is to focus on the lifecycle aspects of SaaS service development and outline the motivation, inputs and deliverables of each activity for all the phases of the lifecycle. Cloud services can be built for internal consumption as well as for selling to external customers. The focus of this article is the cloud services built for external consumption as these require rigorous architecture practices to incorporate the service tenets necessary for a successful services business model. Even though the SaaS (Software as a Service) Development Lifecycle outlined here is scoped at external facing services, the process can easily be adopted to internal private cloud based applications that target internal users. It is clear that even enterprise IT departments have to start looking at themselves as Service Providers and act accordingly.
As a regular reader of InfoQ we assume that you are familiar with terms such as SaaS (Software as a Service), PaaS (Platform as a Service), and IaaS (Infrastructure as a Service) and the role these categories of as-a-service cloud providers play in the cloud ecosystem. We also assume that you understand Service Providers provide finished services for consumers and/or other businesses while Cloud Platform Providers host finished applications for those Service Providers.
In order for a cloud service to meet the adoption goals and reach their target demographics in an economically viable manner, cloud services need to be built on a foundation that manifests certain principles at a fundamental level. These principles are Discoverability, Reachability, Economics, Scalability, and Supportability which are briefly discussed below. We like to call these principles SaaS DRESS Code for stickiness; we will expand these principles in more detail in a future paper.
The SaaS development Lifecycle needs to support the creation of cloud hosted services that reflect the above tenets at a fundamental level.
SaaS development requires a rigorous approach towards cloud provider assessment from the platform capabilities as well as the operational enablement perspective. Due to the explicit list of detailed activities during initial evaluation of the cloud provider, acquisition of production subscription and integration of operational frameworks and processes, these respective phases have been added to the traditional software development lifecycle. The resulting lifecycle is shown in Figure 1. The SaaS Development Lifecycle illustrated in Figure 1 assumes a fresh start with no preferred cloud provider prior to the start of the project.
In reality, if the SaaS service being developed is not the first one within the organization, the Evaluation, Subscribing and Operations phases will be less detailed due to leveraging the work that has already been done during the previous project

Figure 1: SaaS Development Lifecycle
During the envisioning phase, the company leadership will identify new business opportunities, how to upsell to existing customers, how to expand the customer base by reaching the Long Tail, and they will strategize to extract more value from their intellectual property. Envisioning of a SaaS service is not that radically different from the traditional software envisioning phase. As SaaS opens up additional opportunities due to discoverability, reachability and scalability of cloud hosted services, business leaders will have fewer sales, marketing and IT agility constraints in terms of aiming high. Business leaders will define the vision and scope of the SaaS service while keeping the previously described cloud service tenets in the background.
During this phase appropriate candidate applications that can benefit from leveraging the characteristics of the cloud are identified.
Depending on the size of the organization various business roles will participate in the envisioning phase. Since technology will be a critical success factor of any cloud service effort, there should be a good representation of technology roles like the CTO and business/enterprise architects as well. The following are typical participants in the envisioning phase:
Even though platform evaluation is an implicit part of a typical software development lifecycle, SaaS development requires an explicit list of activities that focus on the cloud provider selection. The Cloud provider is such a critical success factor of the entire operation that the evaluation must be done with rigor, especially if mission critical systems are planned for cloud deployment. ISVs and customers need to select a cloud provider that helps them realize the services strategy defined during the envisioning phase. The evaluation phase will also help in the identification of a cloud service provider for the current service in question. Architecture proof points will be intersected with a cloud provider’s platform capabilities in arriving at the decision of “fit for purpose”. There may be cases where the ISV’s existing relationship with a cloud provider will play a big role in tweaking the architecture to fit the cloud provider’s platform.
Armed with the vision/scope, a small task force of business and technology folks will work together in zeroing in on a cloud platform for developing and deploying the service. The business folks will refine the scope for functional proof points while the technology roles will define the architecture proof points and subject the cloud platform to the scrutiny of the proof points. Typical participants may include:
After having identified a cloud platform that is feasible for building the SaaS service, the planning phase will help plot the course of action for a predictable delivery of the service. Planning largely depends on the type of service and the organizational culture. The rigor of the activities and the resulting deliverables depend on the complexity and the size of the service. The activities in this phase are pretty much similar to those of the traditional software development lifecycle.
Subscribing is an important phase of the SaaS Development Lifecycle during which a production quality subscription is acquired. In this phase, based on the previous trial experience, the cloud provider is subjected to more scrutiny, driven by the production deployment and operational needs of the service being planned. The architects and IT Professionals will revisit the deployment models; subsequently upgrading schemes, support processes, business continuity and disaster recovery. The procurement team will work with the cloud provider in identifying the right level of subscription, either IaaS or PaaS, with full awareness of the pricing models, what-if analysis, and support costs.
Majority of the deliverables during the Subscription phase are high level strategies based on cloud provider supplied information. These will be refined before production operations kick in.
This is the service construction phase during which design specifications are refined and translated into code artifacts and supporting documentation. The Developing phase is composed of a series of iterations built on top of the core architecture and high level design specifications. The architecture and detailed design may change based on the discovery of new functionality and refinement of existing functional specifications. The resource allocation, scope of functionality and project schedule determines the granularity and number of iterations. Developers and solution architects will work hand in hand in designing the iteration make up and involving end users throughout the phase for a quality service delivery.
The decision making at this stage is primarily implementation oriented:
The formality of deliverables in this phase depends on the size and scope of the service being implemented. Certain mission critical service implementation with multiple entity involvement (e.g. multiple systems integrators and outsourced companies) may mandate more formal deliverables compared to less mission critical and/or in-house developed applications. Here are a few deliverables:
Even though deployment and operations are an important part of the traditional SDLC, due to the explicitness of the service level agreements, support contracts, compliance, security, and shared infrastructure; activities during the Operating phase are critical for the success of the SaaS operations. The insights acquired during the evaluation, subscription and development phases are blended with the operational characteristics of the cloud platform in creating deployment and operational processes for running the cloud hosted service with the best possible systemic qualities. The evaluation and subscription phases of the SaaS development lifecycle would have given a detailed knowledge of the cloud platform operational aspects; however, in this phase the platform operational aspects are integrated and customized if necessary in the context of the service being deployed.
The SaaS Development Lifecycle (SaaSDLC) is an adaptation of the traditional iterative software development process with additional important phases added. These additional phases – Evaluation, Subscribing and Operations are less prominent and implicit for on-premise deployments. However, the activities during these phases become critical success factors for a SaaS development and deployment due to an externalized multi-tenant hosting environment. While the initial SaaS projects require more emphasis on the cloud provider evaluation, subscription acquisition and operationalizing the services, the subsequent SaaS efforts can leverage the know-how acquired previously thereby allowing the project teams to short circuit Evaluation and Subscribing phases. The IT Professional needs to be extra diligent in cloud platform provider evaluation, designing the deployment environment and setting up operational processes that integrate cloud providers processes and frameworks into the existing management and monitoring environment.
The SaaSDLC described in this paper is biased towards ISVs; but is equally valid in principle for any SaaS service provided either by ISVs or by enterprise IT departments. It is clear that even enterprise IT departments must start looking at themselves as Service Providers and act accordingly.
Hanu Kommalapati is a Senior Technical Director at Microsoft Corporation where he is the technical lead for Windows Azure and Cloud Computing for the U.S. subsidiary of Microsoft's Platform Evangelism organization. In this capacity he works spreading the word about Cloud Computing to Microsoft customers, partners and community.
In the past he has held positions as Principal Platform Strategy Advisor and as an Architect for Microsoft. Previously he also held positions as a Principal Consultant at PricewaterhouseCoopers.
William H. Zack Is a Microsoft Principal Architect Evangelist who specializes in architecting, implementing and supporting both applications and computing infrastructures based on Microsoft Internet, Intranet, Client/Server and Cloud technologies. Over the past three year years Bill has been evangelizing Windows Azure and working with customers and partners to help them design, build and move applications to the Windows Azure Cloud Platform.
He has given cloud presentations at conferences such as Cloud Expo, as well as at local community events and has presented on Microsoft cloud strategy and implementation to technical decision makers and developers at many New York area companies.
In 2010 and 2011 he presented the talk: Patterns for Cloud Computing at Cloud Expo in New York. Bill also created the material for an award winning 2010 webcast: Windows Azure Design Patterns and subsequently delivered it as part of the Microsoft Academy Live webcast series. This won internal Microsoft awards for the most downloaded webcast of the year and the most impactful.
Every developer has had to integrate with another system, API or component. Tis article provides strategies to handle the change and for he separating system boundaries.
Alex Russell talks about the shortcomings of the web platform and how it is evolving in order to adress them. He also explains about how browsers are improving and shares his vision on things to come.
Jeff Lindsay discusses creating distributed and concurrent systems using ZeroMQ – a lightweight message queue-, and gevent – a coroutine-based networking library.
Brian Ketelsen introduces Skynet, a platform for polyglot, distributed and composable services that communicate with each other over RPC/JSON.
Carin Meier tells the story of Alice discovering Monads, meeting three types of monads – Identity, Maybe, State-, and learning how to implement them in Clojure.
The need for agile, queryable, reliable, scalable storage without the pain of SQL schema migration is real. This article uses MongoDB to introduce NoSQL concepts to Java, PHP, and Python developers.
Jérôme Giraud introduces Wink Toolkit, an open source mobile JavaScript framework for HTML5 web or hybrid apps, showing widgets and interactions.
Greg Wilson and Christophe Coenraets demo Adobe Edge, a motion and interaction tool, CSS Regions and Shaders, and PhoneGap.
No comments
Watch Thread Reply