什么是企业应用?
看到“企业应用“这次术语, 在你的下意识里,第一反应能想起哪些相关的词?
我的条件反射是: ERP, CRM, HRM, BI, CMS ......
企业应用这个词听起来很高大上, 但是什么“企业应用”? 我发现我没法下一个准确的定义。
回顾下我的工作经历, 应聘的时候似乎都是要做"企业应用" 开发。
毕业后第一份工作就是做很热门的OA系统,就是所谓的办公自动化,包括了邮件、工作流、表单、文档系统等公司信息化需求, 用户肯定是部署OA的企业内部人士,算是最基本的企业应用开发吧。
后来做了欧洲的税务系统,实现他们各种各种复杂的业务逻辑,用户也是税务局的员工, 应该是标准的企业应用。
再后来做一个庞大的系统来支持公司的产品销售,用户既有公司的销售人员,也有外部的用户。 系统相当复杂, 由很多子系统组成,各个子系统还存在着复杂的关系, 接口五花八门,有的用Webservice , 有的用数据复制, 有的用MQ, 甚至还有邮件接口和FTP接口, 这应该也是一个典型的企业应用。
似乎一个企业应用就是帮助企业干活的信息系统,满足企业日常运营, 帮助他们完成流程的信息化。
人称软件教父的Martin Flower 非常善于抽象, 在著名的《企业应用架构模式》一书中他就针对企业应用抽象出这么几点:
1. 企业应用一般涉及到持久化数据
初一看似乎是废话: 如果数据不能持久化,应用也没什么意思了。
实际上重点是企业数据的生存年限相当的长, 甚至比访问这些数据的程序都要长,无论硬件、操作系统、应用程序怎么变,数据都不能受到损害。
2. 企业应用一般涉及大量数据
这是毫无疑问的, 一个企业运行过程中绝对不仅仅产生几千,几万条数据。
3. 企业应用涉及到很多人同时访问数据
如果是内部系统还好, 要是对外的Web系统, 那用户量可能非常大。
4. 企业应用涉及到大量的用户操作界面
有几百个界面毫不为奇, 用户使用频率差异很大,特别是这些用户没有技术背景。
5. 企业应用很少独立存在, 通常需要与散布在企业周围的其他应用进行集成。
这些各种各样的系统是在不同时期, 用不同的技术构建起来的, 把他们集成起来的痛苦经历过的码农才知道。
但是互联网应用像淘宝,京东商城是否属于企业应用的范畴? Martin Flower并没有明确说明。互联网应用符合了上面的第2,3两点, 数据量巨大, 高并发访问, 技术上要求规模大、扩展性强、可靠性高 。
既然难于区分, 我想不妨根据用户的不同, 分为两个大类:
1. 面向企业用户
ERP(企业资源规划), CRM(客户关系管理) , HRM(人力资源管理),SCM(供应链管理), BI(商业智能) ,还有各种各样根据企业的需求做的定制软件(例如营销系统) 等应该属于这一类。
这类应用的用户数不会像互联网应用那样特别巨大, 但是业务逻辑一般比较复杂, 为了实现这些变态的,多变的逻辑经常得 47 32247 47 15288 0 0 3753 0 0:00:08 0:00:04 0:00:04 3753付出巨大的代价。
稍微大点的企业都会涉及到应用之间的集成问题, 这又是一个大坑。
由于用户主要是企业内部人员, 直接用于企业的生产环境, 一旦出错, 整个公司的活动都可能受影响, 所以对可靠性, 稳定性要求较高。
这类应用一般都是收费的,并且价格不菲。 既然是掏了真金白银, 系统出了故障,客户一般会怒气冲冲的跳起来找售后。
2. 面向消费者用户
电子商务、社交、娱乐、通信等互联网应用属于这一类,相比而言, 消费者对于出错的容忍度要高一点 : 你肯定不会因为微信发不了朋友圈而去找腾讯要赔偿, 最多骂几句而已。
由于这类应用的用户量巨大, 高并发访问的特质, 即使是简单的业务逻辑,实现起来也很不容易, 例如从数据库读取信息然后展示, 如果是几十个人或者上百人访问,可能直接发出SQL查询数据库就搞定了; 如果有几万甚至几十万访问, 那非得搞一些缓存,分布式,页面静态化等技术来搞定了。
由于用户是直接的消费者, 产品的体验至关重要,用起来不爽, 用户马上用脚投票,分分钟抛弃你。
当然这些互联网应用肯定有后台的管理系统,用来做运营、营销和数据分析, 这又属于第一类的范畴了。
码农翻身相关历史文章推荐:
Java EE
计算机网络
操作系统
数据库
你看到的只是冰山一角, 更多精彩文章,尽在“码农翻身” 微信公众号, 回复消息"m"或"目录" 查看更多文章
有心得想和大家分享? 欢迎投稿 ! 我的联系方式:微信:liuxinlehan QQ: 3340792577
公众号:码农翻身
“码农翻身”公众号由工作15年的前IBM架构师创建,分享编程和职场的经验教训。