11 月 19 - 20 日 Apache Pulsar 社区年度盛会来啦,立即报名! 了解详情
写点什么

基础设施即代码的误区和规避方法

  • 2020-02-13
  • 本文字数:1678 字

    阅读完需:约 6 分钟

基础设施即代码的误区和规避方法


有两个行业趋势指向许多人选择 DevOps 工具的一项空白。运维团队需要的不仅是基础设施即代码的方法,而是一个完整的模型驱动的运维思想。


在 ThoughtWorks 洞见黄博文的一篇文章中,作者指出:


现代软件开发对基础设施的管理提出了更苛刻的要求:产品要适应瞬息万变的市场,要求基础设施有更快的响应速度。持续交付和 DevOps 的推行要求产品团队对部署和运维要有更高的自主性。技术的快速进步和演化,也使得基础设施的配置不得不频繁变化。在这种快速变化的过程中,要求基础设施既要灵活,也要安全、可靠。


而传统的基础设施运维管理具有以下几个问题:


  • 被动响应。产品团队获取服务器资源采用的是申请制,中间存在若干审批过程,以及需要等待运维团队实施,响应不及时。

  • 自动化缺乏串联。虽然有一定的自动化,但不能做到无人值守,需要执行一些临时命令介入。由于环境释放和重建的成本高,因而倾向于不释放,导致资源利用率低。

  • 和产品团队脱节。很难根据需求随时动态增加环境。需要额外的文档来描述环境,可能更新不及时。


2020 年的两个 DevOps 趋势

让我们考虑以下两个趋势以及它们对 DevOps 的影响。


1.微服务将复杂性从应用程序端推到运维端

转换到微服务需要将复杂的大型应用程序分解成许多较小的服务单元。在“分而治之”的架构风格中,每个单元都更容易部署、扩展、更新以及独立移除。


然而,微服务体系结构可能会将复杂性推到运维端,而不是消除复杂性。


采用基础设施即代码工具可以减轻部分负担,但不是全部。突然间,你需要考虑网络延迟、消息格式和连接。每个新服务都需要连接到其他服务。


如果没有适当的工具,升级和迁移就会变得非常耗时,并且容易出错。



2.基于容器的部署可能导致性能损失

对许多应用程序来说,基于容器的部署平台(如Kubernetes)令人愉快。


但是,容器并非适合所有用例。数据库和其他中间件经常受到 I/O 条件的约束。当这些应用程序作为容器运行时,会导致性能损失。


大多数基础设施即代码工具都适合在单一平台上托管应用程序。但现实更为复杂。它们很少允许你跨平台部署应用程序。当容器和虚拟机搭配使用时,情况就更加复杂了。


系统工程师和运营团队希望提供最佳的性能,但他们也希望为编写应用程序的产品工程团队提供敏捷性。


最终,复杂性会影响业务。对工具进行整合的管理决策可能意味着将数据库转移到了 Kubernetes 集群中。


自动化软件出现

Canonical 开发Juju来解决这些问题。它的方法与其他 DevOps 工具的不同之处在于:


  • 通过允许 DevOps 团队在更高的抽象级别上工作降低复杂性

  • 通过允许应用程序动态响应它们的部署提高稳定性

  • 通过将配置管理与应用程序的特定托管环境解耦增加灵活性


Juju是一种简单、安全的 DevOps 工具,用于管理当今复杂的应用程序,而不管你在何处运行软件。计算、存储、网络、服务发现和健康监测都是免费的,适用于 Kubernetes、云计算和笔记本电脑。


Juju 允许你的软件基础设施始终保持最佳配置。当部署发生变化时,每个应用程序的配置操作都由 charms 动态调整。Charms 是与你的应用程序一起运行的软件包。它们对业务规则进行编码,以适应环境变化。


使用模型驱动的思想意味着提高抽象级别。Juju 的用户很快就会习惯这样一种灵活的、声明式的语法。这种语法与底层无关。


Juju 与基础设施提供者交互,但是操作代码总是保持不变。我们专注于为你的产品基础设施创建一个软件模型,这可以提高生产率并降低复杂性


通过在较低的抽象级别上自动化基础设施,DevOps 让这个行业获得喘息空间。但这种喘息空间正在耗尽。


用一个可同时应对多种后端的工具有几个好处:生产率不仅提高,而复杂性保持不变



有两个例子,大家可以进一步阅读:


  • Open Source MANO (OSM) 是由 Telefonica、BT 和 Telenor 等全球电信服务提供商支持的 ETSI NFV MANO 栈的一个开源实现。通过提供一个实现服务编排功能的原生框架,Juju charms 被 OSM 社区选为开源 MANO 项目背后的引擎。

  • Canonical 为OpenStackKubernetes提供的托管服务为私有云和容器编排平台提供最快且最经济的路径。成本降低是通过工具(即 Juju)的增强实现的。


英文原文:


Infrastructure-as-Code mistakes and how to avoid them


2020-02-13 07:002660
用户头像

发布了 532 篇内容, 共 242.3 次阅读, 收获喜欢 1273 次。

关注

评论

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

【MyBatis 2】MyBatis-Plus,java多线程常见面试题

Java 程序员 后端

【Spring Boot 26】分别在SpringBoot和Vue中解决跨域问题

Java 程序员 后端

【java后台面经】春招&秋招求职大佬面试经验分享,java面试线程问题

Java 程序员 后端

【Java知识点详解 10】为何要配置环境变量(1),java从入门到精通第五版电子书百度云

Java 程序员 后端

【Java知识点详解 10】为何要配置环境变量,rabbitmq的消息持久化原理

Java 程序员 后端

【Spring AOP】静态代理设计模式,大牛带你直击优秀开源框架灵魂

Java 程序员 后端

【Spring Boot 16】常用注解介绍及使用,内含福利

Java 程序员 后端

【Spring 持久层】Spring 事务开发,nginx原理及应用

Java 程序员 后端

【95 后 Java 程序员的大厂梦】三年开发经验,springboot开源项目讲解

Java 程序员 后端

【Spring Boot 4】如何优雅的使用 Mybatis,linux内核深度解析

Java 程序员 后端

【Spring Cloud 8】熔断与限流Sentinel,java常见面试题

Java 程序员 后端

【备战秋招】30道Spring IOC经典面试题,kafka消息中间件原理

Java 程序员 后端

【并发编程】深入了解volatile,nginx负载均衡架构

Java 程序员 后端

【Java 强化】代码规范,springcloud视频

Java 程序员 后端

【Java8 新特性 5】Java8 stream的详细用法,java开发面试视频

Java 程序员 后端

【Linux 4】定时任务调度与进程服务管理,java编译器下载教程

Java 程序员 后端

【Spring Boot 15】启动类原理解析,mysql主从复制原理面试

Java 程序员 后端

【Spring 工厂】反转控制与依赖注入,成功收获美团,小米offer

Java 程序员 后端

【数据库实验】,springboot视频教程迅雷

Java 程序员 后端

【Java技术探索】,区块链技术kafka

Java 程序员 后端

【MyBatis 1】SQL注入,Java技术功底不够如何去面试

Java 程序员 后端

【Spring5,贼厉害

Java 程序员 后端

【Java 多线程 3】线程池2,linux内核编程进阶篇pdf

Java 程序员 后端

【ShardingSphere 技术专题】,qt图形界面编程入门课后答案

Java 程序员 后端

【Spring Boot 7】RabbitMQ基础知识总结,Java学习笔记在互联网上火了

Java 程序员 后端

【实习之T100开发】Genero FGL (TIPTOP4GL) 学习笔记,2021金九银十

Java 程序员 后端

【Spring Boot 7】RabbitMQ基础知识总结(1),java开发面试宝典

Java 程序员 后端

【并发编程】深入了解volatile(1),linux操作系统教程海南师范大学

Java 程序员 后端

【Java从0到架构师】学习记录,BAT大厂面试基础题集合

Java 程序员 后端

【PyQt5】designer 页面点击按钮跳转页面,华为面试笔试题java

Java 程序员 后端

【全栈最全Java框架总结】SSH,java线程池面试问题

Java 程序员 后端

基础设施即代码的误区和规避方法_架构_Tim McNamara_InfoQ精选文章