微服务和容器技术有风险,望君三思而后行-阿里云开发者社区

开发者社区> 轩墨> 正文

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

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

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

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

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

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

1. 业务真的需要

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

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

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

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

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

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

3. 愿意“边做边学”

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

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

4. 微服务 != 容器

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

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

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

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

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

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

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

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

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

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

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

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

总结

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

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

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

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

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

原文发布时间为:2015-04-19
本文作者:bnuhero
本文来自云栖社区合作伙伴DockerOne,了解相关信息可以关注DockerOne。
原文标题:微服务和容器技术有风险,望君三思而后行

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
9650 0
基于容器服务的抗疫助学技术实践——阿里云 MVP黄军雷
天津云顶云科技副总经理黄军雷为大家带来基于容器服务的抗疫助学技术实践的介绍。内容包括一个具体的真实的工程实践的总结,基于阿里云优秀的平台能力,尤其是充分发挥容器的优异能力,充分发挥云原生的优势,克服各种困难,保证了业务最终顺利完成,上线后用户好评如潮。为抗击疫情贡献了自己的一份微薄之力。也为在云原生、微服务的探索之路上添加了重要的一笔。
264 0
斗胆推荐一款刚出的微服务网关
前言 使用 API 网关作为内部服务面向客户端的单一入口,是一种普遍采用的架构模式。企业组织通过良好定义的 API 将内部系统向内部和外部用户公开,通常都会采用 API 网关来处理横向的关注点,包括访问控制、速率限制、负载均衡等等,来实现安全可控的 API 开放。
2195 0
ChaosBlade x SkyWalking 微服务高可用实践
在分布式系统架构下,服务组件繁多且服务间的依赖错综复杂,很难评估单个故障对整个系统的影响,而且请求链路长,如果监控告警、日志记录等基础服务不完善会造成故障响应、故障定位问题难,所以如何构建一个高可用的分布式系统面临着很大挑战。
11225 0
视觉中国:基于容器云的同城双活微服务架构上云实践
本文正在参加阿里云「最佳上云实践」征文大赛(https://yq.aliyun.com/activity/150),欢迎届时给我们投票 视觉中国集团(Visual China Group)创立于2000年6月,是中国领先的视觉影像产品和服务提供商。
13189 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
13376 0
微服务与网关技术(SIA-GateWay)
微服务治理是微服务架构的难点,SIA-GATEWAY作为微服务基础设施充分考虑到了与业务系统的兼容性和相关技术生态的成熟度。
3909 0
+关注
2351
文章
701
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载