1 运维体系
1.1 市场对运维的需求
时代发展到今天,社会的生活方式与生产方式的全面的数字化,无论是传统企业还是互联网企业,都在全面上云,这也意味着企业的关键业务乃至“身家性命”都已经全部放在 IT 系统之上,因此企业需要系统足够稳定可靠。而变化迅速的市场和激烈的竞争环境、以及监管等因素,也需要更敏捷的研发效率和应用架构来支持业务创新。所以不管是从业务需求场景还是技术趋势来说,运维体系的要求整体来讲都是要更可靠、更敏捷、 更智能。
1.2 运维核心竞争力
- 云计算的优势:可靠、弹性
- 运维的本质工作:业务稳定性、IT成本合理性
上云之后省钱省力更安全可靠,是否意味着包括运维人员会被替代?云端不需要运维?
在云时代,对运维的正确理解应该是:云不但没有消灭运维,反而是助推了运维的发展。云端基础设施的存在,可以让运维从偏硬件服务器、偏物理机房的日常繁琐工作中解脱出来,更多地基于云在软件的层面,进行部署、监控、调整。我们应从以下几个方面,提升运维的核心竞争力
观念:云提高了运维效率,改变了运维形态,不再是传统意义上的监、管、控的
运维能力:运维人员不是被替代,而是需要进一步转型提升才能够满足IT云运维的需求
工作重点:云独有的特性,带来了更多的运维工作,将更多的精力放在业务的稳定性建设上,结合公司实际情况,制定体系标准和运维流程,从闭环的角度来看待业务的全生命周期管理。
1.3 运维体系建设
从应用生命周期视角切入,了解运维体系的建设,通过划分阶段,提炼属性,理清关系,实现运维场景。
围绕着人类的生命周期,有一系列保障体系,如教育体系、职业体系、医疗体系、养老体系等。目的就是针对人生的不同阶段,提供不同形式的保障和支持,发挥价值。
回到我们运维对象的生命周期上来,我们也可以对应用的生命周期阶段进行分解,大致分为五个部分,应用的创建阶段、研发阶段、上线阶段、运行阶段和销毁阶段。
-
创建阶段:标准化体系,先标准,再固化,然后自动化。开展运维工作的过程中,持续不断地用这个思路去标准化新出现的对象。对于同一类的应用,只需要做一次标准化即可,后续完全可以形成模板固化到工具平台上。
-
研发阶段:主要是业务逻辑实现和验证的阶段,涉及到代码的提交合并、编译打包以及在不同环境下的发布部署过程,以及测试,这就是我们常说的持续集成,与线上发布形成持续交付这样一个闭环。持续交付体系是拉通运维和业务开发的关键纽带,是提升整个研发团队效率的关键部分
-
运行阶段:应用生命周期中最重要、最核心的阶段。针对业务场景及异常变化,建立一系列的保障体系
-
运营、销毁:围绕着某个应用所产生出来的基础设施、基础服务以及关联关系都要一并清理
2 云上运维
2.1 云上资源
以后,我们的代码,和我们构建的应用,将越来越多地运行在云上,我们的架构模式和思维方式,将更多地与云契合共生,因此,我们必须学习了解云。云计算发展到今天,已经不是我们想象中的只能提供 IaaS 服务的云平台了,目前各大公有云上的 PaaS 产品体系也已经非常完善。在资源配置、技术选型和架构设计等环节制定更好的方案。
2.2 云端主要运维工作
- 云端架构
云的本质是租用,根据业务需求,在成本投入与可用性之间获得一个最佳的平衡,才是你应该追求的目标。
- 监控
- 迁移:在公有云蓬勃发展之前就已经建设了自有的技术体系和架构,所以在选择上云的过程中,就需要有个过渡过程,这个过程就是混合云需求存在的应用场景
- 管理
3 云原生运维
3.1 云原生概念
云原生是一种以微服务架构、容器化、自动化管理和持续交付为核心的软件开发和部署方法。
-
相比传统架构:云原生架构在编程模型、交付方式、运维体系都产生了巨大的改变。云原生架构通过从业务代码中剥离了大量非功能性特性(如弹性、韧性、可观测性等)到 IaaS 和 PaaS 中,让业务更敏捷稳定的同时成本更低。
-
与云计算的关系:是因云而生的软件、硬件和架构,云计算的再升级,能帮助企业最大化获得云价值云
-
与容器的关系:轻量的容器与富有弹性的云计算天然契合,可以说云是容器应用的最佳载体,容器应用也非常适合在云上运行和扩展。
-
技术中立:云原生具有技术/厂商中立的特点,是避免厂商绑定的“神器”。
不同的时代、不同的话题背景和场合下,云原生其实会指代或延伸出不同的含义。常见的一种狭义的云原生定义,特指的是容器化、容器编排和微服务架构。各类厂商在宣传 Kubernetes 服务和产品时所说的“云原生”从更广义的视角来看,只要是适合在云上运行,具备和符合云上架构特点的应用,都可以说是属于“云原生”范畴。
3.2 容器技术
容器技术是一种虚拟化技术,用于在计算机系统中隔离和运行应用程序和服务。容器和虚拟机具有相似的资源隔离和分配方式,容器虚拟化了操作系统而不是硬件,更加便携和高效。
- 镜像
以镜像制作为例,展示容器技术如何将应用程序及其依赖项打包到独立的运行环境中,实现快速部署、可移植性和弹性扩展。
FROM node:14 # 指定基础镜像
ARG WORK_PATH="/hexo" # 构建参数
# 替换为阿里源并安装必要工具
RUN sed -i 's/deb.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list \
&& apt update -y && apt-get install -y curl vim telnet
# 解决vim中文乱码
RUN echo "syntax on \nset termencoding=utf-8 \nset encoding=utf8 \n setfileencodings=utf8,ucs-bom,gbk,cp936,gb2312,gb18030" >> ~/.vimrc
RUN npm install hexo-cli -g # 安装hexo框架
WORKDIR $WORK_PATH #设置工作目录
ENTRYPOINT ["docker-entrypoint.sh"]
3.3 编排及架构
每个架构模式都有其适合的场景,企业所处阶段的不同、人力资源的多寡、开发人员的技能高 低等,都会影响架构的选择。没有最好的架构,只有最适合的架构。并且架构需要持续演进, 才能够支持业务发展。
3.4 持续交付
软件交付的困难在于环境之间的差异,以及软件交付和运维人员的技能差异。为屏蔽不同环境之间的差异对交付人员造成的困扰,公司采用jira做研发流程管理,通过集成gitlab与jenkins等相关工具,实现高度自动化软件交付。将需求上线流程和流水线进行整合,基于容器进行标准化的软件交付,上线的每一阶段都经过可靠性验证,支持随时自主上线。
4 学习路径
云计算和 AI 时代,不仅是机遇也是挑战,我们必须不断地学习和提升自己的技能,保持对技术发展趋势的敏锐性有产品意识,能够将你所做的事情整理汇总起来,然后做一下流程上的串联,再把流程中每个环节步骤的功能进行详细描述,同时在梳理的过程中,将一些不合理、不规范的地方进行标准化约定根据需求,把承载了标准化和规范体系的工具平台真正落地应用起来。以下是对于运维“新手”的学习路径建议:
- 笔记:markdown笔记软件,csdn博客
- 系统管理:linux+shell
- 云计算特性:云服务器、存储、负载均衡、CDN、域名、安全组等
- 容器化和编排:docker、k8s
- CI/CD:jenkins、gitlab-ci、ansible、项目管理系统
- 监控和故障排除:prometheus,grafana,日志分析、性能调优
- 进阶:学会写代码,培养产品意识,提升技术运营意识
5 案例分享
CSDN云原生改造的实现路径:https://blog.csdn.net/foreverccc/article/details/128577339