BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

如何应对管理微服务所面临的挑战?

| 作者 João Miranda 关注 2 他的粉丝 ,译者 邵思华 关注 3 他的粉丝 发布于 2015年6月30日. 估计阅读时间: 8 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

在DevOps Days阿姆斯特丹2015大会的主题演讲中,Adrian Cockcroft为听众进行了精彩的报告。他表示:通过在组织内实施DevOps实践、持续交付并且应用容器化的微服务,就能够实现CIO的关键目标 —— 使IT与业务保持目标一致、更快地开发产品,以及避免对安全性的违背。但管理微服务又面临着新的挑战,他建议对这些挑战进行模拟演练,以此作为一种解决方案。

对于那些使用一种通用的编程语言,或者将效率和低延迟性视为最重要因素的小团队而言,一体性的应用对他们来说已经足够了。然而,在一个持续交付的上下文中实现的不可变性、容器化以及微服务的部署是对这一思想的彻底颠覆。Cockcroft认为,随着业务的增长,这种现代技术的优势开始逐渐体现出来,它能够实现大规模化、允许更快的开发速度,并且支持不同种类的平台环境。

随着微服务的出现,软件的原子化趋势也带来了管理方面的挑战。在脑海中绘制出由多达数百个服务所构成的图形、理解产生的故障,以及测试与监控工具的开发是最大的挑战。这些服务在持续地进行部署,并且存在于持续性更短暂的主机中,该如何对这些服务进行处理呢?在几年前比较常见的情形是大量使用裸机,这些裸机需要好几周的时间才能完成设置,随后一用就是好几年。而现如今,只需几秒钟就能够部署好容器,而它的生命周期或许只有几分钟或几小时。AWS Lambda计算服务的响应时间是毫秒级的,而它的生命周期只有几秒钟。

Cockcroft相信,模拟演练必须成为整个解决方案中的一部分,因此他创建了spigo、如今称为simianviz的这个项目,其全称是SIMulate Interactive Actor Network VIsualiZation。该项目的主要目标包括:

  • 生成大规模的测试微服务配置以及架构
  • 对监控工具的显示能力进行压力测试

Simianviz可以在桌面端模拟多种架构,它使用一个JSON格式描述对这些架构进行建模:

{
    "arch": "netflixoss",
    "description":"A very simple Netflix service. See http://netflix.github.io/ to decode the package names",
    "version": "arch-0.0",
    "victim": "homepage",
    "services": [
        { "name": "cassSubscriber",   "package": "priamCassandra", "count": 6, "regions": 1, "dependencies": ["cassSubscriber", "eureka"]},
        { "name": "evcacheSubscriber","package": "store",          "count": 3, "regions": 1, "dependencies": []},
        { "name": "subscriber",       "package": "staash",         "count": 6, "regions": 1, "dependencies": ["cassSubscriber", "evcacheSubscriber"]},
        { "name": "login",            "package": "karyon",        "count": 18, "regions": 1, "dependencies": ["subscriber"]},
        { "name": "homepage",         "package": "karyon",        "count": 24, "regions": 1, "dependencies": ["subscriber"]},
        { "name": "wwwproxy",         "package": "zuul",           "count": 6, "regions": 1, "dependencies": ["login", "homepage"]},
        { "name": "www-elb",          "package": "elb",            "count": 0, "regions": 1, "dependencies": ["wwwproxy"]},
        { "name": "www",              "package": "denominator",    "count": 0, "regions": 0, "dependencies": ["www-elb"]}
    ]
}

当某个架构的模拟开始运行后,simianviz能够生成可视化的结果。以下图形显示了一个标准的LAMP技术栈的架构,其中包括了DNS、负载均衡器、Web服务器、MySQL和memcached:

产品管理流程

为了支持CIO的目标 ——使IT与业务保持目标一致、更快地开发产品,以及避免对安全性的违背,Cockcroft也给出了一些产品管理方面的建议。

即使在一个敏捷的环境中,也有很多人认为流程是避免出现问题的方法。Cockcroft建议人们要提防“scar tissue”式的流程,这种流程倾向于对过去发生的每一个错误加以谴责,而它们出现的目的就是为了防止特殊问题的出现。但如果组织中充斥着各种规章制度,你是无法全部遵守它们的。Netflix的首要规则就是“去做那些对公司最有益的事”。

为了支持CIO的目标,Cockcroft认为最好的一个观点就是完全去除角色的概念,确保“业务”或“产品”以及“IT”都往同一个方向努力。以Netflix为例,它们甚至没有设立CIO的角色,只有一位首席产品官。

Cockcroft建议以两种类型的团队来组织IT部门,“平台”团队提供用于平台/基础设施自动化的API,他们需要系统、网络以及SAN管理方面的技能。“产品”团队则使用微服务架构开发产品,该团队所需的技能包括产品管理,以及UX、开发者、QA和DBA的技能。Cockcroft特别强调了安全性,他断定“不安全的应用程序即使由防火墙保护,它还是不安全的”。开发者应创建坚固的软件,使用例如Gauntlt这样的工具对安全性方面的需求进行测试。

除此之外,Cockcroft认为应当把随时候命的责任分配给创建产品的人(“你负责创建,就要负责运维”)。但并不是说责任就到此为至了,整个组织结构上的人(包括经理和更高层的人物)都需要作为后备人员,这是确保软件可靠性的一个重要前提条件。

查看英文原文:Adrian Cockcroft on the Challenges of Managing Microservices

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT