AICon 上海站|日程100%上线,解锁Al未来! 了解详情
写点什么

企业系统稳定性建设和安全性保障该怎么做?

  • 2024-03-21
    北京
  • 本文字数:2991 字

    阅读完需:约 10 分钟

企业系统稳定性建设和安全性保障该怎么做?

系统稳定性和安全性是各个公司的技术负责人最关注的问题。但即使是像微软和 Facebook 这样国际性的大公司,也偶尔会出现系统故障,这种事一旦出现就是爆炸性的新闻。本质原因是什么呢?越复杂越精密的系统就是容易,就是比较脆弱,就是容易出故障。除了自身故障之外,还有来自外界的攻击,而被攻击的本质原因是防守一方和攻击一方在力量和难度上极度的不对称——防守的一方就是一个团队,而攻击的一方是一个产业链。

 

那要怎么做好稳定性建设和安全性建设呢?本次就整理一些专家的实战经验来传递给一线的从业人员,希望对大家的工作有借鉴作用。


故障的本质是必然性的风险加上偶然性的触发。就好比地上埋了个地雷,这是一个必然性的风险,那只要经过的人次数足够多,早晚会有人踩上这个雷。那谁踩上这个雷和什么时间踩上这个雷就是偶然性的。要想把稳定性做好,首先得减少这个风险,即预防故障。另外就是减少这个故障触发之后的影响吗,也就是减少爆炸半径。


那如何做好稳定性建设呢?主要分为两方面,故障预防(架构梳理、风险矩阵、变更预案,日常巡检和代码防御),和减少影响(全面监控、应急预案、一键逃生、故障演练,管理制度)。

 

架构梳理是稳定性建设之首,软件系统就好比一辆汽车,用先进的技术、先进的架构可以打造出一辆好车。如果用老旧的技术、老旧的架构,老旧的版本,搭的是一辆抛锚概率高的破车。在做架构设计的时候要有面向失败的思想。即使一个单元失败了,整个系统还能继续用。那这里要做到几点:高可用、高性能和高质量。高可用首先是消除单点(硬件单点、存储单点、网络单点、机房单点、依赖单点等),其次是减少冗余设计(数据冗余、计算冗余,网络冗余等)。同时还要弱化依赖,避免强依赖。对流量的管理也是必不可少的,限流、降级、熔断等等这些手段。还有容量的管理,为应对急剧增加的一些流量,要做动态扩缩容等等。高性能这方面需要则需要在数据上做索引,网络宽带要加 CDN,冷热数据要分离等。高质量的设计上要在数据技术做纵向分层,横向的要做业务分区,使得软件系统好维护,以及缩小爆炸半径。

 

灾备设计包括冷备、热备,还有数据级别容灾,包括数据集的容灾,应用级的容灾,业务级的容灾等。业务系统也要尽可能做多活,尤其异地多活,包括两地三中心,甚至于先进的做三地五中心。

 

风险矩阵,这里要梳理出所有可能出现的问题,比如说连接不上,网络断了,证书过期等也会连接不上,根据对应的故障去做预防。


变更预案,变更种类很多,有软件变更、配置变更、数据库变更、硬件变更、主机变更、网络变更等。那么变更的原则首先是尽可能在灰度环境上不要一把梭哈,然后再变更,在灰度上要做监控,有异常出现就赶快回滚。变更的流程也要严格,变更要有方案的评审,效果的验证以及业务的检查。这里强调的是变更预案,就提前把所有可能的变更对任何一个团队介绍,所有可能的变更的种类是有限的,要提前把它梳理出来,提前把预案做好,模拟预案的模板做好,然后将来做预案做的时候,可以不用依赖于做这个变更的同学的技术高低了,所以变更预案很重要。

 

日常巡检,这个概念来自于传统的航空、电力、汽车工业里的巡检机制,来保障设备系统的正常运转。计算机系统也一样需要做巡检,这里包括基础信息的巡检,比如说 CPU 的利用率、磁盘利用率、内存利用率等,以及服务器时间同步等。


代码防御,在编程的时候 Defensive Programming,就是不仅要保证自己的代码没有 bug,还要防止别人的代码没有 bug;对于每一个软件模块,不仅这个模块不要有 bug,还要防止上游的模块有 bug。异常处理怎么做呢,通过异常处理 Java try-catch,处理所有可能的错误,包括系统错误的用户错误。自愈代码,在 Coding 的过程中,在任何关键环节都要具备稳定性意识。数据校验也是很重要的,实时校验来防止 bug 发作,离线校验是为了发现脏数据。

 

全面监控是全公司的事,可能会增加上万条监控项目。包括系统监控、应用监控,还有业务监控,当然还包括终端监控。那系统监控包括主机监控,网络监控、中间件的监控以及数据监控等。应用监控项包含的目如异常总数、FullGC 次数,慢调用次数、响应时间、请求数,慢查询、慢消息等等,还有全链路监控;业务监控包括卡顿、崩溃等。


应急预案,也就是对每一个可能的故障都要提前把预案做好,否则一团混乱。在组织上明确到具体的人员,谁去通知谁?谁去协调谁,谁做决策,决策什么内容等都要提前设计好。应急的原则首先是止血,要快速的恢复业务,而不是定位根因,这是一个运维人员经常犯的一个错误。还有这个在短时间内如果不能解决问题的话,必须升级处理。另外,在不影响用户体验的前提下,要保留一部分现场和数据,便于恢复后定位分析原因。

 

一键逃生,对于阻断性的安全设备,必须提前准备好一键逃生方案,比如说防火墙、WAF、上网行为管理、SSLO 等非常重要。一旦发生故障,这种主备切换也不一定能够 100% 的成功,那这个时候必须要一键能够把设备 bypass,这些都要提前做好演练,提前做好方案,提前写好脚本,一个命令完成。故障演练,第一原则就是演练的时候不要出事,演练的目标之一就是检验预案,锻炼队伍、磨合团队。全链路压测也可以算作一种演练。


管理制度,首先要有值班机制,7* 24 小时要能够收到紧急报警。还有故障的复盘,不仅要复盘自己的故障,还要复盘其他团队的故障,也要复盘其他公司的故障,收集业界发生的所有的故障信息,然后来做复盘。


信息安全建设关于信息安全建设,这里也有五点要介绍。首先是进不来,保证黑客进不来,那首先是对 DMZ 的防护,有防火墙 + WAF + SSLO + API + APT 的组合拳。对内网的防护要有 VPN 二次认证,以及远程设备准入,还有基于身份的访问权限最小化,还有业务要做各种隔离。同时要有自己的认证系统。其次要做到能发现,就是一旦进来了你能发现,所有终端系统都装 EDR,另外内存安全,即指令序列白名单。对于员工上网要制定行为管理、DLP,严控各种敏感数据的导出,联合业务应用软件的开发部门做大量的应用系统改造,所有的系统导出都要经过严格审批。

 

另外是防泄漏,要防止终端层面的这种数据泄露,员工个人电脑首先是做 VPN 准入。还有 IM 系统改造。在个人电脑不允许下载文件。还有对数据库的防护,那么数据库要做防泄漏就要基于 AI 进行数据风险监控。还有数据加密,存储加密、传输加密使用加密隐私计算。


第四是保合规,安全方面是有各种合规要求的。首先在产品设计方面,要告知用户哪些数据会被收集使用、保护数据、授权同意等。另外像数据加密、疏密、脱敏、访问控制等等要有应急响应方案。

 

关于数据跨境传输安全合规方法案也很重要,非必要不出境,大多数跨境传输的数据是需要改造的,同时海要评估境外数据接收方是否能够承担数据管理责任。

 

最后一点是重运营。在组织方面,全公司范围内建立 CISO 体系,有事情能及时同步,安全运营有 7* 24 小时的应急响应机制,对安全事件的处理要及时止损。同时要组织公司级别的攻击演练,实战演练。培训员工制度以及安全意识提升也是必不可少的,宣发各种宣传资料。

 

活动推荐

 

InfoQ 正在筹备 2024 年 6 月 14-15 日深圳 ArchSummit 架构师峰会目前已经邀请了 CNCF、阿里云、顺丰集团、腾讯、百度等企业的专家来演讲。会议上还设置了大模型、架构升级等专题,如果你感兴趣来会议上演讲,欢迎进入 ArchSummit 会议官网,提交议题。


会议现已进入 8 折早鸟购票阶段,联系票务经理 17310043226,锁定优惠。



2024-03-21 15:0511727

评论 1 条评论

发布
用户头像
安全漏洞xz技术圈最火的事情没人关注?
防止不必要损失请紧急操作:https://mp.weixin.qq.com/s?__biz=MzU4ODc0Njk0Mg==&mid=2247486045&idx=1&sn=86906b0b10637b484ed310b64b15b5a8&chksm=fdd9538ccaaeda9affc957a4aff8c008939dd14e7021cec5049fc7c17fe5ceb102e16ee3163c&token=1424558924&lang=zh_CN#rd
2024-04-01 12:07 · 湖北
回复
没有更多了
发现更多内容

一种分表平滑扩容方案

非著名架构师

第一次作业提交

涅米丶

2021年1月初Java开发从小公司跳槽阿里制胜关键:狂刷17套大厂真题

Java架构追梦

Java 阿里巴巴 架构 面试

Android入门你值得拥有!史上最通俗计算机网络分层详解,含BATJM大厂

欢喜学安卓

android 程序员 面试 移动开发

AI无人机出手,让输电线路巡检更“聪明”!

华为云开发者联盟

华为云 modelarts 视觉处理

一字一句的让你彻底掌握JavaScript中的回调函数

华为云开发者联盟

JavaScript 大前端 同步 回调函数

Spring 源码学习 15:finishBeanFactoryInitialization(重点)

程序员小航

spring 源码

产品经理训练营第一周作业

Empty

产品经理训练营 极客大学产品经理训练营

量化交易自动炒币软件开发系统

Soul网关源码阅读(七)限流插件初探

Java 网关 限流

Task01-产品类JD对比

遠景

产品 字节跳动 产品经理 JD

Soul学习笔记---运行 soul-examples-http(二)

fightingting

Soul网关

产品经理训练营-第一周作业

羽室

产品经理训练营-第一章作业

泡面加煎蛋

【并发编程】- 内存模型篇

双木之林

并发编程

什么是产品经理?——课程总结

Deborah

花了19998买的学习教程!Android跨进程通信导论,技术详细介绍

欢喜学安卓

android 程序员 面试 移动开发

Soul 学习笔记---soul 数据同步的浅显分析(四)

fightingting

Soul网关

产品经理训练营

纳豆卡玛

求职 岗位要求 职能描述

开发实战:LocalDateTime转RFC3339格式

worry

4K高清视频下载(4K视频素材下载)图文教程

科技猫

下载器 4k高清视频下载 4k视频素材下载 8k视频下载 高清视频下载

雪天专注行路思考一则

石君

冥想 28天写作

产品经理训练营 学习起点

DB

Redis不仅仅是缓存,还是……

码农译站

数据库 redis 缓存 关系型数据库 非关系型数据库

产品0期-第一周作业

曾烧麦

产品训练营

6道tomcat面试题,最后两道难倒我了

田维常

面试

面对疫情,我们正在行动!

anyRTC开发者

uni-app android 音视频 WebRTC 在线教育

场外OTC交易APP系统软件开发

系统开发

IO系列专题分享 - 概览

公众号:程序猿成神之路

io

个人选择理财产品有哪些好方法

v16629866266

干货丨深度迁移学习方法的基本思路

博文视点Broadview

企业系统稳定性建设和安全性保障该怎么做?_框架_Xue Liang_InfoQ精选文章