0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

云应用程序SaaS的设计方法

汽车玩家 来源:今日头条 作者:闻数起舞 2020-05-03 18:20 次阅读

最初发布于Cloud Nine Apps。

如何设计云应用程序(SaaS)

如何设计云应用程序(SaaS)

软件即服务(SaaS)已成为许多软件供应商的主要模型。 与云供应商提供基础架构服务一样,它有助于类似地交付软件。 SaaS应用程序通常部署在公共云上,例如Amazon Cloud(AWS),Microsoft Azure,Google Cloud等。 但是,组织有时可能会选择使用其数据中心(也称为私有云)来托管SaaS应用程序并利用其在基础架构上的投资。 在设计SaaS应用程序时,不仅需要将应用程序比特部署到云中,还需要花费更多。 进行适当的设计考虑,不仅可以帮助您完成良好的设计,还可以帮助您降低成本并更有效地管理部署。 在这篇文章中,我将介绍一些多年来我发现有用的设计SaaS应用程序的关键注意事项和技巧。

为云设计应用程序与本地应用程序设计有何不同?

· 更好的模块化:如果您拥有一个庞大的单片应用程序,那么明智的做法是查看它是否可以分解为可以单独部署的逻辑组件。 这不仅可以提高模块化,还可以帮助您减少应用程序的占用空间。 假设您有一个使用后台作业刷新数据的应用程序。 您可以将核心应用程序和后台作业分离为2个(或更多)可以分别部署的组件。 这将减少核心应用程序的占用空间。 因此,您可能会选择较小的资源大小。 另外,根据需要,您可以独立地缩放这两个。 因此,如果对后台作业的需求增加,则可以增加其容量,并增加应用程序层的容量。 由于每个资源的资源量都很小,因此,仅扩展所需的层/组件将导致整体成本低于整体资源的整体成本。 说得通?

· 应用程序始终是最新的:对于许多本地应用程序来说,这是一个很大的转变。 在云中,客户通常希望应用程序始终处于最新版本。 现在,如果您将其视为一名架构师,则意味着您不仅可以更新应用程序位,而且可以在不涉及客户的情况下升级客户数据。 也就是说,这对他们是完全透明的。

这些只是一些差异。 但是,您明白了。

SaaS的关键设计注意事项

· 选择适当的云服务:当然,您正在部署到云。 但是,您想使用哪些服务? 您是否只是要使用基础架构即服务(IaaS)? 还是要利用某些平台即服务(PaaS)功能? 答案可能并不总是直截了当的。 因此,这里有一些准则。

· 您是否要将同一应用程序部署到多个云平台或内部部署? 在这种情况下,可能没有(或最小化)特定于云供应商的服务并坚持使用更多的IaaS服务是有意义的。

· 成本应该是选择服务时的重要考虑因素。 例如,某些由Cloud供应商管理的PaaS服务可以由您的团队自己管理,以降低成本。 尽管这对于每项服务可能都没有意义,但值得探讨。

· 牢记您的团队专业知识。 使用某种云服务需要什么? 而且,如果团队还维护基础架构,那么需要什么技能?

· 针对故障的设计:设计容错和高可用性的应用程序是Cloud的基础。 假定您的应用程序会遇到问题,以及如何确保继续为用户提供服务。 这些可能是应用程序故障或基础架构故障。 云供应商提供了一些有用的功能来帮助您。

· 使用负载平衡器:出于负载平衡的目的,您可以将应用程序节点放在负载平衡器的后面,并确保即使一个或多个节点出现故障,也可以通过其他节点为应用程序提供服务。

· 地理分布的应用程序:多个Cloud供应商提供了将应用程序分布在多个地理区域的功能,这样,即使一个区域受到了影响(例如,由于自然灾害),也可以从其他区域提供应用程序。 例如,AWS支持跨多个可用区部署应用程序。

· 模块化您的应用程序:如我们在上一节中讨论的,隔离可以分别部署和管理的组件可以帮助减少应用程序的占用空间,从而降低基础架构的成本。 您也可以考虑将其中一些组件作为微服务。 如果您的应用程序之外还有其他潜在使用者,则微服务方法可能特别有用。 现在,这并不意味着您会全力以赴,创建不必要的组件。 因此,一种方法是制作可以单独部署的组件(例如核心应用程序与后台作业)。

· 安全性:安全性涉及很多方面-从保护基础结构到应用程序。 一些关键方面包括确保仅打开所需的端口,使用对资源的尽可能少的特权,进行适当的基于角色的访问控制,使用加密,等等。 安全性不应被视为一次性交易。 这是一个持续的过程,应该随着时间的推移而改进和发展。

· 多租户:在云中运行的一个主要好处是能够使用同一应用程序实例为多个客户提供服务。 这给应用程序设计带来了一些明显的挑战,以确保每个客户的数据出于安全和监管目的而被隔离。 一些团队选择为每个客户使用不同的持久性存储实例,例如为每个客户使用单独的数据库。 而且,有些人选择使用行级标识符隔离数据。 无论采用哪种方法,重要的是确保体系结构满足可伸缩性和安全性需求。 例如,如果选择每个客户使用一个数据库,则可以在一个RDS实例上托管多个数据库。 而且,当容量用尽时,您可以建立另一个RDS实例。

· 零/最小停机时间和无缝升级:信不信由你,许多客户期望SaaS应用程序的停机时间为零或非常小,并且由于这些停机时间通常由构建应用程序的同一公司管理,因此应进行无缝升级。面临的挑战是您的应用程序可能没有被设计为能够顺利处理升级,特别是如果它已被转换为SaaS应用程序而已。需要考虑两个关键方面:a)部署应用程序位和文件b)处理持久性存储升级。对于推出应用程序位策略,可以使用诸如Blue / Green部署之类的策略,其中,如果成功推出,则将新版本部署到新堆栈中,进行测试并启用。较旧的堆栈资源可以在以后退役并回收。实现无缝升级的一种方法是使基础数据模型n_1兼容。这意味着,如果要部署的发行版具有数据模型版本n,则该数据模型与先前的数据模型版本(n — 1)向后兼容,从而确保升级不会破坏它。您如何确保?这就要求在整个开发周期中遵守纪律,并遵循某些准则,例如不删除任何列,提供必要的升级脚本来处理任何数据迁移需求,等等。并且,如果升级未成功,则支持回滚升级。现在,您可以理解,这不仅在技术上具有挑战性,因为它涉及数据迁移和回滚,而且还可能导致部署速度大大降低。因此,您必须仔细评估适合您的应用程序需求的合理方案,并相应地实施解决方案。

SaaS的DevOps注意事项

DevOps对SaaS至关重要,因此值得单独讨论。 以下是一些关键注意事项。

· 持续交付:DevOps管道应该能够获取签入的代码,并从中生成一个构建,然后以自动化的方式经历各个阶段(QA,性能,最终通过/不通过检查,生产部署)。 这可能涉及到拥有多个管道(通常是每个阶段),并拥有一个超级管道来推动构建通过这些阶段中的每个阶段。 现在,开发这些管道可能还需要一些时间,但是开始为每个管道定义合同是一个好主意,这样用户管道就不必担心细节了。 最终,目标应该是使双手完全免于打扰或尽可能地接近手。

· 对所有版本(包括DevOps更改)使用版本控制:对于应用程序代码,通常最好使用源代码控制的master分支。 但是,对于任何DevOps更改执行相同的操作同样重要。 例如,在推出基础架构更改时,还应将这些更改检入源代码管理中,进行测试,然后将其推向生产环境。

· 敏捷的基础架构:要在SaaS上取得成功,您需要确保您的基础架构是敏捷的并且可以应对需求的变化。 随着需求上升,它可以扩展适当的层,当需求下降时,释放不需要的资源。 这需要一定程度的实验和测试才能达到适当的平衡。 例如,您可以使用AWS自动扩展功能自动扩展/缩减基础架构。

SaaS的其他注意事项

· 计划和优先级:与其他任何成功的项目一样,SaaS项目也需要计划和优先级。 尽管每个人都希望实现"将每一个检查都投入生产"之类的目标,但要了解什么才是最有意义的事情,并首先将重要的事情放在优先位置。 当然,有一个延伸目标没错。 但是,重要的是首先正确处理重要的事情。 例如,如果您没有良好的单元测试和自动化范围,并且您试图将每个代码更改推向生产环境,即使您完成了更改,其实用性也值得怀疑。 之所以会适得其反,是因为生产中的事情可能会开始崩溃得太快,然后研发团队将被消耗掉。

· 货币化模型:SaaS也影响货币化模型。 在内部部署中,您可能会被罚款一定数量的许可证,而在SaaS中,您可能不得不重新考虑什么是最适合您的业务的模型。 您是否要使用基于订阅的模型,基于利用率的模型,混合模型或其他所有模型?

希望您对设计基于云或SaaS的应用程序有更好的了解。 看到涉及许多不同方面的应用程序投入生产,无疑是一种丰富的体验。 就像我经常说的那样,"云是一个旅程,而不是目的地"。 因此,请继续学习并不断发展。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据中心
    +关注

    关注

    16

    文章

    4677

    浏览量

    71950
  • SaaS
    +关注

    关注

    1

    文章

    363

    浏览量

    36847
收藏 人收藏

    评论

    相关推荐

    PCM2912应用程序的操作环境

    电子发烧友网站提供《PCM2912应用程序的操作环境.pdf》资料免费下载
    发表于 10-21 09:33 0次下载
    PCM2912<b class='flag-5'>应用程序</b>的操作环境

    容器引擎属于saas层服务吗?二者是什么关系

    容器引擎属于SaaS层服务,容器引擎通常被视为一种平台即服务(PaaS)的变体或扩展,虽然它提供了应用程序的托管环境,但更侧重于容器化应用的部署与管理,不完全等同于传统的软件即服务
    的头像 发表于 10-12 10:57 167次阅读

    使用HIC启用外围扩展应用程序应用说明

    电子发烧友网站提供《使用HIC启用外围扩展应用程序应用说明.pdf》资料免费下载
    发表于 09-14 09:44 0次下载
    使用HIC启用外围扩展<b class='flag-5'>应用程序</b>应用说明

    网络与计算:有什么区别?

    计算和网络是相关但又不同的概念。计算关注的是应用程序如何运行,而网络则关注的是应用程序
    的头像 发表于 06-25 11:43 468次阅读
    <b class='flag-5'>云</b>网络与<b class='flag-5'>云</b>计算:有什么区别?

    Anthropic推出iPhone应用程序和业务层

    Anthropic 推出 iPhone 应用程序和业务层,支持使用Claude 3 Opus、Sonnet 和 Haiku 模型
    的头像 发表于 05-07 10:22 401次阅读

    使用Docker部署Go Web应用程序步骤

    大多数情况下Go应用程序被编译成单个二进制文件,web应用程序则会包括模版和配置文件。而当一个项目中有很多文件的时候,由于很多文件没有同步就会导致错误的发生并且产生很多的问题。
    发表于 04-20 09:33 474次阅读
    使用Docker部署Go Web<b class='flag-5'>应用程序</b>步骤

    SOLIDWORKS应用程序:面向学生的全新机遇

    随着科技的快速发展和数字化转型的深入,SOLIDWORKS应用程序的推出,无疑为学生提供了一个全新的学习和实践平台。SOLIDWORKS,作为一款工程设计软件,其应用程序的推出,不
    的头像 发表于 03-25 15:39 256次阅读

    什么是SaaS?中国SaaS发展简史

    SaaS融合了软件与计算的优势,在这种服务模式下,用户不仅获得了软件的功能,更重要的是,用户拥有数据与隐私权。
    发表于 03-14 11:30 645次阅读
    什么是<b class='flag-5'>SaaS</b>?中国<b class='flag-5'>SaaS</b>发展简史

    应用程序中的服务器错误怎么解决?

    在使用应用程序时,可能会遇到服务器错误的问题。这种错误通常会导致应用程序无法正常运行 ,给用户带来不便。下面将介绍应用程序中的服务器错误及其解决方法,帮助您快速解决这一问题。
    的头像 发表于 03-12 15:13 5749次阅读

    LTE MQTT通信应用程序说明

    电子发烧友网站提供《LTE MQTT通信应用程序说明.pdf》资料免费下载
    发表于 02-21 10:47 0次下载
    LTE MQTT通信<b class='flag-5'>应用程序</b>说明

    如何从几个方面介绍SaaS系统

    PaaS,某些时候也叫做中间件。就是把客户采用提供的开发语言和工具(例如Java,python, .Net等)开发的或收购的应用程序部署到供应商的计算基础设施上去。
    的头像 发表于 02-20 11:37 1016次阅读
    如何从几个方面介绍<b class='flag-5'>SaaS</b>系统

    请问如何使用ModusToolbox™估计应用程序使用的堆栈和堆空间量?

    我正在使用 PSoC63 进行 ModusToolbox™ 开发。 运行我的应用程序时,MTB上是否有任何方法可以确定或估计我的应用程序将使用的最大堆栈和堆大小? 谢谢。
    发表于 01-18 08:04

    SNP Glue新Saas技术在数据集成中如何提升客户价值

    ■ 新Glue版本可作为软件即服务(SaaS)应用程序使用 ■ SAP数据和非SAP数据源之间的云原生集成大大简化了客户的企业数据集成 ■ SNP Glue通过应对AI和大数据计划中的关键挑战来增强
    的头像 发表于 12-28 14:06 338次阅读

    中软国际管理平台SaaS产品荣获华为云云软件认证

    近日,中软国际管理平台SaaS产品凭借扎实的技术实力,以及与华为服务深度融合能力,荣获华为云云软件认证。 华为云云软件认证是华为全新推出的伙伴体系中的高级别的认证,华为
    的头像 发表于 12-07 10:10 402次阅读

    开发java应用程序的基本步骤是

    ava是一种面向对象的编程语言,广泛用于开发各种类型的应用程序。在开发Java应用程序时,有一些基本步骤需要遵循,以确保应用程序的正确性和可靠性。 1.确定需求:这是开发任何应用程序
    的头像 发表于 11-28 16:52 1523次阅读