写点什么

为什么说微服务的运维不可缺少 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:294148
用户头像

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

关注

评论

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

第二周作业

大雄

依赖倒置

基于 Docker 实现 MySQL 主从复制

ytao

MySQL Dockerfile

第二周总结

changtai

架构师训练营第二周总结

极客大学架构师训练营

依赖倒置原则理解

Thrine

【架构师第二周】总结

浪浪

原创 | TDD工具集:JUnit、AssertJ和Mockito (二十二)编写测试-超时

编程道与术

Java 编程 TDD 单元测试 JUnit

「架构师训练营」第2周作业 - 设计原则

guoguo 👻

极客大学架构师训练营

「架构师训练营」第 2周作业

旭东(Frank)

架构 极客大学架构师训练营

Redis系列之扫盲篇(一)

z小赵

Java 分布式 高并发系统设计

程序员开发色情游戏,赴日寻找AV女优真人拍摄,结果...

程序员生活志

程序员 游戏开发

架构师训练营第二周总结:软件开发简史和框架设计的方法

hifly

设计模式 极客大学架构师训练营

Libra教程之:运行自定义move modules

程序那些事

比特币 区块链 以太坊 libra blockchain

面向对象设计原则

陈皮

听说你 ping 用的很 6 ?给我图解一下 ping 的工作原理

小林coding

面试 计算机网络 计算机基础

Libra教程之:Libra testnet使用指南

程序那些事

比特币 区块链 以太坊 libra blockchain

0616作业2

Geek_10

BAT面试题汇总:分布式+Dubbo +JVM+微服务+多线程+Spring附答案(建议收藏)

程序员生活志

Java spring 面试 分布式 mybatis

如何高效开会?

石云升

高效工作 时间管理 高效 开会

2020年6月17日 MySQL基准测试

瑞克与莫迪

架构师训练营作业 --Week2

吴炳华

极客大学架构师训练营

架构师训练营-week2命题作业

J.Smile

极客大学架构师训练营

Spring BeanPostProcessor 你不能不知道的事

CoderLi

Java spring 程序员 源码分析 后端

为什么 Vue 更符合这个时代的大势所趋

葡萄城技术团队

Vue SpreadJS

【架构师训练营】第2周总结

花生无翼

极客大学架构师训练营

架构师训练营-第二周-作业1

狂奔嘀兔纸

极客大学架构师训练营

[Redis源码阅读]redis持久化

老胡爱分享

数据库 redis 缓存 持久化

学习一下:我的学习之道

非著名程序员

学习 程序员 程序人生 提升认知

Libra教程之:来了,你最爱的Move语言

程序那些事

比特币 区块链 以太坊 libra blockchain

重学 Java 设计模式:实战代理模式「模拟mybatis-spring中定义DAO接口,使用代理类方式操作数据库原理实现场景」

小傅哥

设计模式 小傅哥 重构 代码优化

一款开源的Diffy自动化对比测试框架:超详细实战讲解

狂师

开源 测试 测试驱动开发实战营 自动化测试

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