作者 | 胥磊
审校 | 孙淑娟
自2020年新冠疫情爆发以来,特别是近几年伴随地缘冲突的加剧,各行各业都受到影响,全球经济已步入高震荡、低增长的时代。为应对滞涨的压力,国家正大力推进企业数字化建设,期望通过数字化转型实现降本增效,从而带动企业的可持续发展。而这其中占全国企业总数的98.5%的小微企业,一方面数字化程度普遍较低,另一方面其生存环境也更为严峻,生产效率低,而人力、管理成本一直居高不下。
数字化转型虽然是走出目前困境的捷径,但需要企业对硬件和软件投入高额的成本,即使有政策倾斜小微企业也不堪重负。一边需要数字化来降本,一边又需要高额的投入,这似乎陷入一个悖论的困局。其实不然,SaaS服务就是破开上述困局的关键。
得益于云计算的蓬勃发展,SaaS服务已经与各个行业进行了深层次的融合,很好地满足了各个企业在不同领域和不同应用场景的多样化需求。目前,SaaS服务呈现出多样化、垂直化、智能化的趋势,以其投入低见效快的特性,被越来越多的企业所接受。SaaS服务又是如何解决企业数字化成本投入过高的问题呢?还要从SaaS特性和生态说起。
SaaS,是Software-as-a-Service的缩写名称,意思为软件即服务,即通过网络提供软件服务。SaaS平台供应商将应用软件统一部署在自己的服务器上,客户可以根据工作实际需求,通过互联网向厂商定购所需的应用软件服务,按定购的服务多少和时间长短向厂商支付费用,并通过互联网获得Saas平台供应商提供的服务。
--百度百科
通过使用SaaS服务,企业不再需要将数字化的成本一次性投资到位,取而代之的是只要按期付出相对低廉的使用费,就可以享受数字化带来的便捷。企业完全不用考虑使用过程中的运维,以及后期软件的升级和硬件折旧的问题。而且不需要设置专门的维护和管理人员,大大降低企业在人力、资源上的成本支出,这一切使得越来越多的企业接受SaaS服务。通过2022中国小微企业SaaS白皮书的数据来看,目前的情况看虽然绝大部分企业在SaaS服务的年均投入上都集中在5000元-5万之间,但从近几年企业在SaaS的年投入增速统计看,36.4%的企业在年投入成本保持10-20%的增速,而31.5%的企业年投入增速则达到20-30%。

图片来源:ifenxi 2022中国小微企业SaaS白皮书
如上图展示,较高的年投入增速也从侧面说明SaaS服务在企业数字化转型中发挥了积极作用。较低的年投入成本,意味着试错成本也低,便于企业快速开展业务的同时,不再对企业的经营带来额外的压力。
经过多年发展,目前国内已经有了钉钉,金蝶云等相对成熟的SaaS生态平台。另外垂直细分领域CRM、ERP、协同办公等也趋于成熟。随着SaaS服务逐渐被认可并得到推广应用,除互联网行业,更多的传统软件厂商也涌入该赛道。SaaS服务厂商日益激烈的竞争,一方面提供了更多类型的产品给企业选择。另一方面迫使服务厂商内部不断进行技术创新,提升服务的性能、体验。
SaaS服务升级给企业带来更广的产品选择面,更好的服务体验。对提升经营效率,降低成本等方面也带来积极的影响。伴随企业数字化程度不断提高,SaaS服务在企业经营过程中发挥的降本增效的作用也是非常明显的。

图片来源ifenxi 2022中国小微企业Saas白皮书
SaaS服务在当下企业数字化转型中大放异彩,且隐隐呈现一种取代传统软件的趋势。但是随着企业数字化转型的一步步深入,如何满足不同企业的业务特性的问题也日益凸显。但SaaS服务很难满足企业的进一步的需求,原因主要有以下两方面:
目前,SaaS服务厂商都深耕细分垂直领域,如ERP、办公协同、CRM、财税、电商、物流等,各个领域都有不同的TOP厂商,各个厂商之间都是相互独立的,有着不同的产品架构,不同SaaS服务的融合缺乏推动力。
SaaS服务的成本低,主要得益于多租户和通用模式的架构。服务使用的用户越多,成本就会分摊的更多。但是也要看到另一方面,随着用户增多相应的特性需求就越多。如果满足企业个性化需求就需要SaaS服务供应商付出更高昂的成本。
一方面企业基于自身发展需要,对个性化服务以及业务协同和数据融合有更迫切的需求;另一方面SaaS服务商出于成本考虑也缺失必要改进动力。如何解决上述矛盾?基于Serverless的低代码就是非常好的解决方案。
这里所说的低代码其范围是涵盖了No-code。其本身也是一种软件,为开发者提供了一个快速创建应用的开发环境。通过低代码低代码平台,“开发者”不再需要通过传统的手写代码的方式编程,取而代之的是通过图形化拖拽、参数配置等更高效的方式完成开发工作。上面提到的开发者可以是一位开发经验丰富,能独立开发和维护一整套复杂应用的全栈工程师,也可以是一位“Citizen Developer”,完全不懂代码的,企业里面运营人员、财务人员,当然也可以是产品经理。对“Citizen Developer”来说低代码不仅仅是一个单纯的工具,也是展现其理念和创意的平台,真正做到所见即所得,充分的支撑其个性化需求的满足。

低代码低代码平台很好地解决了个性化的问题,但同样要看到其本身也是存在一些挑战的。目前流行的低代码实际上指的是各式各样的低代码平台(如Mendix,氚云),都是基于可视化的方式,通过对组件的组合以及排版布局调整进行应用的开发。面临的最大挑战之一就是生态的问题,各个厂商的低代码平台往往都是针对特定业务领域,而且组件以及底层通信协议也千差万别,平台之间很难通用。加上缺乏统一的行业标准规范,各厂商之间概念也不统一,所以拓展性和可维护性低。彼此孤立的低代码平台客观上就很难形成一个良好的生态环境,加大了低代码平台使用和推广的难度。
促进低代码平台的进一步发展,就迫切需要一个成熟的生态。类似阿里开源的LowCode Engine,一款用于开发低代码平台的框架。其统一了相关术语、概念、行为、协议以及规范,让“概念互通,物料互通,生态互通”成为可能。有了统一的标准和规范,组件的通用将不再是问题,丰富的组件也将进一步提升低代码的灵活性,从而解决企业业务个性化的问题,而进一步解决数据融合和业务协同问题则需要Serverless了。

自2019年Serverless就被Gartner认为是云计算最有潜力的发展方向,是未来发展的趋势。Serverless从底层开始变革计算资源的形态,为软件的架构设计和应用部署带来新的思路。如果说低代码从交互层解决了业务的个性化问题,Serverless则将从服务层和基础设施层解决业务价值链协同和数据融合带来的挑战。
为了便于理解,后面提到的服务层的Serverless可以理解为FaaS函数即服务(不是很准确,实际上两者概念也通常被混淆),如AWS Lambda、Google Cloud Founctions、Azure Functions以及国内的阿里云函数和腾讯云函数。通过Serverless,SaaS厂商不再需要提供一体化的软件服务,只需要将对应的SaaS服务按通用的标准格式进行封装,提供函数服务既可,个性化的展示层交由低代码解决。SaaS服务商可以专注于专业性要求更高,业务逻辑更复杂的后端服务。而开发者(也可以是业务人员),通过低代码平台可视化搭建自己需要的页面后,相关功能所需要的数据或者服务将由更专业的服务商提供,至于其出处和背后的业务逻辑不再需要更多的考虑。大家各司其职,从而使多种数据的融合和不同业务的协同不再是制约企业发展、影响用户体验的瓶颈。
基础设施层方面,Serverless是完全的自动化弹性扩缩容,基于云原生计算的服务厂商不再需要过多的考虑服务器相关的问题,如规模、存储类型、网络带宽等等。一方面大大节省运维成本,另一方面服务厂商不再需要预分配昂贵的资源。云计算提供的弹性扩缩能力,可以针对业务请求的暴涨或者降低,自动的分配或缩减资源,很好地避免了过度分配资源带来的浪费和资源评估不足所导致的业务损失。另外,Serverless还可以支持自动调整资源集群的节点的分布,通过将分散的运行节点进行自动归集,进而关闭空闲的集群,可以大大地节省能源消耗,从而降低云服务商的运营成本,使其可以提供更廉价的云计算服务。
伴随SaaS服务在各行各业数字化改革的深度使用,其自身的一些局限性也必然会越来越突出。而基于Serverless的低代码为开发者提供一种全新的开发模式,从根本上提升了IT的生产力,其弥补了专业人才的缺口的同时,也进一步促进业务和技术的深度协作。
胥磊,51CTO社区编辑,某头部电商技术副总监,关注Java后端开发,技术管理,架构优化,分布式开发等领域。
如何在buildr项目中使用Ruby?我在很多不同的项目中使用过Ruby、JRuby、Java和Clojure。我目前正在使用我的标准Ruby开发一个模拟应用程序,我想尝试使用Clojure后端(我确实喜欢功能代码)以及JRubygui和测试套件。我还可以看到在未来的不同项目中使用Scala作为后端。我想我要为我的项目尝试一下buildr(http://buildr.apache.org/),但我注意到buildr似乎没有设置为在项目中使用JRuby代码本身!这看起来有点傻,因为该工具旨在统一通用的JVM语言并且是在ruby中构建的。除了将输出的jar包含在一个独特的、仅限ruby
在rails源中:https://github.com/rails/rails/blob/master/activesupport/lib/active_support/lazy_load_hooks.rb可以看到以下内容@load_hooks=Hash.new{|h,k|h[k]=[]}在IRB中,它只是初始化一个空哈希。和做有什么区别@load_hooks=Hash.new 最佳答案 查看rubydocumentationforHashnew→new_hashclicktotogglesourcenew(obj)→new_has
我的主要目标是能够完全理解我正在使用的库/gem。我尝试在Github上从头到尾阅读源代码,但这真的很难。我认为更有趣、更温和的踏脚石就是在使用时阅读每个库/gem方法的源代码。例如,我想知道RubyonRails中的redirect_to方法是如何工作的:如何查找redirect_to方法的源代码?我知道在pry中我可以执行类似show-methodmethod的操作,但我如何才能对Rails框架中的方法执行此操作?您对我如何更好地理解Gem及其API有什么建议吗?仅仅阅读源代码似乎真的很难,尤其是对于框架。谢谢! 最佳答案 Ru
我的假设是moduleAmoduleBendend和moduleA::Bend是一样的。我能够从thisblog找到解决方案,thisSOthread和andthisSOthread.为什么以及什么时候应该更喜欢紧凑语法A::B而不是另一个,因为它显然有一个缺点?我有一种直觉,它可能与性能有关,因为在更多命名空间中查找常量需要更多计算。但是我无法通过对普通类进行基准测试来验证这一点。 最佳答案 这两种写作方法经常被混淆。首先要说的是,据我所知,没有可衡量的性能差异。(在下面的书面示例中不断查找)最明显的区别,可能也是最著名的,是你的
几个月前,我读了一篇关于rubygem的博客文章,它可以通过阅读代码本身来确定编程语言。对于我的生活,我不记得博客或gem的名称。谷歌搜索“ruby编程语言猜测”及其变体也无济于事。有人碰巧知道相关gem的名称吗? 最佳答案 是这个吗:http://github.com/chrislo/sourceclassifier/tree/master 关于ruby-寻找通过阅读代码确定编程语言的rubygem?,我们在StackOverflow上找到一个类似的问题:
我正在尝试解析一个CSV文件并使用SQL命令自动为其创建一个表。CSV中的第一行给出了列标题。但我需要推断每个列的类型。Ruby中是否有任何函数可以找到每个字段中内容的类型。例如,CSV行:"12012","Test","1233.22","12:21:22","10/10/2009"应该产生像这样的类型['integer','string','float','time','date']谢谢! 最佳答案 require'time'defto_something(str)if(num=Integer(str)rescueFloat(s
我目前正在使用以下方法获取页面的源代码:Net::HTTP.get(URI.parse(page.url))我还想获取HTTP状态,而无需发出第二个请求。有没有办法用另一种方法做到这一点?我一直在查看文档,但似乎找不到我要找的东西。 最佳答案 在我看来,除非您需要一些真正的低级访问或控制,否则最好使用Ruby的内置Open::URI模块:require'open-uri'io=open('http://www.example.org/')#=>#body=io.read[0,50]#=>"["200","OK"]io.base_ur
前言作为一名程序员,自己的本质工作就是做程序开发,那么程序开发的时候最直接的体现就是代码,检验一个程序员技术水平的一个核心环节就是开发时候的代码能力。众所周知,程序开发的水平提升是一个循序渐进的过程,每一位程序员都是从“菜鸟”变成“大神”的,所以程序员在程序开发过程中的代码能力也是根据平时开发中的业务实践来积累和提升的。提高代码能力核心要素程序员要想提高自身代码能力,尤其是新晋程序员的代码能力有很大的提升空间的时候,需要针对性的去提高自己的代码能力。提高代码能力其实有几个比较关键的点,只要把握住这些方面,就能很好的、快速的提高自己的一部分代码能力。1、多去阅读开源项目,如有机会可以亲自参与开源
导读:随着叮咚买菜业务的发展,不同的业务场景对数据分析提出了不同的需求,他们希望引入一款实时OLAP数据库,构建一个灵活的多维实时查询和分析的平台,统一数据的接入和查询方案,解决各业务线对数据高效实时查询和精细化运营的需求。经过调研选型,最终引入ApacheDoris作为最终的OLAP分析引擎,Doris作为核心的OLAP引擎支持复杂地分析操作、提供多维的数据视图,在叮咚买菜数十个业务场景中广泛应用。作者|叮咚买菜资深数据工程师韩青叮咚买菜创立于2017年5月,是一家专注美好食物的创业公司。叮咚买菜专注吃的事业,为满足更多人“想吃什么”而努力,通过美好食材的供应、美好滋味的开发以及美食品牌的孵
目录一.加解密算法数字签名对称加密DES(DataEncryptionStandard)3DES(TripleDES)AES(AdvancedEncryptionStandard)RSA加密法DSA(DigitalSignatureAlgorithm)ECC(EllipticCurvesCryptography)非对称加密签名与加密过程非对称加密的应用对称加密与非对称加密的结合二.数字证书图解一.加解密算法加密简单而言就是通过一种算法将明文信息转换成密文信息,信息的的接收方能够通过密钥对密文信息进行解密获得明文信息的过程。根据加解密的密钥是否相同,算法可以分为对称加密、非对称加密、对称加密和非