写点什么

DevOps 能力是落地微服务的前提

  • 2017-02-05
  • 本文字数:1131 字

    阅读完需:约 4 分钟

在软件开发领域不存在银弹,当用一项新的技术或新的架构时一定要明白其背后的原理,确保把合适的技术应用在合适的项目上,而不是盲目跟风。

单体应用伸缩性差,而且随着应用规模的扩大,业务逻辑和开发部署过程都变得极其复杂。牵一发而动全身,任何一个微小的改动都有可能影响整个应用,新技术的更新换代对于单体应用来说几乎是个不可能的任务。

相比单体应用,微服务灵活自由,伸缩性强,近年来深受软件开发者的热捧。不过,微服务虽然没有了单体应用的某些局限,但却对开发运维和整个组织提出了更高的要求。在采用微服务架构之前开发者要先想清楚自己的项目是否适合采用微服务架构,以及是否有足够的能力运维一个微服务生态系统。

微服务概念的提出者 Martin Fowler 其实在很早之前就说明了使用微服务需要具备的三个核心能力,分别是服务器的快速扩容、监控和应用的快速部署。下面是具体介绍。

硬件资源是否能够快速到位

为了避免资源竞争和服务间的相互影响,微服务一般是部署在单独的硬件资源上。当有新的微服务加入系统,或者需要对微服务进行伸缩时,必需能足够快地为其准备相应的硬件资源。如果使用了云服务,在获取新资源时会相对容易一些。但在没有云服务的情况下,那么至少需要有一个自动化或者半自动化的系统能够满足快速分配资源的需求。

是否具备了微服务监控能力

微服务生态系统可能会很庞大,服务间相互依赖,个体微服务的可用性会影响整个系统的可用性。对微服务进行监控可以及时地发现微服务的运行状况,如果有些服务出现故障(可能有些在测试阶段没有被测出来的缺陷进入了生产环境),需要及时回滚到之前的稳定版本,避免对系统的整体可用性造成影响。

是否具有快速的开发部署流程

微服务变化很快,一个微服务在一天之内可能需要部署多次,因此需要一个快速的开发、部署以及测试流程。可以在整个流程中引入部署管道,部署管道规定了一系列严格的自动化部署过程,可以加快部署的速度。

微服务系统通常涉及多个团队之间的合作,除了开发团队之间的合作之外,还有开发团队和运维团队之间的合作。运维团队需要保证开发团队能够活得足够的资源,当发生问题时,运维团队能够快速向开发团队暴露问题,开发团队能够及时地解决问题。 DevOps 是开发和运维之间的粘合剂,可以促进团队之间的合作。

微服务系统比我们想象的要复杂得多。微服务给我们带来了诸多好处,同时也对我们提出了更高的要求。必要的时候,我们需要通过调整组织结构来更好地支持微服务系统的发展。所以在转向微服务架构时,需要先考虑好这些问题,并想清楚微服务是否真的适合自己。


感谢郭蕾对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2017-02-05 18:005894
用户头像

发布了 322 篇内容, 共 140.0 次阅读, 收获喜欢 145 次。

关注

评论

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

玩一玩Linux常见命令第二篇

程序员的时光

程序员 28天写作

项目管理系列(2)-如何写好一份报告

Ian哥

项目管理 28天写作

欢迎来到机器人的打工时代「幻想短篇 6/28」

道伟

28天写作

生产环境全链路压测建设历程 28:FAQ 之 混沌工程

数列科技杨德华

28天写作

不要用+""代替强转

BerryMew

RocketMQ中的事务消息

废材姑娘

RocketMQ

Spring 源码学习 14:initApplicationEventMulticaster、onRefresh 和 registerListeners

程序员小航

spring 源码 源码阅读

《适用于初学者的Python》

计算机与AI

pub哥的2020文章清单

JavaPub

Java javapub

大流量场景下如何云淡风轻地进行线上发布?

阿里巴巴中间件

Docker真的被Kubernetes放弃了吗?

蔡超

Docker Kubernetes 云原生

【计算机内功修炼】五:从小白到高手,你需要理解同步与异步

码农的荒岛求生

异步 同步 回调函数

[4/28]保障产品高质量交付业务价值

L3C老司机

创业失败启示录|校园微生活(故事篇3)

阿萌

28天写作 创业失败启示录 青城

Swift 算法-栈

Byte_Panda

算法

油车和电车比到底哪个整体能源利用效率高?(28天写作 Day6/28)

mtfelix

自动驾驶 28天写作 电动汽车

LeetCode题解:105. 从前序与中序遍历序列构造二叉树,递归+数组切割,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

测试一年多,上线就崩溃!微服务到底应该怎么测试?

阿里巴巴中间件

中间件

读书笔记:《中产阶级如何保护自己的财富》

lidaobing

28天写作 中产阶级如何保护财富

为什么我们需要自动化回归?

阿里巴巴中间件

中间件

精选算法面试-数组(二分查找)

李孟聊AI

面试 算法 数组 28天写作

数据结构与算法-时间和空间复杂度

Byte_Panda

算法

简单三招,每个管理者都可以成为有温度的共情高手

一笑

沟通与管理 28天写作

HBase 底层原理详解(深度好文,建议收藏)

五分钟学大数据

大数据 HBase

28 天带你玩转 Kubernetes-- 第六天(玩转 Docker命令)

Java全栈封神

Docker k8s 28天写作 docker命令

关于焦虑的思考

.

28天写作

醒醒!Python已经支持中文变量名啦!

Python猫

Python

【TF2系列笔记】Day01:在VSCode中创建开发环境

IT蜗壳-Tango

七日更 TF2

城市生态的机器人革命

脑极体

28天瞎写的第二百一七天:你们 CentOS 服务器还有图形界面啊?

树上

28天写作

读《快手要上市了》,一起了解快手

李忠良

开源 技术 28天写作

DevOps能力是落地微服务的前提_语言 & 开发_薛命灯_InfoQ精选文章