韩束|前端和后端分别是什么?( 二 )


以上介绍的这些就是前端开发的一些常规技术 。
html、浏览器和前端服务器的工作原理一般在学校里的Computer Networking网络原理课会讲 , css、javascript和React则主要靠自学 。
后端开发(Backend Development)相当一部分的后端开发工作就是开发数据访问服务 , 使前端可以通过调用后端服务对数据进行增、删、查、改 , 也就是经常听到的crud , 从而实现前端对用户的请求响应 。
比如你在一个大型网站注册时 , 该网站的前端就会调用其后端 , 把你的用户信息写入数据库 , 一个后端服务其实不局限于只被前端调用 , 还可以被mobile app调用 , 还可以其他后端服务调用 。

类比一下 , 前端往往需要通过调用后端服务 , 来完成对用户请求的响应 。

而后端服务往往需要通过查询数据库 , 来完成对前端请求的响应 。

从这个类比你可以看出前端和后端的共性 , 都是通过调用一个比自己更靠后的服务来对前方的客户请求进行响应 。
后端工程师的工作范畴很广 , 几个比较常见的是 , 设计后端服务的API , 设计后端服务的架构图 , 设计后端服务的数据库 , 写代码实现后端服务的业务逻辑 , 同时还需要保证设计的后端服务highly available , 访问量很大时仍然保持不宕机 。 并对客户请求的响应时间短 , 或者吞吐量高 , 单位时间内能够处理的请求数量多 。
如果要从头搭建一个新的后端服务 , 那么整个过程需要进行大量的系统设计 , 也就是后端工程师面试会考到的System Design 。 做System Design非常考察平时的知识积累 。
后端工程师平时一般需要与哪些技术和工具打交道呢?
首先就是后端服务器 , 和前端服务器一样 , 后端服务器也可以由几乎任何一种编程语言实现 , 只要能把正确的数据返回给调用者即可 , 主流的编程语言也有各自流行的Web Framework , 也就是现成的轮子 , 帮助大家站在框架的肩膀上快速实现一个后端服务 。
比如基于java的web framework有spring boot和dropwizard , 基于javascript的有express , 基于python的有flask , 这几个web framework每一个都有大厂在使用 , 不同的公式具体选择那种框架 , 一定程度上是看公式创始工程师们最喜欢哪个编程语言 , 哪个框架用得最溜 。 还有一些后端服务的框架 , 可以支持你用多种语言来开发 , 而不是绑在特定一门语言上 。 比如gRPC这个远程调用框架 , 支持你用java、python、C++、Go等语言来开发 。
说了这么多语言和框架 , 如果你想去某个公司做后端开发 , 一定需要对他们用到的语言和框架熟练吗?
一般来讲 , 不会 。 我找工作时看到岗位描述里有我不会的语言或框架也无所谓 , 照样投 , 对公司来说你会其中一部分就够了 , 很多东西都是在工作里学的 。
而且事实上两周内上手一门新的编程语言是一名职业程序员的基本素养 。
除了开发和维护后端服务器 , 后端工程师还会花大量时间在数据库上 , 不管是为你的后端服务创建数据库 , 还是为数据库的性能调优 , 或者是分析里面的数据 。 目前最常用到的数据库是关系型数据库 。
比如在工业界被广泛使用的mySQL和postgreSQL , 如何设计一个关系型数据库 , 如何使用SQL query来访问数据 , 以及如何依靠index来为数据查询加速 , 这些知识点在学校里的数据库课程也有讲 , 然而学校的数据库课程里介绍比较少 , 近年来用得越来越多的是非关系型数据库 , 也就是大家常说的No-SQL , 比如基于Json文档的MongDB , 比如基于LSM tree的LeveIDB 。
这些数据库在某些特定情况下可能会比关系型数据库更适合你的业务需求 , 大家一般也是在工作中去学习它的原理和特性 。