CaaS在微服务开发运维中的最佳实践
《CaaS在微服务开发运维中的最佳实践》要点: 作者简介 李斌阿里巴巴 高级技术专家现在阿里云负责容器服务的开发,在加入阿里之前在 IBM 工作多年,主要从事企业应用以及云计算的研发和运维. 前言本文分享会有三个方面的内容:
1、单体应用和微服务1.1 什么是单体应用谈到微服务,相对应的就是单体应用,单体应用的抽象示例大家可以看这个照片. 单体应用把所有的东西放在一起,内部通过模块调用完成所有的工作.好处就是上手非常快,上手快的好处就是变现也特别快,流量上的也非常快. 慢慢你发现单体应用架构上的问题就出来了,这些问题最大的情况就是自己内部依赖特别强的情况下,升级维护都有很多的麻烦.这也是微服务需要解决的问题,这背后的原因是什么,大家可能讨论了很多. 大家也许听说过康维定律这个概念,系统的架构上和组织架构是一一映射的,你可以想象程序做得越好,公司发展越快,内部组织架构也会变化的很快,慢慢就会发生组织架构和应用架构不匹配的情况. 这种情况会引起很多麻烦.康维定律并不是有好有坏,只是一个现实,存在即合理,如果真的是想解决这个问题,就是要专业人做专业的事情. 1.2 什么是微服务有一篇文章讨论微服务相关的概念,把一个 Java 的应用当成像一个 Unix 程序一样,每个程序只做一件事情,做到最好.大的系统通过多个程序组合而成.这篇文章探讨了一个在实际项目当中怎样把一个 Java 应用做到这一点. 我的理解单体应用就是把所有的鸡蛋放在一个篮子里头,这里一个篮子就是一个进程.微服务就是把所有的鸡蛋放在所有的篮子里头,在这种情况下,微服务的好处直接解决了单体应用的问题,升级部署都会好很多. 但是问题就马上出来了,我们可以想像如果是你原来只有一个应用要维护,你的维护成本和你如果有一千个服务,一万个服务,维护的工作量差异会非常大,复杂性也非常大. 1.3 微服务神器DockerDocker 能解决很多问题,有应用分发的一致性,保证应用在中心各个环节里头可是可以都使用的. 第二个解决了隔离性的问题,如果你一个环节里头很多个应用,出现各种依赖的问题以后很难解决,你维护的恶梦就开始了,采用 Docker 技术后,一个节点可以跑多个容器,容器之间是隔离的. 容器镜像作为一个标准打包格式,能够分发,作为一种服务部署和分发模式会非常好,我们可以用 Docker 做微服务. 1.4 理想与现实这张图,我们想象的微服务像一个战队一样,星战重点描述的是驾驶员的勇气,后面有一个支撑平台,如果没有这个支撑平台,英雄就变成了无头苍蝇的一堆陨石飞来飞去. 我们在微服务的实践当中碰到了非常多的问题,怎么解决.我今天的题目就是用一个CaaS平台解决微服务在做的过程当中都有哪些事情. 1.5 微服务和Docker有人问 Docker 到底做什么,本身 Docker 是一种打包的镜像模式,并且是一种运行的方式,能够让镜像以一种标准方式在各个环节里跑,这是国外的调查,有很多公司把 Docker 作为自己云战略的核心. 另外一个就是做微服务,?Docker 和微服务之间有一些千丝万缕的联系,最后一个是 ?Devops,如果一旦有了容器了,把交付标准化了,就相当于集装箱标准化以后把物流标准化一样,这就是如果咱们要用 Docker. 2、容器即服务CaaS这是一个 CaaS 图,如果大家自己使用过 Docker 的话,可能很多人觉得这个东西上手太容易了,我们用它来解决业务问题就非常容易. 在自己的笔记本电脑上装一个 Docker 引擎,镜像拉起来应用就跑起来了,如果做一个简单的应用镜像,上手也非常容易.这会给大家造成一个很大的错觉,就是 Docker 用在生产环境里头是很容易的事情. 好多文章说 Docker ?遍地都是坑遍地都是雷,不是那么容易的事情.比如说容器的调度、控制、监控、服务发现、日志管理,甚至高可用,很多事情都要做,这实际上不是一个软件分发的机制就能解决的了. 所以 CaaS 平台出来的目标就是,CaaS 平台会让用户摆脱自己重新搭建这么一个平台的难度,让你专注于应用本身,专注于应用的发布和运行.所以这张图只是告诉大家如果一个 CaaS 平台大概会做什么事情,CaaS 平台最好的解释也是在网上大家可以看到的,就是构建,然后发布和运行. 2.1 实现Caas能提供哪些开发和运维的支持在微服务的实践当中,这个 CaaS 到底能帮助做什么?
原来的时候应用之间互相调用的话可以用一个IP地址来互相链接,但是在云上,容器启动会非常快,也会消失迁移之类的,这是一个特性,不能假定IP地址永远在那,也不能假定这个服务的实例就某个特定的实例. (编辑:ASP站长网) |