一、PaaS平台
1.PaaS平台概述
PaaS,即platform as service,翻译为:平台即服务。
PaaS是一种云服务,它提供了应用程序的开发和运行环境,借助于PaaS服务,你无须过多的考虑底层硬件,并可以方便的使用很多在构建应用时的必要服务,比如安全认证等。
PaaS 旨在支持 Web 应用程序的完整生命周期:生成、测试、部署、管理和更新。
PaaS 让你无需购买和管理软件许可证、应用程序基础结构和中间件或开发工具和其他资源,从而避免了开支和复杂操作。你管理自己开发的应用程序和服务,剩余事项一般由云服务提供商负责。
2.PaaS平台的局限性
- 主要提供应用的部署和托管;
- 支持单种开发语言和框架;
- 支持特定的服务,比如只支持某种队列等;
- 没有很好的解决常用中间件的部署问题;
- 难以解决应用和资源的隔离问题
3.Docker
可以理解为新一代的PaaS平台,Docker也被称为第三代Paas平台。
二、项目环境问题
在我们开发一个产品过程中,一般都经历这么几个过程:
首先,产品定位,收集并确定需求;其次,产品专员制作原型界面;紧接着,研发人员根据原型需求进行技术选型以及环境搭建;最后,测试通过部署上线。
在这个流程中,不同的环境部署对于项目本身的正常运行风险是未知的:
- 比如,我们经常听到的一句话是:在我本机调试是正常的啊 !
- 再如,Java开发上传文件功能,在本地开发时,使用的是window系统,而部署到测试环境时是linux系统,所以本地上传文件路径的间隔符可以是//,而在linux中执行时变成了/,会导致上传路径找不到报错,为了兼容运行环境我们只能将上传路径修改为:System.getProperty("file.separator")
- 还有,测试环境部署成功并测试通过,但将代码合并到正式版本并发布后,发现前端调用接口出现大量超时,经排查是因为生产环境系统时间为UTC时间,跟本地相差8个小时,那么又得来调整时间;
以上的简单例子无不体现不同的环境,执行相同的代码,产生的结果迥然不同,这就是环境带来的未知风险 !
除了环境不同带来的未知风险,我们还可能碰到为不同的人配置相同的开发或测试环境等等,想想就非常的烦 !!!
三、docker
1.什么是docker
引自知乎上的解释:https://www.zhihu.com/question/28300645/answer/320388231
顾名思义,Docker为集装箱,Docker在实际应用中亦起集装箱之用——将开发、运行环境打包,方便开发环境布置以及运行环境部署,可以较好地减少环境部署的时间,而且在电脑上每个Docker容器可以工作而互不影响。
与传统方式相比,它有以下优点:
①、开盒即用
Docker其实就像一份外卖,你拿来就可以直接食用,不需要特别的加工,可以节省大量的时间,而实际上这也是环境部署问题,传统的常见解决方案还为VM(Virtual machine,虚拟机)。
②、运行效率高
和其他解决方案相比,Docker像穿着薄手套吃炸鸡,其他则是像穿着厚手套吃炸鸡。虽然能达到一样的效果,但是却能更为方便快捷。
VM有着一个较为致命的缺点,那就是虚拟机需要将系统内核进行虚拟,往往需要消耗大量的资源。而在Docker中则相反,你能想象树莓派2上能运行2499个Docker容器吗?
不过安全性问题的确存在,在目前情况下,亚马逊(没记错吧)的解决方案是每个虚拟机中单独运行一个Docker,以保证环境安全性。
③、环境独立
这儿又可以拿集装箱类比了,在集装箱里,每个箱子可以放的东西相互独立,互不影响。就算你装一箱子毛线和一箱子猫,猫也弄不乱另一个箱子的毛线。
如同VM,在同一台计算机中,可以运行多个Docker,它们互不影响,独立工作。
④、可二次开发
就和大多数饭店都是买东西来加工一样,使用Docker可以让你拿别人做的半成品进一步加工,进而得出你需要成品。当然,你的成品也可以自己使用,或交由他人进一步加工。
在Docker中,每个人都可以将别人做好的image(镜像,只读)拿来进一步配置,进而得到自己所需要的环境(Docker官网上也会提供很多image的),也可以将自己配置好的环境封装成image发布交由他人使用。
⑤、可快速配置
如同各种傻瓜相机,稍微调节就可一键操作,省时省力(虽然傻瓜相机效果没那么好,但在Docker中并不会影响实际效果)。
通过Dockerfile可以快速生成所需环境,配置极其方便。
⑥、自带分布式集群管理
一个专业知识再强的工程师,在实际建筑时效率也比不上一群民工(并没有贬低之意)。
自带分布式集群可以通过分布式计算提高总的运算能力,亦可用于负载均衡。
- Web 应用的自动化打包和发布。
- 自动化测试和持续集成、发布。
- 在服务型环境中部署和调整数据库或其他的后台应用。
- 从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境。