8月19日数人云Meetup上来自当当网的高洪涛老师做了《当当云原生DevOps实践》的主题分享,从应用改造入手,重点讲述了运维核心—监控的相关内容。
数人云提醒:8000字长文值得分享与收藏!
今天跟大家分享下,目前比较流行的云原生概念个人关注要点:
- 首先:在于整个应用的改造,包括Infrastructure,有12个要素
- 其次:运维的核心——监控,主要讲一下核心指标如何确定
- 第三:当当运维网络采用的Service Mesh架构相关内容
- 第四:日志的搜集等
云原生即Cloud Native,最早来源于如Landscape此类做微服务的公司,线路图包括几层:
第一层:应用的定义与开发,开发要符合云原生的标准,如何让应用在开发阶段达到此标准,是本次分享首先要探讨的内容。
第二层:编排和管理,大家对这个概念了解较多,如DCOS、Kuberentes、Mesos以及Docker Swarm,包括像Docker Conpose的一些配置化管理可能也会在编排里。
第三层:运行态,环境从外部获得相关的一些概念。
第四层:迷你环境的配置与安装,一部分人可能原来用过,最早如Puppet、Self以及最近的Ansible,此类组件都会作为这一层使用。
最底层:普通的IaaS层、包括逻辑、运营商。
若应用符合多层的规范,即可轻松的横向扩展、在不同云间做迁移,能在公有或私有云上跑,但这比较难,因为很多应用上云之前要经过改造,所以个人认为云原生本身是对架构的挑战,其让应用可以在云中间来回穿梭,而不会不适应。
上图是网上的开源图:Cloud Native Computing Foundation即常说的CNSAD,一个云原生基金会组织,其实就是一些云原生品牌大联盟,若从上到下都使用此体系,那么你也是云原生的了。
例如,最左边是语言,最顶级为GO语言,号称最适合做微服务的语言,然后是一些编排工具:持续集成工具,以及比较流行基于服务的中间件,第二层编排工具,首先是Nginx,如常用的Mesos、Nomad,中间是配置工具:Etcd、ZK,后面是一些网络服务管理,当当使用比较多的是GRPC,以及本次分享会涉及到的Linkerd,它旁边是Buoynt,也是Linkerd的开发者。
对于运行态来说,基础的运行S3较为常见,如Docker、Rkt就是运行环境的容器,云原生目前提供几个方便的如CALICQ(当当目前正在研究),OVS,再底层是构建工具:如ANSIBLE。最底层如微软的相关产品,AWS进入中国后发展也比较迅速。另外还有阿里云、京东云等类似的公有基础服务平台对外提供一些服务,供商家运行调用,以及一些边缘服务,如Splunk、如当当的Elastic流水线。
云原生应用的12条军规
前面的整套产品线用下来,即可认为应用是云原生的,而什么是云原生标准的套路呢?个人认为有12个因素,即云原生应用的12条军规,有些概念和微服务重合,但云原生的概念要大于微服务。
上图是当当目前内部运维的作业平台,整合了整个DevOps理念,有人讲DevOps时首先强调的是Developer和Operater,但我认为其核心在于测试,当当内部以测试为核心带动开发和运维,保证服务的可用性,三个团队紧密配合将整个服务推向一个稳定的局面。