内卷化involution,在经济学中指的是边际效用持续递减,它是出自于「年美国人类学家克利福德·格尔茨在印度尼西亚做田野调查时发现,在殖民地时代和后殖民地时代的爪哇岛,人口没有向资本和技术密集型产业集中,而是不断地投入到有限的水稻生产,导致农业生产内部精细化」。换成人话来说,以前你只要会Hadoop、MapReduce,你就可以很容易找到月薪1W的工作,而现在你可能都找不到工作了;以前一周你工作5*8小时就可以了,现在就要工作6*12小时。总得来的,就是个人的价值被拉低了,变得不值钱了。今天我们就来讲讲程序员如何避免内卷化?
作为程序员,只聚焦业务逻辑开发、CRUD是远远不够的,架构、性能优化、新技术这些都是必须要掌握的,只有不断努力的打磨技术,紧跟技术发展趋势,以当下最优的方式解决业务诉求,保障高可用、高性能、高并发,才能避免内卷化,立于不败之地。
在架构知识学习中,我们需要了解架构的变迁(从单体服务→SOA架构→微服务架构→无服务架构)、架构模式的设计(分层架构、客户端服务器架构、事件驱动架构)。
单体架构就是把web服务器业务程序数据库后台服务器全都放在一起(典型的Linux+Apache+Mysql+PHP),刚入门的开发来说可以快速搭建完整的应用网站;SOA架构就是将单体式服务进行拆分,由不同的团队开发不同的服务,再通过ESB企业服务总线连接起来,业务规模不复杂的企业一般采用此架构;微服务架构就是把业务的每个服务模块原子化,由不同的团队开发维护上线不同的服务,服务与服务之间通过MQ消息中间件或RPC远程调用连接起来,业务规模中上的企业一般采用此架构;中台架构就是把多个业务模块共用的能力抽象出来,由专门的团队进行开发维护,并对上层提供接口,快速生成应用和迭代产品。
分层架构设计模式主要是把整个架构分为展现层、业务层、持久层,“高内聚、低耦合”的设计思想让每一层专注干自己的事情,展现层负责用户界面数据展示、业务层负责处理业务逻辑、持久层负责数据持久化。在Java的设计开发中经常都采用这种模式(Service→Controller→DAO)。事件驱动架构主要思想是所有的业务动作触发都由事件进行驱动、处理,这种模式能实现简单小型系统到复杂大型系统的扩展。在分布式系统中常见的架构模式便是事件驱动,所有业务层发生的事项都通过消息中间件MQ传递,后台监听MQ消息队列数据,进行业务处理。
在性能优化中,我们需要了解接口设计、系统监控。在接口设计层面通过算法调优、技术架构升级、技术组件升级可以实现,此处我们不展开讨论,主要看看系统监控模块。监控就像我们的眼睛,帮我们监控着每笔业务操作、每次业务调用,通过选择合适的监控工具、设定对应的监控指标,能提前发现问题、遇到问题及时解决。一个应用体系的全栈监控包含APP监控、浏览器监控、服务器监控、网络监控、日志监控、基础设施监控、物理环境监控。作为业务研发,我们主要