做好云平台架构需要哪些能力

这儿讲的平台,是指 计算平台(conputing platform),这是一种环境,软件在这种环境里运行。更进一步,云平台,我们把它定义为企业级的云计算化的平台,直接面向业务的软件运行在这个平台上,并且利用这个平台环境,新的业务软件可以迅速被开发出来。云平台涵盖了硬件、运行时代码库、框架、服务及服务管理系统等。

架构师

做好云平台,做出一个安全、稳定、高效的,能支持企业级大规模业务处理的云平台,需要哪些基本能力呢?

  • 熟悉平台所服务的业务环境
  • 掌握软件系统的工作原理
  • 拥有架构理论及经验
  • 项目管理
  • 文档及表达

熟悉平台所服务的业务环境

业务是信息系统的灵魂,只有能够支撑业务运营、业务发展的企业信息系统,才是最适合企业的,也是最值得企业投入资源去开发和维护的。云平台作为企业信息系统的底层支撑系统,更是要着眼于业务。核心业务有哪些、非核心业务有哪些、企业着力开拓的新兴业务有哪些,业务规模都有多大,业务跨越的地理范围有多大等等,在了解了这些的基础上,你所架构的平台系统,才更适合企业。

比如企业业务是跨国的,那么平台系统如果不支持跨语言、跨文化的话,那么很可能会成为业务发展的掣肘,反之则助力企业发展

掌握软件系统的工作原理

其实掌握软件系统的工作原理更多地是指选型的能力,这涉及到你的工具箱的广度。
在你根据业务进行一番比较抽象的思考后,你决定了一个基本架构的结构图,然后你需要选型,或许你需要选择一个分布式缓存系统,那么你至少需要知道有哪些已经存在了的分布式缓存系统,并且它们各自的工作原理是什么,然后才能判断它们是否适用,或者是否有必要自己动手对其进行包装或创造一种全新的缓存系统。

这儿列举一些基本的你可能需要掌握或了解的软件系统的工作原理

  • 开发语言(比如 Java)
  • 操作系统(Linux 或 Windows)
  • DNS(域名解析)
  • CDN(内容分发网络)
  • WEB 服务器(基于互联网提供的服务将越来越多)
  • 负载均衡(比如 Nginx)
  • 消息队列(比如 ActiveMQ)
  • 缓存系统(比如 Redis)
  • 数据库(比如 mysql)及 ORM 框架(比如 MyBatis)

如果还可以掌握以下软件系统工作原理的话,你设计的云平台或许能够应对更大规模的企业业务

  • 分布式资源协调
  • 大数据框架(比如 Storm)
  • 人工智能框架(比如)

拥有架构理论及经验

架构理论可以指导你开展架构工作,可以指导你如何对业务系统进行分解以得到子系统、子系统之间的交互关系,指导你考虑系统的运行环境及制约因素、指导你考虑运维需求等。而经验可以让你更快地作出判断,更快地在各种需求之间找到平衡点。

架构理论有许多种,常见的系统架构理论有三层架构、JavaEE 架构、SOA 架构、微服务架构、CAP 理论,常见的企业架构理论有开放组体系结构框架(TOGAF)、联邦体系架构框架(FEA)、美国国防部架构框架(DODAF)。

项目管理

项目管理知识可以指导你的架构的实现更加成功。在企业文化及上下文环境的制约下,充分考虑范围、时间、成本、进度、采购、质量、团队、风险,然后作出的架构决定,更加真实,距离成功的实现更进一步了。 一般如果你是既担任架构师又担任项目经理的话,你就不得不考虑这些了:)

文档及表达

【英】Simon Brown 著的《程序员必读之软件架构》一书(邓钢译 ISBN:987-115-37107-2),是这么解释架构的。

架构作为名词来解释时,概括起来都与结构有关:将产品分解为一系列组件、模块和交互。这需要考虑整个产品..
架构作为动词来解释时,包括了理解你需要构建什么、设定愿景以便进行构建和做出恰当的涉及决策…关键在于,架构是关于交流愿景和引入技术领导力的,这样参与构建产品的每个人都能理解这个愿景,并为产品的成功做出积极贡献

你对产品的分解、你所设定的愿景、你作出的决策,都需要很好地记述下来,表达出来,以便每个人都能准确理解,并参与、贡献。