写点什么

Web 开发这十年

  • 2017-12-05
  • 本文字数:3169 字

    阅读完需:约 10 分钟

Web 开发这十年都发生了怎样的变化?来看看 Ivan Zarea 总结的 Web 开发这十年。以下内容摘译自作者的博客,查看英文原文: How I would explain a decade of web development to a time traveler from 2007

亲爱的朋友们,希望你们喜欢我们现在的这个新世界。相比 2007 年,它已经发生了翻天覆地的变化。很高兴看到大家仍然喜欢电脑。我们现在拥有的电脑比十年前多得多,同时这也带来了新的挑战。可穿戴设备、口袋设备、家具智能设备、自动驾驶汽车,它们都是计算机。我们还教会程序玩各种游戏,并打败了人类。当然,或许也只有喝酒这件事是电脑无法与人类匹敌的。

Web 应用

苹果之所以能够成为最大、最富有的科技公司,多半是因为 iPhone 和它的操作系统 iOS。谷歌也有与之相匹敌的操作系统——安卓,微软也曾试图通过 Windows Phone 分得一杯羹,但没能成功。


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

我们开始管程序叫 App,有些网站称自己为 Web App。2008 年,谷歌发布了 Chrome 浏览器。9 年之后,Chrome 成为最流行的浏览器之一。

Chrome 团队花了很多精力在 JavaScript 上,Web App 使用了大量的 JavaScript 代码。

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

现如今,我们更多地使用 JavaScript,因为很少人用 Flash 了。我们甚至在服务器端使用 JavaScript 替代了 Perl,这个东西叫 Node。


响应式设计

还记得 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 的一些不足,如变量和模块化,但还不够完美。

迷茫是正常的

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

数据

程序员、程序和设备越来越多,数据也越来越多。我们必须不断提升计算机的处理能力来处理它们,我们也开发了一些技术从数据中挖掘有用的价值。

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

例如,有个叫作 Waze 的初创公司,他们让用户在手机上安装 App,在用户开车的时候跟踪他们的移动轨迹。因为有很多人都安装了这个 App,所以 Waze 就积累了很多汽车的移动数据。他们基于这些数据开发出了可以告知用户交通拥堵情况的程序。现在,用户在手机上打开 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 开发,后来开源出来。

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

感谢雨多田光对本文的审校。

2017-12-05 16:455233
用户头像

发布了 322 篇内容, 共 139.9 次阅读, 收获喜欢 145 次。

关注

评论

发布
暂无评论
发现更多内容

浅析数字孪生与数字卫星发展史

DevOps和数字孪生

卫星

巧用时间换空间:解读 ArcGraph 如何灵活应对有限内存下的图分析

Fabarta

图数据库 图计算 图分析 #人工智能

DeFi强势回归:新一轮DeFi牛市即将到来?

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 NFT开发 公链开发

这个软件开发工具私活必备,后端程序员也能一键搞定各端APP、小程序

Onegun

finclip

Seamless Video Roaming: Our Ultimate Solution Revealed!

wallyslilly

ipq9574 IPQ5332

《春江花月夜》Vivid菁彩视听版,开启一场美学视听盛宴!

最新动态

mac苹果电脑虚拟机推荐:VMware Fusion Pro for Mac 下载

你的猪会飞吗

VMware Fusion Pro VMware Fusion Pro 13 mac VMware Fusion Pro 12

第三期安全AI挑战者计划-文本分类对抗攻击 第三名“我永远喜欢星野源”技术总结

阿里云天池

博睿数据受邀亮相NebulaGraph Meetup北京站

博睿数据

程序员如何构建自己的话语体系?——用当量

思码逸研发效能

编程 程序员 软件开发 代码 绩效考核

百度搜索结果波动的极致治理

百度Geek说

从零开始学机器学习——了解回归

不在线第一只蜗牛

机器学习

使用豆包MarsCode 实现高可用扫描工具

豆包MarsCode

人工智能 程序员 AI 开发 智能化

从API到数据:京东商品详情一键获取的奥秘

技术冰糖葫芦

API Gateway API 接口 API 测试 pinduoduo API

2024具身智能大会 | 网易伏羲负责人范长杰博士:群体智能引领AI通向物理世界

网易伏羲

人工智能 aop 网易伏羲 具身智能 群体智能

仅需6步,实现虚拟物体在现实世界的精准放置

HarmonyOS SDK

HarmonyOS

探索MySQL中VARCHAR(255)的演变及其对数据库设计的影响

Steven

人工智能 | 手工测试用例转Web自动化测试生成

测试人

软件测试 软件测试面试

精通Java并发锁机制:24种锁技巧+业务锁匹配方案(第二部分)

肖哥弹架构

Java 高并发

Footprint Analytics 集成 Sui 区块链数据:助力 Move 生态系统的未来

Footprint Analytics

blockchain Sui

C2C交易系统开发DApp组成架构详解

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 代币开发

合同管理中的常见陷阱,你是否也中招了?

天津汇柏科技有限公司

低代码 合同管理 AI 人工智能

【程序大侠传】应用内存缓步攀升,告警如影随形

Disaster

JavaScript中if嵌套assert的方法

EquatorCoco

JavaScript

【免费大屏】JimuReport 积木仪表盘 v1.8.1 首个集成版本发布

JEECG低代码

CNCC | 从游戏AI到AOP :虚实融合助推新质生产力

网易伏羲

人工智能 aop 网易伏羲 游戏AI cncc

助力降本增效,ByteHouse打造新一代云原生数据仓库

字节跳动数据平台

数据仓库 云原生 OLAP 降本增效

华为智慧屏 V5 Max 110发布!Audio & HDR Vivid畅享菁彩视听盛宴

最新动态

MLPerf 放榜,中国 AI 存储公司焱融科技斩获多项世界第一

焱融科技

AI 高性能存储 MLPerf

观测云产品更新 | 场景、基础设施、用户访问、管理等

观测云

数据分析 基础设施

获取淘宝商品详情数据api接口GET请求访问权限的条件

代码忍者

API 接口 pinduoduo API

Web开发这十年_语言 & 开发_Ivan Zarea_InfoQ精选文章