NodeJS企业级WEB开发框架_第1页
NodeJS企业级WEB开发框架_第2页
NodeJS企业级WEB开发框架_第3页
NodeJS企业级WEB开发框架_第4页
NodeJS企业级WEB开发框架_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Node.JS企业级WEB开发框架实践摘要Node应用虽然很火爆,但是真正用到生产环境作为像java一样大容量分布式高可用的企业级应用需要付出很多努力。本次分享是阿里集团和蚂蚁金服集团在node开发框架部分的探索

——如何使用node构建企业级开发框架。Node.JS企业级WEB开发框架实践SOA/微服务架构下的企业开发困境–ProblemBFF为用户体验解围–Solution企业级Web开发框架核心要素设计剖析–

HowSOA/微服务架构下的企业开发困境多场景与SOA的矛盾不同的设备/场景对同一服务API有不同的诉求API灵活性对服务开发者要求太高架构决定大量跨团队低效协作不可控的资源协调问题SOA/微服务架构下的企业开发困境服务下沉与用户体验灵活性的矛盾服务趋向于稳定,倾向下沉用户体验探索趋向于不稳定诉求服务的高度灵活与定制使服务无法下沉BFF为用户体验解围困境中的答案:BFF(BackendforFrontend)BackendsForFrontendsbySamNewmanBFF为用户体验解围BackendsForFrontendsbySamNewman一件重要的事情:服务自治简言之,BFF谁使用谁开发服务自治带来灵活与高效BFF根据团队的技术栈选型:Java/Node/php/python/ruby...我们的选择:最容易被传统前端技术栈同学接受的基于Node.js的BFF建设利器-Egg框架添加内容IsNode.jsatoy?如何满足企业级开发的需求?企业级开发参与人员非常多,开发人员的水平不一别人写的代码怎么做到自己也愿意维护?如何匹配Java社区完备的各种解决方案?开发人员东拼西凑的自定义框架解决方案,它安全么?性能高么?单线程的Node.js这么容易崩溃,怎么做鲁棒性?Node

支撑企业级开发需要做到的有很多鲁棒性可维护性:统一脚本语言千人千面的代码风格故障排查体系分布式中间件安全性研发效率鲁棒性鲁棒性第一层:选择错误处理做的最优雅的框架第二层:完备的测试方案,高要求的覆盖率解决弱类型语言缺陷第三层:进程模型做到故障隔离第四层:部署结构加强koabasedframework当前解决异步编程和错误处理最优雅的Web通用框架将在v8正式支持async-await异步编程方案后自动适配所有源代码100%掌握并且参与到核心代码贡献(@fengmk2@dead_horse)错误处理最优雅的框架完备的测试方案单元测试mocha覆盖率istanbul数据和接口mockegg-mock自动化集成测试gitlab-ci自动化ui测试macaca进程模型需要考虑的因素:资源利用率/性能连接数控制负载均衡健壮性低复杂度业界方案pm2supervisorforevermodern…Egg自定义的进程管理方案进程模型进程模型-启动时序&进程间通信部署结构常规web应用部署方式一致tengine

+nodejscluster可维护性统一的编程模型约定丰富的扩展点controllermiddlewareservice服务proxyRPC调用helper帮助函数/utilapp全局app对象context请求级别对象Plugin插件是围绕某个功能组织的拓展点集合插件使用和应用同样的约定,无任何额外负担完善的加载机制实现-loader,也是整个框架的灵魂框架采用微核+插件体系,本身大部分功能由插件提供,高度灵活,功能强大分布式中间件分布式中间件RPC路由负载均衡服务发现分布式消息调度服务治理分布式缓存monitoring持久化…分布式应用核心要素(fromQCon2016)分布式中间件

定时任务所有进程都执行的任务只需要一个进程执行的任务集群中只需要某台机器执行的任务分布式中间件

跨语言RPC基于HSF协议,支持发布订阅模式的服务调用历史原因,采用跨语言不友好的序列化协议hessian通过自动化手段完成序列化与反序列化,达到js与java互操作对开发者基本无感知分布式中间件

移动端网关模式RPC

mobilegwplugin解决方案应用书写普通controller自动注册服务到无线网关手机rpc请求网关网关rpc请求应用服务分布式中间件

会话本域生产本域消费的会话数据使用cookiesession/分布式kvstoresession跨域共享会话数据(例如用户信息)使用分布式KVstore(tair)Tips遵循统一的日志规范,统一的监控node版本客户端plugin,公用一套中间件基础设施运维无感知安全安全最初基于lusca后来走向自定制,集合了阿里集团的多年安全经验积累框架支持加代码扫描结合对称/非对称加解密,加签验签支持重放攻击防范url白名单控制csrf,ctokenxsssanitise:jsonpcallback,html,url,js,path,json,clihttpsecurityheaders:hsts,csp,xssProtection等默认禁止tracetrackoptions请求性能性能/eggjs/egg/tree/master/benchmarks故障排查企业级日志不同文件需要的日志级别不同统一错误日志启动日志和运行日志分离自定义业务日志多进程日志自动切割日志高性能写egg-logger故障排查

其他ALINODE监控研发效率研发效率

可扩展的模板引擎默认nunjucks,不支持模板里使用黑魔法(如rpc调用)通过插件轻松扩展ejs/xtemplate/react等任意模板研发效率-版本策略基础模块严格遵循semver全部使用^引用模块egg框架遵循semver业务框架版本蜕化为产品意义,不遵守semver业务代码中使用tag引用框架,禁止使用yarn等方案进行lock快速发布可批量修复安全问题或重大bug研发效率

和Java的对比遵循同样的日志规范,运维规范,安全规范,可监控,可运维Egg在单测方面做了很多优化,测试用例相比Java系统更简单。目前上线的应用单测都非常全面。研发模式上,可以实现与服务端同学并行。前期约定数据接口,在项目后期进行联调。传统模式下,数据mock一直是个痛点。已验证的急速无线研发效率,甚至短时间内可针对多个APP发布上线。本地开发体验的优化。本地runserver非常简单,保存代码自动重启,几秒内生效。对前端、客户端研发的集成探索会越来越多。现状egg框架已经开源,文档会在年内陆续完善egg框架类似于java的spring,定位是框架的框架各公司可基于egg定制适合自己的框架,阿里集团和蚂蚁金服集团已有多个。hundredsofNodedevelopersinAlibaba蚂蚁金服框架Chair

服务了几十个线上应用,包括我的支付宝、借呗、花呗、借呗等重要产品阿里集团各BU基于egg定制了多种适合自己技术体系的框架,大量在线服务案例ROI分析

投入开发人员熟悉框架的成本(基于koa,成本不高)发布系统对node应用的支持改造产出全栈工程师独立完成任务成为可能对于SOA架构的系统来说前后端真正能够并行,研发效率提升蚂蚁和阿里上百个应用的实践案例启示

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论