The technological advancement has propelled the growth of software development. The advent of new technologies have disrupted many industries and therefore digital transformation is the need of the hour, but not every business can afford the software development costs. To democratize the access to technology, software subscription models have taken place. They are called SaaS (Software as a Service).
Typically, the SaaS providers charge subscription fees for their software products. The products are delivered and stored in a cloud-based environment which means that the customers don’t have to download the software product on their system. They can access it through a web browser or a mobile app. Hubspot, Mail-chimp, Google Drive, Shopify, Zoho, Twillio, etc. are examples of successful SaaS products.
The SaaS software development has become the trend as more and more businesses are leveraging the subscription-based software service model. Since, we’ve developed and scaled multiple SaaS products over time, here we’re sharing the development life-cycle, challenges, and recommendations for SaaS application development.
SaaS Development Life-cycle
For SaaS application development, the cloud service provider is a critical success factor, and therefore the cloud service deployments require a different approach than ordinary software development. The SaaS application development approach is typically focused on the assessment of the cloud provider in terms of platform capabilities and operational enablement.
This SaaS development life cycle illustration assumes that there were no cloud service provider preferences prior to the project initiation. However, if it is not the first SaaS-based product the enterprise is going to have, the Platform Evaluation, Subscribing, and Operations phases of the SaaS development life-cycle will be less detailed. It is because the SaaS developers can leverage the work that has already been done during the recent SaaS development.
The envisioning phase includes identifying new business opportunities, where the company leadership identifies the gaps in the market, or how to up sell to existing customers. SaaS solutions envisioning is no different than a traditional software envisioning. However, the SaaS products open up new opportunities as the business leaders will have fewer constraints due to reachability, discoverability, and scalability of the solutions. The activities required at this stage are as follows:
- Identify existing business requirements
- Visualize business opportunities and market trends
- Decide whether to buy or build
- Assess sales, marketing, and licensing models
- Identify the SaaS solution needs
Decisions made during Envisioning
The market research and trend analysis will guide the company executives to decide on the sponsorship of the SaaS application development.
SaaS product development cost will be weighed against the total investment and the ROI period will be calculated.
Buy vs Build
Decisions will be made on whether to buy or build the services. In the case of building the service, either the existing IT department or a system development company will build the SaaS solution. Alternatively the solutions can be bought from independent software vendors (ISVs).
Cloud Platform Assessment
Based on the platform characteristics and support, the organization will shortlist the cloud service providers.
The management team will move forward with the decision of creating a proof of concept (POC) for the solution.
2. Platform Evaluation
The performance of cloud service providers are very critical for the success of a SaaS product. The SaaS product development strategy will require activities that focus on selecting the best cloud service for the product. The ISVs or the company building the product, will need to pick the cloud service that helps them realise the product strategy planned during the envisioning phase.
In arriving at a decision that is fit for purpose, the SaaS software architecture proof points are intersected with the cloud’s platform features and capabilities. There are cases where the existing relationships of the product owner or the ISV with the cloud service provider play a vital role in moulding the architecture to fit the cloud’s requirements.
- Design the technical architecture
- Define the functional and non-functional proof points
- PaaS solution economies assessment
- Weight the cloud platform features and capabilities with respect to the SaaS product architecture
- Plan for POC with a small list of PaaS vendors
- Try to acquire the trial subscription to PaaS solutions
- Plan the product development phases (waterfall or agile)
Selecting the fit for purpose cloud PaaS
After the completion of the cloud platform and POC evaluation, the ISVs will be able to pick the best cloud platform for the SaaS solution.
When the cloud platform selection, feasibility analysis, and fit to purpose analysis has been completed, the planning phase can begin in order to plot the course of action for a project delivery prediction. The complexity of the planning activity largely depends on the project size. The activities carried out in this phase of SaaS product development is quite similar to the traditional software development lifecycle.
- Aggregate the required product features
- Streamline product architecture and design specifications
- Create project plan and schedule
- Create resource and communication plan
- Create risk management strategy
- Project plant for the current iteration
- Development plan
- Current iteration feature requirements
- Resource plan for current iteration
- Technical architecture for the solution
- Design specifications
- Operation monitoring plan
Subscribing third-party services such as cloud platforms and payment services is a vital phase of a SaaS development lifecycle. The purchasing decisions are made based on the trial subscriptions. The decision of picking a cloud service provider is subject to careful examination of the deployment models, business continuity, subsequent upgrading schemes, support processes, and disaster recovery. The procurement team will inspect the pricing models and support costs to identify the suitable subscription (IaaS or PaaS).
- Negotiate SLAs (Service Level Agreements) with the managed service providers.
- Analyse feasibility of the polished solution architecture and see if it is possible with the selected cloud service provider.
- Validate and intersect the polished disaster recovery plan with the cloud service provider’s recovery practices.
- Validate compliance, auditing, and data privacy.
- Plan for residual risk mitigation.
- Acquire a cloud subscription for product deployment.
In this phase, the SaaS product architecture and design specification are converted into code artifacts and support documentation. The product development phase includes a series of iterations as per the technical architecture and design specifications. However, the design and architecture may change a little bit based on the discovery of the state of the art functionalities and refinement of functional requirements. The granularity and number of iterations depends on the scope of the project and resource allocation. The developers will work hand in hand with the solution architects throughout the service delivery process.
- Development environment setup
- Deployment and testing frequently throughout the iteration
- Application security integration
- Cloud and on-premise systems integration
- Streamlining the data extraction, uploading, and synchronization
- Support and helpdesk processes integration
- Testing support and helpdesk processes
Both the deployment and the operations process are a vital part of the traditional software development lifecycle (SDLC). Due to the clear requirements of support contracts, SLAs, compliances, shared infrastructure, and security; the activities during this phase are very crucial for the success of the SaaS product.
- Assess the capacity required
- Load testing
- Deployment plan
- Disaster recovery and business continuity process setup and testing
- Finalizing the support plan
- Backup and recover process assessment
- Service discovery collateral creation
- Creating user and support manuals
- Production deployment, monitoring, and performance evaluation.
SaaS Application Development Challenges
1. GDPR compliant Database access
As the GDPR regulations are being made mandatory throughout the world, secure databases have become a necessary for the SaaS software development process. Not just GDPR compliance, but depending on the industry, there are other compliances that the software will operate in. Some of the other compliances are Sarbanes-Oxley (SOX), Payment Card Industry Data Security Standard (PCI DSS), Health Insurance Portability and Accountability Act (HIPAA).
Depending on the requirement, the compliances should be made clear and be implemented while building up the software architecture. At the stage of system creation, the unit and integration tests shall be applied to ensure sufficient data security.
In our SaaS deployments, we’ve used MongoDB and Neo4j for database management, MySQL, PostgreSQL, and Elastic Search for data analysis and visualization, and Redis was used as the database, message broker and cache.
2. SaaS subscription Lifecycle Management
Third-party payment services are a feasible way to integrate plans and subscriptions functionality while developing the SaaS software. The third-party subscription management services have a straightforward approach to take care of product plans and subscriptions. The SaaS software developers can leverage such payment systems by using their APIs. One such example is Stripe. Stripe provides well-documented plans and subscription features that are easy to integrate.
If the product owner doesn’t want to be dependent on any third-party subscription management service provider, the SaaS software developers can build the native functionality too. The advantage of having it all in one place is that the product owner won’t have to pay monthly or yearly fees to the payment service providers for the management of plans and subscriptions.
3. Third-party Payment Integration
Almost every SaaS product comes with the payment functionality. Normally, it is perceived by third-party payment service integration. There are two ways to integrate the payment services, with one of these methods being a lot easier than the other..
The easier one is to go with the payment service provider which provides great support for integration. The more demanding one is where the SaaS developers have to analyse the technical aspect and challenges that can occur while integrating with the payment services. This method may be necessary if your payment system needs to have specific custom features which existing payment providers cannot provide. This focuses on creating appropriate application parts which also includes creating services and functionalities that facilitate a seamless integration with external payment services.
However, most of the payment solution providers already expose their APIs and other necessary libraries to make the integration smooth. Throughout time, we’ve integrated payment services like Secure Trading, PayPal, QuickPay, Braintree, Skrill and many others on our diverse portfolios. The most crucial factor we’ve found which many other developers don’t pay much attention to is to test the integration with the set of automatic as well as manual tests.
4. A Zero-Downtime Deployment
As the SaaS products can be accessed anywhere in the world by potentially a huge number of users, the availability of the solution becomes significantly important. During these years of SaaS product deployment, we’ve seen that sometimes when a new version is released, the system might not be fully accessible to the user.
We recommend using a zero-downtime deployment strategy that makes your process of deployment fully responsive. To achieve this, the developer can make sure that the web server doesn’t start serving the changed code until the complete deployment process is executed. Unlike the traditional deployment systems where the application would notify the users about scheduled downtimes, the blue-green zero-downtime deployment strategy ensures that the SaaS solution is available all the time.
5. Future-Proof Customization
A good SaaS system is supposed to be fully customizable, beginning from the user-interface up to the underlying system layers. However, the customization level is always dependent on the product requirements. We’ve deployed SaaS solutions where the customization of layout, subdomain, user-based information access levels, layouts, templates were required. Handling such requirements can increase the development costs a little bit, but if the customization functionality is achieved in a lean and agile manner, it adds a lot of value to the SaaS solution.
The SaaS product development has an advantage of customizatility and integration with other enterprise systems and softwares. The SaaS development company should build APIs that are safe to be exposed to third party developers who might want to expand your SaaS product’s capabilities by integrating their cloud-based software applications.
Whether you are developing a new SaaS product or converting an existing one to SaaS, the Nimble AppGenie team can help you with the development. Our experienced team of architects and developers areis experts in developing cloud-based applications.