In the Software as a Service (SaaS)
approach, applications are delivered over the Internet in the form of service. Rather than installing and maintaining the software, one simply needs to access the software over the Internet. Any SaaS model should have the following key characteristics:
- Multitenant Architecture – In a multitenant architecture, multiple users and applications share a common source code. This source code is maintained centrally in one location.
- Customization – Since the source code is maintained in a single place, it becomes easier to customize the application based on the business needs of the customer. SaaS is designed and organized in such a fashion that these customizations can easily be managed and maintained per customer.
- Accessibility – SaaS provides better access to data over the Internet. This makes it easier to manage privileges or monitor data usage. It also ensures that same information is available to all users at any point of time.
When implementing the SaaS model, the following steps should be followed:
1. Understand the business requirements
Irrespective of the technology or the model, it is very important to have a clear understanding of the business requirements. Without this, we won’t be able to design and develop any system or application. In order to achieve better results, it is important to identify the goals and objectives at a very early stage. The investigation and discovery process should be robust enough to set the goals and directives at a very early stage. The investigation process should determine the following:
- How should the application be designed to run?
- What are the different categories of users who will access the application?
- How should the application respond to:
It is very important to identify and understand the characteristics of the application at a very early stage. Not only that, we should pay equal attention to identifying the challenges that the existing application, system or the process is facing.
2. Identify the team to take on the task
Again, irrespective of the technology or the model, it is very important that the team assigned to take on the task is well versed in the technology and the concepts. In the SaaS model we should have a team comprised of seasoned developers who understand the concept of SaaS in depth. The team should have members who have the expertise of multiple technologies and also should be well aware of the best practices that are followed in the industry.
3. Design a scalable infrastructure
Once the team has the complete understanding of the business requirements, the next step is to build the infrastructure along with the following components:
On top of these, there should be internal reviews to evaluate the cost-benefit-related issues while building the infrastructure. While finalizing decisions on infrastructure, one must take the following into consideration:
4. Finalize the bandwidth requirement and hosting facility
It is very important that the infrastructure is hosted within a facility which has a public connectivity and maintains consistency to ensure positive user experience. While reviewing the bandwidth, we must think of the demographics of our application, e.g. the connectivity factor for a user sitting in an office where high bandwidth network speed is available would be different from a user who is connecting from home. It is also important that we place the infrastructure as close as possible to ensure fewer network hops
. We should have multiple network connections to our data center, thus eliminating network bottlenecks
. If we decide to outsource the data center infrastructure, we should consider the following:
- Is the data center available 24×7×365?
- Testing frequency
- Availability of redundant systems for power and other hardware failures
- Physical security of the campus
5. Procuring the infrastructure components
Once the infrastructure design is complete, we need to use components which have proven reliability and functionality. This step is critical in order to ensure high availability. While evaluating these hardware components, we must also ensure that the selected hardware is delivered within the timelines of our business needs.
6. Deployment of the SaaS delivery infrastructure
Once the infrastructure components are available, the operation team should start building and deploying the SaaS components. Servers should be racked, configured and subsequently the operating systems should be installed as per the need. Security devices should be upgraded with the latest versions of IDS
. The firewall should also be configured as per the user access policy of the business.
7. Plan for disaster recovery and continuity
Now that the application is ready to be used over the SaaS platform, we must plan for disaster recovery and ensure continuity of the application. The following questions need to be answered in this regard:
- How do we respond to a disaster condition?
- How do we bring back the application in a limited time frame?
8. Integration of a monitoring solution
A monitoring subsystem is vital. It helps to ensure timely intervention and avoid disasters. The system monitoring should be done based on the following parameters:
- Memory and CPU usages
- Event logs from the operating system and the application
- Different application components (TCP layer, database, application servers, etc.)
9. Prepare the customer support call center
Once the application is out on the market, it must have a customer support call center
. The call center should be well connected and equipped to manage an appropriate ticketing system. Customer support is a key component to ensure success of any model or application irrespective of the technology. The ticketing system should be enabled with an appropriate emailing system; if any issue requires the attention of the development team, the ticketing system should be able to send emails to the appropriate team member.
10. Prepare the service level agreement (SLA)
An SLA must be in place while implementing the SaaS model. The SLA should clearly define the turnaround time and the response time along with the application availability
Once all of the above steps are completed, the entire infrastructure and its components must be documented. This document will help others to handle any exceptional behavior of the application. It will also help if there are any modifications or alterations required in the infrastructure.