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

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

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. 笨办法学Python(三十)

    习题 30: Else 和 If 前一习题中你写了一些 “if 语句(if-statements)”,并且试图猜出它们是什么,以及实现的是什么功能.在你继续学习之前,我给你解释一下上一节的加分习题的答 ...

  2. selenium安装及官方文档

    selenium-python官方文档: https://selenium-python.readthedocs.io/ python3.5已安装的情况下,安装示意图如下 命令行输入 pip3 ins ...

  3. 如何使用Win32API绘制树

    一.这个已经有几年时间了,刚开始学习charlie的<windows程序设计>的时候做的.现在看来,代码很乱,虽然后来还整理过几次,现在这方面没什么兴趣了,有兴趣的可自由下载. 二.绘制二 ...

  4. hdu-1247 Hat’s Words---字典树模板

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1247 题目大意: 给出一些单词,以EOF结束,看其中哪一个单词可以由其他两个单词组成,将其输出 解题 ...

  5. IA32的三种地址

    IA32的三种地址 逻辑地址:机器语言指令仍用这种地址指定一个操作数的地址或一条指令的地址. 这种寻址方式在Intel的分段结构中表现得尤为具体,它使得MS-DOS或Windows程序员把程序分为若干 ...

  6. 【CCPC-Wannafly Winter Camp Day3 (Div1) D】精简改良(状压DP)

    点此看题面 大致题意: 给你一张图,定义\(dis(i,j)\)为\(i\)与\(j\)的最短距离,现要求删去若干条边,使得图仍然联通,且\(\sum_{i=1}^n\sum_{j=i+1}^ndis ...

  7. BZOJ 4247 挂饰 01背包

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=4247 JOI君有N个装在手机上的挂饰,编号为1...N. JOI君可以将其中的一些装在手机 ...

  8. Kruskal算法求最小生成树(POJ2485)

    题目链接:http://poj.org/problem?id=2485 #include <iostream> #include <stdio.h> #include < ...

  9. mysql [Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'information_schema.PROFILING.SEQ' which is not functionally dependent on columns in GRO

    [Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated c ...

  10. 2017.11.17 C++系列---用malloc动态给c++二维数组的申请与释放操作

    方法一:利用二级指针申请一个二维数组. #include<stdio.h> #include<stdlib.h> int main() { int **a; //用二级指针动态 ...