赞
踩
谢朴老师邀请。 利益相关: egg 团队成员,jsconf china 2016 的 egg topic 的演讲者。 本文较长,包含以下内容,比较忙的同学可以跳阅:
1. Node.js 在阿里阿里是业界最早的一批使用 Node.js 来做线上大流量应用的公司,早在 2011 年的就已经开始在生产环境中使用。 众所周知,在阿里的技术栈中, Java 是最最核心的,那 Node.js 扮演怎么样的一个角色呢?
据不完全统计,目前阿里 Node.js 的开发者几百号人,线上的应用也非常之多,仅次于 Java 应用,光对外服务的进程数就超过 1w+。 2. 我们面对的挑战与机遇Node.js 的使用是越来越多了,但整个基建和生态却跟不上:
面对上述的挑战,阿里的 Node.js 先驱者们,做了非常多的探索和努力,如:
也正是因为他们一代代的努力,Node.js 在阿里才能落地生根,才有今天这繁荣。 对这块有兴趣的同学,可以开个问题邀请苏千/死马等人讲讲他们当年在阿里的开荒史。 3. egg 在阿里的定位egg 也是这一时代洪流中的新生一员,它面向的领域是:
egg 目前是阿里 Node.js 应用的核心基础设施,担心是 KPI 产物的同学,可以放宽心了。 有哪些人参与到 egg 的开发和维护中?
同学们也不用担心 egg 只适合阿里或电商类应用:
4. egg 的设计理念
4.1 约定优于配置一个大规模团队的基础框架,最重要的是需要遵循一定的约束和约定。 没有约定的团队,沟通成本是非常高的,比如有人会按目录分栈而其他人按目录分功能,开发者认知不一致很容易犯错。通过约定可以减少开发人员的学习成本,开发人员不再是『钉子』,可以流动起来。 egg 最核心的东西,其实就是一套约定和规范,这个规范不仅仅是开发目录的约定,还包括了开发过程中,从提案讨论,编码风格,code review 等等方方面面的规范化。 其实大家的基础框架用不用 egg 真的无所谓,最重要是有一套适合团队的约定。 egg 给社区最有价值的回馈是:
当然,我们推荐基于 egg 来定制上层框架:
4.2 插件机制插件机制是 egg 的一大特色,它不但可以保证框架核心的足够精简、稳定、高效,还可以促进业务逻辑的复用,生态圈的形成。 经典范例如 egg-security,就集合了阿里集团的多年安全经验积累,具体可以看下 egg 文档 - 安全。 同时,差异化定制不意味着没有约定,它只是下层插件实现的差异化,而上层开发体验是一致的:
4.3 框架机制上面提到的插件机制,很灵活,但是对于企业级应用来说,却还不够。 如果你的团队遇到过:
如果你的团队需要:
为此,egg 为团队架构师和技术负责人提供 这样,整个团队就可以遵循统一的方案,并且在项目中可以根据业务场景自行使用插件做差异化,当后者验证为最佳实践后,就能下沉到框架中,其他项目仅需简单的升级下框架的版本即可享受到。 4.4 质量保障和技术支撑
4.5 其他与其他框架的对比 其实不是一个层面的,sails , hapi 这些框架,通过 egg + 对应的插件封装成上层框架,就一样了。 egg 与 koa 的关系
5. 我个人在参与 egg 开发过程中的收获回顾这几年,我个人感觉是非常幸运的,13 年的时候,跟着云龙做前端工程化,15 年则是参与到 egg 的整个开发过程中。 在这旅途中,我熟悉了堪称教科书式的基于 Git Pull Request 的异步硬盘式协作模式;我学习到不少大规模应用中的经验总结;这一段经历让我受益良多,永远无法忘怀,在无数个大半夜,一帮人还在 issue 上讨论的热火朝天。 很幸运自己能参与到阿里的 Node.js 发展中搬一两块砖,这里的基建和生态真的非常完善:
有好奇心的同学,在杭州的,不妨亲自进去看看,不信,你看叔叔 @徐飞 。 而在广州的同学,也可以过来 UC 这边体验下,我们的内部交流通道非常顺畅。https://www.zhihu.com/question/55271199/answer/143741434 。 最后,回过头来看,我个人是挺感慨的,这么短时间,完全没有政治命令,大家主动拥抱共建,对于阿里这样如此大规模的多部门的公司,真可谓奇迹。 国内的开发者真的不用妄自菲薄,这几年,越来越多的国内框架如 ant design,element,weex,macaca 等等,正走出国门,拥抱世界。 以上 -- |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。