两个重要阶段¶
- 20-30岁。努力学习阶段。把时间花在解决问题上。一定要练就的技能:解决大多数人不能解决的问题。蛮干没有前途
- 30-40岁。中坚力量。
三条路¶
- 职场。去顶尖公司。真正的创业公司(技术体系已经形成)
- 经历
- 自由。
重要的标志-Leadership¶
- 两个能力。
- 高效学习能力。基础扎实,英文,前沿思考,问题和技术本质,善于思辨,独立思考
-
解决问题的能力。犯过很多错误,能够防火而不是救火
-
两个标志
- 帮人解问题。你能告诉大家这件事该怎么办?
- 被人依赖。大多人在关键决定找你咨询
学习金字塔¶
教授他人是吸收率最高的学习方式
学无止境¶
基础非常重要,一通百通。
如何让自己有竞争力¶
特长、兴趣、勤奋、环境
软件工程三个核心¶
- 服务SLA。高可用系统;自动化运维
- 能力和资源重用。软件模块的重用;运行环境和资源的重用
- 过程自动化。软件生产流水线;软件运维自动化
提高性能¶
- 加缓存。缓存系统:缓存分区;更新;命中
- 负载均衡。网关系统:负载均衡;服务路由;服务发现
- 异步调用。异步系统:消息队列;消息持久;异步事务
- 数据镜像。数据镜像: 数据同步;读写分离;数据一致性
- 数据分区。分区策略;数据访问层;数据一致性
稳定性¶
- 服务拆分。服务治理:调用;依赖;隔离
- 服务冗余。服务调度:弹性伸缩;故障迁移;服务发现
- 限流降级。限流降级:异步队列;降级控制;服务熔断
- 高可用架构。多租户系统;灾备多活;高可用服务
- 高可用运维。全栈监控;DevOps;自动化运维
软件和能力重用¶
- 业务抽象。软件抽象:模型抽象;流程抽象;数据抽象;
- 单一简化。简化系统:KISS原则;单一职责;高内聚
- 解耦合。微服务化;标准协议;反转控制
- 平台化。PaaS平台:中间件;中台系统;API 接口
- 标准化。系统标准:协议方法;规则约定;取舍原则
状态/数据调度¶
Google IO 《Transaction Across DataCenter》
服务划分原则¶
《领域驱动设计》限界上下文。有明显边界限定的特定职责,大家不会超过这个边界干涉对方。
- 单一职责。相同原因变化的东西放到一起,因为不同原因变化的分离开
- 自治性。一个微服务可以无依赖地对外提供服务
- 隔离关键和重要业务。关键和重要业务和不重要的隔离,有利用系统稳定性
- 事务和数据一致性边界。把需要完整事务或者有数据一致性耦合的功能据合在一起
- 隔离变化。把一些高度变化不可控的拆分出去,保证关键业务稳定性
- 与组织结构相匹配。服务边界和组织结构应该是匹配的
- 按团队大小。8-16 人团队维护一个系统
14 条 Leadership Principle¶
- 客户第一
- 主人翁精神
- 创新和简化
- 做正确的决定
- 好奇求知
- 招最好的人
- 坚持高标准
- 富有大局观
- 行动派
- 节俭
- 赢得他人信任
- 关注细节
- 敢于谏言,服从大局
- 结果驱动
更多企业文化¶
-
信条文化(Tenets Culture)
-
工程师文化 - 自动化和简化
- 至少减少 20% 支持性工作和人员
- 小团队全栈工程师文化
- Principle Talk
- 强大的员工调查表
-
大量自动化工具
-
产品文化
- Happy Case
- Working Backwards
- Web Service Everything
-
T-Shirt Size Estimation
-
员工内部转岗文化
Amazon 企业文化¶
- Eat your own Dog Food
- Celebrate the Simplification and Automation
- Operational Excellence - No ” Kitchen Sink” Approach
- Tenets Culture - Every team, product, department has the its tenets
- Focus on SLA - define the key metrics of each services
- Working Backwards
- Write 3 Docs - Press Release, User Manual, FAQ
- NO pictures or diagrams, limited to two pages.
技术研发¶
- 全栈文化。技术团队按照产品功能分工(开发做所有事,包括测试和运维)
- 单分支开发
- 服务化和运维优先
- 自动化和简化
- On Call 文化
- 每年工作计划一半以上是技术需求