你不知道的WEB前端开发这10年

Web开发这十年都发生了怎样的变化?来看看Ivan Zarea总结的Web开发这十年。

对比2007年,世界也曾发生了天崩地裂翻天覆地的变化。很快乐看到大家照旧喜欢电脑。我们现在拥有的电脑比十年前多得多,同时这也带来了新的问题。可穿着装备、口袋装备、家具智能设施、自动驾驶汽车,它们都是计算机。我们还教会程序玩各种游戏,并战胜了人类。诚然,能够也只有饮酒这件事是电脑没法和人类匹敌的。

Web应用

苹果之所以成为最大、最富裕的科技公司,多数是因为iPhone与它的利用系统iOS。google有了与之相抗衡的独霸体系——安卓,微软已经试图经由过程Windows Phone分得一杯羹,但没能告捷。

2008年发布的iPhone 3GS和2017年发布的iPhone X

我们初步管应用呈现叫App,有些站点称自身为Web App。2008年,google公布了Chrome浏览器。9年之后,Chrome成为最盛行的浏览器之一。

Chrome团队花了很多力气在JavaScript上,Web App运用了大批的JavaScript代码。

此外很多公司也在JavaScript上投入了大量努力,此刻它可以支持类与模块。一些言语也可以被编译成JavaScript,如TypeScript(来自微软)或Flow。

现在,我们更多地使用JavaScript,因为很少人用Flash了。咱们以至在服务器端应用JavaScript包揽了Perl,这个工具叫Node。

WEB响应式设计

还记得Swing、SWT以及wxWidget这些工具吗?我们在浏览器上重新创造了它们,于是出现了一些新的UI编程模型,它们主要会合在组件化上。

咱们必需想办法设计、构建和测试相应式App,同时还要维持它们不会太臃肿,固然人们人手一部多终端设备,但流量其实不宽裕。

因此组件框架出现了,比如谷歌的Angular、Facebook的React与来自开源社区的Vue。

2007年,Facebook劈头劈脸在美国雄起,到目下当今已经成为一个巨头公司。除了领有大批的用户,Facebook也是世界上领有至多代码的公司之一。

Facebook的开发团队开发了很多代码,并将它们开源。他们也有自己的开发者大会,叫作F8。大部分巨头公司都有自己的开发者大会。

新的App重要愈来愈繁冗的UI构造,以是CSS也必要有所变化。咱们再也不运用table来布局页面,frame元素也差不多灭绝了。咱们建树了新的规范,譬如CSS Floats、Flexbox和CSS Grid。

人们不息地对这些标准进行迭代,开发了各类新框架,例如Bootstrap、Foundation等。咱们还发明了一些语言,可以将它们编译成CSS。它们补偿了CSS的一些不足,如变量与模块化,但还不够美满。

迷茫是正常的

假如你们感到疑惑,这是正常的,事实上,我们都会感受不解。现在的开发者越来越多,互联网公司也越来越成功。我们曾经使用“初创公司”来描述那些增长迅速同时有点无所适从的公司,不过纵然是这个词到了现在有了点out了。

数据

程序员、程序和设备愈来愈多,数据也越来越多。咱们必需不时提高计算机的处理手段来处置它们,咱们也开发了一些新技术从数据中发掘有效的价值。

首先,出现了数据科学,旨在从数据中抽取信息。

例如,之前的Waze,是一个初创型公司,他们让用户在手机上安装App,在用户开车的时候跟踪他们的移动轨迹。由于有很多人都安装了这个App,所以Waze就记录了很多汽车的移动数据。他们基于这些数据开发出了可以告知用户交通拥堵情况的APP。现在,用户在手机上打开Waze的App,便可以实时地看到哪里发生了交通堵塞,然后选择其他路线。

后来Waze被谷歌收购了,其实很大一部分初创公司都会经历被收购的命运。


一个用户在使用Waze,屏幕上同时显示其他用户的头像

数据科学主要面临三大挑战——数据存储、数据学习和数据应用。

数据存储

我们现在需要把大量的信息记录下来,并从中找出哪些是有用的。我们需要新的数据库,MySQL、PostgreSQL这类数据库已经无法用于存储TB级别的数据了(因此就有了大数据)。

互联网巨头公司时常面对如此的挑战,所以他们就成为这类技术的先驱。很大一部分技术都是从在这些公司内部先进行起来,今后再开源。

后来出现了NoSQL,这类数据库对传统关系型数据库的一部分进行了改造,成为了新型数据库。

Hadoop可以将数据保存在离散的多个计算机节点上,并定义了MapReduce的数据处理方式。

接着Cassandra出现了,它通过键和列的方式(而不是表)将数据保存在不同的节点上,还可以保证在部分节点离线时不丢失数据。

还有MongoDB,一个十分方便用于构建原型的数据库。在2017年,我们对待技术的心态就像在10年前对待明星一样——有追捧也有怒斥。而MongoDB就相当于10年前的五分钱乐队(Nickelback)。

数据学习

使用机器学习技术将一张普通的小狗图片变成具有艺术风格的作品

在数据学习阵营,人们最为关注的是机器学习。数据科学家的技术手段工具箱里有各类各样的工具,从分类到深度进修。他们一般使用Python,并与开发人员一同将机器学习运用到各个领域。

在数据科学专家的帮助下,Web App可以运用A/B测试技术了。该技术使用了两个不同版本的服务器为相似的用户提供服务,看看哪个版本能够更快地达成预期目标。

Airbnb、Uber和Netflix等大公司就是同时运行着成千上万个A/B测试,确保能够为他们的用户带来最好的服务体验。

微服务和云

像Netflix这样的大公司拥有着大量的用户数据,他们需要确保他们的服务时时刻刻在运行。所以必须要做好服务器管理,在必要的时刻甚至需要增加数百台新服务器。

这种情况在传统的数据中心就很难实现的,所以Netflix的工程师使用的是虚拟机。亚马逊于2006年推出了AWS,提供弹性云计算,也就是EC2,这样人们就可以使用亚马逊数据中心里的虚拟机了。

现在亚马逊已经推出了80余种服务,帮助其他公司快速增长服务器。我们称之为“云”,但其实很难定义好这个名字。

亚马逊提供的云服务

谷歌和微软也推出他们各自的云服务,分别争夺云服务的广大市场。这些聪明人之间展开的竞争,各种疯狂的创新举动慢慢开始涌现。

首先,我们开始考虑如何让基础设施看起来更像代码。以前,我们必须先购买新服务器,接进键盘,然后安装各种依赖项。

而现在,我们使用管理配置工具(如Puppet、Chef和Ansible)来实现自动化服务器配置。我们使用编程语言(如Ruby)编写代码,根据配置来分配服务器。如果需要做出变更,只需要修改配置并更新服务器,最多就使用一下SSH。

然后容器出现了。EC2为我们提供了机器分配服务,所以我们的开发环境应该尽量与生产环境保持一致。

刚开始,我们使用Vagrant启动虚拟机,后来有了Linux容器,最后,Docker出现了。我们找到了一种可以在MacBook上运行Linux的方式,而且不需要安装完整的虚拟机。

通过使用Docker,我们可以创建与生产环境相似的开发环境。开发人员使用Docker镜像,将应用部署到容器里。

Windows 10发布会上有很多人在使用MacBook

云厂商也紧追不舍,直接在他们的云上运行容器,并提供了Marathon和Kubernetes这样的编配框架。有了这些框架,开发人员就不需要担心应用的伸缩、容错、监控和发现等方面的问题。服务器是可以被收回的,不过这一次我们不再给它们起什么好听的名字了。

开发人员可以创建小型的应用,叫作微服务,这些微服务独立运行。又因为微服务对外部依赖较少,我们开始尝试使用更多新的编程语言来实现微服务,比如Go语言和Java。

我们也可以使用基于JVM的Scala和Clojure,以及相关的类库。Airbnb就使用了多种不同的语言和数据库实现数百个微服务。

因为微服务的出现,我们不得不重新思考编程模型。因为现在我们需要协调更多、更小型的应用。

于是,Apache Kafka、Google PubSub和RabbitMQ出现了,它们旨在帮助服务器之间进行更好的交互。Kafka最初由LinkedIn开发,后来开源出来。

越来越多的开发者、软件和创意在涌现,我希望大家仍然对计算机开发保持兴趣。事实上,我们完全有理由这么做。


阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页