此文已由作者尧飘海授权网易云社区发布。

欢迎访问网易云社区,了解更多网易技术产品运营经验。

PaaS服务之路漫谈(一)

1983年,SUN公司提出的网络即计算的理念;2006年亚马逊(Amazon)推出弹性计算云(Elastic Compute Cloud;EC2)服务,云计算可以认为包括以下几个层次的服务:基础设施即服务(IaaS),平台即服务(PaaS)和软件即服务(SaaS)。

公司目前也在云计算等各层次里进行了较长的时间的投入和研发并应用在公司内外的各产品中,云计算相关的技术也得到了较好的论证。本文主要对PaaS进行相关的探讨。

PaaS(Platform-as-a-Service:平台即服务),较早期把服务器平台作为一种服务提供的商业模式,随着云计算时代的发展和成熟逐渐把部署环境、测试环境、甚至开发环境也当着一种服务来进行提供,并最终以SaaS的模式提交给用户。

PaaS也可以看成是SaaS模式的一种应用。SaaS的概念的提出非常早,根据相关文献和参考,理论上出现的时间在1998年或更早些,最早出现在欧美等发达国家。但最初的思想和现在发展的结果有相当大的不同,不再是单纯应用的服务提供了。

PaaS服务类似于IaaS也可以分为公有云PaaS平台和企业级PaaS平台。最早从事公有云的PaaS平台,如Google App Engine和Amazon Beanstalk,但是这二种类型的应用到国内都发展不是很好,特别是在国内GAE被墙,更是使用得其在国内基本上属于昙花一现,从后来Google的IaaS的转变路线也可以大概看到其发展也不是很好,很多只是当做试验的玩具而已,一方面是由于安全问题采用的沙箱机制使得开发人员施展能力受到相当大的限制,另一方面整个生态圈没有成熟,导致其他的云基础服务跟随不上,比如自动化的路由,负载均衡等技术。

在2007年左右,大规模的互联网的应用的快速成长和虚拟化技术的发展,PaaS服务加快了SaaS的发展,众多国内外厂商推出了自己的PaaS服务平台,国外包括 AMAZON, Google, SALEFORCES, CF等十大服务商,国内也最早的也包括SAE,BAE到后面的阿里云等。

PaaS服务开始的时间到今年也有8年左右的时间了,中国的抗日战争打了八年也结束了,尽管在国外有不少看似蛮红火的服务商,但是从国内从实际使用效果和真正推广的应用的情况来看,发展的不是特别理想,没有达到之前概念的预期发展。究竟其原因可能是多方面的,有技术方面的限制,也有产品化或开发人员对新概念接收度等非技术的原因。

近二年来,国内外又出新一批的PaaS服务创业公司,主要人员大部分是从第一批做PaaS服务平台的人员出来的创业的,比如DOTCLOUD,DEIS,国内的NICESCALE等公司,这些公司能不能很好的发展,现在还不好说,至少从目前的发展趋势来看,进入的门槛越来截低了,这些或许是得益于容器和虚拟化技术的发展。

我们公司目前也在致力这方面的探索和建设,从各服务的创业公司如春笋般新起和发展,大部分还是聚集在小型应用的基础上,对于中大型的应用,包括在一些大公司也只是刚刚开始着手构建,终究原因从技术方面来看大概有以下几种原因:

  • 容器技术确定能带来些好处,但是这种好处对于相对成熟稳定保守的公司来说还不足以能够撼动其短处,使其能快速转头换向全力投入其怀抱。

  • 技术储备,或者说跟风也好,追潮流也行,特别是小公司,由于成本较低,因此先试试水,看看是不是真的有红利或者做点什么,至少也得追上技术的发展趋势。

  • 实际的痛处,就是那些真正接受过凤凰涅盘,想浴火重生的人,比如开发人员,测试人员和运维人员,在经过版本不一致,库依赖不同,环境不一致等带来的低效或依赖的人,希望能把精力放在解决各自专业的问题。

  • 分久必合,合久必分:业务从小规模的起步到后来的大规模发展,应用的开发,测试和部署越来越复杂,依赖的服务越来越发多,最后变成相互抱怨,因此架构的演变也会随着这个趋势来发展。

    OS

    整个计算的行业的发展也经过不同的发展,从最早有代表性的人月神话的作者所带领的IBM的大型系统的开发到单机系统,再到虚拟机及容器技术成熟,无一不是从之前的一个很大的一块细分成小小的一块。

    CGI

    WEB技术的应用发展也有精力的相似,在Web应用程序开发的早期,大部分应用程序通常使用Common Gateway Interface(CGI)建立,包括前几年的QQ里面的很多系统还是采用C类语言实现的CGI-BIN来完成,每个请求采用一个进程来处理,当时的Apache服务也是整个最流行的网络服务器之一。

    ASP和JSP

    CGI技术带来的维护和性能的问题后来变得越来越严重,所有的代码都是混在一起的,甚至HTML的输出也是在业务代码里面嵌入的,业务上的扩展变成十分艰难。因此,WEB程序开发中的下一个阶段中衍生了“server pages”技术,比如ASP和JSP等语言,它们很好的实现应用程序逻辑代码与视图代码被很好的分离,加上设计模式得以快速演变,各层分工的越来越明细,职责也越来越明确。

    MVC

    因此在较短的时间内发展成了Model-View-Controller(MVC)的开发模式,包括现在大部分的中小型应用还是按采这样模式来开发,Controller层主要负责各业务的路由,调用相关的实现方法,通过MODEL的业务数据作为输入,最后产出View的输出,用来显示相关的视图,在这种模式下,业务数据、应用程序、视图逻辑被很好的分离。

    SOA

    目前在大部分应用中还会把Controller再进一步的细分成服务层或数据操作层。各服务之间的调用可以通过RPC或REST的风格进行调用,实现类似的SOA的服务架构,各服务层只需要通过相关的接口,相互间是松散和解耦,即实现了数据依赖与交互,又消除了代码库共享的依赖性。

从公司内各产品的发展趋势来看,各种不同的产品在不同的规模和阶段采用不同的架构模式来组组织和运行,但是随着应用的访问量的快速发展,产品正在朝着合久必分的趋势来发展,逐步形成了服务化的架构思想;本文第二部分将继续分析产品的不同架构模式:整块架构和服务化架构。

为了避免本文的裹脚布又长又臭,分第二篇再阐述,你懂的~,有兴趣请点击下面的连接。

网易 云计算基础服务 深度整合了 IaaS 、 PaaS 及容器技术,提供弹性计算、 DevOps 工具链及微服务基础设施等服务,帮助企业解决 IT 、架构及运维等问题,使企业更聚焦于业务,是新一代的云计算平台, 点击可免费试用 。 

相关文章:
【推荐】 Kylin存储和查询的分片问题

PaaS服务之路漫谈(一)的更多相关文章

  1. PaaS服务之路漫谈(三)

    此文已由作者尧飘海授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. Monolithic架构在产品访问量很大的情况下,有可能常会导致整个产品迭代或升级过程不能按预期进行,或者上 ...

  2. PaaS服务之路漫谈(二)

    此文已由作者尧飘海授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 天下大势,分久必合,合久必分,社会历史的发展方向总有着惊人的相似.把这种规律应用到软件应用架构的发展方向上, ...

  3. Azure PaaS服务密钥的安全性

    Azure PaaS服务,比如存储,Redis缓存,服务总线,IoT中心等等,一般通过密钥来认证客户端,也就是说只有提供正确密钥的客户端才能访问和使用对应的Azure PaaS服务,所以这个密钥是很重 ...

  4. 使用 dotnet core 和 Azure PaaS服务进行devOps开发(Web API 实例)

    作者:陈希章 发表于 2017年12月19日 引子 这一篇文章将用一个完整的实例,给大家介绍如何基于dotnet core(微软.NET的最新版本,支持跨平台,跨设备的应用开发,详情请参考 https ...

  5. MOT上海站 | 卓越研发之路:微服务之路

    微服务架构在带来灵活性.扩展性.可用性等优点的同时,其复杂性也给架构师们带来了很大的挑战.当你面对这些挑战一筹莫展时,不妨来参加由msup和微软联合推出的MOT线下沙龙活动吧,我们将给您答疑解惑. M ...

  6. .NET Core微服务之路:文章系列和内容索引汇总 (v0.52)

    微服务架构,对于从事JAVA架构的童鞋来说,早已不是什么新鲜的事儿,他们有鼎鼎大名的Spring Cloud这样的全家桶框架支撑,包含微服务核心组件如 1. Eureka:实现服务注册与发现. 2. ...

  7. NET Core微服务之路:实战SkyWalking+Exceptionless体验生产环境下的追踪系统

    前言 当一个APM或一个日志中心实际部署在生产环境中时,是有点力不从心的. 比如如下场景分析的问题: 从APM上说,知道某个节点出现异常,或延迟过过高,却不能及时知道日志反馈情况,总不可能去相应的节点 ...

  8. devOps开发(Web API 实例)dotnet core 和 Azure PaaS服务

    使用 dotnet core 和 Azure PaaS服务进行devOps开发(Web API 实例) 作者:陈希章 发表于 2017年12月19日 引子 这一篇文章将用一个完整的实例,给大家介绍如何 ...

  9. NET Core微服务之路:实战SkyWalking+Exceptionless体验生产下追踪系统

    原文:NET Core微服务之路:实战SkyWalking+Exceptionless体验生产下追踪系统 前言 当一个APM或一个日志中心实际部署在生产环境中时,是有点力不从心的. 比如如下场景分析的 ...

随机推荐

  1. bootstrap-table 大量字段整体表单上传之时间处理

    js 中用$('#addUserForm').serialize(),//获取表单中所有数据 传送到前台 (controller) $.ajax({ type : "POST", ...

  2. centos6.5_64bit_tomcat日志合并在一个.log下

    问题   tomcat每次启动时,自动在logs目录下生产以下日志文件,且每天都会生成对应日期的一个文件,造成日志文件众多:   目的        Tomcat以上日志都输出到同一个文件中.   修 ...

  3. 解析xml文件,修改Jenkins的配置

    最近因为服务器移动,在Jenkins中配置的一些地址之类的,都要改变,如图,我因为使用插件Sidebar Links增加一个链接地址,现在地址变了,所以在Jenkins中配置就需要改动link url ...

  4. Spring Security 之集群Session配置

    1.   新建Maven项目 cluster-session 2.   pom.xml <project xmlns="http://maven.apache.org/POM/4.0. ...

  5. 二、OC的构造方法和descriprtion方法

    二.构造方法和description方法 1.构造方法的定义 - (id)initWithAge:(int)newAge andNo:(int)newNo; 2.实现构造方法 - (id)initWi ...

  6. python 生成器与迭代器(yield 用法)

    背景 首先,我不会解释这两个名词,我看过很多遍解释,可还是看不懂,还是直接看使用情景吧. 我们以佩波拉契数列为例,当我们不知道迭代器的情况下,我们写出来的代码可能是这样子的: '''这种方式计算fib ...

  7. .net core自定义特性操作

    最近移植之前写的几个类,发现特性操作发生了一些改变. 直接看代码,建立表和字段特性类,添加一个用户表,设置好特性. using System; namespace TestDemo { /// < ...

  8. JQuery实现父级选择器(广告实现)

    效果图如下: HTML代码如下: <!DOCTYPE html> <html lang="en"> <head> <meta charse ...

  9. LeetCode977. 有序数组的平方

    问题:977. 有序数组的平方 给定一个按非递减顺序排序的整数数组 A,返回每个数字的平方组成的新数组,要求也按非递减顺序排序. 示例 1: 输入:[-4,-1,0,3,10] 输出:[0,1,9,1 ...

  10. 谈一谈你对js线程的理解

    js线程:javascript是单线程的,所有任务都需要排队,这些任务分为同步任务和异步任务,单线程上有一个主线程任务.同步任务必须再主线程上排队进行,而异步任务(类似于点击事件)必须在主线程上的任务 ...