2019独角兽企业重金招聘Python工程师标准>>>

“云原生”是用于描述基于容器的环境的术语,而Kubernetes是一个运行云原生应用程序工作负载的理想平台。

开发人员在设计云原生应用程序时,一定要牢记本文内这10个关键属性!


“云原生(Cloud Native)”是用于描述基于容器的环境的术语。云原生技术被用于开发应用程序,这些应用程序是使用容器打包的服务构建的、被部署为微服务、并通过灵活的DevOps流程和持续交付工作流在弹性基础架构上进行管理。

在运维团队手动管理传统应用程序的基础架构资源分配的情况下,云原生应用程序部署在抽象了底层计算、存储和网络原语的基础架构上。处理这种新型应用程序的开发人员和运维人员不直接与基础架构提供商公开的API交互。相反的,编排器会根据DevOps团队制定的策略自动进行资源分配。控制器和调度程序是编排引擎的基本组件,负责处理资源分配问题和应用程序的生命周期。

像Kubernetes这样的云原生平台使用扁平网络,该网络覆盖在云提供商的现有网络拓扑和原语上。类似地,本地存储层通常被抽象出来,以暴露与容器集成的逻辑卷。运维人员可以分配开发人员和资源管理员访问的存储配额和网络策略。基础架构抽象不仅解决了跨云环境的可移植性需求,还让开发人员可以利用新兴模式来构建和部署应用程序。无论基于物理服务器或虚拟机,私有云或公共云的底层基础架构如何,编排管理器都将成为部署目标。

Kubernetes是一个运行云原生应用程序工作负载的理想平台。它已经成为云的事实上的操作系统,就像Linux是底层机器的操作系统一样。只要开发人员在设计和开发软件时,遵循其作为云原生应用程序的微服务的最佳实践,DevOps团队就能够在Kubernetes中打包和部署它们。以下是开发人员在设计云原生应用程序时应牢记的云原生应用程序的10个关键属性。

1、打包为轻量级容器:云原生应用程序是打包为轻量级容器的独立自治服务的集合。与虚拟机不同,容器可以快速扩缩容。将扩展单元转移到容器,能够优化基础架构利用率。

2、使用最佳语言和框架开发:云原生应用程序的每项服务都是使用最适合该功能的语言和框架开发的。云原生应用程序是多语言的,服务会使用各种不同的语言、运行时和框架。例如,开发人员可以构建基于在Node.js中开发的WebSockets的实时流服务,同时选择Python和Flask来暴露API。开发微服务的细粒度方法使它们能够为特定任务选择最佳语言和框架。

3、设计为松耦合的微服务:属于同一应用程序的服务通过应用程序运行时来发现彼此。它们独立于其他服务而存在。正确集成时,弹性基础架构和应用程序架构可以高效地、以高性能来进行扩展。

松耦合的服务让开发人员可以在处理每个服务时都能够独立于其他服务来工作。通过这种分离,开发人员可以专注于每项服务的核心功能,以提供细粒度的功能。这种方法可以实现整个应用程序的有效生命周期管理,因为每个服务都是独立维护的,并且拥有明确的所有权。

4、以API为中心进行交互和协作:云原生服务使用轻量级API,这些API基于REST、gRPC或NATS等协议。REST通常被用作通过HTTP公开API的最低公分母。为了提高性能,gRPC通常用于服务之间的内部通信。NATS具有发布-订阅功能,可在应用程序内实现异步通信。

5、在架构中将无状态和有状态服务清晰分离:持久耐用的服务通常遵循不同的模式,以确保更高的可用性和弹性。无状态服务和有状态服务是彼此独立存在的。存储会影响容器的使用。我们必须越来越多地在有状态、无状态、微存储环境(这一点有些人可能觉得有争议)等不同语境下考虑持久性这一因素。

6、与服务器和操作系统依赖关系隔离:云原生应用程序与任何特定操作系统或单个计算机没有关联。它们在更高的抽象级别上运行。唯一的例外是微服务需要某些功能,包括固态驱动器(SSD)和图形处理单元(GPU),这些功能可能由一部分机器专门提供。

7、部署在自服务的弹性云基础架构上:云原生应用程序部署在虚拟的、共享的和弹性的基础架构上。它们可以与底层基础架构保持一致,以动态增长和缩小——根据不同的负载来自我调节。

8、通过敏捷DevOps流程进行管理:云原生应用程序的每项服务都会经历一个独立的生命周期,通过敏捷的DevOps流程进行管理。多个持续集成/持续交付(CI / CD)流水线可以协同工作以部署和管理云原生应用程序。

9、自动化功能:云原生应用程序可以高度自动化。它们与Infrastructure as Code的概念相得益彰。企业需要一定程度的自动化来管理大型和复杂的应用程序。

10、定义的、策略驱动的资源分配:最后,云原生应用程序与通过一组策略定义的治理模型一致。它们遵循CPU和存储配额以及将资源分配给服务的网络策略等策略。例如,在企业方案中,中央IT可以定义策略来为每个部门分配资源。每个部门的开发人员和DevOps团队都拥有对其资源共享的完全访问权和所有权。

转载于:https://my.oschina.net/u/3330830/blog/1922316

云原生应用的10大关键属性相关推荐

  1. 云原生应用的十大设计原则

    目录 云应用程序的十大设计原则 自我修复设计 实现全面冗余 尽量减少协调 横向扩展设计 通过分区解决限制 运营设计 使用托管服务 使用最佳的数据存储完成作业 演变设计 根据业务需求构建 越来越多的企业 ...

  2. 微软Windows帝国幕后的10大关键人物

    微软Windows帝国幕后的10大关键人物 为这篇文章评分 精彩 好帖 一般 不好 极差 0 评论 [发表人]: IT互联网 查看资料 查看贴子 私信 查看博客 查看文章 [发表时间]:2011-09 ...

  3. 悉数微软Windows帝国幕后10大关键人物(图)

    悉数微软Windows帝国幕后10大关键人物(图) 2011年09月20日 15:00 来源:凤凰网科技 作者:微软,Windows,Win8,关键人物,苹果 字号:T|T 0人参与0条评论打印转发 ...

  4. 硬核分析|腾讯云原生OS内存回收导致关键业务抖动问题

    实战系列: 精选各种常见的代表性实际问题,分享一步一步思考和解决方法,梳理整个问题脉络,可以学习到解决问题各种技巧和通用技能,锻炼解决问题思维能力,让大家成为解决问题的高手: 往期文章推荐: 一个刁钻 ...

  5. 云联壹云融合云管理平台的 10 大应用场景

    作者:高现起 随着融合云管理平台功能越来越多,不同客户使用到的功能区别很大,最近梳理了一下现有的在网客户使用情况,总结了 10 大应用场景,供大家参考. 场景1:公有云账单管理/FinOps 场景2: ...

  6. 未来五年10大关键IT趋势

    在涉及IT问题时试图保持领先,心脏不强的人可不能胜任.这一观点来自于Gartner的IT年度研讨会上由分析师David Cappuccio提出的他所谓的"不容易被IT界控制的新势力正把它们推 ...

  7. 跨平台打造移动原生应用的10大武器

    编译工具对开发者的影响是直观的,开发者使用JavaScript等语言写出应用的代码,再将它们编译成原生代码.通过原生的API,完成跨平台的操作,最终分发到本地的应用商店中.由此可见,编译工具的选择可以 ...

  8. 成功领导力的10大关键

    领导力培养顾问杰克·曾格(JackZenger)和约瑟夫·福克曼发表了他们针对领导人在现有职位上取得成功所需技能的调查结果.他们对33万个老板.同事和下属进行了调查,从16个主要领导技能中挑选出前4大 ...

  9. 云原生大爆发,Day2运营与K8s集群生命周期的交织

    嘉宾丨郭至为  整理丨张雪蕊 出品丨CSDN云原生 Wojciech Urbański指出,在当今的专业IT媒体中有一个非常突出的话题,那就是在软件生命周期中的"第0天/第1天/第2天&qu ...

最新文章

  1. HDU 1297 Children’s Queue
  2. linux系统安装细节及磁盘分区划分
  3. 2016.08.19
  4. spark 广播变量大数据_大数据处理 | Spark集群搭建及基本使用
  5. LeetCode 538. 把二叉搜索树转换为累加树
  6. 个人Androidstudio快捷键及常用设置配置
  7. 【iOS】The run destination iPhone is not valid for Running the scheme .
  8. GNU C getopt()、getopt_long() 与 getopt_long_only() 获取命令行参数
  9. 以Debug模式启动JBoss
  10. 17张程序员搞笑图片
  11. docker容器安装oracle10g
  12. iperf 服务端发送数据_iperf 流量测试
  13. matlab实现卷积编码'适合小白理解学习'
  14. css——居中对齐方法
  15. 外地人在上海浦东 身份证到期续办
  16. Unity官方录屏插件Unity Recorder的简单使用
  17. 超级好用easyexcel插件
  18. IOS实现点击软键盘的Next/Return按钮或者空白处后自动隐藏键盘
  19. 博瑞ge 加装无线 carpaly方法和效果展示
  20. NXP RT1052 eFlexPWM—灵活的增强型 PWM例程

热门文章

  1. 浮动元素会引起的问题和你的解决办法
  2. 20145223《信息安全系统设计》 实验四 驱动程序设计
  3. 系统配置文件备份比较
  4. Javascript学习7 - 脚本化浏览器窗口
  5. 函数图像轻松画:教你用永中图象
  6. 关注基于云的下一代应用开发
  7. freemarker基本语法及实例
  8. 像我这种垃圾学校出来的人...【原话,不是我编的】
  9. 作为JavaScript开发人员,这些必备的VS Code插件你都用过吗
  10. CentOS 6.x中目录结构及用途