NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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

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

    阅读完需:约 4 分钟

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

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

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

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

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

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

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

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

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

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

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

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


感谢郭蕾对本文的审校。

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

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

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

关注

评论

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

市场冷空气来袭,SeekTiger如何逆流而上?

股市老人

GNU/Linux知识库(2)- 安装和文件系统

冯亮

Linux DevOps GNU

leetcode 64. Minimum Path Sum 最小路径和(中等)

okokabcd

LeetCode 动态规划 数据结构与算法

Apipost=Postman+Swagger+Mock+流程测试?

Xd

Java 后端 接口测试

如何利用 RPA 实现自动化获客?

程序员泥瓦匠

RPA

读书笔记之:你当象鸟飞往你的山

甜甜的白桃

读书笔记 读书 笔记 6月月更

连续居家办公68天后——我的2022居家办公所感所想| 社区征文

No Silver Bullet

居家办公 6月月更 初夏征文 心得体会

☕️Java11 中基于嵌套关系的访问控制优化

看山

Java Java11

InfoQ 极客传媒 15 周年庆征文|Vim 常用快捷键

耳东@Erdong

vim 运维 快捷键 6月月更 InfoQ极客传媒15周年庆

有爱无碍,科技为他们点亮漫天星光

脑极体

千万级学生管理系统考卷模块存储架构设计

泋清

#架构训练营

Switch 块、Switch 表达式、Switch 模式匹配,越来越好用的 Switch

看山

Java Switch

作为神经搜索生态的开创者,Jina AI 在做什么?

Jina AI

Python 深度学习 开源 云原生 搜索

流数据操作

Damon

6月月更

BOM

Jason199

js BOM 6月月更

linux常用命令

乌龟哥哥

6月月更

A16Z : Web3生态全景概览

Dream

Web3.0

DOM核心——Document类型

大熊G

JavaScript 前端 6月月更

Linux开发_网络编程基础(1)

DS小龙哥

6月月更

【愚公系列】2022年06月 通用职责分配原则(七)-纯虚构原则

愚公搬代码

6月月更

硬核干货:6000字 30张图,带你彻底搞懂BGP动态路由!

wljslmz

BGP 网络技术 动态路由 6月月更

如何为 SAP 电商云每个不同的 JavaScript Storefront 分别配置 API endpoint

Jerry Wang

SAP Hybris commerce 电商云 6月月更

华为云图引擎服务

程思扬

华为 华为云 云开发

C#入门系列(十九) -- 作用域、生命期和析构函数

陈言必行

C# 6月月更

Vue-14-列表渲染v-for

Python研究所

6月月更

SDN系统方法 | 8. 网络虚拟化

俞凡

架构 网络 sdn SDN系统方法

【Spring 学习笔记(十三)】Spring AOP 五大通知类型

倔强的牛角

Java spring spring aop 6月月更

周末来学集合论

坚果

6月月更

spring4.1.8扩展实战之八:Import注解

程序员欣宸

Java spring Spring Framework 6月月更

2022 年 Java 行业分析报告

看山

Java 行业报告

Android MediaPlayer音频播放器详解

yechaoa

android 6月月更 MediaPlayer

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