“1小时深度解读SaaS应用系统设计”技术分享

简介: 随着云原生技术的不断完善和发展,云原生技术及架构在架构演进、技术选型、构建现代化应用等工作中产生了深刻的影响。在企业上云的趋势下,越来越多的企业和开发者开始把业务与技术向云原生演进。在技术栈选型上,企业也趋向于容器化、微服务化以及基于云化应用中间件、数据库构建应用。

1.SaaS技术栈选型,如何取最优解

SaaS技术栈作为SaaS应用的核心,可决定应用程序的可扩展性、功能性和可行性。 因此,如何根据企业需求做出关于最佳技术堆栈的决策,是首要思考的问题。根据SaaS技术栈选择原则,企业在选择的过程中,需要注意以下四点:

  • 按需引入

按照SaaS技术架构建设与演进需求节奏,引入技术栈。例如企业前期业务量不是很大,基础性运维能力就能支撑业务。随着业务规模的扩大,租户数量增加,底层资源消耗也逐渐增加,企业就需要建立运维监控系统数据分析平台支持海量的日志采集、存储、分析及查询等需求。

  • 可驾驭

尽可能选择团队熟悉、成熟技术栈,企业在使用CNCF的开源软件过程中,若出现问题,借助有强有力社区支持,就能够得到及时反馈,帮助自己解决问题。

  • 适当超前

技术栈容量选择能够满足未来1~2年业务需求,在选择的过程中要考量架构的可扩展性,方便后期的扩容操作。

  • 性价比

技术栈考虑实施的性价比,如部署、维护成本等。

image.png

以 SaaS-Housekeeper项目为例,SaaS-Housekeeper项目是华为云开发者团队基于SaaS项目技术支持实践。从上图可以看出,在开发过程中,华为云选择基于JAVA开发的Spring Boot和Spring-Cloud技术栈进行微服务应用开发,引入微服务引擎CSE解决配置热更新的场景问题,应用部署方面选择具有弹性伸缩能力的K8S集群。在数据库方面,选择的是RDS服务解决后期扩容问题,以及Redis解决分布式缓存问题。在基础运维方面,通过LTS解决日志采集、查询分析服务。

2.CSE+CCE:简化企业微服务开发,加快应用容器化部署

随着云原生技术的不断完善和发展,云原生技术及架构在架构演进、技术选型、构建现代化应用等工作中产生了深刻的影响。在企业上云的趋势下,越来越多的企业和开发者开始把业务与技术向云原生演进。在技术栈选型上,企业也趋向于容器化、微服务化以及基于云化应用中间件、数据库构建应用。
2.1微服务开发
云原生+AI+大数据时代,微服务化和容器化是应用现代化的基本特点。开源Spring Cloud为开发人员构建微服务架构提供了完整的解决方案,成为很多开发者的选择。但基于Spring Cloud组件构建微服务平台,需要集成验证Hystrix、Ribbon、Zipkin、Prometheus等大量三方组件,门槛高,学习周期长。
image.png
用户在微服务开发阶段与华为云CSE微服务引擎对接,只需导入华为云微服务SDK即可享受何种服务治理和管控能力,相比较开源Spring Cloud既简单又方便。基于Spring Cloud微服务开发的项目,对接CSE只需在Pom里把Spring Cloud换成Spring Cloud华为的组件。

image.png

2.2 容器化部署
华为云容器引擎CCE是基于业界主流的Docker和Kubernetes开源技术构建的容器服务,提供众多契合企业大规模容器集群场景的功能。而且,云容器引擎深度整合华为云高性能的计算(ECS/BMS)、网络(VPC/EIP/ELB)、存储(EVS/OBS/SFS)等服务,并支持GPU、NPU、ARM、FPGA等异构计算架构,支持多可用区(Available Zone,简称AZ)、多区域(Region)容灾等技术构建高可用Kubernetes集群。

作为全球首批通过CNCF基金会Kubernetes一致性认证的容器服务,CCE在系统可靠性、高性能、开源社区兼容性等多个方面具有独特的优势,满足企业在构建容器云方面的各种需求。CCE具有如下价值:

  • 提高资源利用率(成本优化)

(1)榨干资源价值(虚机规格固定,容器规格灵活)
(2)秒级弹性伸缩(虚机分钟级弹性,容器秒级弹性)
(3)根据部分企业案例,在总体业务增长 20% 的情况下,综合节省成本可达到30%

  • 提高运维效率(节省人力)

(1)自动化(CI/CD,自动弹性伸缩)
(2)上线/升级时间,从小时级变成分钟级

3.在多租户模式下,如何选择设计路由策略

实现多租户的设计原理,实际上是需要做到应用层和数据层的共享和隔离,然后通过一种路由机制,可以根据不同的策略,将用户的请求路由到指定的计算集群即可。
如果企业已经规划好了SaaS应用多租和开发内容,那是时候考虑SaaS应用部署环境的问题。

在SaaS应用场景,线下IDC部署显然不是一个很好的选择,相较于基于云上虚拟机部署模式,采用Kubernetes集群模式部署SaaS应用应该是首选。云容器引擎CCE提供高度可扩展的、高性能的企业级Kubernetes集群,充分利用云上弹性能力、丰富存储类型,支持实现SaaS业务降成本、动态扩容、高可靠性等需求。云容器引擎CCE可以为云上构建SaaS应用提供不同多租隔离模式:
image.png
基于CCE Pod模式,租户间通过Pod进行隔离,每个Pod包含多个Container。

优点:简单,成本低,共享运行态资源,适用应用无法拆分的单体应用
缺点:隔离性弱、安全性弱、服务出现不可用状态会影响所有租户
基于CCE NameSpace模式,不同租户的业务微服务部署在同一个CCE集群中的不同的NameSpace中,支持资源的逻辑隔离;不同租户的路由、升级等策略部署到同一个配置中心的不同的配置组中,支持策略逻辑隔离;

优点:租户逻辑隔离,成本适中,隔离性适中,安全性适中
缺点:多租资源命名、管理等较复杂
基于网络环境模式,不同租户的业务微服务在不同的环境中

优点:租户基础设施物理隔离,成本高、隔离性高、安全性高
缺点:多集群,多配置中心,管理最复杂
在共享资源池模式下,Kubernetes集群为SaaS应用开发者提供的namespace隔离方式能够带来很大的帮助。华为云容器引擎CCE在namespace粒度提供了网络隔离、资源配额限制以及RBAC权限管理策略等租户管控策略。

网络隔离方面,CCE基于Kubernetes的网络策略功能进行了加强,通过配置网络策略,允许在同个集群内实现网络的隔离,也就是可以在某些实例(Pod)之间架起防火墙。在华为云上提供了vpc网络和容器隧道网络,仅“容器隧道网络”模式的集群支持网络隔离。

资源配额限制方面,通过设置命名空间级别的资源配额,实现多租户在共享集群资源的情况下限制团队、租户可以使用的资源总量,包括限制命名空间下创建某一类型对象的数量以及对象消耗计算资源(CPU、内存)的总量。

在业务比较平稳的SaaS系统中,可以用于租户业务资源的隔离,CCE集群支持CPU/内存配额限制、网络隔离、QoS限速等策略。以QoS限速策略为例,由于不同租户资源可能部署在同一节点上,导致不同业务容器之间存在带宽抢占的情况,容易造成业务抖动。为了解决这个问题,您可以通过对Pod间互访进行QoS限速来解决这个问题当然,也可以通过亲和性策略,将不同租户的pod调度到不同节点上,避免网络资源抢占。

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
6天前
|
消息中间件 缓存 运维
云his系统源码 SaaS应用 功能易扩 统一对外接口管理
运营运维 系统运维、综合监管、系统运营
54 1
|
10月前
|
存储 监控 Oracle
LIS实验室信息系统源码,SaaS架构的Client/Server应用
实验室信息系统(Laboratory Information System,缩写LIS)是一类用来处理实验室过程信息的软件。这套系统通常与其他信息系统比如医院信息系统(HIS)连接。实验室信息系统由多种实验室流程模块构成,这些模块可以依据客户的实际情况进行选择和配置。
|
6月前
|
数据采集 数据库
医院LIS系统源码,SaaS架构的Client/Server应用
LIS系统集申请、采样、核收、计费、检验、审核、发布、质控、查询、耗材控制等检验科工作为一体的网络管理系统。它的开发和应用将加快检验科管理的统一化、网络化、标准化的进程。
|
人工智能 安全 大数据
钉钉7.0:500万个低代码应用,1500款SAAS
钉钉7.0:500万个低代码应用,1500款SAAS
375 0
|
运维 安全 搜索推荐
SaaS应用的账号模型设计分析和思考
## 背景   当前IDaaS EIAM和内部业务方沟通交流的时候,经常遇到的两个问题是: 1. IDaaS EIAM怎么支持的多租户场景,怎么做租户切换? 2. 有不有接口,提供一个用户的账号ID(手机号、邮箱等),返回可以登录的租户列表?   这个时候,我们的回答都是不能做租户切换,没有这样的接口,因为IDaaS EIAM是纯粹的B2E模型,以企业的视
826 0
SaaS应用的账号模型设计分析和思考
|
消息中间件 缓存 运维
大型医院云HIS系统源码 基于Angular+Nginx+Java+Spring开发 SaaS应用
本套云HIS系统采用主流成熟技术开发,软件结构简洁、代码规范易阅读,SaaS应用,全浏览器访问前后端分离, 多服务协同,服务可拆分,功能易扩展。多集团统一登录患者主索引建立、主数据管理,统一对外接口管理。 商业级源码,带电子病历,过四级,有演示!云his系统源码 SaaS应用 功能易扩 统一对外接口管理.
180 0
大型医院云HIS系统源码 基于Angular+Nginx+Java+Spring开发  SaaS应用
|
消息中间件 JSON 自然语言处理
基于 EventBridge 构建 SaaS 应用集成方案
事件源是事件驱动的基石,如何获取更多事件源也是 EventBridge 一直在探索和尝试的方向。针对市场上其他云厂商和垂直领域的 Saas 服务,EventBridge 发布了 HTTP Source 能力,提供简单且易于集成的三方事件推送 ,帮助客户更加高效、便捷地实现业务上云。
247 0
基于 EventBridge 构建 SaaS 应用集成方案
|
存储 运维 监控
SaaS云原生应用典型架构技术分享
SaaS服务没有任何软硬件维护费用,服务模式使用非常灵活,企业花费少量的费用便能享受优质服务,让企业集中资金流进行核心业务探索与运营。SaaS是即下载即使用的服务模式,大大节省了系统构架成本。但SaaS开发过程中的各种问题,如人力成本、多租户管理、高可用、安全性等,让企业在SaaS化转型时有所顾虑。围绕当下许多企业青睐的SaaS应用开发,今天给大家带来主题为《SaaS云原生应用典型架构》技术分享。
605 0
SaaS云原生应用典型架构技术分享
|
机器学习/深度学习 分布式计算 负载均衡
大数据SaaS应用落地经验分享
在过去几年中,我们自己开发的大数据SaaS应用大数据实验室采用混合云体系结构在全国各地进行了几十次部署。在实际使用过程中,遇上了非常多的问题。本文主要分享在实际软件开发和维护过程中遇上的各种问题和解决方案分享。
721 0
大数据SaaS应用落地经验分享
[全球快讯]2019年迄今全球科技IPO:打车应用纷纷破发,SaaS表现抢眼
Lyft和Uber的IPO困境已经成为媒体的关注焦点,那么其他获得风投支持、在今年上市的科技公司又表现如何呢?下面让我们来快速浏览一下在今年上市的科技公司其IPO发行价和当前价格(截至今天上午)。