Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >云原生应用程序:原因、内容及方法

云原生应用程序:原因、内容及方法

作者头像
Techeek
发布于 2018-01-10 03:27:01
发布于 2018-01-10 03:27:01
1K0
举报
文章被收录于专栏:云计算云计算

云原生是一种可以利用云计算按需分配计算能力和即用即付定价模式等优势,构建和运行应用程序的方法。这些应用程序以云计算平台快速响应特性为基础构建和部署,能够为管理者提供云平台间更高的灵活性、弹性和可移植性。

本博客阐释了构建云原生应用程序的重要性、优点及其实现方式。

原因

FANG(Facebook,Amazon,Netflix和Google)等早期技术公司在软件发布方面有着一些共同的特征。他们投入巨资以构建能够定期(每周,每天,某些情况下甚至是每小时)发布新特性的能力。他们已能够在应用程序安全可靠运行的情况下,快速发布; 从而更有效地响应客户需求。

他们通过超越特定领域的自动化,及使用有可预测功能的云原生实践,达到这种敏捷性。DevOps、持续交付、微服务和容器是云原生模式的四条主要原则。其共同目标都是通过自动化,来提高应用程序开发和运营团队的效率。

尽管在这一点上,这些技术只能在这些软件驱动的公司得到成功地证明。更小、更灵活的公司同样也意识到其价值所在。但是,乔·贝达Kubernetes创始人、Heptio CTO)却有极少数将这些理念应用到技术为中心的公司之外的例子

任何团队/公司如果想在降低风险的同时更快地发布软件,进而博得客户满意的话,都应认真考虑采用云原生的做法。

内容

云原生方式包括四个主要原则。

  • DevOps 是指软件开发人员与IT运营部门之间,为了实现软件交付和基础架构变更自动化的相互协作。
  • 持续交付 能使应用程序低风险地进行快速、可靠和频繁地发布。
  • 微服务 是指将若干通过HTTP API进行通信的小型独立服务整合到一起来构建应用程序的体系结构方法。
  • 容器 通过动态地将单个服务器划分为一个或多个独立的容器来提供轻量级的虚拟化。与标准虚拟机(VM)相比,容器更加高效、快速。在多数情况下,容器能够通过抽象去除对操作系统及底层云平台的依赖,从而提供应用程序相关依赖关系的管理及迁移的能力。

采用这些方法论有如下优点:

  1. 通过自动化实现的自我管理基础架构:云原生实践不仅是建立在虚拟化平台之上的特定自动化。而是着重于整个基础架构直至应用层的编配、管理和自动化。
  2. 可靠的基础架构和应用程序:云原生工具能确保修改、更换故障组件,乃至从意外事件和故障中更加简便。
  3. 复杂应用程序的深入理解:云原生工具为健康管理、监视及通知提供了可视化并保存检查日志,使应用程序易于检查和调试。
  4. 安全性:使开发人员在一开始就将安全性构建到应用程序中,而非事后才将其想起。
  5. 资源的有效利用:容器相比整个系统更加轻量。在容器中部署应用程序可以提高资源利用率。
  6. 在过去的几年中,随着软件团队规模不断扩大,公司需要开发的应用程序和工具规模也不断增大。微服务将大型复杂的应用程序分解成更小的部分,使其能够独立开发、测试和管理。这使得单个微服务能够在不影响程序其他部分的情况下,进行更新或回滚。而且,现在,软件团队大多呈分布式,微服务使各团队只负责其中一小块,团队间则使用服务协议作为通信层。

方法

现在,让我们来了解一下用以实现上述目标的云原生堆栈的各种构建模块。此处,我们根据针对的问题对工具和解决方案进行分组。我们从底层的基础设施层开始,然后是用于配置基础设施的工具,接着是容器运行时环境; 在此之上,是容器环境集群的管理工具,最后,是最顶层的应用程序开发工具和框架。

基础设施层:处于最底层的是基础设施层,它通常由云服务商(AWS,GCP,Azure,OpenStack,VMware)提供的计算、存储、网络和操作系统等组成。

配置层:配置层由基础设施配置、镜像管理和应用程序部署等自动化工具组成。Chef,Puppet和Ansible是配置及环境管理的DevOps工具。Spinnaker,Terraform和Cloudformation等工具提供了基础架构配置的工作流。Twistlock和Clair则能够强化容器镜像

运行时:运行时为应用程序提供了运行环境。它由包含应用程序运行所依赖的存储及网络的容器引擎组成。containerd和rkt是使用最广泛的容器引擎。Flannel和OpenContrail可以为容器提供必要的网络覆盖,以便容器之间及与外部世界的交互,而Datera,Portworx,AppOrbit等则提供必要的持久性存储,方便容器在云服务器间的迁移。

编配和管理:Kubernetes,Docker Swarm和Apache Mesos等工具对容器集群管理进行了抽象,从而简化了容器在多主机间的调度和编配。etcd和Consul为发现提供服务注册,而AVI和Envoy提供代理、负载平衡等服务。

应用程序定义和开发:我们能够为跨语言(Python,Spring / Java,Ruby,Node)的应用程序构建微服务。Packer,Habitat和Bitnami为应用程序提供镜像管理,使其能在所有基础架构(容器或其他)之上运行。

Jenkins,TravisCI,CircleCI和其他自动化构造服务器提供了建立持续集成和交付流程的能力。

所有现代监控平台,如Datadog,New Relic和AppDynamic等都支持容器和微服务的监控。

Splunk,Elasticsearch和fluentd可以帮助打包日志,而Open Tracing和Zipkin则有助于调试应用程序。

团队文化:采用云原生实践之后,团队不再相互独立地工作,团队文化也需随之改变。端到端的软件交付流程自动化只有在开发和IT运营团队与精密协作及责任共享的情况下才可能实现。

当把所有的部分整合到一起时,我们可以得到完整的云原生概况,如下所示。

我希望这篇文章能够给出一些为什么云原生是重要的、及其主要优点的想法。正如在以上信息图中您可能已经注意到的那样,有些项目、工具和公司正在试图解决类似的问题。接下来的问题可能就是:“我如何开始?哪些工具适合我?等等。我将在接下来的文章中对这些话题及其拓展进行介绍。敬请关注!

请让我们知道您在DZone上的想法,您也可以在Twitter上联系chirag_jogvelotio

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
云原生应用架构实践
推荐序一 云原生与传统云计算最大的区别在于,传统云计算关注的是如何提供性价比最高的计算、存储、网络资源,而云原生关注的是 如何让产品能够支持快速验证业务模式 如何简化复杂的开发流程、提升研发效率 如何保障产品的高可用性让业务无需承受成长之痛 如何实现大规模弹性伸缩轻松应对业务爆发 ---- 内容简介 实现云原生应用面临的功能和非功能(高性能、高可用、可扩展、安全性、高可靠等)的不同阶段需求和实现方案进行了较为完整的梳理 ---- 第1章 互联网系统架构的挑战 1.1 云应用架构技术发展 简单的云主机创建也不
yeedomliu
2021/11/02
9020
云原生与云原生应用概念解析
什么是云原生? 云原生(Cloud Native)是由 Pivotal 的Matt Stine在2013年提出的一个概念,是他多年的架构和咨询总结出来的一个思想的集合。
孙杰
2019/10/29
3.1K0
云原生架构总览
傍晚时分,你坐在屋檐下,看着天慢慢地黑下去,心里寂寞而凄凉,感到自己的生命被剥夺了。当时我是个年轻人,但我害怕这样生活下去,衰老下去。在我看来,这是比死亡更可怕的事。--------王小波
山河已无恙
2023/03/02
2.7K0
云原生架构总览
为什么自动化是在云原生时代保持应用程序安全的关键
云平台是企业构建基于DevOps的数字化转型计划的基础层,云计算环境提高了成本效率和IT灵活性,并使企业能够快速响应不断变化的市场需求。
静一
2021/07/30
4330
在云原生应用程序体系结构中需要重塑策略和授权的三种趋势
应用程序开发市场正在转向容器化的“云原生”应用程序架构,而不是单片应用程序。现在也是制定政策和授权的时候了,以提供所有现代安全策略的基础。
静一
2019/12/19
8220
什么是云原生?
近年来,随着云计算概念和技术的普及,云原生一词也越来越热门,无论是应用还是安全,凡是和云相关的,都要在云后面加上原生二字,好像不提云原生,在技术上就落后了一大截。
用户8851537
2021/08/13
9.2K0
腾讯大牛深入浅出详解云原生
| 作者:王珏,腾讯云数据库高级研发工程师,主要负责腾讯云MySQL数据库、数据库中台等研发工作。 ---- 本文介绍目前业界非常火热的“云原生(CloudNative)”相关知识结构,包括微服务、DevOps、持续交付、服务网格、Serverless等相关知识点。“云原生”通过提供一套完整的技术体系和方法论来指导我们在云环境下,在系统功能越来越复杂的情况下,还能够做到敏捷开发并保证系统可用性。 1 云原生产生背景 随着云计算平台的成熟和分布式框架的普及,应用上云已经是不可逆转的趋势,未来应用会分成两种
腾讯云数据库 TencentDB
2020/02/14
3.3K0
腾讯大牛深入浅出详解云原生
云原生十二问
云原生是在云计算环境中构建、部署和管理现代应用程序的软件方法。现代企业希望构建高度可扩展、灵活且具有弹性的应用程序,可以快速更新以满足客户需求。为此,他们使用现代工具和技术,这些工具和技术本质上支持云基础设施上的应用程序开发。这些云原生技术支持快速、频繁地更改应用程序,而不会影响服务交付,从而为采用者提供了创新的竞争优势。
WindWant
2024/01/05
2490
云原生十二问
【云原生丨主题周】云原生为何物?为何重要?
云原生是一种团队、文化和技术组织形式,利用自动化工具和架构来管理软件复杂度和加速软件交付。
博文视点Broadview
2020/06/10
3340
【云原生丨主题周】云原生为何物?为何重要?
云原生下一步的发展方向到底是什么?
最近相关部委又在密集发文指导数字化转型等相关工作,云原生架构再次成为关注焦点,援引某厂商的说法,云原生已经进入2.0时代,上云也从资源上云进一步向应用上云和业务上云升级,推动企业数字化转型和智能升级。还有一个形象的说法可以概括上述观点,云原生让企业云化从“ON Cloud”走向“IN Cloud”。
CloudBest
2022/02/10
6980
云原生下一步的发展方向到底是什么?
8 个 DevOps 自动化工具,帮你做出持续改进
在这篇文章里,我们将介绍 8 个 DevOps 自动化工具,每一家公司都需要依靠它们来获得持续改进。
lyb-geek
2021/10/27
7640
什么是云原生应用 有哪些关键点?
最近讨论云原生应用越来越多,其是指原生为在云平台上部署运行而设计开发的应用。公平的说,大多数传统的应用,不做任何改动,都是可以在云平台运行起来的,只要云平台支持这个传统应用所运行的计算机架构和操作系统
静一
2018/03/28
1.2K0
什么是云原生应用 有哪些关键点?
思科网络云原生网络功能
本文章材料来源于网络,由思科网络Cisco相关技术文档整理而成,如有侵权,联系删除
通信行业搬砖工
2023/07/09
4880
思科网络云原生网络功能
到底什么是“云原生”?
是的,作为云计算领域的一个新兴概念,云原生现在频繁出现在我们的视野中。很多互联网大咖把它奉为至宝,走到哪说到哪。
鲜枣课堂
2020/03/16
16.7K0
云原生时代,程序员应该掌握哪些能力?
云原生可以说是目前最火热的一个技术概念,它改变了我们对开发、部署和操作应用程序的思考方式。
Guide哥
2023/01/11
9950
什么是云原生?——现代软件开发方法
云原生计算利用了许多现代技术,包括:PaaS,混合云,微服务,敏捷方法论,容器,CI/CD和devops。
小诸葛
2020/05/25
2K0
什么是云原生?——现代软件开发方法
云原生到底是个啥?
随着云计算技术的发展,企业上云已成为趋势,越来越多的企业都已将应用部署到了云上。但是应用上云并不意味着就能充分利用云平台的优势。目前,大部分云化的应用,都是基于传统的软件架构来搭建的,然后再移植到云上去运行,和云平台的整合度非常低,主要表现在以下几个方面:
DevOps持续交付
2021/05/11
1K0
云原生世界里的 DevOps 编排
目录 1、概要 2、数字服务交付的三大支柱 3、动机 4、思考 5、主要参与者 6、主要收获 7、附录:企业软件交付的历史和基础架构
DevOps时代
2019/12/24
1.1K0
云原生世界里的 DevOps 编排
持续演进的云原生应用交付
云原生是指导企业应用上云的方法论和技术体系,包含应用的开发、交付、运行时等阶段, Cloud Native 可以理解为:
腾讯云 CODING
2021/07/27
8690
持续演进的云原生应用交付
关于云原生需要了解什么
尽管随处可闻云原生,却鲜少有人告诉你到底什么是云原生,若是找资料来看,读完大多会感觉云缭雾绕,一知半解,总之虚得很,甚至会让你一度怀疑自己的智商,不过我对于读不懂的文章,一律归因于文章写得不够直白,当然这不一定是事实,但这样的思考方式能让我避免陷入自我怀疑的负面情绪。
CloudBest
2019/09/19
1.1K0
关于云原生需要了解什么
相关推荐
云原生应用架构实践
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档