高手问答第 273 期 —— 云原生大规模微服务如何做产品交付?热

高手问答第 273 期 —— 云原生大规模微服务如何做产品交付?热简介:云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用,已然成为当前架构升级、上云的关键技术选择。 云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和

高手问答第 273 期 —— 云原生大规模微服务如何做产品交付?热

云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用,已然成为当前架构升级、上云的关键技术选择。   云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式 API。这些技术能够构建容错性好、易于管理和便于观察的松耦合系统,结合可靠的自动化手段,云原生技术使工程师能够轻松地对系统作出频繁和可预测的重大变更。   如何顺应云原生趋势做技术选型,通过 CI/CD 提升交付效率和质量,改善研发流程来助力加快业务迭代,成为了摆在大部分企业面前的重要问题。   OSCHINA 本期高手问答(12月22日- 12月28日)我们请来了 @ 张翼飞  和大家一起探讨关于云原生大规模微服务如何做产品交付的问题。   可讨论的内容包括但不限于以下几个方面:   云原生之上的架构设计如何做? 如何选择适合团队的分支策略? Java/Golang/Vue.js/... 等服务构建效率低如何优化? 环境抢占/环境不稳定导致研发测试效率低下,如何解决?

如有其他相关的问题,也欢迎提问。

嘉宾简介

  张翼飞,KodeRover 首席架构师,云原生技术专家,曾就职于七牛云、阿里云、腾讯云。   七牛云期间负责音视频平台产品研发,2017 年起开发基于 K8s 的高可靠应用,率先在 K8s 上实现一键部署、自运维的 MySQL/Redis/MongoDB 服务。   近几年在阿里云从 0 到 1 主导研发国内首款面向应用的 Serverless 产品 SAE,实现业界首个生产级裸金属安全容器多租方案,并基于弹性容器实例实现资源池弹性容量管理,同时深耕 K8s 多租、稳定性保障、应用端到端交付等基础工程领域。   在腾讯云期间负责 Serverless 产品 TEM,设计并落地规模增长策略、产品/技术发展路线,支撑大客户平稳上量。   为了鼓励踊跃提问,@Zadig云原生交付 会在问答结束后从提问者中抽取 5 名幸运用户赠予 定制T恤 一件    

OSChina 高手问答一贯的风格,不欢迎任何与主题无关的讨论和喷子。

下面欢迎大家就相关问题向 @张翼飞 老师提问,直接回帖提问即可。


解决方法:
高手问答第 273 期 —— 云原生大规模微服务如何做产品交付?

@flyer103 MySQL/Redis/MongoDB这类服务如何容器化,如何配置存储和备份,保证数据安全


可以考虑存储、计算分离,容器化的部分是计算层,存储通过持久化存储来做,备份可通过定时任务来跑,可参考:https://mp.weixin.qq.com/s/FzPujsuOeWcEjdr4GfzylQ

如何选择适合团队的分支策略? 常见的分支策略和工作流程是什么样的


常见的分支策略有「主干开发,主干发布」「主干开发,分支发布」「分支开发,分支发布」「Gitflow 双分支」等。由于分析内容较多,我们团队近期在整理详细的分支策略实践,可以关注 KodeRover 公众号 (ID: KodeRover),后续会在文章中详细说明。

@flyer103 什么是云原生?


云原生定义:基于现代、动态的环境,构建、运行可扩展的应用。 云原生的核心是「应用」,围绕应用管理提供服务。近几年提出和应用云原生,也是伴随 IaaS 管理在公有云、私有云、混合云场景中越来越成熟和动态化自然而然发生的事情,在资源池变革的环境下重新思考如何更好管理应用,加速业务迭代。

@flyer103 老师 您好 ,   参考下您的建议企业应用 是购买云厂商的服务呢 还是企业自建服务(只购买云厂商的服务器资源)  ,还有现在的serverless产品如何预防冷启动的情况, 服务器自动运维时是考虑水平扩展,还是横向扩展,如果针对现服务器榨取最大利用率 有现有方案吗


第三种是采用更轻量级的 runtime,如 WebAssembly,但这种目前在服务端应用场景还不太成熟。对于服务器自动运维,主要考虑根据应用特征、稳定性保障级别、管理成本、资源成本来判断是水平扩展还是横向扩展,需要 case by case 来看。对于服务器利用率,需要考虑稳定性保障、部署密度、性能影响 (整体 CPU 利用率超过 60% 时可能会导致应用性能明显下降) 等综合考虑。
对于企业应用,需要从业务核心、费用成本、运维成本、团队人才现状等综合考虑,判断是购买云厂商 PaaS / SaaS 服务或是基于 VM 搭建服务,本质上是 收益/成本 问题,把企业核心资源用在业务增长上,成本可控情况下尽可能托管非核心的事项。Serverless 产品中,冷启动有三种解决思路,第一种是资源换时间,提前扩容实例应对接下来的流量高峰,第二种是采用「按需拉取镜像」的方案,实现秒级的冷启动

@flyer103 夹在基础云商和企业自有系统之间, kubeSphere和zadig这些开发商的生存空间在哪里?

卖服务(mysql)? 代替云商角色(github)? 出售计算资源(github)? 取代企业自建系统? 纯技术开源(k8s)?


这些项目解决某个或多个问题域来创造价值,若这些问题域 (如 Zadig 面对的应用交付) 对企业而言是普遍面对的,企业内部解决成本大于引入外部服务成本,且后者可以进一步提升企业业务的迭代效率,同时带来先进的理念,那么这些项目就有很大的生存空间。

@flyer103  云原生产品交付的流程和传统的有啥不一样呢?


云原生产品交付和传统应用交付,一个很大的不同点在于面对的基础设施不同,伴随基础设施的变革需要提供适配的服务模式。同时理念也不同,云原生产品交付更专注在业务侧,围绕加速业务迭代提供服务, 实现 开发->交付 的最短路径,而传统的交付偏流程和工具,二者关注的重点不同。
目前几次交付都是做私有云的交付,发现安装k8s这套东西组件太多,必须对网络策略和配置都非常熟悉才可以,老师对私有云的部署和交付,有啥建议吗?2.目前发现多节点的部署情况下,确实需要些工具做自动化部署,例如挂载盘和一些数据库权限,数据库配置等,这些,自动化工具有没有什么开源的可以借鉴一下?目前用的比较多都是付费的,对开源的自动化部署工具不了解?3.关于交付的问题,每个客户集群大小不一样,网络策略不一样,要实现自动化部署,有啥建议吗
3. 不好意思这部分经验较少,一个想法是可以通过过往项目梳理已知客户集群场景,通过代码固化,这样当面对新客户时可以复用已有的策略和工具。
1. K8s 自身的复杂度确实高,私有云交付场景下,若 K8s 是需要同时交付的,那么为了给客户提供更好的服务,这个复杂度是需要接受的。国内也有 https://github.com/alibaba/sealer 等项目尝试降低这部分的操作复杂度,可以参考下。2. 可以考虑 IaC 工具来做管理,如 Terraform、Pulumi 等。

@flyer103 服务部署到k8s,一堆的yaml文件如何管理,是通过一些可视化的产品做表单化的增删改查,还是说编辑原生的yaml文件;另外,如果用helm部署的话,helm相关的一系列文件又是如何管理的,可否通过代码仓库管理helm配置。谢谢。


这个问题可以从 K8s 场景下「应用定义」和「项目定义」的角度来考虑,如何描述应用和项目。可以采用 yaml 或 helm chart 来描述应用,然后再抽象出「项目」的概念,通过 yaml、chart 等描述均可,站在项目的角度管理这些应用,可以参考下 Zadig 的实现。
1, 正式环境除非很简单, 很少直接用原生的yaml部署, 较难维护.. 2, 有专门helm仓库软件, 各种部署工具也都会支持git管理.. 3, 技术流派可以学习下gitops, 企业流派可以直接用商业化cicd部署工具平台..
microk8s 的部署做得挺简单的,几个指令就可以部署一个高可用集群

@flyer103这东西不难吧,我感觉好搞


站在价值和成本角度评估,然后再看技术实现 :D
本文用户投稿或网站收集转载,如有侵权请联系本站。

在线搜索

作者信息

标签TAG

相关文章