Comparison of the three cloud computing models IaaS/PaaS/SaaS/BaaS: SaaS architecture design analysis

The emergence of SaaS - Software as a Service (Software as a Service) has changed the traditional use of software into the use of services.

The biggest difference between SaaS and traditional software is that the former pays to rent the service on an annual basis, while the latter buys it out once. This seems to be just a difference in "quotation method". In fact, this is a fundamental change, which will have a fundamental impact on the service model, sales model, company value and other dimensions.

The implementation failure rate of traditional software is high or the land is not comfortable to use after it goes online, which is equivalent to a sunk cost. From the perspective of a software company, sales performance tasks have already been achieved when signing a contract. Therefore, sales and even pre-sales support consultants often aim to "win the order" and will over-promise and poach the implementation department when encountering competitive incentives. There are no pitfalls at all. In subsequent years, the maintenance fee is only 10~15%, and the benefits are not much. If it is good, just collect it. If it is not, it is not worth the effort and heavy investment. The annual payment of SaaS has completely changed this situation. For software companies, sales difficulty and sales cycles are shortened. Sales of a SaaS product can achieve sales revenue of millions a year. For SaaS companies, the renewal cost starting from the second year is very low. The customer success department takes 20 to 40% of the fee, and the remaining 60 to 80% is gross profit.

Therefore, among the three modes of cloud computing, IaaS/PaaS/SaaS, SaaS faces the most users. Just like the C-side, any update or vulnerability repair operation of the application is implemented and processed by the software provider, because the tenant is through Software services are obtained through the Internet, so tenants do not need to download any upgrade packages or repair patches. This is a service method that allows them to obtain the latest software products right out of the box.

What is SaaS

From a macro perspective, SaaS is a software application delivery method in which a software provider centrally hosts one or more software applications and uses these software applications to tenants through the Internet. From a classification perspective, SaaS (Software as a Service) is also an important part of cloud computing.

There are three layers of cloud computing, infrastructure is at the bottom, platform is in the middle, and software is at the top. They are respectively

  • Infrastructure-as-a-Service (IaaS-Infrastructure as a Service) : IaaS companies will provide off-site servers, storage and network hardware that you can rent. Saving maintenance costs and office space, companies can leverage the hardware to run their applications at any time.

  • Platform-as-a-Service (PaaS-Platform as a Service) : PaaS companies provide various solutions for developing and distributing applications online, such as virtual servers and operating systems. This saves you money on hardware and makes collaboration between dispersed studios easier. Web application management, application design, application virtual hosting, storage, security and application development collaboration tools, etc.

    Some of the big PaaS providers are Google App Engine, Microsoft Azure, Force.com, Heroku, and Engine Yard. Recently emerging companies include AppFog, Mendix and Standing Cloud.

  • BaaS (Backend as a Service) , the company provides mobile application developers with edge services that integrate cloud backends.

    The back-end service is abstracted, and it uniformly provides developers with difficult-to-implement functions such as file storage, data storage, and push services to help developers quickly develop mobile applications. BaaS providers such as AVOS Cloud.

  • Software-as-a-Service (SaaS-Software as a Service) : Mostly accessed through a web browser. Any application on a remote server can be run over the network, which is SaaS.

    Some SaaS applications used for business include Citrix's Go To Meeting, Cisco's WebEx, Salesforce's CRM, ADP, Workday, and SuccessFactors.

IaaS has become Texas Hold'em among giants; the PaaS market has entered a white-hot stage, with warlords taking over the world; and the SaaS market is a stage where a hundred schools of thought are contending, but this stage will not last long.

Advantages of SaaS

  • The way to obtain software services is simple enough. SaaS may be one of the easiest ways to use software so far. Compared with the traditional way of using software, tenants save a series of complicated processes such as R&D, deployment, operation and maintenance, and gain The time and cost of software are greatly reduced.

    • SaaS-based products provide software services to tenants through the Internet. With the advancement of Web technology (such as jQuery, Node.js), the interactive experience of Web pages has been greatly improved, making the interaction smoother and more humane. The human-computer interaction effect is almost the same as that of traditional desktop applications.

    • Compared with traditional software, SaaS software has better compatibility. It does not have the multi-version maintenance problems and operating system compatibility problems of traditional software. In SaaS software, tenant users can hardly feel that the software has changed during the use of the software. When a tenant user logs into the system, they already have the latest version of the software.

  • SaaS can provide cross-regional and cross-platform software services. At the same time, software service providers can perform unified version management of software, which will bring the following benefits (including but not limited to):

    • Shorten product launch time: multi-terminal adaptation, unified version, unified update

    • Reduce maintenance costs: No need to maintain multiple versions of software instances at the same time, reducing operation and maintenance pressure

    • Easy to upgrade: Since the version is effectively controlled, one upgrade can cover all tenants

  • There is no need to worry about data security when using SaaS products, it is as safe as depositing money in a bank. Compared with software systems deployed within an enterprise, SaaS products have higher security assurance capabilities because software providers have more technical, human and financial resources for software security protection.

SaaS can be any software SaaS. Here are some general classifications for your reference:

  • Office online office SaaS products

  • Email and instant messaging SaaS products

  • Social media SaaS products

  • Third-party API SaaS products

  • Security and access control SaaS products

  • Machine learning SaaS products

  • Artificial Intelligence SaaS Products

  • Geolocation service SaaS products

  • Data streaming and data retrieval SaaS products

The enterprise SaaS market has seen a number of players emerge in each segment in recent years. From a technical perspective, different fields and different SaaS products must have the same architectural core, the most critical of which is support for multi-tenancy (Multi-Tenancy). For most enterprises, the introduction of SaaS products is essentially the leasing of Internet services. Therefore, multi-tenancy is bound to be one of the natural attributes of SaaS and one of the important differences between it and traditional Internet application architecture design.

Multi-tenant design for SaaS

The classic distributed service architecture naturally solves the three high problems of Internet applications (high concurrency, high performance, and high availability), which are also problems that enterprises will face in the middle and later stages of SaaS development.

From the perspective of resource sharing, from sharing nothing to sharing everything, multi-tenancy can be supported at any point on the scale. But as we said before, the primary goal of SaaS architecture is single instance. Only single instance can reduce the cost as much as possible and the product will have scale effect . Therefore, the so-called sharing and isolation will focus on one point under the classic architecture, that is, how to isolate different tenants at the resource level .

The technical nature of SaaS systems can also be considered as the integration of distributed storage and distributed computing.

In the implementation of multi-tenancy, what is often more critical is the processing of storage resources . Computing resources are generally only considered when necessary. I think this is mainly related to the "statefulness" of storage.

Isolating storage resources can be summed up in one word: namespace. Taking the database as an example, we only need to write down the identification of the corresponding tenant on each tenant's record. Without considering the sharding of databases and tables, we will logically store the data of all tenants in the same Schema.

No matter what kind of storage, the ideas are the same, and the processing is relatively simple and crude. It is emphasized that this agreement should be unified in the underlying framework at the engineering level . For example, AOP technology can be used to cut out multi-tenant related logic for unified processing.

SaaS architecture includes layers:

Presentation layer of SaaS architecture

The presentation layer client of the SaaS architecture may be a browser or a local client. If it is a browser, it includes Web interface technology, interactive technology, etc., such as: HTMl5 technology, CSS3 technology, Ajax technology, etc. If it is a software client, it includes remote desktop technology, software interaction technology, etc.
Different job working environments have different applicable application technologies:

  • For front-line sites (such as production and manufacturing, warehousing, logistics and distribution), POS or WeChat mini programs are generally used to scan the QR code. After scanning the QR code, the key business points can be recorded in a few simple operations.

  • For first-line retail store cashiers, most white-brand tablet apps are now available

  • For field staff who run back and forth between distribution, channels, procurement, and supervision, they basically use mobile apps to handle business.

  • For the operations personnel, personnel, legal and financial affairs who sit at the back end, they basically use desktop computer web applications to handle business.

Scheduling layer of SaaS architecture

The scheduling layer of the SaaS architecture is responsible for identifying each user request and performing AAA authentication on each request, and then performs reasonable scheduling based on the load of the back-end business processing server and its business characteristics . Through this architecture, the SaaS platform can be expanded horizontally. In addition, in order to meet the horizontal expansion requirements of the platform in terms of storage and caching, this layer must also have good scalability.

Because the clients have different positions, different quality and ability levels, different business focus, and different working environments, the functions and user experiences are different, so the business logic of the back-end service layer is also different.

Because this layer involves client access, it requires API gateway middleware. Because it is relatively light (because there is also a common business logic processing layer), microservice middleware (such as Spring Cloud) is used. These different microservices are packaged. In each Docker, in order to quickly and flexibly start expansion. There is an API gateway middleware in the front that can split traffic, limit traffic, and route traffic. In this way, how to expand the microservice container later is transparent to the front end.

API gateway middleware belongs to this layer, but requests from clients first pass through it and then routed to the business logic microservices.

However, there is always some business logic that must be processed by these four end applications, so there is also a layer called the public business logic processing layer. These public business logic processing layers are also divided into services according to functional responsibilities, placed in Docker containers, and managed by Swarm or Kubernetes clusters.

Business layer of SaaS architecture

The business layer of the SaaS architecture is responsible for receiving requests forwarded by the scheduling layer and executing the real business logic . Generally, no matter how complex the business logic is, it can be reproduced on a server. Therefore, the business layer is actually composed of a row of peer servers, each server executing the same business logic.

Data layer of SaaS architecture

The data layer of the SaaS architecture processes and stores business data that is highly relational and has high transactional requirements through database clusters . This type of data is often difficult to solve using NoSQL, so it currently has to be solved with the help of traditional database cluster technology, mainly Develop data splitting plans based on business characteristics. At the same time, distributed databases are used to store massive amounts of data that are not highly relevant.

  • Some data needs to be stored in memory for fast query , distributed Redis cluster .

  • Some data requires persistence in relational data , and you can use MySQL relational database .

    • For distributed storage, a MyCAT sub-database and table distributed middleware can be placed before MySQL .

    • In order to separate reading and writing to improve performance, we can put another layer of MySQLProxy before MyCAT for primary and backup reading and writing separation .

  • Some data are in the form of files and can be stored using distributed file systems and object storage systems (such as pictures, audio and video). We can also use CDN technology to accelerate the distribution of these static files .

  • Some data are special data structures. In order to speed up the data access of these special structures, time series databases, graph databases, document databases, etc. can be used . Such as time series data (IM messages generally have such characteristics), graph data (social networks generally have such characteristics), such as large text data (reviews and comments generally have such characteristics),

For report statistics, historical queries, comprehensive queries, and comparative analysis of business indicators, we must put these tasks into the big data suite to handle them, and separate them from the truly fast business processing system.

Not only must computing resources be separated, but storage resources must also be separated. Because for big data, the storage capacity must be large (but the storage access performance does not necessarily need to be high), the memory must be large (a large amount of data must be retrieved for calculation), and the CPU performance must be high (intensive calculations must be performed). Therefore, for functions such as statistics, query, and analysis, server cloud hosts and cloud storage must be separated from application business processing.

After separation, data needs to be extracted from the application business processing system.

Therefore, for the data extraction layer: we have a series of ETL tools, data crawler engines for crawling internal and external static data, and Flume, Logstash, and Splunk to collect IT resource logs and application system operation logs.

The extracted data can be placed in a big data warehouse, and we can use open source middleware such as Hadoop HDFS, Hbase, Hive, etc.

When computing and processing is required, we can use Spark and Storm under the YARN or MapRedurce computing scheduling framework for memory computing and streaming computing.

We can use presto to query the processed data, and we can also use ElasticSearch to search.

Finally, we use some visualization tools to output the results in chart form.

After building according to this technical architecture, each customer needs to deploy it independently on the public cloud, then use DevOps tools to start several new service layer Dockers. If the public business logic model also needs to change, then start several new ones. Public business logic Docker. After all, we have a distributed user login authentication gateway and API gateway, so whether it is a dedicated public cloud deployment or a private cloud deployment, there is no problem.

For the master data management module, since there is also a UI layer, a logic layer, and a data layer, the code, data and middleware of each layer of the master data can be packaged into a deployment unit and automatically deployed using a set of specialized DevOps tools and scripts. , configuration changes, upgrades.

For the data layer, we have KV distributed database, distributed relational database, active and standby read-write separation middleware, sub-database and sub-table middleware, CDN distribution, time series database/document database/graph database, we really need to route in the API gateway At the same level, DevOps tools and scripts and centralized configuration middleware Puppet are used to automate deployment expansion, configuration changes, and upgrades. In this way, different enterprises point to different distributed database engine addresses and distributed database storage volumes. This makes it convenient to do both dedicated public cloud deployment and private cloud deployment.

The inherent flaws of SaaS products

software control

Unlike software deployed on-premises by an enterprise, since SaaS software is hosted on the service provider's web server, tenants cannot control all software applications. SaaS-based software gains less control than software deployed by the enterprise itself. , tenants have extremely limited customization control.

Performance bottleneck

Sharing applications will inevitably bring about a decrease in server performance, such as computing speed, network resources, I/O reading and writing, etc., which will all face severe challenges. In terms of performance, the "exclusive mode" applications deployed within the enterprise are slightly better than the "shared mode" of SaaS software.

Security Question

When tenants choose a SaaS product, product security will be the first consideration. Such as data isolation, encryption of sensitive data, data access control, personal privacy and other issues. After the GDPR (General Data Protection Regulation) appeared on May 25, 2018, more and more people began to pay attention to data security issues. How to eliminate this concern of tenants to the greatest extent requires service providers to strengthen their own credibility to win the trust of tenants.

The most important thing is: the complexity of SaaS is beyond the capabilities of ordinary teams. The microscopic gap between whether PaaS can be done well is mainly reflected in the capabilities of software designers and software developers. There is a joke: In the United States, software developers are called engineers, while in China, developers are called coders. Many excellent software in the United States are designed and developed by uncles, while Chinese programmers face the risk of unemployment after the age of 35. China is very short of high-end software talents. The reason for the lack is the lack of continuous accumulation. Everyone is doing some low-level repetitive work, which is no essentially different from workers on the assembly line.

Reference article:

A guide to essential skills for architects: SaaS (Software as a Service) architecture design  A guide to essential skills for architects: SaaS (Software as a Service) architecture design - Zhihu

Discussing the multi-tenant design of enterprise-level SaaS  Discussing the multi-tenant design of enterprise-level SaaS - Zhihu

Why doesn’t China SaaS make money? Why doesn’t China SaaS make money? -huxiu.com

https://www.zhihu.com/question/21641778/answer/308674603

The essence of SaaS and the pitfalls of SaaS companies https://zhuanlan.zhihu.com/p/67169367

Reprint the article " Comparison of three modes of cloud computing IaaS/PaaS/SaaS/BaaS: SaaS architecture design analysis ",
please indicate the source: Comparison of three modes of cloud computing IaaS/PaaS/SaaS/BaaS: SaaS architecture design analysis - Front-end architecture design - Zhou Junjun's personal website

Guess you like

Origin blog.csdn.net/u012244479/article/details/130046912