2015年企业移动应用展望
1. 商业分析
原网景浏览器创始人Marc Andreessen有个“预言”,软件吞噬世界!正在变成现实,软件和互联网已经渗透到我们生活的各个方面。我认为这个论断的关键点是:经济的执行体(公司,团体)等管理行为,通过软件执行,完善并优化流程,通过互联网连接,推动信息以前所未有的速度流动,这就是一次工业革命。
相比起个人,企业才是财富创造的主要源头。现代每个行业都和我们的生活息息相关,行业内无数的公司或合作,或竞争,共同构成多彩的商业世界。无论是否接受,随着互联网来临,一些行业过去的商业模式已经被颠覆了。我们看到纸质出版广告投放比例的快速下滑,移动打车软件的疯狂大战。商业管理手段真在逐步互联网化,软件化。
传统的企业软件市场始终不愠不火。国内外的软件企业能保持营业额不下滑,有些利润就不错了。那么和蒸蒸日上快速发展的互联网企业比起来,究竟哪里出了问题?
让我们看看美国企业软件市场,曾经有过非常辉煌的时代,大公司用Oracle,SAP,小公司可以选择Intuit,Sage。美国企业整体管理水平高,版权意识好等原因共同促进下,形成一个非常健康的市场。在我国只有财务软件在一段时期有类似的繁荣。然而直到今日,国内企业软件公司的规模都无法和国外巨头相比。根本原因是什么?抱怨国内公司管理水平不够,盗版猖獗等我认为都是推卸之词。
互联网公司的基本服务都是免费的,靠差异化收费:竞价排名,销售道具,优先导流等都是如此。使用服务的无论公司还是个人,愿意付费的前提也简单:能够带来更多的利益,包括更多的市场宣传机会,更多的销售额,精神更加愉悦等等。而传统企业应用能带来什么?对企业的好处是否只是销售一说,真正落实的有多少?员工可以选择不用他不喜欢的软件么?员工是快乐的用软件么,能获得更多帮助甚至经济利益么?
另外,传统企业软件有考虑广大企业顾客的需求么?是不是该放下身段,不再有意无意的把功能做的很难用,来收取更多的定制和培训费用,而采用简单好用接地气的方法来连接企业和顾客了?智能手机和微信等应用的普及给企业软件带来巨大的机会。几乎所有人都可以很方便的发送消息进行沟通。智能手机强大的信息抓取能力,如拍照,录音,定位等极大的简化了收集企业应用原始业务数据的过程。
SAAS这一软件服务模式也在今年得到极大的发展,Salesforce已经超越其他软件厂商,坐上CRM市场头把交椅。企业内的应用软件正在迅速的转向SAAS,如办公软件,人力资源,软件构建平台等等。原因很简单:每一个服务细分领域都需要精耕细作,单个企业是无力全部自行搞定的,不如采用合适的互联网服务。企业是否能全盘托付给某个平台呢?答案是否定的。即便再小的企业,也应该努力去保持自身业务的独立性。
2. 技术分析
商业软件的技术演进,可以按照前后端划分为两大主线。前端为控制台,客户端,浏览器,移动终端;后台为数据库,应用服务器,虚拟化/云端主机,分布式容器。新技术不是颠覆和替换原有的技术,而是针对商业场景加以改进,更好的满足业务开发需要。比如微软的VB快速开发和视窗系统同时代,J2EE应用服务器和浏览器同时代,虚拟化和云计算并肩出现,如今容器技术能否契合移动终端时代?我认为能,移动时代接入了前所未有数量的人和信息源。但如何快速有效的处理这些海量数据信息呢?类比现实世界,我们发现最相似的就是物流行业,那么集装箱和标准化纸箱就是传递实物最有效的工具。同样的,容器技术就是携带信息的一个个“盒子”,它们可以在网界移动,互相沟通和协作,把用户需要的信息高效的传递到移动终端上。
信息的存在于互联网的多维世界中,我们已经可以用S3和虚拟文件系统等技术,模拟出跨越时间的立体数据仓库。Docker管理的容器实例,也可以在如Kubernates等容器管理调度框架下,像有序的商业社会中业务流程一样被管理,进行协同科学化生产。可以预见ERP等软件的技术趋势就是用互联网先进技术模拟行业中最好的企业业务流程,并根据软件和互联网信息流快速到达的特点,加以改良再反过来推动行业管理模式的进步。
说实话企业软件比起互联网软件开发复杂多了,比如CRM或HRM,至少有数十个领域对象聚合根,映射到数据库中近百个数据表。而且企业软件容易大而全,或多或少加入很多其他领域的功能,几百个表和几十页纸的数据字典描述并不少见。直到今日,揭示企业软件领域开发原则最佳的书籍依然是10多年前Eric Evans的“Domain-Driven Design领域驱动设计”,以及一些补充和改良,比如CQRS/DCI/EventStore等。但当我们打算用DDD思想去设计软件时,会发现并不流畅,我认为主要原因是常用的编程语言和主流程序库面向通用设计,兼顾性能和API友好,并不专门为企业开发而设计的。
若干年前,我发现这个这个问题并找不到答案,当时人们把开发模式的定义寄托在应用服务器实现的技术上,比如JavaEE,于是我扎入中间件技术领域。
中间件是个框,什么都可以往里面装。运行应用,指导开发,性能监控,测试调优,很多软件产品和项目都可以说是在中间件范畴之内。如今伴随容器技术到来,操作系统层越来越薄;各种数据库层出不穷,业务逻辑放在中间件层早已是共识;还出现了移动端的中间件,起到统一移动操作系统编程接口和方便调用服务器资源的作用。
我想企业应用的基本模型应该是这样的:运用各种外部的服务,自行运行商业逻辑来完成一部分业务,并把自身的能力通过API在暴露出去,这个模型运行在容器之中。容器可以是基于进程的,也可以是线程等其他方式;各种各样的商业业务组件通过容器调度和管理协同工作,经过IO传递直到把信息传入用户终端或者持久化层。
企业应用的架构设计不可能有定式,需要根据企业用户规模,外部开放性等进行调整,但一些基本的要素是需要的:如平台类服务需要考虑多租户,可以和通用平台(如微信,淘宝)等对接,可以利用云计算上现有功能和服务(比如通过EC2 API自动伸缩),并能够*的在云端和企业私有云上迁移。
通用的企业服务,比如CRM,HRM等,SAAS会成为绝大数公司的选择,因为领域模型更完备,有专门的行业服务团队。这个过程可能因为国情,费用,安全考虑而较缓慢,但终究会到来并被广大中小公司接受。企业可以使用开放的API*的扩展和二次开发来满足自己的业务需求。PAAS接棒应用服务器成为业务代码运行平台,PAAS会拥有所有的基础服务,如数据库,消息服务器等等,而且对移动端开发前所未有的友好。移动APP通过调用Rest等API,或内嵌使用SDK,可以非常容易的使用各种移动端服务,比如存储,推送,即时通信等等。
对于特大公司或者对于安全性要求很高的企业,也可以选择私有云平台,但逻辑架构和公有平台类似,企业需要自行培养一个精通这套体系的技术团队。会不断出现这样的成品商业软件乃至开源软件,在中间件领域,最不缺的就是概念,酒瓶装新酒和产品各种新组合,所以我们会面临一个基础平台无比激烈竞争的时代,大型互联网,开源软件和传统软件大公司都会加入竞争,开发者有很多选择但更容易挑花了眼。
各个行业的业务系统也会逐步和移动互联网对接,它们可以从行业垂直平台交换数据;通过社交平台发布信息并获得用户反馈;通过手机端便捷支付;通过客服平台维系企业的忠实客户。用户使用智能手机的习惯已经充分培养好,这对于在中国市场的企业是一份巨大的红利。
目前国内各个行业的业务系统,很多还停留在数据库增删查改+表单+报表阶段,有的才刚刚触网,还远远没有达到和移动互联网无缝结合的程度,有很大的技术开拓空间。即时在国际市场,好用的移动企业软件也不多。移动软件在个人应用领域,已经相当普及,下一步应该轮到企业应用了,从通用企业服务到行业应用,每个细分领域可能都冒出来很多创业公司和几年后最后的强者或者寡头公司。
2015,移动端,中间件+企业应用,ALL IN。
2014/12/15于北京
下一篇: 洛谷 P1268 树的重量 图+贪心