这儿讲的平台,是指计算平台(conputing platform),这是一种环境,软件在这种环境里运行。更进一步,云平台,我们把它定义为企业级的云计算化的平台,直接面向业务的软件运行在这个平台上,并且利用这个平台环境,新的业务软件可以迅速被开发出来。云平台涵盖了硬件、运行时代码库、框架、服务及服务管理系统等。
做好云平台,做出一个安全、稳定、高效的,能支持企业级大规模业务处理的云平台,需要哪些基本能力呢?
- 熟悉平台所服务的业务环境
- 掌握软件系统的工作原理
- 拥有架构理论及经验
- 项目管理
- 文档及表达
<!--more-->
熟悉平台所服务的业务环境
业务是信息系统的灵魂,只有能够支撑业务运营、业务发展的企业信息系统,才是最适合企业的,也是最值得企业投入资源去开发和维护的。云平台作为企业信息系统的底层支撑系统,更是要着眼于业务。核心业务有哪些、非核心业务有哪些、企业着力开拓的新兴业务有哪些,业务规模都有多大,业务跨越的地理范围有多大等等,在了解了这些的基础上,你所架构的平台系统,才更适合企业。
比如企业业务是跨国的,那么平台系统如果不支持跨语言、跨文化的话,那么很可能会成为业务发展的掣肘,反之则助力企业发展
掌握软件系统的工作原理
其实掌握软件系统的工作原理更多地是指选型的能力,这涉及到你的工具箱的广度。
在你根据业务进行一番比较抽象的思考后,你决定了一个基本架构的结构图,然后你需要选型,或许你需要选择一个分布式缓存系统,那么你至少需要知道有哪些已经存在了的分布式缓存系统,并且它们各自的工作原理是什么,然后才能判断它们是否适用,或者是否有必要自己动手对其进行包装或创造一种全新的缓存系统。
这儿列举一些基本的你可能需要掌握或了解的软件系统的工作原理
- 开发语言(比如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),是这么解释架构的。
架构作为名词来解释时,概括起来都与结构有关:将产品分解为一系列组件、模块和交互。这需要考虑整个产品..
架构作为动词来解释时,包括了理解你需要构建什么、设定愿景以便进行构建和做出恰当的涉及决策...关键在于,架构是关于交流愿景和引入技术领导力的,这样参与构建产品的每个人都能理解这个愿景,并为产品的成功做出积极贡献
你对产品的分解、你所设定的愿景、你作出的决策,都需要很好地记述下来,表达出来,以便每个人都能准确理解,并参与、贡献。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。