在很多企业中,IT使用技术还比较落后,还没有自动化构建发布代码实现或者概念;如:多人协同开发管理,软件发布,测试都还没有形成一套自动化的解决方案,其实对于小儿精悍的团队来说,实现自动化意义非凡,可以减少工作量的同时,降低团队维护成本和事业成本,我自己就非常欣赏国外的instagram
团队,下面我简单介绍一下,2012年4月10日,Facebook宣布以10亿美元收购在线照片共享服务商Instagram。你没有听错就是10亿美金,更加不可思议的是Instagram公司只有13名员工。被收购的时候真的只有13名员工并且截至2012年3月,Instragram用户已达到2700万,Facebook处于商业考虑收购了Instagram,现如今更是4亿多用户;13名员工创造的奇迹,是什么导致他们这么强大,下面是一则有关他们的小故事。
这个小故事中强调了全自动化系统的意义,我一直很钦佩这样的思想和理念,我最近刚好自己设计了一个持续集成自动化的架构,虽然离全自动化系统还很远,但是也是在打基础,什么东西都是一步步完善的,今天我打算介绍一下这套系统的一些实现细节和思考。
企业级开发平台持续集成自动化架构设计(图)
如上,我设计的这个流水线自动化系统架构图,下面我来逐一剖析各个组件的作用域。
1、项目管理模块:包括redmine,wiki可以在gitlab发起一个新项目,并且建立wiki文档和版本功能。
2、开发环境模块:开发库和公共服务,内部私服nexus实现mvn私有仓库建设和vpn突破外网功能。
3、项目完全基于maven管理,项目管理人员发起一个项目,上传到gitlab服务器,其它开发人员通过SourceTree可视化软件拉取最新代码,按照项目分配功能完成开发,在提交到gitlab。
4、持续集成模块:当一个软件版本已经完成基本功能,软件本身测试无bug,决定发布一个bate版本,
jenkins自动化打包软件可生成二进制gz/rpm/bin包。Sonar可以对java代码进行质量管理和集成不同测试。
5、自动化部署:SaltStack自动化把rpm或者gz包发布到apache/nginx服务器,做为repo源;python脚本自动化配置所有服务器相关基础信息,包括Linux repo源。
6、Ambari通过repo源,自动化在openstack云服务器安装Hadoop集群。
7、自动化测试模块:功能测试,自动化进行相关软件功能性测试,出测试报告,自动化发出邮件。
8、自动化测试模块:性能测试,自动化完成tpcds,ycsb等主流SQL on Hadoop/SQL on NOSQL/NOSQL/NewSQL/HDFS IO等性能测试,并且自动化生产性能测试结果报告,已邮件形式发出。
9、最后经过OpenStack测试环境,预生产环境,生产环境(实体x86/PowerServer服务器)三道工序,没有任何问题,稳定性,功能测试结果都符合预期;对外发布稳定软件版本,在gitlab上面打一个tag,发布此软件的稳定版,编写release相关信息内容。
以上就是我对这个架构的一些流程说明,这套架构,可以把企业软件开发流程,像工厂一样各个环节都管理起来,方便流水线的迭代开发一个软件,并对外发布,而且所有版本,开发功能都可以追溯和还原,各个版本功能都通过可视化的软件管理,每个版本都可以查看详细内容,完成时间,一个软件的开发迭代周期。这个就是一个微缩版的Github吧,不过所有的后续流程包括测试,应用部署,生成容易管理的二进制包都是自动化完成,可以大大降低基础环境参与人员,通过OpenStack让操作系统/硬件服务器都更容易维护和使用,云端服务器的优势,随时创建销毁不需要的服务器,自动化安装各种软件和服务,都是可视化完成。
全自动的系统,事实上减少了基础设施的团队成员,自动化减少了很多重复性工作,对企业和个人都是
有非常大的好处。OpenStack|Docker|SaltStack。
今天,就写到这里,如果你想持续关注更新,自己想办法吧。。。
原创文章,转载请注明: 转载自whoami的博客 转自: http://www.itweet.cn/2016/05/05/Enterprise-Application-Development-Platform-Automatic-System/