作为一名后端开发人员,我总是在重复“增、删、改、查”。这些基本操作占用了我大部分的工作时间。当我看到别人成为技术专家时我会很困惑,但我个人的技术水平永远保持在同一水平......
这就是需要学习的全部内容吗?你是否发现随着工作时间的延长,你的代码变得越来越复杂?如何提高文件上传和下载的效率?如何保证消息推送的实时性?如果同时用户太多,服务器爆炸了怎么办……要学的东西实在是太多了。
希望这篇文章能够重燃你的热情,更好地提升你的技术能力和判断力,从更高的角度看待你写的代码和技术方案,看到技术的亮点和价值。
浅谈CRUD
从CRUD的定义来解释,CRUD是指在进行计算和处理时,add()、read()、()和()这些词的缩写。 CRUD主要用于描述软件系统中的数据库。或者说持久层的基本操作功能。
从软件分层架构来看,这一层业内定义为DAO(Data ),位于业务逻辑和持久化数据之间,实现对持久化数据的访问。
顾名思义,如果CRUD等同于为后端开发技术栈内容,那么它就意味着转变观念、总结错误。从大多数后端工程师的日常口头禅来看:当产品需求不明确或者不是特别有价值的时候,往往会简单定义自己所做的或者需要的就是CRUD,这是一种“自嘲”和“蔑视”产品需求”。
技术不断发展
回顾计算机的发展历史,从单机计算机到网络计算机,从单一应用到分布式应用,从这两篇文章中我们可以看到技术的飞速发展。
从Web时代到移动互联网时代再到人工智能时代,硬件的加速发展带来了软件的快速发展。无论是传统软件还是互联网软件,软件岗位角色都已经逐步细化,比如前端、客户端、后端。 、算法、大数据等细分角色纷纷涌现。每个角色面临的技术挑战和需要解决的问题领域都被重新定义和划分。职责更加清晰,能力范围更加聚焦和集中,技术栈也越来越清晰。从这个划分我们看看后端除了CRUD还需要什么?
冰山之下的后端领域
软件应用程序就像冰山一样。用户只能看到应用程序的很小一部分。应用程序的最大部分是不可见的。这就是难以捉摸且神秘的“后端域”。
作为后端人员,我们不仅仅关注用户端的体验和交互形式,更重要的是从用户的数据模型、业务场景、业务模型、系统架构设计、领域建模、业务流程,以及高并发、高可靠性,从规模等稳定性角度,可以提高产品的整体体验和价值,解决用户需求。
后端开发就是“应用服务器后端”开发,主要涉及软件系统的“后端”支撑。
例如,用于支持Web网站和App客户端的服务器,以及后端服务器、浏览器和App之间的应用中间件,都属于后端范畴。
简单来说,屏幕上看不到但用来为前端提供支持的数据、服务等基础服务,以及相应的业务系统,才是后端开发的核心领域需要思考和解决。
后端开发职责
作为后端技术学员,需要对技术栈有完整的技能储备,需要从宏观技术广度和微观技术深度拓展,基于业务场景和价值映射的技术解决方案和策略,从业务可扩展性的角度进行架构设计。设计时要更好地保证可持续的产品交付能力,从用户的角度仔细考虑需求、产品、研发、质量、运维等,改善用户体验,增强用户对产品的忠诚度,最终实现产品商业价值。
目前,后端技术正在快速发展。一句话:“永远不要停止学习。”
以产品生命周期为研发目标,从产品生产线开始到结束,过程中的各种产品需求和问题都需要后端开发的持续投入和解决,以及通过引入新技术或技术创新。为产品带来进一步的增量价值。
比如现在很流行的电商直播,涉及到高清直播能力、人脸识别能力、直播间物理抓拍能力、大规模实时互动能力、大规模闪购购物等能力等等,这些都需要深入的前后端技术。场景丰富,实时互动。
对于产品来说,需要保证7x24小时的高可靠性不间断服务。一切都是为了满足用户的需求,提供优质的服务。技术带来商业价值。
后端基本拆分
纵观近10年互联网的发展,尤其是移动互联网兴起后,涌现出一大批拥有数亿DAU用户的产品。单个应用很难垂直挤压硬件资源来提升性能,单点故障无法满足“不间断服务SLA”的要求,需要水平架构扩展以支持集群部署和统一化远程多活部署。
前端流量入口需要基于DNS服务进行VIP路由负载均衡,以及基于服务器的反向代理;不仅如此,还必须考虑登录状态问题和一致性。
随着业务场景和业务流程越来越复杂,我们不得不把一些业务逻辑放在一个集群上,而将其他部分业务放在另一个机器集群上。这就是“微服务架构概念”的诞生。
显然系统的计算能力和处理能力得到了极大的增强,但是这些系统之间的通信却成了一个令人头疼的问题。因此,消息队列和RPC框架就出现了。为了提高通信效率,各种序列化工具解决了数据压缩和效率问题。
当海量的大数据出现的时候,单一的数据库已经撑不住了,我们开始对数据库的读写进行分离。如果这样还不行,我们就进行数据库和表的拆分,因为数据需要跨库跨表查询和分布式事务。为了解决这个问题,各种存储方案和存储技术应运而生。
另外,随着VM技术和/k8s技术的出现,大规模部署已经成为可能。另外由于单机内存大小的限制以及集群共享内存的需求,缓存与应用集群分离,单独部署在集群中,提供高质量的分布式缓存服务。同样随着其他应用技术的快速发展。
与此同时,多媒体技术的交互性和丰富性也越来越强。基于强大的手机终端技术,可以随时随地拍摄照片和视频并上传至云端。数亿用户需要基于CDN边缘节点缓存在终端上提供更快的下载和观看体验。加速和OSS云存储能力诞生。
随着互联网特别是移动互联网的快速发展和海量信息获取的需求,搜索引擎得到了快速的发展和应用。
近年来,随着人工智能的快速发展和应用场景的丰富,端到端的智能进一步降低了用户获取信息的成本和效率,将用户主动搜索转变为被动接收获取有价值的信息,并精准获取信息。帮助用户做出决策的建议。
随着3G/4G的快速发展,对客户端即时性、实时交互有了要求,其中出现了直播交互、即时通讯IM等应用场景,用户具有实时交互、实时感知的能力。 。基础设施特别是网络通信的发展,以及终端设备处理能力的增强,使得海量移动设备接入、端边缘计算接入成为现实。
从传统的以太网到WIFI(IEEE 802.11 b/g/n/ac),再到不断发展的WAN蜂窝网络(3GPP的GSM、GPRS、UMTS、LTE、LTE-...),甚至整个WAN在物联网领域和终端技术(蓝牙、NFC)的演进,标志着设备的广义连接和网络接入的丰富性爆发式增长,特别是随着IoT/5G时代的到来,新的科技带来的情境和场景与之相伴,未来可期。
后端业务拆分
讲完了后端基础中间件和移动中间件系列,那么后端应该如何构建业务系统呢?
从技术角度来看,基础中间件已经更加细分和深入。从业务角度出发,首先需要掌握中间件的基本原理和应用场景,以及各个中间件的特点,并根据业务场景进行选择和调整。应用。
除了技术选型之外,作为业务后端角色,还需要重点关注需求分析、系统架构设计、领域模型构建、产品交付质量等,包括“大中台、小前台”的架构理念近年来变得流行。前台业务将更加敏捷,更快地适应不断变化的市场。中台将整合整个集团的运营数据能力和产品技术能力,对各前台业务形成强有力的支撑。
诚然,基于拆分后的各个子系统,后端同学还需要重点关注应用的上下游依赖关系、接口API/SPI的设计、核心性能指标、业务指标及相应的流控策略、安全性基于业务需求设计相应的领域模型、业务逻辑、SOP操作流程;
包括设计模式的采用和框架的选型考虑,以及中间件(缓存、存储、文件、网络)等依赖项的选择,对整个发布过程和代码质量的控制,最终完成发布上线和发布后期操作。产品的尺寸流程、持续交付和迭代都需要进一步的技术判断。和进化思维,推动技术演进和产品不断迭代,充分考虑技术ROI投入产出比,根据业务需求做出正确的技术判断。技术正在快速发展。未来,更需要紧密把握科技脉搏、具备全球视野。做出关键判断和权衡,为用户带来价值。
加油,后浪
互联网技术一直在变化,技术越来越集中,后端技术开发也越来越精细化和层次化。
作为后端同学,需要更多的关注行业的趋势和方向,包括QCon技术峰会、架构峰会、技术社区等。
你需要有敏锐的嗅觉和判断力,通过技术栈的组合和应用,做出正确的判断和技术选型,提升产品能力并推动产品和技术演进,持续交付高质量产品并减少产品交付。业务快速发展。迭代循环快速落地业务,解决用户需求。
后端开发需要全身心投入,需要真正掌握背后的技术原理和举一反三的能力,能够将每一个技术栈转化为自己的理解。你将不再用“后端CRUD”作为简单的结论。
未来,5G时代,更需要持续的技术创新。新的业务场景和产品必然会出现。我们需要做好技术储备和技术创新,以应对新的变化和挑战。来吧,汹涌的海浪!
最后希望我们能够与时俱进,技术前瞻创新,携手并进!
淘喜即时通讯平台
我们负责阿里巴巴新零售IM通讯平台的建设,通过IM即时通讯产品(推送、聊天机器人、单聊、群聊、消息账号、聊天室)构建连接消费者和商家的沟通和触达渠道。我们每天的工作 服务亿级消费者、百万商户,处理百亿消费规模,支撑直播互动、客服、商户集团运营、品牌资讯、营销推送等电商领域 BC互通业务场景;同时,我们在消费者购物体验上不断探索和创新——直播、AR试玩、游戏互动,为新的购物方式提供灵活稳定的基础设施,实现阿里巴巴电商生态的重要支点,成为阿里巴巴电商生态的重要支点。为上述百家APP的基础提供安全、稳定、标准化的电商组件SDK。持续改善消费者体验和活跃度,提升商户服务效率和能力,促进商户业务增长。