近些年来,软件领域发生了翻天覆地的变化。从操作系统、数据库等底层基础架构,到分布式系统、大数据、云计算、机器学习等基础领域,从单体应用、MVC、服务化,到微服务化等应用开发模式,从 IaaS、PaaS、CaaS 到 FaaS,运维技术(特别是大规模复杂分布式系统的运维)也变得越来越重要,它已成为 IT 类企业提升生产力的核心。 随着运维受到越来越多的重视,运维体系也逐步丰富,出现了 DevOps 等理念将研发、测试、运维等流程连接起来。而容器技术更是从底层重构了运维,连接了开发、测试、部署、运行和监控全流程,进一步推动了运维体系从工具化逐步往平台化、自动化和智能化方向迁移。本文将对运维技术从底层到顶层做一个彻底的梳理和盘点。 微服务 微服务是近几年提出的概念,它通过将应用解耦成多个服务的方式来改善其模块化程度,使其更容易被理解、开发、测试和部署,更适用于小团队快速迭代式协作开发。同时,每个服务也能够采用不同的技术,便于持续进化。业界前沿互联网公司都构建了微服务框架(例如基于 Spring Boot/Spring Cloud 等开源项目)来应对其业务复杂性以及快速迭代过程中的效率问题。最近,微服务配置管理、容器化部署、自动化测试、微服务治理、微服务监控、安全、故障容忍等领域也受到越来越多的关注。 SRE SRE(Site Reliability Engineering,网站可靠性工程)是来自于谷歌的一个最佳实践,它用于服务的容量规划和实施、保障服务的可靠性和性能,更多的在软件基础架构层面 构建自动化工具 来取代人工操作,从而更好地应对其业务复杂多变的需求。 DevOps & CI/CD DevOps 逐步成为软件开发的主流,容器也已在过去两年中迅速成长为 DevOps 的核心,在持续集成、持续部署和持续发布等方面也越发受到重视。随着新的 DevOps 自动化工具不断涌现、容器及其相关生态的成熟(特别是容器编排工具及其对有状态服务的支持)、微服务的广泛应用,越来越多的相关工具将会集成在持续集成过程中,同时自动化持续测试也会变得更加流行,从而更有效地控制质量、保障安全、降低成本、控制风险、提升效率,更加高效的支持复杂的大型分布式应用。 容器优化与实践 过去几年间,以 Docker 为核心的容器技术在持续进化,以其构建、分发和部署的简易性成为 IT 基础架构中的关键技术。容器技术通过标准化运行环境的方式来连接了应用的研发、测试和运维。它简单、轻量,具备很强的可移植性,能更高效的利用资源,还能够有效的解决软件依赖问题,提高研发效率,降低研发成本,因此产业界也持续通过容器来优化其软件发布流程,容器化其遗留程序。 然而,容器技术本身也面临了不少挑战。未来,在 容器标准化、容器安全、容器网络、容器存储特别是对数据库等有状态服务的支持等方面还存在很大的改进空间,容器的可管理性及易用性也需要进一步提升。 容器编排与管理 随着 Docker 等容器技术的广泛应用,容器编排和管理也受到了越来越多的关注,涌现出了诸于 Kubernetes、Apache Mesos、Docker Swarm Mode 等优秀的开源生态和解决方案。它们试图将目前 以资源为中心的管理方式过渡到以应用为中心的管理方式,并且试图对应用的基础构成组件(例如配置、服务、负载均衡等)进行标准化,从而获得更好的可管理性。随着 CaaS 的发展,私有或公有的容器云也越来越多,越来越成熟,用户体验越来越好,从而显著降低迁移成本。 然而,在大规模的实践中,在 灰度发布、资源调度、隔离性、运维监控、日志等方面仍有待进一步成熟和标准化,在跨数据中心的应用管理,混和云环境支持,跨云服务迁移,安全性等方面仍然面临着困难和挑战。 自动化运维 随着虚拟化和容器化等技术的出现,运维管理的复杂度和难度大大增加,因此必须通过专业化、标准化和流程化的手段来实现运维的自动化。业界出现了很多提升效率的自动化工具,例如 Puppet、Chef、Ansible、Saltstack 等。各大主流互联网公司也逐步 从工具自动化往一站式自动化运维管理平台的方向进行演化,从而使得能够对部署、配置、监控、告警等进行一站式处理,实现资源和流程的标准化统一化、应用运行状态可视化管理,提升运维质量,降低运维成本。 智能化运维 随着监控范围的不断扩大,其产生的数据具备多样性、多维性和非结构化等特点,并且可能同业务数据存在相关性,传统的手动分析处理方式效率低且成本高。随着大数据和人工智能的兴起,越来越多的智能分析算法也应用于运维领域,它们通过分析运维系统本身所拥有和产生的海量数据,在 问题定位、流量预测、辅助决策、智能报警和自动故障恢复 等方面发挥出较大的作用,从而进一步降低运维成本。 运维基础架构 运维基础架构涵盖网络、机器、机房、机架、存储等的管理,涉及基础资源、机架设计和交付、网络架构设计、数据架构规划、操作系统、系统软件、环境交付和机器报废替换等方向。产业界构建了 CMDB 以支持服务交付流程和相应的管理流程,也构建了相应的初始化、部署、运行、监控、日志等工具。随着虚拟化、容器化和云计算的发展,运维基础架构也从提供资源往提供能力的方向进行转变,提高应用对基础架构的透明性,进而提高基础架构的灵活性 。 数据库运维 数据库运维涉及数据库部署架构、容量规划、性能调优、数据备份和恢复、数据迁移、数据库监控审计、数据库运维管理,故障排除等一系列服务。 随着互联网更加广泛的使用,数据库运维也呈现出新的形态。近年来,在异地多活等部署模式、在线表模式变更、海量数据迁移、故障排除时,都会通过一系列的工具,来尽可能的减少数据库整体的不可用时间,从而尽可能的降低对用户的影响。同时,为了简化数据库的部署和管理,以容器化的方式来对数据库进行管理和调度 也逐步成为热点之一。最后,在智能化运维方面,通过对数据库各项指标的分析和挖掘,提供智能化的诊断方案,提前预知和管控风险,提升处理效率系统整体稳定性。 大数据运维 随着数据的快速增长,以 Hadoop 为基础的生态系统也扮演了越来越重要的角色,它涵盖离线计算、流式计算、即席查询等多种使用方式,也涌现了 Hadoop、Spark、Kafka、Hbase、Storm、Phoenix 等优秀开源项目。在大数据平台的运维中,由于涉及分布式架构、多源异构海量数据存储、数据的处理框架更为多样化和复杂化等问题,大数据的运维也变得异常复杂。 大数据运维的主要目标是提高资源利用率,降低了大数据系统的运维复杂度,提升用户友好性。其中,计算资源的统一管理和调度能力,以容器为基础的多种类型大数据系统混合部署能力,快速弹性扩缩容能力,跨数据中心容灾能力,大数据应用监控能力和快速灵活的故障定位能力也变得越来越重要。 运维监控 监控是 IT 系统运维中保障核心业务稳定可用的重要环节,它涵盖网络、主机、业务、应用、性能等方面,涉及快速的故障通知,精准的故障定位和性能分析诊断等。当前比较流行并且在业界广泛应用开源的监控软件包括 Nagios、Cacti、Zabbix、Ganglia 等。 随着应用规模的迅速扩大以及 DevOps、微服务、容器等技术的快速发展,监控也出现新的形态。产业界已经从 Nagios 风格的监控方式中演化为流式风格,通过海量监控指标的流式处理,同时通过可视化平台来实时的展示监控指标。另外,随着基础设施变得更加动态,监控不但关心单个节点的运行状态,更关心整个业务系统的健康状态,全链路追踪等技术也已经现并得到广泛应用。 运维安全 在互联网化和移动化的背景下,应用逐渐往云中迁移,传统的边界变得越来越模糊,安全也有了新的发展趋势。过去的安全技术是以防御为主,采用传统防火墙、入侵防御系统等。现在,除了对传统的安全措施进行加强之外,还会在开发流程中引入一些安全实践,包括威胁建模,自动安全扫描、安全功能性测试等,从而降低安全风险,缩短安全问题的反馈周期。同时,安全也 从事先预防转向为持续检测和快速响应,通过对攻击行为的持续检测,对安全事件进行快速响应,从而大幅降低损失。 游戏开发与运维 近年来,网络游戏的增长非常迅速,游戏开发采用通用化框架和引擎的趋势越来越明显。在游戏运维方面,除了常规的运维手段,游戏还有其自身的特点。首先,端游、页游和手游由于形式的不同, 其在联网方式、分发渠道、生命周期长短等方面存在差异,因此给 网络接入、多渠道分发、容量规划、网络延时、档案数据高可靠存取等方面的运维都带来了挑战。 其次,由于用户增长存在不可预知性,游戏运维必须具备 快速的扩缩容能力,多采用混合云或者公有云的技术架构,从而最大程度的提升其水平可扩展性。最后,在受到大规模 DDOS 异常流量攻击时,游戏运维应当 具备多级流量清洗保护机制,具备服务降级的能力,从而尽可能的保证可用性。 互联网金融与运维 近几年来,互联网金融出现了井喷式发展,Fintech 也为其注入了技术创新基因。微服务、容器化、大数据和云计算等技术为互联网金融的快速迭代提供了基础。然而,相对于目前的应用运维,互联网金融行业有其自身的特点,其在 数据留存、安全合规、防攻击能力、支付清算、金融监管、数据安全、大数据风控和高等级安全防护等方面都有较强需求甚至强制性的金融监管规范,也对互联网金融的运维提出了更高的挑战。 (刘建原创)
|