前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >云原生应用程序:为什么,是什么和如何做

云原生应用程序:为什么,是什么和如何做

作者头像
厚厚墩儿
发布2018-01-10 15:33:48
1.9K0
发布2018-01-10 15:33:48

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

本博客解释了构建云原生应用程序的重要性、好处以及实现路径。

为什么?

FANG(Facebook,Amazon,Netflix和Google)等早期技术采纳者在输送软件方面有一些共同点。他们在建设能力上投入巨资,使得他们能够定期发布新的功能(每周,每天,甚至在某些情况下可达到每小时)。他们已经实现了这种快速发布的节奏,同时支持其应用安全可靠地运行; 从而使他们能够更有效地回应客户的需求。

他们通过超越专门的自动化,并提供云原生实践来交付这些可预测的能力,实现了这种敏捷性。DevOps,持续交付,微服务和容器形成了云原生模式的四条主要原则。这四条原则有共同的总体目标,即通过自动化使应用程序开发和团队运营更高效。

从这点来看,这些技术只在软件驱动的公司才能得到成功的证明。更小,更灵活的公司也能通过这点实现价值。然而,就像 乔·贝达 (Kubernetes的创始人、 Heptio的CTO),也有极 少数的例子 被应用这些技术为中心的公司超出这个理念。

任何团队/公司在输送产品时都应该认真考虑采用云本身的做法,如果他们想要更快地输送软件,同时降低风险,并转而取悦他们的客户

是什么?

云本地实践包括四个主要原则。

  • DevOps 是软件开发人员和IT运营部门之间完成协作的方式,旨在实现软件交付和基础架构变更的自动化。
  • 持续交付 使应用程序能够快速,可靠和频繁地发布,并让风险最小。
  • 微服务 是一种构建应用程序的体系结构方法,可以作为独立运行的小型独立服务的集合,并通过HTTP API进行通信。
  • 容器 通过动态地将单个服务器划分为一个或多个独立容器来提供轻量级的虚拟化。与标准虚拟机(VMs)相比,容器提供了更高的效率和速度。容器提供了在许多情况下管理和迁移应用程序以及应用程序的依赖关系,同时抽象出操作系统和底层云平台的能力。

采用这些方法可以获得的好处包括:

  1. 通过自动化自我管理基础架构:云原生实践不仅仅是建立在虚拟化平台之上的特定自动化。而是着重于整个基础架构的编排,管理和自动化,直至应用层。
  2. 可靠的基础架构和应用程序:云原生操作确保了处理客户流失,更换故障组件更容易,甚至确保了从意外事件和故障中恢复更容易。
  3. 复杂应用程序的深入了解:云原生工具为健康管理,监视和通知提供了可视化,并使用审计日志使应用程序易于审计和调试。
  4. 安全性:使开发人员能够从一开始就将安全性构建到应用程序中,而不是事后才想到的。
  5. 更有效地利用资源:容器的比重相比整个系统来说较轻。在容器中部署应用程序会使资源利用率提高。
  6. 过去几年,软件团队规模不断扩大,公司建立与成长需要的应用程序和工具数量也随之增长。 微服务将大型复杂的应用程序分解成更小的部分,以便可以独立开发,测试和管理它们。这使得单个微服务可以被更新或回退,而不会影响应用程序的其他部分。而且,现在,软件团队是分散的,以服务契约充当通信层,使得每个团队都能拥有一小块微服务。

如何做?

现在,让我们看一下云本地堆栈的各种构建块,以帮助实现上述目标。在这里,我们根据工具和解决方案解决的问题不同对它们进行分组。我们从底层的基础设施层开始,然后是用于配置基础设施的工具,紧跟着是容器运行环境; 在此之上,我们有容器环境的管理集群工具,且在最顶层,我们有开发应用程序的工具和框架。

基础设施:最底层是基础设施层,它通常提供由云(AWS,GCP,Azure,OpenStack,VMware)带有的计算,存储,网络和操作系统。

供应:供应层由辅助供应的基础设施,管理图像和部署应用程序的自动化工具组成。Chef,Puppet和Ansible是DevOps工具,可以有能力管理其配置和环境。Spinnaker,Terraform和Cloudformation提供工作流以配置基础架构。Twistlock和Clair提供了硬化容器图像的能力。

运行:runtime提供应用程序运行的环境。它由应用程序与相关的存储、网络一起运行的容器引擎组成。containerd和rkt是使用最广泛的容器引擎。Flannel和OpenContrail为容器提供必要的覆盖网络,以便彼此之间、和外部世界都能进行交互,与此同时,Datera,Portworx,AppOrbit等可以提供必要的持久性存储,使得容器可以轻松移动到云端。

编排和管理:像Kubernetes,Docker Swarm和Apache Mesos这样的工具抽象了管理容器集群,这允许在多个主机之间轻松地调度和编排容器。etcd和Consul为发现提供服务注册,而AVI和特使提供代理,负载均衡等服务。

应用程序定义和开发:我们可以为跨多种语言的应用程序(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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 为什么?
  • 是什么?
  • 如何做?
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档