50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

如何避开陷阱迈向云原生

  • 2021-06-07
  • 本文字数:2516 字

    阅读完需:约 8 分钟

如何避开陷阱迈向云原生

在云迁移策略中充分利用开源容器技术和开放规范。


如今,许多开发团队仍在数据中心中运行着单体应用程序。那些久经考验的三层架构真是太棒了!你雇来的开发人员写好代码,扔到应用里,而你请来的系统管理员随时待命,负责运行这些应用。一般来说,因为这种工作分配机制,你们每年才能交付和部署一个大版本——如果你们真的很擅长做自己的事情,那么一年可能会交付和部署两个大版本。如果你们不是谷歌或 Netflix,这样做完全没问题——用作者 Jim Butcher 的那句知名格言来说,你只需要比直接竞争对手更快就行了。

 

但是要真正超越竞争对手,你需要投资工具链和方法,来更快获得可以让用户受益的功能。迁移到云并充分利用开源软件和开放规范可以让你跑得更快、最大程度地减少对供应商的依赖、实现更快的迭代,并促进利益相关者之间的信任。这些好处让开源方法成为了一种特别高效的,支持向云中的容器化应用程序迁移的方式。

找到上云之路

在数字化转型项目和较小的、更接近战术层面的项目中,迁移到云的一大核心动机往往是自助服务。相比需要管理和维护平台、还要管理部署的 IT 运维方法,自助服务方法可以让开发人员从集群级别的访问到更类似 PaaS 的环境中自己处理各种事宜。在这种情况下,容器化微服务至关重要:容器解决了包装层面的挑战,而微服务则让各个开发团队可以独立地迭代和发布他们的服务和功能,这和单体应用中的情况是不一样的。

 

这种动态变化需要一些组织层面的调整,尤其是在 IT 部门内部,因为团队必须更加主动和一致地沟通,而不仅仅是通过格式票证来交流,这样才能促进新功能的发布。与过去的日子形成鲜明对比的是,IT 运营商和开发人员会发现他们的动机是一致的;过去的日子里,开发人员通常希望最大化功能的交付数量,而运维人员则希望最小化交付数量以保持整个系统的稳定性。当你迁移到较小的部署单元后,由于云将虚拟机和网络等构建模块隐藏在了 API 的后面,因此开发人员最终将承担起运维例程的责任,包括安全性、可观察性,并对所部署的代码随时待命。软件供应链的转变意味着开发人员必须养成良好的运维习惯,例如对应用程序源代码进行编排以发出日志、指标和跟踪,或扫描代码寻找漏洞。

 

在这种转型过程中,请记住在同事之间、管理链中以及与合作伙伴和供应商之间建立信任都需要花费时间。向云迁移所带来的企业文化变化通常是摩擦最严重的部分。新建项目和/或小型项目在这个过程中是很有用的:你可以快速查看结果、从错误中学习,并通过实施 DevOps 实践(如小批量工作并承诺快速反馈循环)等来逐步建立信任。

押注开源和规范

免费的开源软件作为你的库的一部分或在服务背后部署时有很多好处——重点在于你可以自己修复有问题的代码。当然,对我们大多数人来说,维护一个分支并不是完全可持续的行为,但是比起依靠供应商来处理支持案例,如果能立刻获得临时的有效缓解措施的话,生产力自然要高得多。

 

如果你选择以开放规范为构建基础(甚至可能是受互联网工程任务组、万维网联盟或云原生计算基金会等机构认可的标准),那么另外一个好处是,你可以在本地和云端使用相同的设置。对于本地设置,你可以部署开源解决方案、开/闭源混合解决方案,甚至是专有解决方案。在云中,你将使用基于开源项目或符合开放规范的托管服务。开源示例的列表几乎是无止境的,包括可观察性领域的 OpenTelemetry 和 OpenMetrics、用于定义和执行组织或监管策略的 OpenPolicyAgent、用于可移植容器包装和执行的 Open Container Initiative 映像和运行时规范,以及 Kubernetes API、Envoy xDS API 或用于容器编排和联网的 Service Mesh 接口。另外一个优点是,对于每种规范、API 和格式,通常都可以选择多个开源实现,这样就扩展了你的选择范围。

 

开放规范和开源软件还可以促进迁移本身:当你将负载从数据中心转移到云中时,你可以将升级操作系统、库和安全补丁等基础架构组件的繁重工作转移到你选择的云提供商上,从而释放资源,让你可以专注于你的核心业务和产品。

为障碍做好准备

除了所有这些优势,你自然也会面临一些挑战。我们来重点看看我在实践中目睹的两个最突出的障碍。

 

首先是开源软件不一定像企业服务那样受到良好的支持。只要觉得合适,任何人都可以使用开源软件并运行它。但如果你遇到错误,或者想要添加功能,或者想要对其进行扩展测试的时候该怎么办呢?开源软件的作者没有义务为你提供你需要的补救措施。FOSS(Free Open Source Software)中的“F”表示你被允许并鼓励使用封闭的专有软件无法执行的某些操作,但这并不意味着你将获得免费支持。相反,你可能需要向某些供应商付款才能获得支持,或者在你的团队内部加强工程能力来解决问题。

 

第二个是与社区相关的挑战:你需要在一定程度上与项目社区的步调保持一致。以 Kubernetes 的发布周期为例:Kubernetes 的小版本每三个月发布一次,结果你需要每年升级你的平台两到三次。这种升级涉及很多核心依赖项,例如群集附件、托管的应用程序,以及第三方组件(例如运行时扫描器或可观察性代理),你需要对它们都做好测试才能确保它们都可以在新版上继续工作。沃德利地图(https://en.wikipedia.org/wiki/Wardley_map)可以帮助你了解给定的 FOSS 产品及其生态系统在商品化与定制频谱之间处于哪个位置,帮助你了解随着时间的推移,与项目社区保持一致将需要花费多少精力。

 

在采用开源组件推动你的云原生之旅时,专注于更底层的容器这样的抽象,而不是更接近 PaaS 或者 FaaS 级别的抽象,这是没有错的。如果你能根据你的特定业务需求来优化负载,很可能会给你带来超越竞争对手的优势。请注意你所使用的抽象级别,并准备好处理这种抽象带来的后果,因为它可能会影响可移植性和开发人员的生产力。

让迁移物有所值

那么,如何才能到达云端呢?首先,应该将迁移视为一种组织和文化挑战,而不是技术挑战。充分利用开放规范和开源软件,将它们作为迁移策略的一部分,你就可以增强团队能力、促成必要的开发运维协作,从而更快地发布功能,并在迁移至较小的部署单元时明确责任归属。它也可以基于自助原则带来更容易(由人类)扩展的系统。只要保持对开源产品的客观认识,你就能够避开陷阱,并充分利用你手头的工具。

 

原文链接:

https://increment.com/containers/cloud-migration-and-containers/

2021-06-07 14:582214

评论

发布
暂无评论
发现更多内容

别小看 Log 日志,它难住了我们组的架构师

浅羽技术

日志 log4j slf4j logback 8月月更

如何通过OpenHarmony的音频模块实现录音变速功能?

OpenHarmony开发者

OpenHarmony

App Push 通用测试方案

转转技术团队

测试工具

AIGC:自动化内容生成,AI的下一个引爆点?

晨山资本

AI 2D 3D模型 3D点云

阿里架构师花近十年时间整理出来的Java核心知识pdf(Java岗)

退休的汤姆

Java 面经 校招 秋招 java·工程师

Alibaba最新神作!耗时182天肝出来1015页分布式全栈手册太香了

退休的汤姆

Java 程序员 分布式 面经 秋招

绿色数据中心案例介绍:阿里巴巴、华为、电信、移动……

GPU算力

2022年密码测评理论与关键技术前沿论坛|海泰方圆分享密码应用改造典型方案

电子信息发烧客

低成本、强交互、沉浸式的云游戏,究竟如何实现?

阿里云CloudImagine

视频云 云游戏

逆向工程:揭示Google Colab未公开的秘密

OneFlow

机器学习 深度学习 模型

2022 全国大学生操作系统大赛圆满落幕 龙蜥推动人才培养与产业发展深度融合

OpenAnolis小助手

开源 操作系统 龙蜥社区 设计比赛

Java基础知识总结--事务失效的12种场景

阿婷

Java 后端 事务 8月月更

升哲科技荣获2022年“中国IC设计成就奖”

SENSORO

物联网 芯片

前端的状态管理与时间旅行:San实践篇

百度Geek说

前端 JavaScrip

讲座回顾丨基于 OpenYurt 和 EdgeX 的云边端协同新可能

阿里巴巴云原生

阿里云 云原生 边缘计算

微服务全链路灰度新能力

阿里巴巴云原生

阿里云 微服务 云原生 灰度 全链路

基于 gh-ost 的在线 Schema 变更

Bytebase

MySQL 数据库

讲真,这份秋招豪礼【面试锦囊】真舍不得给你们

浅羽技术

面试 面试题 秋招 8月月更 秋招你准备的怎样了

80%Java开发者面试都问的SpringBoot你竟不会?看完这些笔记足以

退休的汤姆

Java 面经 秋招 spring、

RT-Thread记录(十五、I/O 设备模型之SPI设备)

矜辰所致

RT-Thread 8月月更 I/O设备模型

长阳土家族自治县政府与升哲科技达成战略合作

SENSORO

新基建 智慧城市 AIOT

图文详解:内存总是不够,我靠HBase说服了Leader为新项目保驾护航

浅羽技术

数据库 大数据 微服务 HBase 8月月更

合合信息对于表格识别与内容提炼技术理解及研发趋势

合合技术团队

人工智能 表格识别 合合信息

五问五答:第三方风险管理

SEAL安全

网络安全 风险管理 安全风险 软件供应链安全

开发者测评:阿里云 ACR 与其他的镜像仓库到底有什么不同?

阿里巴巴云原生

阿里云 云原生 ACR

秒合约交易APP系统开发源码搭建

开发微hkkf5566

非关系型数据库 Redis 核心内容

苏玖

数据库 nosql redis redis持久化 8月月更

秋招!面试十次字节/美团失败总结的《520道LeetCode题Java版答案》

退休的汤姆

Java 程序员 面经 Java工程师 秋招

获取IP地址的途径有哪些?要如何保护IP地址不被窃取?

郑州埃文科技

IP地址 追踪IP 保护IP

让“上链”触手可及:VoneBaaS 赋能传统应用场景

旺链科技

区块链 数字化转型 产业区块链

团队管理之不轻易责备

蛋先生DX

管理 团队 团队氛围

如何避开陷阱迈向云原生_架构_Michael Hausenblas_InfoQ精选文章