最高效的七个云原生开发原则

news2024/11/15 18:18:49

​Cloud native是一种软件开发方法,利用云基础架构实现更快、更可扩展的部署。云原生应用程序旨在充分利用现代化的工程实践,如自动化、托管服务和自动扩展控制。

这种模式对组织文化和工作实践也有影响。云技术应成为软件交付的重要组成部分。每个人都应该意识到云技术的可能性,以便在他们的工作中利用它们。这可以让您以比使用云作为附加设施的竞争对手更敏捷的方式运作。

本文介绍了一些原则,可以帮助你高效地构建云原生应用程序并最大化投资回报。云原生不仅仅是使用云服务,它是一种全面的软件交付方法,可以使你的组织在行业中与其他公司区别开来。

解耦服务

将系统解耦成自包含的微服务是迈向云原生的第一步。将架构分解成更小的部分意味着您可以独立扩展它们。这使得更容易应对需求的激增,而无需为已经表现良好的组件支付成本。

服务应使用定义良好的接口相互通信,这些接口封装了您应用程序的数据流。以这种方式减少组件之间的耦合可以在决定它们应该托管在哪里时提供更大的灵活性。在某些情况下,您可能会选择将应用程序分布在多个云中,以使用最优组合的功能。

将容器作为基本单元

容器化运动支撑了大多数云原生实现。容器具有固有的灵活性、可重复性和可扩展性,因此它们与云原生系统共享许多目标。

容器将应用程序的代码与其依赖项和环境要求一起打包。它们使得运行分布式应用程序实例并随着服务的增长进行扩展成为可能。添加更多容量就像启动新容器并将其链接到负载均衡器一样简单。这允许在需求增长时进行快速的增加。

让容器成为你架构的基本单元,增加了可移植性,并为你提供了额外的部署选项。你可以在任何容器运行时可用的地方启动服务,无论是在云端还是在工作站上。缩小环境之间的差距是提高操作效率的另一种有效方法。

自动化万物

对于大多数云原生架构来说,自动化是至关重要的。云原生随着自动化管理工具和方法的兴起而成长。基础设施即代码、CI/CD管道和警报解决方案提供了一种无需亲自操作云资源的方法,从而提高了系统的可靠性和一致性。

自动化流程对于整体效率有直接影响。工程师可以专注于构建新特性,而不必手动推出部署和执行服务器维护任务。

充分利用云基础设施的全部能力通常取决于良好的自动化使用。你可以根据资源消耗的变化自动扩展应用程序组件,确保即使在需求高峰时,你的服务仍保持高性能。识别可自动化的机制,然后实施相关工具,将简化你的云过程并增加吞吐量。

在意状态

云原生应用程序通常从无状态的角度进行审视。无状态应用程序更容易部署和扩展,因为它们没有与特定环境的关联。但实际上,真正无状态的系统在现实世界中很少见,大多数应用程序都需要数据库连接或某些持久文件存储。

上述分解过程可以帮助你识别和分隔有状态组件。有意识地规划状态的产生位置,使你能够对其进行有目的的管理。从大多数组件中去除状态将帮助你最大化可扩展性,在云之间分配服务时提供更多灵活性。

尽管目前越来越多的关注都在于有状态云应用上,但仍存在一些潜在的绊脚石。保护有状态数据并了解可以访问它的应用程序是一个挑战。使持久性数据在多个云环境中可用,而不打开可能使您容易受到攻击的安全边界也是一个问题。在开发早期审查这些问题可以降低系统增长时遇到的阻碍风险。

不要忘记安全性

云平台本身并不安全。托管服务通常带有糟糕的安全默认设置,可能会让您面临攻击。也可能发生简单的配置错误,例如对象存储桶上的错误安全设置可能会导致敏感文件泄漏。

在创建云资源时,您应该花时间加强它们的安全性。您可以将安全调整并入自动化的配置脚本中,以确保立即应用。定期审计资源、识别未使用的资源,并确定组织中可以与每个云服务交互的人也很重要。

安全性对效率产生影响,因为安全事件会将工程师从新开发任务中分心。为了实现最大的云效率,您需要能够自信地利用资源,同时具有威胁的清晰画面,这使您可以在保护基础架构的同时保持迭代。

构建可观察性

可观察性是云原生应用的重要组成部分。您需要了解云中正在发生什么,以便识别问题并衡量补救工作的效果。

使系统可观察远不止于简单地测量基本的硬件利用率指标,如 CPU 和内存消耗。一个可观察的应用应该能够告诉您为什么每个指标已经达到了它报告的水平。您需要设计您的系统以发出日志和跟踪,以便为您回答这些问题。

可观察性通过提供即时问题解释来增强效率。您可以直接跳到问题的根本原因,而无需手动查询系统。应用程序发出的数据应该解释错误的发生方式和原因,使您能够专注于实施缓解措施。

工作迭代化

云原生最好采用敏捷的工作实践。频繁进行小的更改比等待一个大的发布更加有效率。迭代式工作允许更早地向客户提供价值,并让你研究单个修订的效果。每次发布专注于单个更改使得可以更容易地回滚糟糕的部署。

将任务分解成更小的部分还有助于防止团队成员被压垮或过度工程化一个过大的解决方案。它还鼓励继续采用其他云原生原则,例如将组件解耦为独立的子系统。

迭代工作创建了一个建立,观察和根据反馈修改的循环。这提供了定期的机会,以了解在哪里可以更好地利用可用的云资源。

总结

云原生应用需要有意识地进行开发才能达到最佳效果。当你将服务解耦、深度集成自动化工具,并计划好可观察性和安全性时,才能达到最大效率。这些原则使你能够快速迭代新的改进,提供更多机会利用云基础设施的优势。

高效的云原生开发模型可以为你提供竞争优势,让你快速发布代码并实现最大可靠性。这意味着值得花时间分析你当前如何使用云资源以及在哪些方面可以增加或优化你的采用方式。从遗留基础架构迁移需要时间,但好处很快就能抵消一次性成本。


作者:JAMES WALKER

更多内容请关注公号“云原生数据库”

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/467012.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

迅为三星4412开发板UDP实现服务器和客户端

UDP 协议是开放式,无连接,不可靠的传输层通信协议,但它收发数据的速度相对于 TCP 快很多,常 用在传输音视频等数据量非常大的场合。 udp 网络编程只需要使用一个类 QUdpSocket。 本实验中对 QUdpSocket 的基本使用: …

选择DAO的组织结构时,应着重考虑的各个关键阶段与安全可靠性

近年来,去中心化自治组织 (Decentralized Autonomous Organizations,DAO)已成为了管理智能合约项目和社区的流行方式。简单而言,DAO是一个基于智能合约运作的数字化组织。组织内的成员可以根据对应的模型结构,做出不同的决策。虽然…

哪款蓝牙耳机学生用合适?学生党平价无线耳机推荐

近年来,蓝牙耳机凭借使用便捷,成为了许多人生活中不可或缺的一部分。不管是听歌、追剧还是玩游戏,或者运动等等,都能看到戴蓝牙耳机的人。那么,哪款蓝牙耳机适合学生用?下面,我来给大家推荐几款…

Unsupervised Learning of Depth and Ego-Motion from Video 论文精读

视频中深度和自我运动的无监督学习 摘要 我们提出了一个无监督学习框架,用于从非结构化视频序列中进行单眼深度和相机运动估计。与其他工作[10,14,16]一样,我们使用端到端的学习方法,将视图合成作为监督信号。与之前…

C++ 线程

linux使用线程 在linux使用线程可能出现,在编译时不会报错,但执行出错的问题。 undefined reference to pthread_create这是由于ubuntu平台下调用pthread_create()函数,pthread 库不是 Linux 系统默认的库,连接时需要使用静态库 …

Word转PDF:简单步骤,轻松完成!推荐两个实现的方法

随着社会的发展,PDF 文件已经成为一种非常流行的文件格式,对于一些需要对文件进行保密的企业而言,更是必不可少。在这样的大背景下,如何将 Word 文件转换为 PDF 文件呢?下面是一些简单的步骤,帮助您轻松完成…

Rust-Shyper:基于 Rust 语言的高可靠、开源嵌入式 Hypervisor

「Rust-Shyper 是北京航空航天大学计算机学院王雷教授团队设计开发的虚拟机监控器,该系统基于 Rust 语言,实现了一个高可靠、嵌入式 Hypervisor。2023 年 2 月 15 日 Rust-Shyper 正式在 openEuler 社区开源。」 项目地址:https://gitee.com…

论文阅读笔记:Hearing Lips Improving Lip Reading by Distilling Speech Recognizers

目录 论文链接 研究背景 LIBS 的整体框架 序列级知识蒸馏 上下文级知识蒸馏 最长公共子序列 (LCS) 帧级别知识蒸馏 论文链接 [1911.11502] Hearing Lips: Improving Lip Reading by Distilling Speech Recognizers (arxiv.org) 研究背景 这篇文章针对由于唇语识别动作…

【观察】解码“一网统管”:城市治理“新范式”,推动数字城市建设迈向“新高度”...

众所周知,随着城市化进程加快,大量的人员、物资、技术和信息等要素日益向城市汇聚,城市系统变得越来越复杂,随之而来的社会问题和“城市病”也层出不穷,而传统的治理模式和治理手段越来越难以胜任日益复杂城市的管理需…

深聊丨第四范式陈雨强:如何用AI大模型打开万亿规模传统软件市场?

文丨亲爱的数据 谭婧 “GPT大模型到底能不能用?用在哪里?” 这是目前中国大型企业一把手最关心的问题之一。AI大模型也被媒体称为“一把手”工程。 大型企业会非常认真地考虑大模型的应用。最近个把月,大型企业客户对大模型的热烈反应让第四范…

进程状态以及两种特殊进程

目录 进程状态1 具体状态2 进程状态的意义3 进程状态实例3.1 R&S&T认识3.2 认识Z & 僵尸进程 & 孤儿进程僵尸进程孤儿进程 进程状态 为了弄明白正在运行的进程是什么意思,我们需要知道进程的不同状态。一个进程可以有几个状态(在Linux内…

==、equals区别 | java学习笔记

做一些java基础知识的记录📕 java基本类型:byte short int long float double char boolean(指向具体的数值) java引用类型:类 接口 数组等。指向的不是具体的数值,而是指向了对象的地址。 用于判断基本类…

JavaWeb|在IDEA中创建基于Maven的Web项目| Servlet依赖|这一篇就够了(超详细)

🙈作者简介:练习时长两年半的Java up主 🙉个人主页:老茶icon 🙊 ps:点赞👍是免费的,却可以让写博客的作者开兴好久好久😎 📚系列专栏:Java全栈,计…

【c语言】详解c语言#预处理期过程 | 宏定义前言

c语言系列专栏&#xff1a; c语言之路重点知识整合 创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; 给大家跳段街舞感谢支持…

微信小程序php+python+nodejs+vue大学生心理健康测试职位推荐系统

心理测试开发使系统能够更加方便学生捷&#xff0c;同时也促使心理测试变的更加系统化、有序化。系统界面较友好&#xff0c;易于操作。具体在系统设计上&#xff0c;客户端使用微信开发者&#xff0c;后台也使用php技术在动态页面上进行了设计&#xff0c;Mysql数据库&#xf…

算法 DAY44 动态规划6 完全背包 518. 零钱兑换 II 377. 组合总和 Ⅳ

完全背包 有N件物品和一个最多能背重量为W的背包。第i件物品的重量是weight[i]&#xff0c;得到的价值是value[i] 。每件物品都有无限个&#xff08;也就是可以放入背包多次&#xff09;&#xff0c;求解将哪些物品装入背包里物品价值总和最大。 完全背包和01背包问题唯一不同…

Java每日一练(20230427)

目录 1. 螺旋矩阵 2. LRU 缓存机制 3. 解数独 &#x1f31f; 每日一练刷题专栏 &#x1f31f; Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏 1. 螺旋矩阵 给你一个 m 行 n 列的矩阵 matrix &#xff0c;请按照 顺时针螺旋顺序 &#…

Leetcode——495. 提莫攻击

&#x1f4af;&#x1f4af;欢迎来到的热爱编程的小K的Leetcode的刷题专栏 文章目录 1、题目2、题目分析3、题解代码 1、题目 题目链接&#xff1a;Leetcode——495. 提莫攻击 在《英雄联盟》的世界中&#xff0c;有一个叫 “提莫” 的英雄。他的攻击可以让敌方英雄艾希&…

国民技术N32G430开发笔记(1)-macos开发环境搭建

macos开发环境搭建 1、安装arm-none-eabi- 工具链 brew tap ArmMbed/homebrew-formulae brew install arm-none-eabi-gcc如果没有安装brew&#xff0c;请先安装brew。 2、安装vscode 3、安装pyocd a、python官网下载最新版的python b、pip3 install -U pyocd 我的开发板为N3…

Hadoop 1:Apache Hadoop、HDFS

Hadoop核心组件 Hadoop HDFS&#xff08;分布式文件存储系统&#xff09;&#xff1a;解决海量数据存储 Hadoop YARN&#xff08;集群资源管理和任务调度框架&#xff09;&#xff1a;解决资源任务调度 Hadoop MapReduce&#xff08;分布式计算框架&#xff09;&#xff1a;解决…