创业公司自动化上线的架构设计

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 创业公司自动化上线的架构设计

导语:

晚上听了58沈剑老师的自动化上线的课程的一些分享,记录下笔记和一些思考,这要是讲了从创业公司的手动发布到自动化发布的架构和设计。

1.起源

问题的提出:如何把新系统发布到线上?

不同公司的阶段有着不同的策略和方式如下图:

对于创业公公司来说对于研发工程师往往是多面手,很多时候部署就是自己操作的。
发布代码非常繁琐和麻烦,工程师会花费大量的时间在这些重复性的劳动上面。这里就是问题的所在,
应该解放工程师去做更多有意义的事情,从重复性劳动中解脱出来。

2.创业公司会遇到的困难

困难如下图:

创业公司可能技术栈比较单一,语言这方面不会太多,但是沈老师说的领导不重视这一点倒是很有可能发生。
上头只看结果,不在意系统发布怎么快怎么优化,这时候应该负责任把方案拿出来,说可以用很少的时间,很大的提高
研发的开发效率,这个时候可能才会比较容易争取到上司的同意和资源协调。
具体可以列举的理由(自动化发布要实现的功能):
1.解决大部分需求
2.支持多语言
3.支持多类型上线:web,service
4.支持多框架上线
5.可以定制化
6.能够快速落地

3.自动化上线实践

3.1 抽象集群:
前提需要抽象集群,集群是保证高可用的基础

3.2 集群信息:
例如:一个用户服务集群有哪些信息?

属性 作用
集群名称:user.service 唯一标识,上下游调用
ip列表:ip1,ip2,ip3 上下游调用
二进制目录:/user.service/bin 自动化备份&发布
配置目录:/user.service/conf 自动化备份&发布
日志目录:/user.service/log 自动化日志备份&清理
负责人列表:shenjian,zhangsan,lisi 报错后发送信息告知到责任人

3.2.1 集群信息的作用
a.上下游调用:
举例:web-X调用user.service会用到哪些信息?
上下游调用会用到的集群信息:
service.name:user.service
service.ip.list:ip1,ip2,ip3
service.port:8080
(这些信息保存在web-X.config)

上下游调用过程:
web-X启动
web-X读取服务器ip列表和端口
web-X初始化服务连接池
web-X拿取连接,进行rpc接口调用

b.自动备份二进制文件
举例:自动化备份会用到哪些信息?
自动化备份会用到的集群信息:
service.name:user.service
service.ip.list:ip1,ip2,ip3
bin.path: /user.service/bin
(这些信息保存在backup.user.service.config)

自动化备份的过程:
1.依次轮询每个ip
2.建立相关备份目录
3.把二进制复制到备份目录下

3.2.2 集群信息的维护
集群信息的维护分为两种,分散式和集中式。如图:

集中式集群配置,是自动化上线的基石。
集中式发展:全局的配置文件->配置服务->配置中心

4.抽象自动化上线过程

过程抽象如图:

每个集群增加一个cluster.type集群类型,用来标识集群是干嘛的。
比如分三级cluster.type=Java.web.SpringMVC
第一级是标识语言种类
第二级是标识是web还是service的类型
第三级是标识使用的是什么框架(不同的框架发布方式不一样 )

4.1 集群自动初始化化举例

Java.web.Spring: 部署tomcat,部署相关库,建立规范的目录结构
Java.service.dubbo: 部署容器,部署相关库,建立规范的目录结构
C++.service.sofa: 部署相关库,建立规范目录结构
PHP.web.zend:...

综上所述,每个集群的类型有着固定的初始化过程。

4.2 规范目录结构
规范目录结构很重要,只有规范好固定的结构,才能写对应的脚本去做出相应的处理。
如图:

4.3 日志规范
日志规范是日志自动化监控/备份/清理的基础
如图:

4.4 集群的构建+打包自动化举例

PHP:copy+tar相关代码
Java:Maven
C++:Make

4.5 集群发布自动化举例
以java.web.DWF,如图:

4.6 回顾整个流程
如图:

4.7 自动化到平台化
如图:

5.架构思路和总结

架构思路:

**1.中心化管理:保证数据一致
2.抽象:提供共性的地方,尽量通用
3.分解:整理很复杂,分支很简单
4.可扩展:通过service_type保持个性可扩展**

总结:

**1.架构设计,讲究抽象,将复杂的问题透析成简单的问题
2.统一规范很重要,只有大家都统一了规范(日志规范,代码规范,目录规范...),才能做更多的事情,比如就像今天说的自动化发布,如果不规范统一,
就很难自动化,因为个性的东西太多了没法用通用的手段去处理。
3.实现步骤要一步步来,人肉->自动化->平台化,不是一蹴而就的,要对应公司目前的发展一步步来,找到最适合自己公司业务发展的方式。**

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
4月前
|
运维 监控 Cloud Native
自动化运维的魔法书云原生之旅:从容器化到微服务架构的演变
【8月更文挑战第29天】本文将带你领略自动化运维的魅力,从脚本编写到工具应用,我们将一起探索如何通过技术提升效率和稳定性。你将学会如何让服务器自主完成更新、监控和故障修复,仿佛拥有了一本能够自动翻页的魔法书。
|
8天前
|
Serverless 决策智能 UED
构建全天候自动化智能导购助手:从部署者的视角审视Multi-Agent架构解决方案
在构建基于多代理系统(Multi-Agent System, MAS)的智能导购助手过程中,作为部署者,我体验到了从初步接触到深入理解再到实际应用的一系列步骤。整个部署过程得到了充分的引导和支持,文档详尽全面,使得部署顺利完成,未遇到明显的报错或异常情况。尽管初次尝试时对某些复杂配置环节需反复确认,但整体流程顺畅。
|
1月前
|
运维 监控 安全
自动化运维的利剑:Ansible在现代IT架构中的应用
在数字化浪潮中,企业对IT系统的敏捷性和可靠性要求日益提高。Ansible,一种简单但强大的自动化运维工具,正成为现代IT架构中不可或缺的一部分。它通过声明式编程语言YAM,简化了系统配置、应用部署和任务自动化的过程,显著提升了运维效率和准确性。本文将深入探讨Ansible的核心特性、应用场景以及如何有效整合进现有IT环境,为读者揭示其在自动化运维中的实用价值和未来发展潜力。
|
1月前
|
关系型数据库 MySQL Java
【Docker最新版教程】一文带你快速入门Docker常见用法,实现容器编排和自动化部署上线项目
Docker快速入门到项目部署,MySQL部署+Nginx部署+docker自定义镜像+docker网络+DockerCompose项目实战一文搞定!
|
1月前
|
运维 Devops 应用服务中间件
自动化运维的利剑:Ansible在现代IT架构中的应用
【10月更文挑战第42天】本文旨在揭示自动化运维工具Ansible如何革新现代IT架构,通过简化配置管理和部署流程,提升效率和可靠性。我们将探索Ansible的核心功能、语言特性以及其在DevOps文化中的角色。文章还将展示如何借助Ansible构建模块化和可重用的配置代码,实现快速迭代与部署,并确保系统一致性。通过阅读本文,运维人员将了解如何利用Ansible优化日常任务,加速产品上线速度,同时提高系统的稳健性。
42 5
|
5月前
|
机器学习/深度学习 人工智能 运维
自动化运维在现代IT架构中的关键角色
【7月更文挑战第8天】随着技术的快速发展,自动化运维成为企业追求高效、稳定IT服务的重要策略。本文将探讨自动化运维如何优化工作流程、提升系统稳定性和安全性,以及它在现代IT架构中不可或缺的地位。
56 1
|
4月前
|
运维 应用服务中间件 网络安全
自动化运维的新篇章:Ansible在现代IT架构中的应用与实践
【8月更文挑战第30天】随着信息技术的飞速发展,企业对运维效率和可靠性的要求日益增高。传统的手动运维方式已难以应对复杂多变的IT环境,自动化运维因此成为行业新宠。本文将深入探讨Ansible这一流行的自动化工具,如何通过其简洁的配置管理和强大的多节点部署能力,助力现代IT架构实现高效、可靠的运维管理。我们将从Ansible的核心概念入手,逐步解析其在配置管理、任务执行、应用部署等方面的实战应用,并结合代码示例,展示如何利用Ansible简化日常运维工作,提升运维质量和效率。无论你是运维新手还是资深专家,这篇文章都将为你提供宝贵的洞见和实操技巧。
|
4月前
|
运维 Cloud Native 持续交付
"揭秘云原生技术:从容器化到微服务,自动化运维如何重塑未来应用架构?悬念重重,等你来探!"
【8月更文挑战第21天】随着云计算的迅猛发展,云原生技术作为设计云应用的最佳实践,正驱动企业数字化转型。本文解析云原生技术概念与特性,通过容器化(如Docker)、微服务架构(如Spring Boot)、自动化运维(如Jenkins)及持续交付等关键领域,并辅以代码实例,探讨云原生在电商等行业的应用,展现其如何助力企业实现高效、灵活与可靠的系统构建,促进业务增长。
85 0
|
5月前
|
运维 分布式计算 大数据
自动化运维的利剑:Ansible在现代IT架构中的应用
【7月更文挑战第16天】本文深入探讨了Ansible作为自动化运维工具的核心价值及其在现代IT架构中的多维度应用。我们将通过具体案例分析,揭示Ansible如何优化IT运维流程、提升工作效率,并讨论其在云环境、容器化及大数据处理等领域的创新应用。文章旨在为读者提供一套实用的Ansible应用策略,助力企业构建更加高效、稳定的IT运维体系。
|
5月前
|
弹性计算 运维 Kubernetes
自动化运维的新篇章:容器编排与微服务架构
【7月更文挑战第14天】在数字化转型的浪潮中,企业对运维效率和系统可靠性的需求日益增长。本文深入探讨了自动化运维的最新趋势——容器编排和微服务架构,并阐述了如何通过这些技术提升运维效率、降低系统复杂性以及提高服务的可用性和可扩展性。文章不仅介绍了相关技术和工具的选择,还提供了实际案例分析,旨在为读者提供一套完整的解决方案框架,以适应快速变化的市场需求。

热门文章

最新文章