What is SaaS?

Software as a Service (SaaS) is everywhere. Put simply, SaaS is way of providing an application that can be used directly over the internet. Typically, there’s no need to install anything on a computer, and all that’s usually required to get started (as a user) is a web browser. A huge number of people rely on SaaS applications everyday without giving it too much thought. Below are some examples of “everyday” SaaS products which are widely used:

  • Messaging and Communication: Gmail, WhatsApp and Telegram
  • Social Media: Facebook, Twitter, Instagram
  • Streaming Music: Spotify or Amazon Music
  • Streaming Video: Netflix or Amazon Prime

Thinking about how users interact with these applications can help forge an understanding of what constitutes Software-as-a-service. Like the other examples listed above, Netflix requires no special software in order for its services to be consumed. To start watching Netflix content, a user only needs a web browser, an internet connection and a means to pay for the service.

Skip to the core components of an enterprise SaaS platform

The growth of SaaS applications for businesses is hugely significant. According to Gartner SaaS made up the largest share of the cloud service market and more than 50% of the overall software market in 2022, and this upward trend is expected to continue.

Some examples of “everyday” workplace SaaS applications include:

  • HR: Workday, CharlieHR or BambooHR
  • Productivity: Google Workspace, Microsoft 365
  • Customer Relationship Management: Salesforce, HubSpot, Microsoft Dynamics 365
  • Project Management: Trello, Monday.com, ProductBoard, Miro

Benefits

The provision and adoption of SaaS solutions can offer a number of tangible advantages to customers and vendors alike. I will explore some of these below.

Key customer benefits

Favourable pricing model

SaaS applications offer access to scalable, enterprise-level solutions without the need for significant upfront costs or investment in physical infrastructure or cloud Iaas cloud resources.

With a pay-as-you-go (PAYG) pricing model, customers only pay for the level (or tier) of service they require.

Ease of access

SaaS platforms can be accessed from anywhere, making them an ideal choice for hybrid and remote workforces.

Simplified Licensing

Customers can avoid licensing compliance issues because SaaS typically keeps licensing simple and removes the need for a painful audit or true-up process, which can be commonplace with on-premise or self-hosted applications.

Lower administrative burden

Users aren’t responsible for software upgrades. New features, fixes and patches are added to the application in a way which is seamless often unnoticeable to users.

Key vendor benefits

Reduced time-to-value

Creating a SaaS product can yield high margins and carry a lower customer onboarding cost. Additionally, the time-to-value is often considerably lower as billing cycles can begin much sooner.

The support burden is often lower because the user doesn’t have to install the application or satisfy complex platform pre-requisites.

Consistent experience

The vendor’s level of “curation” over the customer journey leads to a more uniform experience for all users. This can lead to better support outcomes.

Challenges & considerations

Key customer considerations

Onboarding

Sometimes, adopting a SaaS product can be as simple as creating accounts and entering a credit card number. However, for enterprise-level applications the process is usually more complex. Sometimes a more involved onboarding process is required to tailor the SaaS product to a company’s processes and integrate with other platforms they use. For example it may be necessary to:

  • Respond to a security questionnaire
  • Create test data models
  • Enable integration with other applications which could also be SaaS, but might also be IaaS or self-hosted.

Suitability

In enterprise IT, one size seldom fits all and SaaS solutions aren’t suitable in all cases. In fact, there are some workloads, processes and datasets that some companies will always keep either on-prem, or in an IaaS hosted solution. Reasons for this include:

Investment in another hosting environment

It is feasible that a company may have already made a significant investment on an internal hosting environment and value must be realised. An example here could be a self-managed kubernetes environment that a finance organisation has setup for the running of internal applications.

Flexibility

SaaS platforms abstract complexity away from customers. Whilst this is often regarded as a major advantage, it does mean that the ability for customers to make decisions about the underpinning technology are removed.

Data Sovereignty

Many industry verticals (and nation states) have very strict rules and laws about the type of data that can be stored and processed in certain geographic locations and in multi-tenant environments. Examples of such industry verticals include finance, healthcare and government services.

Depending on the type of application being developed, it therefore may be necessary to provide functionality (at additional cost) which can guarantee that:

  • Data is only hosted inside certain locales
  • Data is stored and processed on resources which are only available for a particular customer

Some customers may be able to host applications and data in a public cloud, as long as it is kept physically separate from the data and applications of other users. This type of policy can also preclude the use of IaaS cloud resources where VMs from different organisations are kept logically separate, but run across a common set of hypervisors.

The “Shadow IT” factor

Some companies have created strict polices regarding SaaS adoption and are concerned that it is almost too easy to adopt. This concern has, in some cases, led to an accusation that SaaS platforms have become the new shadow IT. The concern is that individuals or teams in companies can often easily sign up to new SaaS applications without consulting a central IT function. This can result in the duplication of unnecessary cost and the creation of silos. To address this, applications such as Nefolo have emerged to help companies manage the potential “sprawl” of SaaS applications inside their organisation.

Key vendor considerations

Guiding Principles

As part of the application design process, it’s crucial that organisations establish a set of guiding principles which will underpin the design approach. This can include functional and non-functional requirements, but can also be a simple list of principles which must can be referred back to when decision points are reached. Examples of such principles might be:

  • Ensure that the API is treated as a first-class citizen and is as important as the web front-end
  • Consider the user throughout and make the UI as simple and clean as possible
  • Adopt a zero-trust, security-first approach when designing application components
  • The application will be hosted on a particular platform in line with enterprise strategy and to make use of pre-purchased credits

Security

Security should be baked into every aspect of the software design, whilst hindering the user experience as little as possible. Integration with a third-party SSO (Single Sign On) provider is often considered to be an essential requirement. See sso.tax for more information on why this is considered to be crucial.

Pricing

When creating a new SaaS offering, it’s crucial that the vendor adopts a pricing model which makes sense, and will be acceptable to customers. It is important to consider if existing processes, complex technologies or human intervention will be removed after the SaaS application has been adopted. This can help quantify the value of a product to a business and can support the creation of the right pricing structure.

Scale

Vendors should pay close attention to back-end cloud costs and how they may increase as uptake of the SaaS application increases. At scale, the cost of cloud based compute, memory, bandwidth and storage is significant and it’s essential to plan for the increase in these costs and asses the effect on future profitability. This is can be particularly important when considering large-scale SaaS data platforms.

Design and UX

The user experience and design of the platform is of obvious importance. The application interface should be intuitive, uncluttered and operate well in all web browsers (and where possible, in low-bandwidth environments).

Programmatic (API) Access

In addition to accessing the platform via a web browser, customers may also require API (Application Programming Interface) access to connect to the SaaS platform in a programmatic way to enable integration with their existing applications and processes.

Expected functionality

Depending on the type of SaaS platform, there may be a number of features which users will expect to be in place. Sometimes referred to as “table-stakes”, examples of this type of functionality could include:

  • SSO Integration
  • Straightforward processes for data ingress and egress
  • Backup
  • SSL / TLS access
  • Granular IAM (Identity and Access Management) control incorporating the principle of least privilege

Prototype

Sometimes referred to as an MVP (Minimum Viable Product), a prototype is a feature limited version of the product which can be released early to observe user trends and garner feedback. It should be functional enough for users to be able to perform certain tasks and develop an understanding of the product’s benefits.

The core components of an enterprise SaaS platform

No code / low-code options

Due to the popularity of SaaS, there has been an marked increase in the number of companies which offer “no code / low code” methods of creating a SaaS platform. These solutions often represent a quick and easy way of getting a prototype up and running and testing potential user interest. Low code / No code platforms can also be an effective way of creating longer term solutions for simpler SaaS applications.

However, in the remainder of this document, I will explore some of the technology decisions that will need to be addressed when creating an enterprise SaaS platform.

Front end design and implementation

Content delivery networks

If the application will be offered to a global user base, a Content Delivery Network (CDN) can drastically speed up page load times for users by caching static web components in locations which are geographically distributed and physically closer to end users. Examples include Cloudflare and AWS CloudFront.

Application load balancer

Making the application accessible behind an Application (Layer 7) Load Balancer is a common design pattern. As well as enhancing an application’s security posture by moving the application and web tiers further away from the ’edge’ of the internet, they provide a number of other benefits:

  • Intelligent routing of traffic to the most appropriate application layer target
  • Health checks to ensure that traffic is only routed to application layer targets which are in a healthy state and will be able to handle the request
  • SSL termination can be handled by application load balancers, meaning that the overhead of providing a secure endpoint can be offloaded from the application tier. This means that the decryption workload no longer is the responsibility of the application layer targets (although traffic can be re-encrypted behind the load balancer, if required)
  • Analytics can be provided by application load balancers which can give insight into the application’s health and utlisation.
  • Application Load Balancers (especially those offered by the major cloud providers) integrate well with other cloud components and are relatively straightforward to configure

Web interface language

A web interface language will need to be selected to create the front end web page. The selection of the right framework for the job is crucial, this is where users will interact with the SaaS application and form hard-and-fast opinions about usability. Here are a few examples of web interface languages which may be considered:

React

React is a JavaScript library for building user interfaces. It provides a simple and declarative syntax for creating reusable UI components, making it easy to build complex web applications. React is also highly performant and can handle large amounts of data with ease.

Angular

Angular is a framework for building web applications. It provides a comprehensive set of tools and features for building complex, scalable, and maintainable applications. Angular also supports two-way data binding, which makes it easy to keep the data model and view in sync.

Vue.js

Vue.js is a progressive JavaScript framework for building user interfaces. It provides a simple and intuitive API for building reusable UI components, making it easy to create complex web applications. Vue.js also has a small footprint and can be easily integrated into existing projects.

Ember.js

Ember.js is a JavaScript framework for building ambitious web applications. It provides a set of conventions and best practices for building scalable and maintainable applications, making it easy to collaborate with other developers. Ember.js also has a strong focus on performance, and can handle large amounts of data with ease.

Caching layer

Incorporating a caching layer (such as Redis or Memcached) into the application design can offer a number of key benefits, which include:

Improved performance

Caching frequently accessed data in memory can significantly improve application performance by reducing the number of requests to the underlying database or other data storage systems.

Reduced database load

By caching data in memory, the load on the underlying database or other data storage systems can be reduced, which can lead to improved overall system performance and scalability.

Scalability

Caching technologies such as Memcached and Redis can be used in a distributed environment, allowing for horizontal scaling by adding more cache servers as needed.

Flexibility

Both Memcached and Redis are highly configurable and can be used for a wide range of caching scenarios, from simple key-value caching to more complex data structures.

High availability

Caching technologies typically can be configured for high availability, using techniques such as replication and clustering. This can help ensure that cached data is always available even in the event of server failures.

Compute framework considerations

When considering the design of the application tier, there are a number of approaches which may be adopted, including:

Microservice architectures

A microservice based architecture is an approach to software development where a complex application is broken down into a set of smaller, independent services that communicate with each other through APIs. Each service is designed to perform a specific function and can be developed, deployed, and scaled independently from the other services.

In a microservices architecture, each service is built around a specific business capability and is responsible for its own data storage, processing, and communication with other services. This allows for greater agility and flexibility in the development process, as each service can be developed and deployed independently, without affecting the overall system.

If a container based microservice architecture is selected, there are a number of options for running such deployments in public clouds. For example, Amazon Web Services (AWS) provides a number of options for this, including:

  • Manually creating a kubernetes environment on EC2.
  • A managed Kubernetes Service such as GKE (on Google Cloud) or EKS (Amazon Web Services)
Monolithic architectures

A monolithic application architecture is a more traditional software design approach where all components of an application are tightly integrated and deployed as a single unit. In this architecture, the application is built as a single, self-contained piece of software, with all the functionality and features bundled together into a single codebase.

With this approach, the different modules and components of the application are often tightly coupled and run together on a single platform or suite of servers. This means that changes made to one part of the application can have a ripple effect throughout the entire system, which can make it difficult to scale and maintain. Because of this, monolithic architectures are usually dismissed in favour of a loosely coupled, microservices based topology wherever possible.

Serverless architectures

Serverless platforms (such as AWS Lambda) are cloud based compute layer environments which require almost no prior configuration when compared to more traditional runtime environments.

Serverless platforms (such as AWS Lambda) are cloud based compute environments which execute code and provide responses without the need to provision any infrastructure. They can be extremely efficient and are best suited to stateless applications where a function needs to be performed and then forgotten.

Database backend

An appropriate database backend will need to be selected. The type of application, and resulting type of data should be taken into consideration when selecting a DB platform. More traditional, transaction (OLTP) oriented data may be well suited to Postgres, MariaDB or MySQL. In the event that a workload also requires an analytical database engine, an OLAP option such as Amazon Redshift can also be incorporated into the application’s design.

Conclusion

Software as a service (SaaS) is a model that is rapidly gaining popularity due to many perceived benefits, which have been explored in this article. SaaS offers businesses a cost-effective and efficient way of accessing applications and services, without the need for expensive infrastructure and maintenance costs. With the flexibility and scalability of SaaS, businesses can focus on their core competencies and leave the technical details to the software vendors. As SaaS continues to evolve, it is likely that we will see even more innovative solutions emerge, making it an exciting time for businesses looking to optimise their operations and stay competitive in the digital age.