后端技术关注指标
- 可用率:能够提供正常服务的时间占比上运行时间的百分比。
- 稳定性:也叫做鲁棒性、健壮性,即服务在异常和危险情况下保持稳定的能力。
- 容错性:在服务出现错误或者异常的时候,能够继续提供一定服务的能力,主要强调的是容许误差、故障的能力。
- 拓展性:在服务的动态扩展能力,即通过拓展(而非修改)现有系统的能力来满足需求的能力。
- 可维护性:指的是修正服务错误、修改服务功能的能力。
- 安全性:保障系统以及用户数据安全能力,包括保障系统不被非法入侵、用户数据不被泄露。
软件开发的核心原则
- Don’t Repeat Yourself:不要做重复性劳动
- Keep it semple stupid:即KISS原则在做软件设计的工作中,很多时候都不要想得过于复杂,也不要过度设计和过早优化,最简单且行之有效的方案也就避免了复杂方案带来的各种额外成本。
- You Ain’t Gonna Need It:即YSNGIN原则。只需要将应用程序必须的功能包含进来,而不要试图添加任何其他你认为可能需要的功能。
- Done is better than perfect:在面对一个开发任务时,最佳的思路就是先把东西做出来,再去迭代优化。如果一开始就面面俱到,考虑到各种细节,那就很容易钻牛角尖而延误项目进度。
- Choose the most suitable things:在做方案选择、技术选择时候一个很重要的原则,在面对许多技术方案、开源实现的时候,务必做到不能盲目求新,要选择最合适的而非被吹的天花乱坠的。
软件开发的过程管理
- 项目管理:保证项目进度有条不紊地进行,在可控的时间内以一定的质量交付。
- 测试驱动开发:在平时的开发过程中,目前比较流行也是行之有效的一种方式就是Test Driven Develop ,即测试驱动开发。核心就是编写单元测试。简单来讲,就是先完成某一个功能的单元测试用例,然后在逐步消除测试用例的编译错误的过程中完成功能的开发。
- 持续集成:某一个软件功能完成开发之后,后续还有测试、预发布、部署等过程。整个过程被称为集成,而持续集成指无需人工干预即可不断地进行这个过程。Jenkins、Quick Build 都是比较典型的持续集成工具。
关于读源码
“看源码”的典型流程
1. 阅读该技术的架构文档,了解其总体架构和组成。
2. 根据总体架构,将源码文件以模块或者上下层级进行分类。
3. 从未阅读过的模块中选择最独立(依赖性最新)的模块代码读起
4. 阅读此模块的功能介绍文档
5. 阅读此模块的源代码
6. 一边阅读一遍整理调用关系(以表或者树的形式)
7. 转到第三步
其他杂
前端指的是用户能够直接感知到的那些东西,包括Web前端和客户端技术;后端技术是相对前端技术而言,是藏在网络后面支撑网页、APP、应用软件运行的设施、环境、服务等。
请求统一入口——API网关
支持功能:负载均衡、API访问权限控制、用户鉴权
Linux 要数量掌握常用的shell命令,如ps、netstat、lsof、ss、df、dh等,以及性能分析命令,如top、vmstat、iostat、sar等
消息队列,消息队列有两种角色,即生产者和消费者,两种角色对于消息队列的需求也不一样。对于消费者来说,消息消费的方式包括发布——订阅和队列两种。消息队列在语义保证上分为At Most Once、 At Least Onse、Exactly Once共三种模式,需要根据特定的业务场景选择合适的语义保证。
代码质量等级:可编译,可运行,可测试,可读,可维护,可重用