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

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

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

原因

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

本站文章资源均来源自网络,除非特别声明,否则均不代表站方观点,并仅供查阅,不作为任何参考依据!
如有侵权请及时跟我们联系,本站将及时删除!
如遇版权问题,请查看 本站版权声明
THE END
分享
二维码
海报
云原生应用程序:原因、内容及方法
本文阐释了构建云原生应用程序的重要性、优点及其实现方式。
<<上一篇
下一篇>>