专访恩信科技CEO刘有涛:如何做一个云时代的程序员

原创
开发
与传统ERP相比,云ERP在技术架构没有太大的不同。但从恩信云的研发经验来看,一些传统软件开发中的问题会因云计算高并发、大负载的特点而暴露出来;而这些暴露出来的问题往往都是老师和项目经理不断强调的。

【51CTO独家报道】云计算自诞生以来一直备IT业界的关注。就开发人员来说,云计算与传统软件开发有那些不同?云时代的来临会给我们带来那些改变?我们需要那些技术和知识储备来适应云计算?带着这些问题,记者拜访了恩信科技的CEO兼首席架构师刘有涛先生,请他来为我们讲解如何做一个云时代的程序员。

恩信科技是中国开源ERP商务模式的缔造者,其恩信开源ERP产品目前拥有上百万用户;今年2月,恩信科技通过技术创新和研发,成功上线运营恩信云ERP产品。

[[1200]]
恩信科技CEO兼首席架构师刘有涛

 刘有涛认为,与传统ERP相比,云ERP在技术架构没有太大的不同。但从恩信云的研发经验来看,一些传统软件开发中的问题会因云计算高并发、大负载的特点而暴露出来;而这些暴露出来的问题往往都是老师和项目经理不断强调的。

优化代码质量

我们经常看到,那些教父级的程序高手和学院派的编程书籍不断强调代码质量,但真正执行“优美代码”准则并编写高重量代码的程序员在我们的身边少之又少。跟其他软件公司一样,恩信科技也有编码规范,但在实际开发中,由于团队中个体成员素质的差异,程序员往往依照自己已有的习惯去实现需求;这样的功能编码在传统软件产品中没有问题,但迁移到云端,一些问题就暴露出来。

对此,刘有涛有个形象的比喻,"不注重代码质量的软件开发就像在普通道路上行驶的汽车,正常行驶没有什么问题;一旦到高速公路上跑(迁移到云端),什么问题都来。"

比如我们熟悉的else...if的控制结构,也许在C/S结构下没什么问题,一旦迁移到云端,这样的代码会给服务器带来巨大的压力;同样的功能实现,同样的流程,使用switch...case将会更好,大大提高程序效率。这种程序语句的选择看似平常,却牵扯到程序员对项目的责任心和对代码质量的高追求。其本质是需求实现过程中对内存和CPU资源的优化。这样的优化在云应用开发中尤为重要。

面对云时代的挑战,恩信科技的经验是:大到功能模块的测试,小到一条SQL语句的检索范围都有严格要求,只有严格把控代码质量才能把一个传统软件研发技术团队逐步提升到一个云时代的技术团队。这也是一个传统程序员进入云时代的必经之路。

学习应用新技术

云计算是一个新概念,基于云计算的特点,出现了很多新的技术。如何让开发人员适应云计算,接受云应用开发的新技术直接关系到云产品是否真的对用户有价值。B/S结构的云应用都是由用户在浏览器端操作,这种操作的流畅度直接影响用户对产品的体验。除优质稳定的服务器硬件设施外,如何从技术方面有效提升云的响应速度是云时代开发人员面临的新挑战;而这种挑战,不仅仅是开发技术的更新,还有开发人员对新技术的接受和理解。

为了保证云应用的响应速度,恩信科技的云ERP产品大量使用了JavaScript和Ajax技术。对于一个以Java为技术主线的研发团队,对JavaScript和Ajax这种前端技术可能并不看重。但云应该强客户端的响应速度和服务器端的资源优化,让程序员尽快接受和熟悉这种技术尤为重要。

我们可以从恩信云ERP的界面上看到一些很酷炫的应用,这些UI操作在C/S结构中可能不难实现,但在浏览器中即要保重响应速度,又要考虑服务器端的低负载,实现起来并不容易。更不容易的是这些功能都是由Java程序员使用JavaScript和Ajax实现的。这意味着恩信的研发团队对异步传输理念的接受和Ajax技术的学习。

 
云ERP的界面大量采用Ajax技术

 
通过在线编程功能进行远程管理

目前,大部分的Java程序员不屑于学习新技术,特别是前台开发技术,认为这些都是美工做的事;但在云时代,除深入了项目需求和底层架构外,还需要程序员关注产品的操作响应速度,有效降低服务器压力需要前台与后台的紧密配合,多种技术协同开发。只有不断的学习新技术,更新开发方式和理念才能适应不断变化的行业和业务需求。

云端的程序优化

云应用虽然将大部分的操作交由客户端浏览器完成,通过异步的方式有效降低服务器的压力,但云计算高并发的特点依然要求开发人员关注服务器端的程序优化。

除了之前提到的通过提高代码质量,严格监控和测试,有效降低服务器端资源占用外,云端的应用程序还需要程序员熟知以下技术:

1、多线程。为了有效利用云计算平台,合理分配资源,云应用的开发中将大量使用多线程技术把程序对云资源的占用减到最小,有效处理高并发的问题。

2、数据库优化设计。在恩信的云ERP产品中,系统会对每一个新增用户在数据库中生成相关的表和字段(因ERP产品的复杂度和规模,每个用户会有一个庞大的数据库),这种生成操作将占用大量的服务器资源,很难想象一个传统架构的数据库服务器能提供几十个上百个用户的同时生成,而在云端,你的数据库将随时面临这种高并发的问题。

解决这些问题,需要有扎实的数据库理论知识和丰富的项目经验。需要掌握对SQL语句和存储过程的优化和处理技巧,积累数据库连接池设计方面的经验,在架构数据库时,详细分析项目需求,合理设计各个表与字段,养成良好的索引习惯。

3、安全技术。云时代,用户会将业务数据、财务数据等存储在云端,除在机房环境和硬件上保证用户的数据库安全外,还需要程序员在项目实施和编码过程中具备一定的安全知识,包括像SSL验证 、CA证书、SQL注入和加密技术。

云时代提倡创新

云时代,除需要以上所说的良好编码习惯、对新技术的学习和应用、丰富的多线程和数据库设计经验外,云时代还需要开发人员有很好的创新意识.

刘有涛先生特别提到希望有更多80后甚至是90后的开发人才加入,因为这个群体有着丰富的互联网经验,创新意识强,可以打造出更多更好的产品功能。刘有涛说:“云上的应用不仅是对传统软件功能的镜像或替代,这样是没有意义的;云版本的应用,就是要比传统应用更酷,更实用”。

【编辑推荐】

  1. SaaS、PaaS和云计算 搅动未来软件发展
  2. 对话阿里架构师:走进SaaS应用开发
  3. SaaS开发入门 阿里软件平台HelloWorld开发实例
责任编辑:佚名 来源: 51CTO.com
相关推荐

2019-04-22 10:25:52

程序员技术职场

2015-07-03 11:27:30

程序员自己神器

2015-03-04 10:22:16

程序员快乐的程序员好习惯

2014-07-22 10:00:18

程序员

2011-07-12 10:13:32

恩信科技ERP云计算

2015-09-02 15:26:13

环信

2016-03-24 13:53:29

博士程序员

2015-07-27 10:51:55

程序员快乐

2017-06-30 15:18:24

对账系统互联网

2012-12-17 12:58:18

WebjQuery重构

2011-12-20 10:02:01

ASP.NET

2020-02-22 21:51:43

程序员Microsoft SServerSQL

2015-05-13 14:06:03

程序员糟糕的程序员

2009-11-24 09:43:45

Chrome OS云计算

2014-01-06 09:33:32

程序员管理

2012-09-29 10:49:36

程序员debug架构

2010-12-27 09:24:45

JSP程序员

2009-07-02 09:42:34

JSP程序员

2015-06-25 09:53:13

JavaScript程序员

2015-06-25 19:23:03

JavaScript程序员
点赞
收藏

51CTO技术栈公众号