BSS应用程序云原生部署的8大挑战
云原生部署改变了软件开发。根据云原生计算基金会(CNCF)2021年年度调查,96%的组织正在使用或评估Kubernetes。更确切地说,560万开发者在使用Kubernetes,比去年增加了67%。
云原生架构使松散耦合的服务具有弹性、可管理性和可观察性。当与自动化相结合时,云原生功能还可以以最小的中断实现频繁的、影响较大的更改。
尽管越来越多的开发人员正在接受云原生部署,但该技术在电信业务支持系统(BSS)领域仍然相对较新,而且云原生应用程序部署团队面临着一些挑战,尤其是在有状态应用程序方面,例如BSS中的应用程序。
下面,让我们看看企业目前在运行云原生部署方面面临的主要挑战。
云原生挑战#1:运行Helm chart
传统上来说,BSS空间部署和升级一直是一场灾难。因为全面升级通常需要12到18个月的时间,搭建环境又需要几天或几周的时间。但是如果采用正确的方法,云原生应用程序部署有望通过无缝升级完全颠覆这种模式,而这种升级不会中断服务,并且只需要通常所需时间的一小部分。
然而,设置基于云的自动化部署以加速升级的一个重要部分是能够快速启动运行测试甚至全面的生产环境。
Helm charts是执行此操作的一种方法。借助Helm,你只需按一下按钮就可以将系统启动并运行到所需的大小和规格。但为了使其发挥作用,企业的整个技术栈包括其数据平台需要无缝协作,这可能是一个挑战。
假设你能够应对这一挑战,则可以根据需要使用 Helm 启动开发和测试环境,并在完成后销毁它们。这对于共享硬件和通过仅在使用资源时付费来降低公共云成本非常有用。
云原生挑战#2:CI/CD
使用Helm来管理部署和升级通常只能做到这个程度。为了确保持续服务,还必须管理多个异地冗余群集,并在各个群集之间编排任何更改。持续集成和持续交付(CI/CD)可以通过自动化部署增加显著的业务价值,从而减轻团队设置手动配置的负担。
CI/CD工具可用于自动启动更改(如升级)的一系列步骤,以及在生产部署中执行的其他手动任务。与其让开发人员在凌晨3点通过100步流程来完成升级(并因精疲力竭而犯错误),CI/CD会为您处理这一切。
但是,为了实现CI/CD的承诺,开发团队需要确保他们的工具能够无缝协作。
云原生挑战#3:自动扩展
当公司在公共云上部署应用程序时,他们会为所使用的资源付费(例如,每小时)。
通常,夜间的收费策略和收费量要远低于白天。更重要的是,流量模式会随着用户群的增长而季节性波动。在这种情况下,通信服务提供商(CSP)不希望从一开始就支付反映未来业务量最繁忙时间和最昂贵资源的价格。相反,他们希望确保以具有成本效益的方式为他们使用的资源付费——不多也不少。
这就是自动扩展特别有用的地方。通过自动扩展,应用程序可以始终根据所需的流量需求调整容量,并且会随着需求的变化而动态地扩大和缩小。
然而,对于有状态的应用程序,这是有问题的。虽然有状态应用程序可以通过添加新的Pod来扩展,但缩小规模是有代价的;你必须要处理存储在要删除的Pod上的数据,这需要时间和精力。根据所涉及的内容,这项工作的成本可能比单独使用解决方案要高。
此外,Kubernetes可能对你数据平台的弹性能力或分布在Pod中的分区一无所知,这意味着Kubernetes不能用于向上或向下扩展Pod,因为需要扩展多个Pod才能保持数据冗余。因此,你可能需要在Operator中管理所有这些,这需要额外的工程设计工作。
云原生挑战#4:服务网格
将单个应用程序(如用于策略和计费的应用程序)拆分为多个微服务会增加它们之间的接口。由于解决方案的每个部分都是根据自己的需求独立扩展的,因此在任何给定时间都将运行多个微服务。
这就是基于云的服务网格特别有用的地方。简而言之,服务网格旨在帮助简化和管理微服务之间的路由流量,因为每个微服务运行的Pod数量是动态的。服务网格还可以加密接口流量,从而使应用程序不必管理加密。在某些情况下,它还可以帮助进行日志记录和事务跟踪。
跟踪只适用于基于HTTP的协议;它适用于5G,但不适用于4G或之前的任何产品。不幸的是,微服务之间的接口不太可能基于HTTP的,因此网格将无法帮助进行跟踪。
然而,有些RFP要求对所有内部和外部接口使用基于Istio的服务网格。如果需要网格来管理系统内部接口,例如集群内和跨数据中心复制 (XDCR),可能会导致性能问题,这就需要工程人员才能解决。
云原生挑战#5:群集升级
由于5G服务级别协议(SLA)需要个位数毫秒的响应,开发人员没有时间通过XDCR将流量路由到其他数据中心。因此,即使在升级期间,每个集群都应保持服务状态。
群集升级应逐个Pod进行。这意味着你必须管理混合版本的集群,直到每个Pod都升级。虽然这是一个常见问题,但对于有状态的应用程序,它需要产品在单个集群中处理并发的多个版本,这是一个需要解决的复杂问题。
云原生挑战#6:多站点XDCR升级
从软件版本升级到架构改造再到存储过程更改,所有事情都需要在 XDCR 设置中的每个集群保持服务时执行。换言之,你不能关闭一个集群而只留下一个可用集群。
再一次,正确实现这一点需要大量的产品功能。
云原生挑战#7:安全性
监管机构对部署在公共云上的应用程序的安全和加密越来越严格。由于政策和收费功能包含非常敏感的数据,监管机构越来越多地审查这些领域以保护消费者。
展望未来,当应用程序在公共云中运行时,很可能所有接口——甚至是运行时内存——都必须加密。例如,一些欧洲监管机构已经要求对保存在公共云中的敏感数据的运行时内存进行加密。
随着安全要求的提高,产品将需要在整个应用程序堆栈中更有效地管理密码、用户、角色、访问和加密证书。他们还需要确保在保持预期性能的同时对所有流量进行加密。
云原生挑战#8:操作和故障排除
将应用程序拆分为多个可动态扩展的微服务会使操作和故障排除变得更加困难。当出现问题时,服务失败请求的实例很有可能在有人试图查看发生的情况时不会运行。
例如,自动缩容会终止多个Pod,而当有人解决问题时,导致问题的 pod 可能早已死亡。
Kubernetes设计用于处理自动恢复;Pod是为了失败、终止和被替代而创造的。因此,团队将需要新的监控和追踪工具来帮助了解情况。而这些工具也需要被管理。
- 云原生仍是未来 -
尽管存在这些挑战,软件开发的未来仍然是云原生。这是因为该方法带来了很多好处,包括更快的迭代、更低的成本、可扩展性、灵活性、自动化等等。
通过了解云原生部署中固有的挑战并积极努力解决这些问题,开发团队可以充分发挥云原生应用程序的潜力,让其用户和企业满意。
BSS应用程序云原生部署的8大挑战的更多相关文章
- Apache ShardingSphere 5.1.2 发布|全新驱动 API + 云原生部署,打造高性能数据网关
在 Apache ShardingSphere 5.1.1 发布后,ShardingSphere 合并了来自全球的团队或个人的累计 1028 个 PR,为大家带来 5.1.2 新版本.该版本在功能.性 ...
- Spring Cloud教程(八)云原生应用程序
Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智能路由,微代理,控制总线).分布式系统的协调导致了样板模式, 使用Spring Clo ...
- AI云原生浅谈:好未来AI中台实践
AI时代的到来,给企业的底层IT资源的丰富与敏捷提出了更大的挑战,利用阿里云稳定.弹性的GPU云服务器,领先的GPU容器化共享和隔离技术,以及K8S集群管理平台,好未来通过云原生架构实现了对资源的灵活 ...
- API 管理在云原生场景下的机遇与挑战
作者 | 张添翼 来源 | 尔达Erda公众号 云原生下的机遇和挑战 标准和生态的意义 自从 Kubernetes v1.0 于 2015 年 7 月 21 日发布,CNCF 组织随后建立以来,其 ...
- AWS 15年(2):云原生兴起
AWS创立云计算15年来,没有一个行业不跟云计算相关,没有任何一个颠覆性创新缺少云计算的参与,云已经是不可逆的滚滚洪流. AWS这15年,是云原生服务从无到有再到基本成熟的15年,是云原生应用兴起的1 ...
- 《Kubernetes与云原生应用》系列之容器设计模式
http://www.infoq.com/cn/articles/kubernetes-and-cloud-native-app-container-design-pattern <Kubern ...
- 从 Spark 到 Kubernetes — MaxCompute 的云原生开源生态实践之路
2019年5月14日,喜提浙江省科学技术进步一等奖的 MaxCompute 是阿里巴巴自研的 EB 级大数据计算平台.该平台依托阿里云飞天基础架构,是阿里巴巴在10年前做飞天系统的三大件之分布式计算部 ...
- 顶级技术盛会KubeCon 2020,网易轻舟布道多云环境云原生应用交付
在日前的KubeCon 2020中国线上峰会上,VMware中国研发中心架构师.Harbor项目创始人和维护者张海宁,和网易数帆轻舟事业部架构师.Harbor维护者裴明明,共同分享了如何在多云和多集群 ...
- 前端云原生,以 Kubernetes 为基础设施的高可用 SSR(Vue.js) 渲染微服务初探(开源 Demo)
背景 笔者在逛掘金的时候,有幸看到掘友狼族小狈开源的 genesis - 一个可以支持 SSR 和 CSR 渲染的微服务解决方案.总体来说思想不错,但是基于 Kubernetes 云原生部署方面一直没 ...
随机推荐
- 检查oracle是否是rac
采样rac集群 [root@shfpdb02 disks]# cat /etc/redhat-release Red Hat Enterprise Linux Server release 6.4 ( ...
- Oracle数据库包括两个部分数据库和数据库实例
olsnodes,这个命令用来显示集群点列表(grid即oracle rac的第三个安装包内的软件,可找到) //集群名称[grid@shdb02 ~]$ olsnodes -cshfpdb-clus ...
- 还原lvm逻辑卷创建整个过程
很多情况入职的时候,系统可能已规划过的,但是有的信息也不是很完整,比如下面的lvm逻辑卷我们先不管对与错,利用一些工具来了解当前lvm逻辑卷的情况 系统采样: [root@fp-web-112 var ...
- RTSP可用网络流
推荐个音视频学习的网站 https://www.zzsin.com,里面有音视频学习资料和测试视频提供下载B站搜乔红 rtsp://wowzaec2demo.streamlock.net/vod/mp ...
- CF problem: (D) Maximum Product Strikes Back
Problem - D - Codeforces Example input 5 4 1 2 -1 2 3 1 1 -2 5 2 0 -2 2 -1 3 -2 -1 -1 3 -1 -2 -2 out ...
- SpringBoot 入门及配置
1.首先创建Maven文件,右键单击鼠标,others搜索Maven,点击Maven Project 2.点击下一步,打上勾下一步,输入包名和项目名称 3.第三步修改pom.xml导入Maven依赖M ...
- go源码阅读 - sync/rwmutex
相比于Mutex来说,RWMutex锁的粒度更细,使用RWMutex可以并发读,但是不能并发读写,或者写写. 1. sync.RWMutex的结构 type RWMutex struct { // 互 ...
- docker基础_网络模式
docker网络 网络模式: bridge:docker默认 自己创建会默认使用bridge模式 类似vmware中的NAT模式 其中192.168.1.203是本机在现实世界局域网的ip.172.1 ...
- 手撸一个虚拟DOM,不错
大家好,我是半夏,一个刚刚开始写文的沙雕程序员.如果喜欢我的文章,可以关注 点赞 加我微信:frontendpicker,一起学习交流前端,成为更优秀的工程师-关注公众号:搞前端的半夏,了解更多前端知 ...
- C#常见控件与SQL Sever数据库交互
C#常见控件与SQL Sever数据库交互 下拉框(ComboBox)与数据库绑定 首先,我们采用DataSet作为临时的数据库,这样会比较好 那么,我们先创建两个成员(对象) string sqlc ...