任何开发语言和开发工具,都是为了“顺利交付项目”这个目标努力的,DevOps实际上也是。DevOps打破了开发、运维各自为战的局面,使项目更高效地交付,更平滑地维护。
我的公司是做SaaS电商平台的,平台是基于Spring Cloud Alibaba生态打造的微服务。微服务顾名思义就是将单个应用拆分为多个可部署的、小型的、独立的服务。服务拆分的越多,部署起来就越麻烦,单靠人工去做运维部署,估计来一个就会跑一个,自动化迫在眉睫。
我的公司是初创公司,资金和人手方面都严重不足,所以在技术选型的时候一定要慎重!慎重!再慎重!!!高大尚固然好,但出于资金和开发者技术水平的考虑不一定合适。综合多方面,我的最终选型基本都是免费且易用的,花钱少和易上手两大优势就足以让老板与研发团队都点头同意。
DevOps要打通开发、运维两大体系,首先就是开发。开发体系中最头疼的就是代码管理了。开发者性格迥异,编码习惯各不相同,水平也是参差不齐,提交的代码更是五花八门,其实这不是最头疼的,最头疼的是代码冲突,合并代码真的是一项考验耐力和眼力的工作,稍有不慎多加1个字母,可能你的周末就要泡汤了。这里我们要做的不是统一开发者的编码习惯,因为这根本就不可能,所以我们要统一开发工具格式化代码插件并要求开发者提交代码前一定要格式化代码,这样提交的代码格式就会统一,可以大大减少冲突发生的几率。提交代码一定会用到代码仓库,国内有很多线上免费的都可以使用,比如码云,但我还是觉得自建一个代码仓库比较好,因为贵重物品还是放在自家比较安全,放在别人家,万一哪天人家心情不好不给你了,你该怎么办?所以我的代码仓库选型是Gitea,因为它很轻,且满足了日常所需的所有功能,感兴趣的可以看一下Gitea横向对比。
到了DevOps最精彩的环节,持续交付,这个词应该都不陌生,简单点说就是自动打包部署。我的持续交付选型Jenkins,Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成,这是百度百科给出的解释,很明确。在Jenkins前我又加一层,这一层就是代码质量检测SonarQube,SonarQube是管理代码质量一个开放平台,可以快速的定位代码中潜在的或者明显的错误。SonarQube+Jenkins持续交付平台搭建完成,这个平台可以有效减少开发人员与运维人员之间不必要的交流(交流过多可能会产生矛盾)。
在云服务盛行的当下,很多公司的基础设施都会选择建在云上,云服务+DevOps说不定会给你带来意外的惊喜。