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

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

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

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

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

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

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

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

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

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

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

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

DevOps能力是落地微服务的前提的更多相关文章

  1. [dotnet core]落地微服务特色的DevOps管道,持续集成/部署到kubernetes。

    目录 前言 目标 工具 - 最小的学习成本 方案 - 愿景 1. 持续集成 - CI 2. 持续部署 - CD 部署环境 1. 部署gitlab-runner 2. 注册gitlab-runner 搭 ...

  2. 微服务实战(三):落地微服务架构到直销系统(构建基于RabbitMq的消息总线)

    从前面文章可以看出,消息总线是EDA(事件驱动架构)与微服务架构的核心部件,没有消息总线,就无法很好的实现微服务之间的解耦与通讯.通常我们可以利用现有成熟的消息代理产品或云平台提供的消息服务来构建自己 ...

  3. DevOps架构下如何进行微服务性能测试?

    一. 微服务架构下的性能测试挑战 微服务与DevOps 微服务是实现DevOps的重要架构 微服务3S原则 DevOps核心点 微服务架构下的业务特点 亿级用户的平台 单服务业务随时扩容 服务之间存在 ...

  4. 我们都可以把它放 Sidecar 容器中,这样微服务具备了 Super power,一种超能力

    云原生时代,微服务如何演进? 原创 李响 阿里技术 2020-08-28   https://mp.weixin.qq.com/s/KQG2U8_aotDL4YFB8ee6Zw 一  微服务架构与云原 ...

  5. Spring Cloud与微服务构建:Spring Cloud简介

    Spring Cloud简介 微服务因该具备的功能 微服务可以拆分为"微"和"服务"二字."微"即小的意思,那到底多小才算"微&q ...

  6. 转载:Service Mesh:重塑微服务市场--敖小剑

    转载地址:https://skyao.io/talk/201805-service-mesh-rebuild-microservice-market/ 重点: 不要太过关注  Service Mesh ...

  7. 日调度万亿次,微服务框架TSF大规模应用——云+未来峰会开发者专场回顾

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 演讲者:张浩 腾讯云中间件产品负责人 背景:众多开发者中,一定经历类似的甜蜜烦恼,就是当线上业务规模越来越大,系统分支发展越来越多的时候,初 ...

  8. 看完这篇微服务架构设计思想,90%的Java程序员都收藏了

    本博客强烈推荐: Java电子书高清PDF集合免费下载 https://www.cnblogs.com/yuxiang1/p/12099324.html 微服务 软件架构是一个包含各种组织的系统组织, ...

  9. 字节跳动内部微服务架构-Docker实战学习笔记分享 真香

    前言 基于 Spring Cloud 的微服务设计和开发,已经越来越多地得到了更多企业的推广和应用,而 Spring Cloud 社区也在不断的迅速发展壮大之中,近几年时间,Spring Cloud ...

随机推荐

  1. Java进阶02 异常处理(转载)

    异常处理 Java的异常处理机制很大一部分来自C++.它允许程序员跳过暂时无法处理的问题,以继续后续的开发,或者让程序根据异常做出更加聪明的处理. Java使用一些特殊的对象来代表异常状况,这样对象称 ...

  2. android开发的权限获取 (转载的)

    访问登记属性 android.permission.ACCESS_CHECKIN_PROPERTIES ,读取或写入登记check-in数据库属性表的权限 获取错略位置 android.permiss ...

  3. 我的第7个java程序--把java web项目改为java project项目--mybatis

    连接数据库需要 程序,连接字符串,查询语句 主程序->读取连接字符串->读取查询语句->把查询到的值赋值给映射对象->打印对象属性 java project的好处,不用做那么多 ...

  4. window linux IPC ftok BY_HANDLE_FILE_INFORMATION

    看这题目就很乱,心情当然也是不怎么美好了.前一段时间做了一个项目,AIX(Unix的一种)中的一个系统向WINDOWS移植,开发环境由IBM的C/C++(叫什么忘记了,好像是xlC)变为VC++. 这 ...

  5. [转]C++ new操作符详解

    原文地址:http://blog.csdn.net/youdianmengxiangba/article/details/8233651 写在前面: 我最近写的一些博客都是因为在面试笔试过程中遇到的一 ...

  6. poj 3670(LIS)

    // File Name: 3670.cpp // Author: Missa_Chen // Created Time: 2013年07月08日 星期一 21时15分34秒 #include < ...

  7. POJ1182食物链(并查集经典好题)

    题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=66964#problem/E 题目思路:主要有两种思路:1.带权并查集2.挑战程 ...

  8. 【BZOJ2213】[Poi2011]Difference DP

    [BZOJ2213][Poi2011]Difference Description A word consisting of lower-case letters of the English alp ...

  9. SharePoint服务器端对象模型 之 访问网站和列表数据(Part 1)

    本节将会介绍SharePoint中最为常用的一些对象模型,以及如何使用这些对象模型来访问和操作网站中的数据.几乎所有的SharePoint服务器端开发都会涉及到这些内容,因此应着重掌握本节中所介绍的基 ...

  10. 使用Nexus管理Maven仓库时,上传带依赖的第三方jar

    总所周知,使用Maven构建非常方便.在企业中使用Nexus创建私服来管理Maven时,需要上传很多没有开放源码的第三方Jar包.本文将讲述当第三方Jar包有很多并且互相有依赖时如何上传. 核心操作 ...