加入收藏 | 设为首页 | 会员中心 | 我要投稿 淮安站长网 (https://www.0517zz.com.cn/)- 数据开发、人脸识别、智能机器人、图像处理、语音技术!
当前位置: 首页 > 云计算 > 正文

构建容器的七大良好实践

发布时间:2021-06-06 13:21:29 所属栏目:云计算 来源:互联网
导读:虽然容器与Kubernetes正在快速普及,但首先我们需要明确一点它们并不适合构建所有的应用程序类型。在可以与应该之间,大家需要建立起明确的区分。举例来说,构建专门在容器当中运行、并使用Kubernetes加以编排的应用程序(也被称为「云原生」开发)就与利用这
虽然容器与Kubernetes正在快速普及,但首先我们需要明确一点——它们并不适合构建所有的应用程序类型。在“可以”与“应该”之间,大家需要建立起明确的区分。举例来说,构建专门在容器当中运行、并使用Kubernetes加以编排的应用程序(也被称为「云原生」开发)就与利用这些技术管理现有单体式应用程序是有着显著区别的。
事实上,对于刚刚迈入容器领域的团队来说,构建专门用于容器及Kubernetes的全新应用程序往往是比较理想的起点。Aqua Security公司战略副总裁Rani Osnat表示,“容器以及编排技术属于用于构建、部署及运行云原生应用程序的重要工具。我个人建议刚刚开始接触容器技术的朋友们使用新的、比较简单的应用程序作为测试用例。”
关于如何运用容器与Kubernetes开发应用,我们请教了Osnat以及其他多位云原生技术专家的观点,整理出以下六项最佳实践。
 
思考并建立现代架构
正如50年前盖房子的方法和风格,与现代建筑有着显著不同,构建软件也是如此,应当尽可能使用新的工具及方法。
SADA公司CTO Miles Ward说过,“如果您打算构建一款应用,请务必采用现代方式!”Ward还指出,微服务与十二要素方法论(12-factor) 应该成为现代应用程序开发中的核心原则。
Ward提到,尽管微服务与容器技术可以良好协同,但大多数开发场景其实并不硬性需要这种匹配。“微服务也经常与Kubernetes被视为一体,但这绝非必要。单体式开发同样适用,只要保证其既可以作为单体进行部署,又可以作为同一代码库之上的不同端点进行横向扩展即可。”Ward还强调,“十二要素方法论也是如此,它当然是个良好的起点,但却不是什么不可或缺的教条。”
Osnat建议道,“为了最大程度利用容器技术,可以把我们的应用程序设计为微服务架构,确保其中单一容器进行刷新时仍可正常运行。同时,还应该进行结构化设计,以便容器镜像只代表独立发布的单元,从而实现有效的CI/CD机制。”
“现代”开发往往通过多种方式进行定义。如果要为容器及Kubernetes构建应用程序,那么就要选择合适的打包与技术部署选型。下面来看另外两个示例:
将容器镜像定义为可以独立扩展的逻辑单元: 将数据库、日志记录、监控、负载均衡以及用户会话组件实现为容器或者容器组。
考虑使用云原生API:Kubernetes拥有强大的API扩展机制。把其与容器工具相集成,可以立即使用生态系统中的现有解决方案选项,例如命令行实用程序以及身份验证等。
从软件开发的角度来看,“现代”同样是件好事。Harness公司DevOps倡导者Ravi Lachhman表示,“对于大多数现代语言及框架来说,它们最佳的特性就是可以与容器顺畅对接。就在几年之前,像Java这样还很难体现容器边界。如今,随着容器以及Kubernetes等编排工具的流行,语言及框架已经迎来了新的发展范式。”
充分发挥CI/CD与自动化的力量
自动化是容器编排体系中的一大关键特征,也几乎成为构建容器内运行的各类应用程序的核心要素。如果没有自动化,现代应用的运营负担很可能难以承受。
Brillio公司首席架构师Chander Damodaran建议道,“以自动化方式构建应用程序与服务能够显著降低风险水平。随着服务与组件数量的激增,应用及服务运营很可能成为无解的难题。”
精心设计的CI/CD管道会尽可能将自动化引入开发及部署流程中的各个阶段,这也成为当前颇为流行的一股新风潮。我们也可以通过另一种方式理解自动化的价值:它能更轻松地消除错误,特别是早期开发过程中难以避免的种种错误。
Harness公司的Lachhman指出,“使用任何新平台都需要大量的反复试验,而Kubernetes本身并不足以抵消这些试验中的潜在错误。只有建立起稳健的持续交付管道,才能真正打造出可靠、可信的标准,例如测试、安全性与变更管理策略,借此保证应用程序高效运行。”

(编辑:淮安站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读