分类目录归档:DevOps

架构师图谱·番外篇之研发效能

1. 如何理解研发效能

研发效能的完整定义应该是:团队能够持续地为用户产生有效价值的效率,包括有效性(Effectiveness)、效率(Efficiency)和可持续性(Sustainability)三个方面。简单来说,就是能否长期、高效地交付出有价值的产品。

在互联网行业内卷加剧的情况下,如何能更好的破局,而不是一味的推崇996,研发团队的效率就显得格外重要。开发流程的顺畅是生产优质软件的关键因素,只有这样才能最大程度地释放开发者的创造性和积极性,所以提高“研发效能”,我们更多的是围绕整个软件开发的生命周期,这里就不得不说一下“DevOps”和“云原生”。

2. DevOps

DevOps=Developers+Operators,字面上看,是指开发团队和运维团队一体化,通过工具辅助开发完成运维的部分工作,减少成本,尽可能地为公司创造更多价值。但是我们知道,任何一个产品或者项目从最初的需求意愿到最终的上线交付,中间不仅仅是只有开发、运维两两个角色就能完成,还包含产品、测试、QA、甚至商务、销售团队的人员共同参与才能完成。 因此在人们不断的实践过程中,DevOps逐渐扩展为整个软件研发过程的管理思想和方法论,它:​

  • 是一组过程、方法与系统的统称,包含开发、测试和运维;
  • 重视软件开发人员(Dev)和IT运维技术人员(Ops)之间沟通合作的文化、运动或惯例,改善团队之间的协作关系;
  • 用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合;
  • 透过自动化“软件交付”和“架构变更”的流程,使得构建、测试、发布软件能够更加地快捷、频繁和可靠,按时交付软件产品和服务;

DevOps在实施的过程中,往往是由最了解整个系统的开发人员来负责生命周期,包括自动化测试、线上服务观测,而传统的测试团队来为测试平台、工具提供支撑,运维(SRE)团队为运维平台、工具提供支撑。 DevOps其实就是通过打通Dev和Ops来提高研发效能,结合持续集成、持续交付、持续部署来提升交付效能。为了实现DevOps,除了团队协作、文化这些软性因素,更重要的是CI/CD流水线的建设。

2.1 CI/CD

CI/CD是指持续集成(Continuous Integration, CI)、持续交付(Continuous Delivery, … 阅读全文

容器化架构迁移升级实战

背景

我们现在主体业务已经是部署在某云上了,但整个技术体系,还是基于传统的虚拟机去承载的,由于我们产品本身的媒体属性,导致了不可避免的会经常遇到突发流量,相比与一直比较平稳的流量,这种对服务端的考验更高,核心关注点还是在怎么保障在这种时刻用户都能得到良好的体验。

另一方面,由于云平台本身的一些不可抗力因素,不能保证百分百的高可用,怎么降低单点依赖的风险,也是我们需要重点考虑的。

经过综合性的权衡,我们决定把主体业务迁移到华为云,并且优化升级原来的架构,以便更好的支撑海量用户访问。前端机也从VM过渡到docker,迁移后的整体架构图如下

各个资源的迁移过程

1. mc迁移

现在业务上使用mc只是做临时缓存,cache miss会从存储(DB、ES等)拉一份写进去,并且业内也没有比较成熟的mc存量与增量迁移方案,所以这部分数据可以忽略,等上线前,预热一部分热点数据进去。不过使用上有一些区别,原平台使用的是服务端集群,现在是客户端集群,需要建立MC连接的时候,添加所有的服务器列表以及权重。

2. mq迁移

mq主要用来解耦业务模块,生产端生产一份数据,消费端可能有多个,迁移的话,需要先配置好资源的vhost,exechange还有queue,服务端先更新配置上线,数据写入到新资源,消费端在旧资源消费完成后,切换到新资源的消费上。

3. redis迁移

redis的迁移需要区分两个场景的数据,一个是缓存数据,可以按照mc的迁移策略忽略,另一部分是持久化数据,主要是业务上的各种计数,这部分数据要求尽量精确快速的迁移到新资源,当时考虑了两种方案

  • 一种呢,是基于快照文件迁移 存量数据可以通过RDB快照,只需要原平台有备份RDB的权限,在新资源通过快照回放完成全量数据的迁移。 这种方案优点比较突出,操作简单快速,但缺点是不支持增量同步。
  • 另一种呢,基于业务迁移 首先,读
阅读全文

Nginx、FPM配置及优化

Nginx配置

nginx的配置主要分为6个区域,main(全局设置),events(工作模式),http(http服务),upstream(负载均衡),server(主机设置),location(url规则)。

main
events {

}
http {
    upstream domain {

    }
    server {
        location {

        }
    }
}

main模块

阅读全文