查看原文
其他

什么是企业应用?

2016-12-21 刘欣 码农翻身

看到“企业应用“这次术语, 在你的下意识里,第一反应能想起哪些相关的词?


我的条件反射是: 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

我是一个线程

我是一个Java class

Java:一个帝国的诞生

JDBC诞生记

JDBC后传

一个不安分的JDBC驱动

JSP:一个装配工的没落

Javascript: 一个屌丝的逆袭

Spring本质系列(1) -- 依赖注入

Spring本质系列(2) -- AOP

Http 历险记(上)

Http 历险记(下)—Struts的秘密

三层架构和MVC那点事儿

Java帝国之 Java Bean(上)

Java帝国之 Java Bean(下)

计算机网络

我是一个路由器

我是一个网卡

TCP/IP之大明邮差

TCP/IP之大明内阁

TCP/IP之蓟辽督师

张大胖的socket

IE为什么把Chrome和火狐打伤了?

对浏览器村的第二次采访

节约标兵IE的自述

EMail诞生记

EMail诞生记(下)

操作系统

我是一个进程

CPU阿甘

CPU阿甘之烦恼  

我是一个键盘

我是一块硬盘(上)  

我是一块硬盘(下)

那些烦人的同步和互斥问题  

冯·诺伊曼计算机的诞生

数据库

小李的数据库之旅(上)

小李的数据库之旅(下)

张大胖学数据库

数据库村的旺财和小王


你看到的只是冰山一角, 更多精彩文章,尽在“码农翻身” 微信公众号, 回复消息"m"或"目录" 查看更多文章


有心得想和大家分享? 欢迎投稿 ! 我的联系方式:微信:liuxinlehan  QQ: 3340792577


公众号:码农翻身

“码农翻身”公众号由工作15年的前IBM架构师创建,分享编程和职场的经验教训。


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存