我在 是怎么做全栈的
许晓斌
AliExpress 技术专家
• 许晓斌(Juven Xu)
– AliExpress 中间件团队
–《Maven实战》作者,曾维护Maven中央库
–敏捷软件开发实践者
什么是全栈开发?
• “说全栈的都是搞前端的”
• “先扛30kg服务器上架再说全栈”
• “啥?不涉及前端还叫全栈吗?”
• “上古全栈那可是从CPU到编译器都自己玩的啊……”
• 好吧,我承认我做不到:扛服务器,搞定
CPU和编译器,切图,JS…… 毕竟我是个java
程序员。
• 不过,我们要解决的问题是什么?
背景
• 是阿里巴巴集团旗下的B2C
出口跨境电商平台
– Alexa 排名 40 左右
– 交易额增速年均超过300%
– 遍布全球220个国家和地区
• 中间件团队开发及维护网站技术共享的基
础分布式服务,我们要尽力保证这些服务
简单及可靠
何为全栈
�
����
�����
�
�
��
�����
��
何为全栈
“It means a person who can work with databases, servers, systems
engineering, and client work. Depending on what kind of client is needed
that can mean a mobile stack, web stack, or native applications.
Basically when people are asking for a full-‐stack programmer they're looking
for the all-‐singing, all-‐dancing technical wizard. Or at least someone who
won't complain too much when asked to do some work outside their normal
comfort zone.”-‐-‐ Ian Peters-‐Campbell
. ZooKeeper服务
• 需要
– 熟悉其原理和API
– 完整的运维和监控
– 熟悉应用场景和模式
– 帮助其他程序员接入
• 不需要
–写代码
. 文件上传服务
• 需要
– 后端开发(Java)
– 前端开发(JavaScript)
– 自动化测试
– 运维和监控、容量规划
. 文件下载服务
• 需要
– 后端开发(Java)
– CDN 知识
– 自动化测试
– 运维和监控、容量规划
. 测试
. 运维
. 需求
. 文件跨数据中心同步服务
• 需要
– 后端开发(Java)
– 较深入的网络知识
– 较深入的架构能力
– 自动化测试
– 运维和监控、容量规划
. 分布式Cache服务
• Cache软件由阿里巴巴集团共享团队的产品 Tair提供
• 需要
– 理解 Java Cache 规范
– 理解 Tair的架构
– 理解 Tair的各类使用场景
– 帮助用户接入
– 运维和监控、容量规划
全栈支柱:微服务
• 把巨大的应用程序拆分成一个个功
能单一、业务边界明确的微服务,
使得我们能够专注于这一服务的质
量。
基于 Bounded Context 划分服务
全栈支柱:敏捷和DevOps
• 敏捷和DevOps强调团队需要具备必
要的测试和运维技能,增强沟通,
提高效率,这也是我们实践并获益
巨大的地方。
全栈支柱:遵循康威定律
全栈支柱:遵循康威定律
全栈个人 or 全栈团队?
• 打造全栈团队,帮助成长全栈个人
• 持续学习型团队
• 沟通是至关重要的技能
– 记得 Bounded Context
• 全栈意味着承担全部责任