写点什么

为什么说微服务的运维不可缺少 DevOps?

  • 2015-03-29
  • 本文字数:1349 字

    阅读完需:约 4 分钟

在最近一次 QCon 伦敦大会上,来自于英国政府电子服务(GDS)的技术架构师 Michael Brunton-Spall 表达了他对于 DevOps 模式对于成功的微服务运维的重要性的看法。Brunton-Spall 指出了识别一个微服务的关键因素,介绍了如何创建第一个微服务的过程,以及管理微服务生态系统所必不可少的工具和实践。

微服务必定是一个小型服务,并且能够自己管理数据,而不与任何类型的数据库进行集成。所有数据必须通过公开接口的方式进行共享,遵循“哑管道与智能端点”(dumb pipes / smart endpoints)的方式。每个微服务必须有一个拥有者,也只能有一个,那就是拥有这个服务全部代码与运行时的团队。Brunton-Spall 对于 Jeff Sussna 的以下观点表示同意:

微服务不仅表现出一种新型的架构模型,同样也表现出一种新型的组织模型。

这种新型的组织模型也意味着开发人员和运维的角色发生了变化,开发者将承担起微服务整个生命周期的责任,而运维则越来越多地表现出一种顾问式的角色。

Brunton-Spall 建议刚刚启动微服务的团队可以先将规模控制在较小的范围内。一个组织应当先从一个微服务开始,确保它应用了正确的支持工具与实践。这些建议使用的工具和实践也是 DevOps 社区中所讨论过的相同内容:易于使用与集成的自动化基础设施、自动部署、日志聚合和监控工具,以及良好的警报实践。

从一个微服务升级到多个微服务,将要面对一组新的挑战,它们主要是与不断增加的错误诊断的复杂度相关的。正如 Brunton-Spall 所说:

与相同规模的整体性架构相比,微服务的失败会显得更加触目惊心。

要理解在微服务之间产生的复杂交互,需要优秀的诊断与监控工具。在 QCon 伦敦大会上每一场有关于微服务的演讲中几乎都强调了监控的重要性。Brunton-Spall 特意区分了浅度监控:“我的服务运行正常吗?”,与深度监控:“我的服务与它的依赖都运行正常吗?”。虽然后者的考虑更全面,但它也可能会引起一种层叠式的警报,而使得问题的真正根源变得模糊不清。如果某个微服务被许多其它微服务引用,当它产生故障时就有可能造成以上问题。

还有两点也是在许多场合中经常强调的,一是在设计微服务时要考虑到故障的情况,二是要提供一个统一的管理界面。比方说,应该有一种通用的方式,可以触发某个微服务产生断路 TwitterServer 就为这种方式提供了一个示例。

如果你的组织中已有着完善的部署审计流程,那么就应该为开发者分配传呼机与部署机房的钥匙。传呼机能够让开发者感受到因他们自己的错误所带来的痛苦,确保了对重复性问题的快速修复。但这些对于一个成熟的支持流程来说还不够。比方说,Brunton-Spall 问道,如果开发者感到“厌倦”并选择离开,该怎么办?又或者团队解散了又该怎么办?第一线的支持与检验依然是必不可少的。需要一种成熟的支持模型对这种移交的规则进行定义,例如:“系统在 M 个星期内的错误必须小于 N,并且在移交时必须提交运行手册”。

简单的解决方案能够促成优秀的微服务运维实践。Brunton-Spall 提到了他在 The Guardian 工作时的案例,这是他在 GDS 之前所任职的公司。最初的服务器上线流程中只包含了一个基础的 Ubuntu 镜像。在上线脚本中包含了几行 bash 脚本代码,用于通过“apt-get”命令获取包。此外还有一个 wget 命令,用于下载某个 JAR 文件并开始执行。

查看英文原文 DevOps Needed for Operating Microservices

2015-03-29 06:293909
用户头像

发布了 428 篇内容, 共 189.5 次阅读, 收获喜欢 39 次。

关注

评论

发布
暂无评论
发现更多内容

基于大规模边缘计算的千万级聊天室技术实践

环信

聊天室 大规模边缘计算 千万级

滴滴前端一面常考手写面试题整理

helloworld1024fd

JavaScript 前端

从零手写react-router

helloworld1024fd

JavaScript 前端

手写一个react,看透react运行机制

goClient1992

React

顶层设计出台 浪潮云破局再生长丨与千行百业扬帆数字蓝海

云计算

从计费出账加速的设计谈周期性业务的优化思考

鲸品堂

运营商 业务流程优化 企业号 3 月 PK 榜

ChunJun 1.16 Release版本即将发布,bug 捉虫活动邀您参与!

袋鼠云数栈

应用模型开发指南上新介绍

HarmonyOS开发者

HarmonyOS

轻量易部署!Coolbpf 发布不依赖 Clang 的脚本化编程特性 lwcb | 龙蜥技术

OpenAnolis小助手

开源 rust ebpf coolbpf lwcb

从源码角度看React-Hydrate原理

flyzz177

React

【明晚直播】KunlunBase 1.1 版本发布:完善MySQL 兼容性,OLAP性能提升

KunlunBase昆仑数据库

MySQL 数据库 PgSQL 线上直播

技术写作的“坎”

码猿外

程序员 写作

从recat源码角度看setState流程

flyzz177

React

LED广告宣传车与LED流动舞台车的区别

Dylan

广告 LED 户外LED显示屏

TSBS 是什么?为什么时序数据库 TDengine 会选择它作为性能对比测试平台?

TDengine

性能测试 时序数据库 ​TDengine

如何使用C LinkSDK(4.x)快速接入阿里云物联网平台?——实践类

阿里云AIoT

阿里云 物联网 IoT

BNB Chain 2023年40佳DAPP评选,Zebec赫然在列

鳄鱼视界

深入React源码揭开渲染更新流程的面纱

goClient1992

React

云原生可观察性工具泛滥的思考

HummerCloud

云原生 可观察性

ChatGPT 爆火,社交应用如何 Get 新技能

融云 RongCloud

IM ChatGPT

京东前端二面常考手写面试题(必备)

helloworld1024fd

JavaScript 前端

基于开源IM即时通讯框架MobileIMSDK:RainbowChat-iOS端v6.2版已发布

JackJiang

网络编程 即时通讯 IM

CutLER:更好地训练无监督识别模型

Zilliz

从一次CPU打满到ReDos攻击和防范

京东科技开发者

正则表达式 Web 企业号 3 月 PK 榜 ReDoS

走进RocketMQ(三)消息存储与消费

白裤

Java RocketMQ RocketMQ消息存储 RocketMQ消息消费

假如面试官要你手写一个promise

helloworld1024fd

JavaScript 前端

Switchquery:移动端秒级配置触达平台

京东科技开发者

App 配置原理 用户触达 企业号 3 月 PK 榜

直播 | StarRocks 实战系列第三期--StarRocks 运维的那些事

StarRocks

数据库 开源 运维

极光笔记 | 极光PUSH服务助力企业提升抢单速度

极光GPTBots-极光推送

技术干货 移动推送 智能推送

深度分析React源码中的合成事件

goClient1992

React

为什么说微服务的运维不可缺少DevOps?_DevOps & 平台工程_João Miranda_InfoQ精选文章