Skip to main content

Software As A Service (SaaS)

A Short Note on SaaS [Software As A Service].

IMHO, I am building upon a short post on SAAS, this is not exhaustive, but I encourage the readers to share their valuable comments to improve this post.

SaaS is an abbreviation of Software As A Service.AKA Software on Demand, where the vendors develop, host and operate on the software and make it available on the internet for its consumers / customers.

SaaS is the most mature category of cloud service, since it evolved from the application-service-provider model of software hosting.

With SaaS, software applications are rented from a provider as opposed to purchased for enterprise installation and deployment.

SaaS is the most mature category of cloud service, since it evolved from the application-service-provider model of software hosting. With SaaS, software applications are rented from a provider as opposed to purchased for enterprise installation and deployment.

Users
Can range from small group to multitude

SaaS Considerations

1. Faster time to market & Agile
This point is with respect to the global availability of the application and its agile driven development / upgrade process applicability.

2. Costing
Versatile [Monthly / Quaterly / Yearly subscription or per user based licensing model] the ability to pay for only what is used.

2. Infrastructure
Approx 70% of the cases use shared platform and shared instances [ Pure Multi-tenancy] solutions that could scale up and down based on demand.

3. Security
The very nature of SaaS poses security challenges.  In order to detect and prevent intrusion, strong encryption, authentication, and auditing must be a part of the application design to restrict access to private and confidential data. Liabilityfor the cost and damages associated with any data breach typically rests with the SaaS provider.

3.1 Authentication
Mostly preferred is SSO and some do have options for managing Personal Profiles

3.2 Security Rating
Rating of the security on data should be made to ensure the protection level and may demand a physical inspection of the SaaS provider's premise

3.3 Regulatory compliance
Storing sensitive data like employee bank account particulars in the cloud may be non-compliant for some countries
Use of federation for user identification and enablement within and accross domains
Capability of using SSO to facilitate multiple cloud application access
Rolebased access control to the user's
Tenant should be responsible for managing his own users and can allow delegated administration
Tenant controllable encryption mechanisms for safe transfer of data across the wire
Regulatory controls for auditing the user actions and also ensuring user access from controlled countries
Data security to ensure which data is accessible to whom and by what means
Data Security mechanisms should be in place during the data in transit and when in the database.

Monitoring
Diverse tools to monitor the performance
Tools should be provided the poll the application services and infrastructure services to get health status and take necessary actions if required.

Performance
Performance of the application under voluminous user and transaction operations. i.e. the application's performance in the case of a single customer's transaction as well as the simultaneous transactions.


Mostly favored aspects of SaaS
Configuration over customization

Configuration requirements for each tenant w/o downtime of the application
1. Metadata configuration
2. Metadata engine configuration or the business rule engine to gain a finer control of the business behaviors
3. Tenant based configuration of the data security to have a means to allow or restrict the user access to the data
4. Configuration for handling and logging exceptions


Scaling requirements
Ondemand scaling up and scaling down.
Loadbalancing is required in order to scale the application across myraids of servers increasing the application availability and this results in a fail-safe and redundant data. However, there must be a mechanism in place to keep all these servers in sync so that no stale data is rendered to the users operating simultaneously.
horizontal scalability refers to the process of adding a servers to serve the application across different requests.This enables location transpareny

Mutli-tenant efficient
should be capable of managing tenants with a single shared instance

Presentation tier
should be intuitive & user friendly & localizable
cross device presentability

Reporting
Application specific pre-defined reports and ad-hoc reports

Syncing data with external data
In the case of synching external data with the SaaS application data, there should be pointers to identify the right version of the data and which are available for sync.
Also, some data will be added to the SaaS application asychronously i.e in the back-end requiring that the data will be uploaded from the onpremise application to the SaaS application for some reporting or other purposes.


Metering indicators should be provided to indicate the usage, availability, failures and response times etc..

Disaster recovery plans
This should be in place which will be as a part of the application development and also in the course of usage.
This also should define a set of procedures and/or plan should identify mission critical data and how often it should be backed up, describe where data is housed, backup procedures, what tests are run to ensure the probability of recovery, and whatresources are responsible for data recovery. Additionally, a clear path should be detailed as tohow easy a customer can retrieve data, both
raw and processed, if a decision is made to leave aparticular SaaS provider.

Deployment
1. Any multi-tenant application will be using the common code base and a shared database [pure form of multi-tenancy] and be accessed simultaneously. The user experience should be similar to that of an on-premise access.

Audits
There are two types of audit that are required
1. Security audit
SysTrust and SaS 70
In a SysTrust audit, the auditor evaluates whether a particular managed services provider is reliable when comparedagainst the principles set for security, availability, processing integrity, and confidentiality of sensitive information which may be set forth in the form of an SLA between the managed services  provider and its customers.
The major difference between the SysTrust and SAS 70 audits is the scope of the audit. While the SAS 70 audit provides a report on the effectiveness and adequacy of internal controls for a managed services provider, the SysTrust Audit provides a report covering an application’s reliability.

2. Information audit

Application updates
To deliver the enhancements of an application to improve the user interface or the functionality of the system or a performance improvement aid.

Patches are the issue fixes for the bugs identified in the system in due course of operation or testing after release or as a part of a new feature integration.

Ratio of the updates to onpremise and SaaS application is 4-6 months Vs 4-6 weeks for a SaaS application.

Comments

Popular posts from this blog

User Authentication schemes in a Multi-Tenant SaaS Application

User Authentication in Multi-Tenant SaaS Apps Introduction We will cover few scenarios that we can follow to perform the user authentication in a Multi-Tenant SaaS application. Scenario 1 - Global Users Authentication with Tenancy and Tenant forwarding In this scheme, we have the SaaS Provider Authentication gateway that takes care of Authentication of the users by performing the following steps Tenant Identification User Authentication User Authorization Forwarding the user to the tenant application / tenant pages in the SaaS App This demands that the SaaS provider authentication gateway be a scalable microservice that can take care of the load across all tenants. The database partitioning (horizontal or other means) is left upto the SaaS provider Service. Scenario 2 - Global Tenant Identification and User Authentication forwarding   In the above scenario, the tenant identification happens on part of the SaaS provider Tenant Identification gateway. Post which, ...

Handling exceptions in the Executor service threads in Java

Introduction This is a continuation post on the exception handling strategies in the threads in Java. For Introduction, please read this post The second post is available here This post addresses the problem statement "How to use the exception handlers in the threads spawned by the Executor Service in Java?" Not all times, we will be using Thread  classes to run our threads because we have to manage a lot of the underlying logic for managing threads. There is ExecutorService in Java which comes to the rescue for the above problem. In the previous posts, we have discussed on how to handle the exceptions in plain threads. However, when using executor service, we do not create / manage threads, so how do we handle exception in this case. We have a ThreadFactory   as an argument which can be used to customize the way threads are created for use within the ExecutorService . The below snippet of code leverages this feature to illustrate the exception handling, wherein we creat...

Upgrade from http1.1 to http2 for Java spring boot applications hosted in tomcat

In this post, we will list down the tasks to be done for enabling the HTTP 2.0 support in spring boot applications which are hosted in Apache tomcat webserver Application Level Changes Spring boot Application Configuration Changes server.http2.enabled=true In the spring boot application's application.properties file, we have to add the above line so that Spring boot can add the support for http2 Tomcat server configuration In the tomcat web server, we should have SSL enabled before doing the below change. To start with, we have to shutdown the tomcat server instance that is running CD to the directory that has tomcat installed and cd to the bin directory and run the below command sh shutdown.sh We have add the UpgradeProtocol  which adds the respective Http2Protocol handler classname to the connector pipeline that enables support for http2.0 <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" /> The above UpgradeProtocol can be added to the connec...

SFTP and File Upload in SFTP using C# and Tamir. SShSharp

The right choice of SFTP Server for Windows OS Follow the following steps, 1. Download the server version from here . The application is here 2. Provide the Username, password and root path, i.e. the ftp destination. 3. The screen shot is given below for reference. 4. Now download the CoreFTP client from this link 5. The client settings will be as in this screen shot: 6. Now the code to upload files via SFTP will be as follows. //ip of the local machine and the username and password along with the file to be uploaded via SFTP. FileUploadUsingSftp("172.24.120.87", "ftpserveruser", "123456", @"D:\", @"Web.config"); private static void FileUploadUsingSftp(string FtpAddress, string FtpUserName, string FtpPassword, string FilePath, string FileName) { Sftp sftp = null; try { // Create instance for Sftp to upload given files using given credentials sf...

Download CSV file using JavaScript fetch API

Downloading a CSV File from an API Using JavaScript Fetch API: A Step-by-Step Guide Introduction: Downloading files from an API is a common task in web development. This article walks you through the process of downloading a CSV file from an API using the Fetch API in JavaScript. We'll cover the basics of making API requests and handling file downloads, complete with a sample code snippet. Prerequisites: Ensure you have a basic understanding of JavaScript and web APIs. No additional libraries are required for this tutorial. Step 1: Creating the HTML Structure: Start by creating a simple HTML structure that includes a button to initiate the file download. <!DOCTYPE html> < html lang = "en" > < head > < meta charset = "UTF-8" > < meta name = "viewport" content = "width=device-width, initial-scale=1.0" > < title > CSV File Download </ title > </ head > < body > ...