1, the introduction

Since the birth of computers, along with the evolution of computer applications. With a brief history review, it’s clear how much applications have changed. In the mid-1970s, computing power was greatly improved by the explosion of personal computers, which could run very complex applications, and by the rise of programmers.

In the 1980s, with the rise of Bulletin Board System (BBS for short), it could provide basic online services for PC users, such as online chat, E-mail, message sending and file downloading. Due to the limitation of the transmission speed of computer network in that era, the response speed of online service was slow, and poor interactive experience was the biggest common problem.

In the mid and late 1990s, with the emergence of the World Wide Web, the computing power of computers began to enter the rapid improvement stage. In addition, with the continuous improvement of network infrastructure, computer network technology also developed, which enabled Web sites to provide diversified and more complex online services. Until today, We see online service applications developed over the Internet (or cloud).

During this period of rapid growth in computer technology, what changes have taken place in computer software? From history, we can see that the application itself has not changed substantially (program = data structure + algorithm), but the way software is supplied and supplied has changed. Now, application consumers no longer need to download and install specific applications on their PCS to get the computing services provided by the software. With the support of cloud computing technology, consumers (enterprises or individuals) only need to use Web tools (browsers) to access and log in to the software provider’s Web system, through simple configuration, they can get their own application services. This is a service where software is available over the network, even as SaaS (Software as a Service).

In this article, we will focus on SaaS architecture design and focus on WHAT (WHAT?) , WHY? WHERE is it? And HOW? These four questions are expounded on the following points:

  • 1. What is SaaS software?
  • 2. Why do you need a SaaS software architecture?
  • 3. What are the main features and advantages of SaaS software?
  • 4. In what areas is SaaS suitable for implementation?
  • 5. What are the congenital defects of SaaS software?
  • 6. What are the core components of SaaS software?
  • 7. What are the considerations when implementing SaaS architecture design?

2. What is SaaS software?

Before you decide to implement a SaaS platform architecture, it is important that you understand what SaaS software is. From a macro perspective, SaaS is a form of software application delivery in which a software provider centrally hosts one or more software applications and makes them available to tenants over the Internet. SaaS (Software as a Service) is also an important part of cloud computing by category. At present, mainstream cloud service providers in China, such as Ali Cloud, Baidu Cloud, Tencent Cloud, etc., provide cloud services with different business requirements for the majority of users. They can be roughly divided into the following categories:

  • 1. Infrastructure as a service: such as CPU, Network, Disk, and Memory
  • 2. Platform as a service: such as Alibaba cloud server and cloud database
  • 3. Software as a Service: Ari SMS, Ari Email, etc
  • 4. Data as a service: such as Ali Cloud Object storage, Qiniu Cloud storage, etc
  • 5. Other software services: machine learning, artificial intelligence, etc

Any update or vulnerability repair operation of SaaS application is implemented and handled by the software provider. Since the tenant obtains software services through the Internet, the tenant does not need to download any upgrade package or repair patch, which is a service way to get the latest software products out of the box.

With this introduction to what SaaS is, let’s look at some of the reasons why we choose SaaS as a software architecture to design products.

3、为什么选择SaaS?

We will present several reasons for choosing SaaS from different perspectives. Through the analysis of these factors, you need to provide a certain reference for their software SaaS.

3.1 consumer perspective

The way to access software services is simple enough. SaaS is perhaps one of the easiest ways to use software to date, allowing tenants to access a large software service in hours or even minutes at the click of a mouse and keyboard. Compared with the traditional way of using software, tenants can save a series of complicated processes such as research and development, deployment, operation and maintenance, and the time and cost of obtaining software are greatly reduced.

3.2. Business Perspective

SaaS can be used as a cross – regional, cross-platform software service. At the same time, software service providers can unify software version management, which will bring the following benefits (including but not limited to) :

  • 1. Shorten product online time: multi-terminal adaptation, unified version and unified update
  • 2. Reduced maintenance cost: it is not necessary to maintain multiple versions of software instances at the same time, reducing the operation and maintenance pressure
  • 3. Easy upgrade: Because the version is effectively controlled, all tenants can be covered by one upgrade

4. Features and advantages of SaaS

Comparing SaaS applications to traditional desktop applications, there are several advantages to deploying a SaaS product.

4.1, simple

SaaS products provide software services to tenants through the Internet. With the progress of Web technologies (such as jQuery and Node.js), the interactive experience of Web pages is greatly improved, and the interaction is smoother and more user-friendly. The human-computer interaction is not much different from traditional desktop applications.

4.2. Economic benefits

SaaS products can provide flexible payment plans for tenants, such as daily, monthly, annual, number of users, or usage, which will give tenants a more economical financial budget to use the software.

4.3, security,

You don’t have to worry about data security with SaaS products. It’s as safe as putting your money in the bank. Compared to software systems deployed within an enterprise, SaaS products have higher security capabilities because the software provider has more technical, human, and financial resources to protect software security.

4.4 Compatibility

Compared with traditional software, SaaS software is more compatible. It does not have the problems of maintaining multiple versions of traditional software and operating system compatibility. In SaaS software, tenant users can use the software with little or no sense of change. When tenant users log on to the system, they have obtained the latest version of the software.

5. Scope of application of SaaS software

SaaS products have a wide range of adaptability, especially when used in conjunction with other cloud products such as IaaS(Infrastructure as a Service) and PaaS(Platform as a Service), such as Cloud computing technologies such as Aliyun that allow you to configure hosted Web sites, database servers, etc. You just need to open a browser, log in to the Ali Cloud console, and operate the corresponding control panel to get related software services.

In theory, SaaS can be any software SaaS, the following are some general categories for your reference:

  • 1. Office online Office SaaS products
  • Email and instant messaging SaaS products
  • 3. Social media SaaS products
  • 4. Third-party API SaaS products
  • 5. Security and access control SaaS products
  • 6. Machine learning SaaS products
  • 7. Artificial intelligence SaaS products
  • 8. Location service SaaS products
  • 9. Data streaming and data retrieval SaaS products

6. The inherent flaws of SaaS products

As you can see from the figure above, there are several inherent flaws in the SaaS product, which we will describe next.

6.1 Software Control

Unlike software deployed in the enterprise, because SaaS software is hosted on the service provider’s Web server, tenants do not have control over all software applications. SaaS software gains less control than software deployed by the enterprise, and tenants have extremely limited customized control.

6.2 small consumer base

Since SaaS software is about sharing a set of applications to one or more tenants for common use, this sharing mode of consumption has not been accepted by most consumers. At the same time, subject to the impact of the market environment, most of the software has not yet SaaS.

6.3 performance Bottlenecks

Sharing applications will inevitably lead to server performance degradation, such as computing speed, network resources, I/O read and write will face severe tests. In terms of performance, enterprise-deployed “exclusive mode” applications have a slight advantage over SaaS software’s “shared mode.”

6.4. Security issues

When tenants choose a SaaS product, the security of the product will be a top consideration. Such as data isolation, sensitive data encryption, data access control, personal privacy and other issues. In May 25, 2018, after the GDPR(General Data Protection Regulation) appeared, more and more people began to pay attention to Data security issues. In order to dispel this concern of tenants to the greatest extent, service providers need to enhance their credibility to win the trust of tenants.

7. Core components of SaaS products

Different types of SaaS products may have different functions and businesses due to different user visions, but any SaaS product has the following core components in common.

7.1. Security Components

In SaaS products, system security is always the first thing to consider. How to ensure the security of tenants’ data is your first priority. This is like the bank’s primary need to keep depositors’ money safe. Security components provide unified security protection for SaaS products to ensure system data security.

7.2. Data Isolation Components

The security component solves the problem of the security and reliability of user data, but it also needs to solve the privacy problem. The data between enterprises must be invisible to each other, that is, isolated from each other. How to identify, differentiate, and isolate individual tenant data in a SaaS product is the second issue you need to consider when implementing SaaS software architecture design.

7.3. Configurable Components

Although SaaS products are designed with most common functions in mind and out of the box for tenants, there are still a large number of tenants who need to customize configuration items such as UI layout, theme, Logo, and other information to serve their own business requirements. Since it is impossible to abstract a fully generic application, in a SaaS product you need to provide a component that can be used for custom configuration.

7.4 extensible components

With the growth of SaaS products and the number of tenants, the original server configuration will no longer be able to meet the new requirements, and the system performance will be inversely proportional to the business volume and the number of users. At this point, the SaaS product should have the ability to scale horizontally. For example, the overall service performance of SaaS offerings can be scaled horizontally by deploying multiple software running examples on multiple servers and providing the same software services through network load balancing and container technology. To achieve scalability, you need to separate the code in the SaaS presentation layer from the code in the business logic part, and deploy them independently. For example, using VUE+ microservices to build distributed SaaS applications that are separate from the front end and scale horizontally. There is another way of scaling, vertical scaling, which is both simple and crude: by adding a single server configuration, such as buying a better PERFORMANCE CUP, more memory, more bandwidth, etc., the server can handle more user requests. However, this approach has no qualitative change in improving product performance, and the cost is very high.

7.5. Upgrade products at 0 downtime

In the past, to upgrade software or fix a Bug, you needed to take the running program offline for a period of time, wait for the upgrade or fix to complete, and then restart the application. SaaS products require 24/7 service availability. This requires you to think about how to complete the upgrade and repair of the application without restarting the original application.

7.6. Multi-tenant Components

Multi-tenant components are one of the most important indicators of whether an application is SaaS capable or not. Multi-tenant components are one of the things that you have to address when you have a SaaS product that needs to hold data from multiple tenants at the same time, and when you have to make sure that the data between the tenants doesn’t interfere with each other, and that users within the tenant can index the right data as expected. The rest of the components will build their business around this component.

conclusion

This article takes the history of software applications as an entry point and focuses on WHAT(WHAT?) , WHY? , WHERE(in what areas?) And HOW? These four questions provide an introduction to SaaS. This paper elaborates the problems that need to be paid attention to in software design based on SaaS architecture, and analyzes the features, points and shortcomings of SaaS products. Finally, the core components of a SaaS architecture based software product and their respective roles are described. Hopefully this will give you a comprehensive understanding of SaaS software architecture and provide you with some valuable reference information before you start implementing SaaS software architecture design.