• 欢迎访问少将博客,学会感恩,乐于付出,珍惜缘份,成就彼此、推荐使用最新版火狐浏览器和Chrome浏览器访问本网站。
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏少将博客吧
  • 欢迎加博主微信:jiang_shaobo

企业级开发平台持续集成自动化架构设计

点滴 admin 3年前 (2016-08-03) 640次浏览 已收录 0个评论 扫描二维码

  在很多企业中,IT使用技术还比较落后,还没有自动化构建发布代码实现或者概念;如:多人协同开发管理,软件发布,测试都还没有形成一套自动化的解决方案,其实对于小儿精悍的团队来说,实现自动化意义非凡,可以减少工作量的同时,降低团队维护成本和事业成本,我自己就非常欣赏国外的instagram团队,下面我简单介绍一下,2012年4月10日,Facebook宣布以10亿美元收购在线照片共享服务商Instagram。你没有听错就是10亿美金,更加不可思议的是Instagram公司只有13名员工。被收购的时候真的只有13名员工并且截至2012年3月,Instragram用户已达到2700万,Facebook处于商业考虑收购了Instagram,现如今更是4亿多用户;13名员工创造的奇迹,是什么导致他们这么强大,下面是一则有关他们的小故事。

Instagram严重故障??弗吉尼亚风暴

2012年我正在波特兰享受我的三天短假,手机突然响了起来:Instagram.com崩溃了,我上网简单看了

一下发现不仅是Instagram,Netflix和其他一些网站也出现了同样的问题。我飞奔回酒店,打开电脑,

发现上面有一条来自亚马逊让人毛骨悚然的消息:一个巨大的风暴袭击了弗吉尼亚,几乎一半的服务器停

电,接下来的36小时,我们几乎要重建整个基础设施。



那时,我们整个后台团队由我、第一个工程师Shayne、刚加入Instagram一个月的Rick,用户数据没有

丢失,但是这次中断暴露出我们基础设施的自动化的不足。



这次故障纯属意外,但是为了稳定性,我们需要一个更稳定的系统提供服务。第二年,我们把所有不稳定

的脚本转移到了全自动的系统上,事实上减少了基础设施的团队成员。



产品经理心得:我很高兴我们有优秀、尽职的工程师,面对糟糕的现实,hayne 和

Rick迅速行动,堪比《火星救援》。

by 原文来自网络 -

http://www.tuicool.com/articles/fIzq6zR

   这个小故事中强调了全自动化系统的意义,我一直很钦佩这样的思想和理念,我最近刚好自己设计了一个持续集成自动化的架构,虽然离全自动化系统还很远,但是也是在打基础,什么东西都是一步步完善的,今天我打算介绍一下这套系统的一些实现细节和思考。

企业级开发平台持续集成自动化架构设计

企业级开发平台持续集成自动化架构设计(图)



   如上,我设计的这个流水线自动化系统架构图,下面我来逐一剖析各个组件的作用域。

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/

喜欢 (0)
[🍬谢谢你请我吃糖果🍬🍬~]
分享 (0)
关于作者:
少将,关注Web全栈开发、项目管理,持续不断的学习、努力成为一个更棒的开发,做最好的自己,让世界因你不同。
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址