微服务和容器技术有风险,望君三思而后行

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 本文讲的是微服务和容器技术有风险,望君三思而后行,【编者的话】微服务和容器技术拥有令人兴奋的潜力,强烈建议客户开始研究这些技术。但是,这并不是说客户应该立即全面采用。上述技术领域的发展太快了,必须清晰地了解这些技术能干什么,不能干什么,才能够决定是否采用这些技术。
本文讲的是微服务和容器技术有风险,望君三思而后行 【编者的话】微服务和容器技术拥有令人兴奋的潜力,强烈建议客户开始研究这些技术。但是,这并不是说客户应该立即全面采用。上述技术领域的发展太快了,必须清晰地了解这些技术能干什么,不能干什么,才能够决定是否采用这些技术。毕竟,生产环境不是拿来做研发试验的竞技场。

XebiaLabs 是一家提供大规模持续集成和 DevOps软件的公司。我们公司经常与客户讨论新近出现的开发风格、应用架构和运行时平台,内容涉及它们的优势以及带来的挑战。最近一段时间,讨论的焦点集中在:

我个人认为微服务和容器拥有令人兴奋的潜力,强烈建议客户开始研究这些技术。但是,这并不是说客户应该立即全面采用。

上述技术领域的发展太快了,必须清晰地了解这些技术能干什么,不能干什么,才能够决定是否采用这些技术。毕竟,生产环境不是拿来做研发试验的竞技场。

根据客户和合作伙伴的研究,我们自己的使用体会(在我们公司内部,容器的使用已经很普遍)以及  Google和eBay等公司的经验教训 ,我们提出了六个准则,帮助你判断是否要采用这些新技术。

1. 业务真的需要

在采用微服务或者容器技术之前,需要搞清楚一个最根本的问题:业务当中是否真的存在一个现有技术或手段无法解决的问题?

微服务和容器是比较新的技术,发展快速,但离成熟阶段还有距离。必须仔细权衡采用上述技术为团队和组织带来的好处和风险。

曾经担任Etsy公司主任工程师的 Dan McKinley 一篇博客 中说得好:

问问自己:不用任何新技术,能够解决掉现在的问题吗?这个设问有助于你搞清楚一种情况,有人非常渴望使用新技术,但问题的解决实际上并不需要用到这种新技术。如果是这样,应当坚决停止采用新技术。
2. 技术实力够

如果微服务/容器确实能够解决其它方式无法解决的问题,接下来,要确保拥有专家水平的平台工程师资源。

这不光是指用到的大部分API和框架都是全新的。要让基于容器的平台在生产环境运转起来,需要解决一系列后续问题:优化网络,选择存储策略,备份和失效恢复,安全,等等。

3. 愿意“边做边学”

目前,在生产环境中应用微服务和容器技术时,会遇到很多问题,这些问题都没有现成可用的答案。即使工程团队实力足以应对这些挑战,在应用这些技术之后的几年内,需要不停地实验和学习。

例如,最初选择的某些API和框架变化巨大,没有提供向后兼容保证,甚至完全废弃了。有些不适合业务情景或者不成熟的API和框架,需要推倒重来。从运维过程到应用交付模式的最佳实践,都得自己来。

4. 微服务 != 容器

我们与有平台/运维背景的客户,或者那些听过Docker或者其它技术并且想深入了解的客户交流时,发现他们认为微服务和容器是“同一枚硬币的两面”,用了这个技术就必须用另外一个技术。

我同意容器会引导用户交付更小而不是大型一体的应用(虽然,我也看到很多几 GB 大小的容器镜像)。然而,反之并不成立:应用程序采用微服务架构,并不意味着一定要使用容器作为底层的运行时技术。

实际上,如果要把已有的应用程序“微服务化”,而且不能完全重头再来,那么就更有不用容器的理由了。坚持使用已有的运行时平台(在服务器上很容易运行几十个或者几百个微服务进程,无需把这些进程封装为容器),相当于从“改变方程式”中消除了容器这个最大的变量,从而降低项目的风险。

5. 处理微服务之间的依赖

我们经常听到把微服务定义成一个“独立部署的单元”。从实践的角度看,如果设计的微服务不依赖任何其它组件就能成功地运行,这当然很好。但在大多数实际用例中,“没有任何微服务是一个孤岛”:一个服务可以启动,独自响应 API 调用;但在用户真实使用情景中,往往需要几个服务的协调和配合。

例如,订单服务启动后,自己就能告诉用户有多少订单。但用户的操作包括浏览商品目录、选择商品、完成购买和跟踪订单的完成,这需要同时运行一批相互配合的服务。

如果希望用容器实现微服务,有几个框架提供了容器服务编排的功能,目的是处理容器之间的依赖和链接。这些框架包括 Kubernetes
Helios Marathon  和Fig(即  Docker Compose )。

当前,运行时/微服务依赖的管理,特别是虚拟化,还没有达到构建依赖的管理水平(因此,我们的很多客户有兴趣了解  XL Deploy  提供的依赖管理新特性)。遇到什么问题,都需要自己解决,至少要增强已有工具的功能才能解决。

6. 不光是hello world这样的应用

Docker特别流行的一个主要原因是它的上手体验非常棒。在容器中运行某种语言编写的示例程序(例如Hello World 程序)会有一个非常简单、有成就感的体验。接下来,要对容器做些定制也很容易。

然而,如果要在生产环境中用容器运行真实的应用程序,特别是还想把应用封装为微服务,遇到的挑战完全不同。构建自有PaaS平台就是一个工程上的挑战,除此之外,还有一系列与流程相关的问题需要解决。

我在 以前的一篇博客 中讨论了最重要的一些问题。在你研究微服务和容器技术时,要找到解决这些问题的方法。

总结

简言之,微服务和容器肯定是值得研究的技术之一(为了帮助客户应对本文提及的种种挑战,我们在 XL Test XL Release XL Deploy 中提供了一系列与微服务和容器相关的功能特性)。

在你决定采用微服务和容器技术之前,确保自己已经理解所面临的挑战,明白需要投入的时间和资源……最重要的是要保证:实际业务真的需要应用这些技术,为此付出的努力和承担的风险都是值得的。

原文链接:Before You Go Over the Container Cliff with Docker, Mesos etc: Points to Consider(翻译:柳泉波 校对:佚名

===========================

译者介绍
柳泉波,读书踢球喝茶写程序。

原文发布时间为:2015-04-19
本文作者:bnuhero
本文来自云栖社区合作伙伴DockerOne,了解相关信息可以关注DockerOne。
原文标题:微服务和容器技术有风险,望君三思而后行
目录
相关文章
|
14天前
|
Java Go 开发者
Docker容器技术简介及其与Go语言的结合点
【2月更文挑战第23天】本文首先概述了Docker容器技术的核心概念和优势,接着探讨了Go语言与Docker容器技术的结合点。通过阐述Docker的轻量级、可移植性和版本控制等特性,以及Go语言在容器化应用中的优势,本文旨在说明两者结合能够实现更高效、灵活的应用开发和部署。
|
15天前
|
Kubernetes 开发者 Docker
基于容器技术的微服务架构
基于容器技术的微服务架构
19 0
|
5天前
|
运维 监控 Devops
构建高效自动化运维体系:基于容器技术的持续集成与持续部署实践
在数字化转型的浪潮中,企业的IT基础设施和软件交付模式正经历着深刻的变革。传统的运维方式已难以满足快速迭代、灵活扩展的现代业务需求。本文将探讨如何通过容器技术实现高效的自动化运维体系,重点分析持续集成(CI)与持续部署(CD)的实践方法及其对企业运维效率的影响。通过引入微服务架构、容器编排、DevOps文化等概念,我们旨在为读者提供一套全面的自动化运维解决方案,以支持业务的敏捷性和可扩展性。
|
7天前
|
边缘计算 Kubernetes 负载均衡
容器编排技术在云计算中的应用
随着云计算技术的飞速发展,容器编排技术作为一种重要的部署和管理工具,正在逐渐成为云计算领域的热门话题。本文将介绍容器编排技术在云计算中的应用,探讨其在提高应用程序部署效率、资源利用率以及系统可靠性方面的优势,并分析其未来发展趋势。
|
10天前
|
运维 应用服务中间件 调度
微服务容器化的运维
【2月更文挑战第27天】
|
17天前
|
Kubernetes 云计算 开发者
云计算中的容器化技术:Docker与Kubernetes的实践
云计算中的容器化技术:Docker与Kubernetes的实践
29 0
|
22天前
|
XML JSON Go
Golang微服务基础技术
Golang微服务基础技术
29 2
|
24天前
|
运维 API Docker
深入浅出:微服务架构与容器化技术的完美融合
【2月更文挑战第13天】 在现代软件开发领域,微服务架构和容器化技术已成为推动企业快速发展的两大核心力量。本文将从微服务的基本概念出发,深入探讨其与容器化技术结合的必然性与优势,进而分析如何在实践中有效地实现二者的完美融合。通过对微服务架构的细致解析及容器化技术的应用展示,旨在为读者提供一种全新的视角,理解并掌握这一前沿技术趋势,以指导实际工作中的技术选择与架构设计。
|
1月前
|
运维 Java Docker
微服务容器化实践
【2月更文挑战第6天】
|
1月前
|
开发者 Docker 微服务
深入浅出:使用Docker容器化部署微服务架构
在当今快速迭代的软件开发环境中,微服务架构因其高度解耦和独立性而成为企业首选。然而,微服务的管理和部署可能会变得复杂和繁琐。本文将探讨如何利用Docker,一个轻量级的容器化技术,来简化和加速微服务的部署。我们将从Docker的基础概念入手,详细介绍如何创建、配置和运行微服务容器,最后讨论Docker在微服务架构中的优势和挑战。本文旨在为开发者提供一条清晰的路径,通过容器化技术实现微服务架构的高效部署和管理。
80 0

相关产品

  • 容器镜像服务
  • 容器服务Kubernetes版