Docker支持集群分布式应用意义很重大

14-12-07 banq
                   

Docker支持集群分布式应用其实意义很重大,基本可以完全取代EJB了。

分布式从Corba 到Java的EJB再到Docker,EJB因为将分布式的特点强加入到开发中,实际是最早的DevOps雏形,但是很多人不买账,因为他们不需要分布式部署集群,放在一台服务器上即可,不愿意为了运行时的扩展性牺牲开发的便利性。

因此, Spring这样的开发框架受到普遍欢迎,但是随着的规模发展,就产生了整体性monolithic铁板一块的大的模块系统,迁一动百,而且为了维护修改某个小功能,需要重启整个开发测试发布流程,非常重量。

Node.JS代表的直接基于端口的微服务开始受到欢迎,每个微服务器其实就是相互解耦的、且是有界上下文的服务,说白了,原来一个几百行 N多个组件类的大服务切割成一个个小服务了,彼此独立维护,每个微服务是一个小组team,自己可以独立开发测试和发布,而且可以用不同语言。

但是问题又来了,微服务数量增加以后,一台服务器肯定放不下,这就需要分布式部署,当初EJB分布式集群特性被否定之否定地提高再利用了。

使用一个Docker装一个微服务,而且不管这个Docker+微服务运行在本地 还是分布式环境 还是亚马逊这样公有云上,这些对于开发都是屏蔽的,这才是好的DevOps技术,虽然运营很重要,但不能像EJB那样粗暴干涉开发,使用Docker+微服务,开发者可以不管自己的微服务运行在单机还是云平台上,运营环节只要给其微服务配置上Docker,就可以游走无阻力了。

Docker+微服务也改变了DveOps的传统开发模式,DevOps顾名思义是开发运营合并,因此造成了一个产品队伍从开发到测试 部署和运营,数据库管理员等都存在,而改变以后的产品队伍变成了:微服务团队+平台团队,平台团队负责运营 数据库管理等等,每个微服务队伍只要提交Docker+微服务即可,微服务团队和平台团队之间通过API通讯,这样做到更大的松耦合。

Docker+微服务真正让业务内容和平台设计分离,帮助有实力的公司组织走向平台运营为主的互联网经营模式。

[该贴被banq于2014-12-07 17:29修改过]

                   

2