讲师介绍
何骏 yussica
腾讯 AlloyTeam 高级前端开发工程师
先后参与过 WebQQ、Q+、QQ 互联、手 Q 吃喝玩乐等业务的开发,业余时间,还和小伙伴一起开发过 iPresst 在线创作平台,“ 墙来了” 体感游戏。近期主要专注于 node server—“ 玄武” 的开发和优化,在通往全栈的道路上不断摸索和积累 ing。
1. 是什么契机,让你有机会在前端开发工作中,接触 Node 服务端开发呢?
首先,一个很重要的原因就是 Nodejs 从诞生到现在发展的很快,特别是在更新到 4.x 版本后支持了很多 ES6 的特性(6.x 版本支持 90%+ES6 的特性),这极大的提升了开发体验,还解决了之前在服务端开发中遇到的异步编程、回调地狱等问题。
其次,大家应该都有感觉,仅仅专注于前端,有很多事情是无法独立完成的,比如页面直出(服务端渲染)、接口联调、自由项目的后台开发等。
于是,我们开始尝试用 Nodejs 自己写 server,因为语言都是 js,所以学习成本很低,上手很快。但这还远远不够,一个可以真正跑在生产环境中的 server 还需要很多核心模块,如进程管理(负载均衡)、路由配置化、RPC 远程调用、异常处理、日志系统(还原现场,定位现网问题)、监控告警、cache 等,于是就诞生了“ 玄武”。
2. 在大型后端架构设计中,你认为有哪些重要的关注点?
1)健壮、稳定
健壮性和稳定性应该是后端最需要关注的点,极限值处理、错误捕获、异常恢复、日志系统、监控告警都是必不可少的。试想一个页面 UI 丑一点,动画 FPS 低一些,用户都还能接受,但如果点击按钮看到的一直是“ 系统繁忙,请稍后重试”,就会很绝望了,严重的话甚至会导致用户未保存的数据丢失。
2)安全
对于黑客来说,他们最想拿到的其实是用户的数据,这就意味着系统里的任何一个小的漏洞都可能成为突破口,造成难以想象的严重后果。即使事发后及时修复,你的产品也会失去用户的信赖。所以安全必须引起大家足够的重视。
3)灵活、易扩展
一个灵活、可扩展的系统应该做到功能模块的可插拔,模块间的低耦合,API 接口的定义与实现分离等。随着用户访问量的不断增加,系统还需具备弹性扩容的能力,利用分布式服务框架做好状态同步、负载均衡、集群管理、配置统一化等。
4)开发友好
这一点是所有框架都会考虑到的。将更多的功能做成配置化的,往往可以降低学习成本,提升开发效率。
以上都是我个人的理解,可能还有些地方并没有从前端的思维中转换过来。
3. 现在全栈工程师的概念很火,是不是学习了 Nodejs 就可以做到全栈了?
当然不会这么简单了。
“ 什么都略懂一点,生活更多彩一些”,我认为这是做到全栈的第一步,只有这样你才能对每个项目都有一个整体的把握,可以与其他小伙伴进行高效的沟通。之后你需要在某个领域不断实践,积累经验,做精做细,成为这方面的专家。其实,在前面的过程中,除了在某个领域足够深的知识积累,更重要的是你的思维方式、学习能力、分析解决问题的能力都得到了极大的提升,这时,再开始向其他领域拓展,相信很快就可以补齐之前的短板了。总的来说,想要成为全栈工程师,需要先广,再深,然后再广,这是我的看法。
学习 Nodejs 只是让我们具备了 server 开发的能力,后续要走的路还很漫长,还有很多问题值得我们去思考,比如 server 端代码的组织和模块化,如何进一步提升性能等,当然解决这些问题最好的方式就是实践。