云计算自诞生以来一直备IT业界的关注。就开发人员来讲,云计算与传统软件开发有那些不一样?云时代的来临会给咱们带来那些改变?咱们须要那些技术和知识储备来适应云计算?带着这些问题,记者拜访了恩信科技的CEO兼首席架构师刘有涛先生,请他来为咱们讲解如何作一个云时代的程序员。
恩信科技是中国开源ERP商务模式的缔造者,其恩信开源ERP产品目前拥有上百万用户;今年2月,恩信科技经过技术创新和研发,成功上线运营恩信云ERP产品。
恩信科技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程序员不屑于学习新技术,特别是前台开发技术,认为这些都是美工作的事;但在云时代,除深刻了项目需求和底层架构外,还须要程序员关注产品的操做响应速度,有效下降服务器压力须要前台与后台的紧密配合,多种技术协同开发。只有不断的学习新技术,更新开发方式和理念才能适应不断变化的行业和业务需求。
云端的程序优化
云应用虽然将大部分的操做交由客户端浏览器完成,经过异步的方式有效下降服务器的压力,但云计算高并发的特色依然要求开发人员关注服务器端的程序优化。
除了以前提到的经过提升代码质量,严格监控和测试,有效下降服务器端资源占用外,云端的应用程序还须要程序员熟知如下技术:
一、多线程。为了有效利用云计算平台,合理分配资源,云应用的开发中将大量使用多线程技术把程序对云资源的占用减到最小,有效处理高并发的问题。
二、数据库优化设计。在恩信的云ERP产品中,系统会对每个新增用户在数据库中生成相关的表和字段(因ERP产品的复杂度和规模,每一个用户会有一个庞大的数据库),这种生成操做将占用大量的服务器资源,很难想象一个传统架构的数据库服务器能提供几十个上百个用户的同时生成,而在云端,你的数据库将随时面临这种高并发的问题。
解决这些问题,须要有扎实的数据库理论知识和丰富的项目经验。须要掌握对SQL语句和存储过程的优化和处理技巧,积累数据库链接池设计方面的经验,在架构数据库时,详细分析项目需求,合理设计各个表与字段,养成良好的索引习惯。
三、安全技术。云时代,用户会将业务数据、财务数据等存储在云端,除在机房环境和硬件上保证用户的数据库安全外,还须要程序员在项目实施和编码过程当中具有必定的安全知识,包括像SSL验证 、CA证书、SQL注入和加密技术。
云时代提倡创新
云时代,除须要以上所说的良好编码习惯、对新技术的学习和应用、丰富的多线程和数据库设计经验外,云时代还须要开发人员有很好的创新意识.
刘有涛先生特别提到但愿有更多80后甚至是90后的开发人才加入,由于这个群体有着丰富的互联网经验,创新意识强,能够打造出更多更好的产品功能。刘有涛说:“云上的应用不只是对传统软件功能的镜像或替代,这样是没有意义的;云版本的应用,就是要比传统应用更酷,更实用”。