后端开发除了增删改查还有什么?

简介: 作为后端开发,永远重复着「增删改查」,这些基础的操作占据了自己大部分工作时间,看到其他人成为技术大牛,而个人技术水平永远停在原地,也会很迷茫......需要学习的仅仅如此吗?当你工作久了是否会发现你的代码越来越复杂?文件的上传下载怎么提高效率?消息推送的实时性怎么保证?同时使用人数过多,服务器爆炸怎么办......需要学习的太多了。希望此文能重燃你的热情,更好的提升技术能力和判断力,站在更高的角度去看自己写的代码和技术方案,从中看到技术的亮点和价值。

lAHPGo_k77M3cDvMls0DhA_900_150.gif

作者|骨来
编辑|橙子君
出品|阿里巴巴新零售淘系技术部

作为后端开发,永远重复着「增删改查」,这些基础的操作占据了自己大部分工作时间,看到其他人成为技术大牛,而个人技术水平永远停在原地,也会很迷茫......

需要学习的仅仅如此吗?当你工作久了是否会发现你的代码越来越复杂?文件的上传下载怎么提高效率?消息推送的实时性怎么保证?同时使用人数过多,服务器爆炸怎么办......需要学习的太多了。

希望此文能重燃你的热情,更好的提升技术能力和判断力,站在更高的角度去看自己写的代码和技术方案,从中看到技术的亮点和价值。

浅谈CRUD

从CRUD的定义进行解读,CRUD是指在做计算处理时的增加(Create)、读取(Retrieve)、更新(Update)和删除(Delete)几个单词的首字母简写,CRUD主要被用在描述软件系统中数据库或者持久层的基本操作功能。

从软件分层架构的角度来看,这一层在业界被定义为DAO(DataAccessObjects数据存取对象)是指位于业务逻辑和持久化数据之间实现对持久化数据的访问。

顾名思义,如果把CRUD等同于为后端开发技术栈内容,那么就是偷换概念和错误总结,从大部分后端工程师日常口头禅来看:在产品需求不明确或者不是特别有价值的情况下,常常对自己所做的事情或者需求,简单的定义为CRUD,这是一种“自我调侃”和“对产品需求的轻视”。

技术持续演进

回看计算机的发展史,从单机到网络计算机,从单体应用到分布式应用,从这2篇文章可以看到技术的飞速发展。

从Web时代到移动互联网时代再到人工智能时代,硬件的加速发展带来软件的飞速发展,无论是传统软件和互联网软件,软件岗位角色被一步步的细化,譬如前端、客户端、后端、算法、大数据等细分角色出现,每个角色面临的技术挑战和解决的问题域被重新定义和划分,职责更加清晰,能力范围更加专注和聚焦,技术栈更加清晰和明确,从这个划分来看后端除了CRUD,还需要具备什么?

1.png

冰山下的后端领域

软件应用程序就像冰山一样,用户看到的只是应用程序的极小的部分,应用程序的最大部分是看不到的,这就是令人难以捉摸又神秘的“后端领域”。

作为后端人员,不仅仅停留在用户端侧体验以及交互形式,更重要的是从用户的数据模型、业务场景、业务模型、系统架构设计、领域建模、业务流程以及高并发、高可靠、规模化等稳定性角度,去提升产品整体的体验和价值,解决用户的诉求。

后端开发即“应用服务器后端”开发,主要涉及软件系统“后端”支撑。

比如,用于支撑Web网站和App客户端的服务器,同样介于后端服务器与浏览器以及App之间的应用中间件,它们都属于后端范畴。

简单地说,那些你在屏幕上看不到但又被用来为前端提供支持的数据和服务等基础服务以及对应的业务系统就是后端开发核心需要思考和解决的范畴。

image.png
image.png

后端开发职责

作为后端技术同学,需要针对技术栈进行完备的技能储备,并且需要从宏观技术广度和微观技术深度进行拓展,基于业务的场景和价值映射技术的方案和策略,从业务扩展性的角度进行架构设计,更好的保证可持续产品交付能力,从需求、产品、研发、质量、运维、运营等进行过程中精细化考量,站在用户的角度提升用户的体验,提升用户对产品的忠诚度,最终实现产品业务价值。

当下,后端技术发展日新月异,一句话:“永远不要停止学习”。

以产品的生命周期作为研发的目标,从一而终直到产品下线,过程中各种产品的需求和问题,均需要后端开发持续性的投入和解决,以及通过引进新技术或技术创新,给产品带来进一步的增量价值。

举个例子,譬如现在非常热门的电商直播,涉及高清直播能力、人脸识别能力、直播间实物捕获能力、大规模实时互动能力、大型秒杀购物能力等,都需要前后端深度技术以此带来情景丰富性和实时互动性。

对于产品来说,需要保障7x24小时高可靠不停机服务,一切以满足用户的需求且高质量提供服务为遵旨,技术带来业务价值。

image.png

后端基础拆分

纵观近10年互联网发展,尤其是移动互联网开始兴起以后,亿级DAU用户产品大量涌现,一个单应用很难再垂直压榨硬件资源来提升性能,并且单点故障不能满足“停机不停服务SLA”要求,需要做水平架构扩展支持集群部署以及单元化异地多活部署。

前台流量入口需要基于DNS服务做VIP路由负载均衡,并且基于nginx服务器做反向代理;不仅如此,还得考虑登陆状态session问题和session的一致性。

随着业务场景和业务流程越来越复杂,我们不得不把某些业务逻辑放到一个集群上,把另外一部分业务放到另外一个机集群上,”微服务架构理念”就此产出。

显然系统的计算能力和处理能力大大增强,但是这些系统之间的通信就变成了头疼的问题,消息队列和RPC框架因此出现,为了提高通信效率,各种序列化的工具等解决数据压缩和效率问题。

当海量大数据出现的时候,单个数据库也撑不住了,开始做数据库的读写分离,如果还不行,就做分库和分表,因为数据要做跨库跨表查询和分布式事务,为了解决这个问题,又有各种各样存储方案和存储技术出现。

另外,随着VM技术和Docker/k8s技术出现,大规模部署成为可能,同样伴随单机内存大小限制以及集群共享内存诉求,缓存从应用集群剥离出去单独进行集群部署提供高质量的分布式缓存服务,同样伴随servicemesh等应用技术飞速发展。

与此同时多媒体技术越来越互动性和丰富性,基于强大的手机终端技术,随时随地拍摄照片和视频上传到云端,亿级用户在终端需要更快的下载和观看体验,基于CDN边缘节点缓存加速和OSS云存储能力诞生。

随着互联网尤其是移动互联网的快速增长以及海量信息获取的诉求,搜索引擎高速发展和应用。

近来,人工智能的飞速发展和丰富的应用场景,端到端的智能化进一步降低用户获取信息的成本和效率,转变用户主动搜索到被动接收获取有价值的信息,精准推荐帮助用户做决策。

跟随3G/4G的飞速发展,端侧即时性和实时交互的要求,其中以直播互动以及即时消息IM等应用场景出现,用户实时交互和实时感知。基础设施尤其是网络通信的发展和终端设备处理能力增强,让海量的移动设备接入和端边缘计算接入成为现实。

从传统以太网,到无线局域网的WIFI(IEEE 802.11 b/g/n/ac),到不断发展的广域网蜂窝网络(3GPP的GSM、GPRS、UMTS、LTE、LTE-Advanced……),甚至整个广域网在IoT领域兴起以及终端技术的演进(蓝牙、NFC),标志着设备的泛化连接和网络接入的丰富性爆发式增长,尤其是IoT/5G的时代的到来,技术带来的新局面和新场景伴随而生,未来可期。

后端业务拆分

聊完后端的基础中间件和移动中间件系列,后端面对业务系统应该怎么建设呢?

从技术视角去看,基础中间件已经被更多细分化和深度化,从业务视角看,首先需要掌握中间件的基本原理和应用场景,以及各个中间件的特性,针对业务场景进行选择和应用。

除了技术选型之外,作为业务后端角色需要重点聚焦在需求分析、系统架构设计、领域模型构建、产品交付质量等,包括近年来比较火的“大中台,小前台”架构理念,作为前台的一线业务会更敏捷,更快速适应瞬息万变的市场,中台将集合整个集团的运营数据能力、产品技术能力,对各前台业务形成强力支撑。

诚然,基于拆分后的每个子系统,后端同学同样需要聚焦到应用上下游依赖关系、接口API/SPI的设计、核心性能指标、业务指标和相应的流控策略、安全防控等,基于业务的需求设计出对应的领域模型和业务逻辑以及SOP操作流程等;

包含对设计模式的采用和框架的选型考量,以及对中间件(缓存、存储、文件、网络)等依赖选择,对整个的发布过程和代码质量的把控,最终完成发布上线和后期的运维过程,产品的持续交付和迭代需要进一步作出技术的判断和演进思考,推动技术演进和产品持续迭代,充分考虑技术ROI投入产出比,在业务需求下作出正确的技术判断,技术发展日新月异,将来更需要密切把握技术脉搏、又要兼具全局视野,做出关键判断和取舍,给用户带来价值。

image.png

加油后浪

互联网技术一直在变化,技术越来越更聚焦,后端的技术发展越来越精细化和分层拆分。

作为后端的同学,更需要关注业界的动态和方向,包括QCon技术峰会、架构峰会以及github和技术社区。

需要能够有敏锐的嗅觉和判断力,通过技术栈的组合和应用,作出正确判断和技术选型,提升产品能力和推动产品和技术演进,在业务飞速发展下持续交付高质量产品和缩减产品交付迭代周期,快速落地业务和解决用户需求。

后端开发需要具备全情投入,能够做到真正地掌握背后技术原理同时做到触类旁通,能够把各个技术栈转化为自己的理解,再也不会以一句“后端CRUD“作为简单定论了。

未来在5G时代,更需要技术的持续革新,新的业务场景和产品必将出现,需要我们做好技术储备和技术创新,应对新的变化和挑战,加油,奔涌中的后浪们!
最后,愿我们能与时代同行,具备技术前瞻性和创新变革,携手共进!

淘系 IM 消息平台

我们负责阿里新零售领域 IM 消息平台的建设,通过 IM即时通讯产品(push、聊天机器人、单聊、群聊、消息号和聊天室)构建连接消费者和商家的沟通和触达渠道,我们每天服务上亿消费者和数百万商家,处理百亿级的消费规模,支撑了直播互动、客服服务、商家群运营、品牌资讯、营销推送等电商领域 BC 互通的业务场景;同时,我们在消费者的购物体验上不断探索创新——直播、AR试用、游戏互动,为新的购物玩法提供灵活稳定的基础设施,实现阿里电商生态重要支点,为上百家APP 提供安全、稳定、标准化的电商组件SDK。不断提升消费这的体验和活跃,提升商家服务的效率和能力,促进商家业务增长。
联系电话:18651806651
邮箱📮:limin.llm@alibaba-inc.com

image.png
关注「淘系技术」微信公众号,一个有温度有内容的技术社区~
image.png

相关文章
|
8天前
|
Web App开发 缓存 JavaScript
深入浅出Node.js后端开发
【9月更文挑战第26天】本文将引导你了解Node.js的基本原理,并通过实际案例展示如何在后端开发中应用它。我们将从Node.js的核心概念讲起,逐步深入到构建一个完整的后端服务,最后探讨如何优化你的Node.js应用。准备好让你的开发技能更上一层楼了吗?让我们一起潜入Node.js的世界!
|
1天前
|
存储 关系型数据库 API
探索后端开发:从零到精通的旅程
【9月更文挑战第33天】在数字时代的浪潮中,后端开发作为构建强大、稳定和可扩展应用程序的基石,扮演着至关重要的角色。本文将引导你从零基础开始,逐步深入后端开发的世界,掌握其核心概念、技术栈和最佳实践。无论你是初学者还是有一定经验的开发者,这篇文章都将为你提供宝贵的知识和启示,帮助你在后端开发领域取得更大的成就。
14 6
|
3天前
|
安全 测试技术 API
后端开发中的API设计原则与最佳实践
本文将深入探讨在后端开发中API(应用程序编程接口)设计的基本原则和最佳实践。通过阐述如何构建高效、可扩展且安全的API,帮助开发者提升后端系统的性能和用户体验。不同于传统的摘要,本文无需包含背景介绍,直接进入主题,为读者提供实用的指导。
21 7
|
2天前
|
SQL 缓存 安全
深入理解后端开发中的API设计原则
【9月更文挑战第32天】在数字化浪潮中,API(应用程序编程接口)作为连接不同软件组件的桥梁,其设计质量直接影响着后端系统的效能与扩展性。本文将通过浅显易懂的方式,探讨如何构建高效、安全且易于维护的API,同时提供实用的代码示例,帮助读者在后端开发实践中提升API设计的水平。
11 3
|
2天前
|
存储 网络协议 关系型数据库
探索后端开发:从基础到高级
【9月更文挑战第32天】在这篇文章中,我们将一起探索后端开发的奥秘。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的信息。我们将从基础知识开始,然后逐步深入到更复杂的主题。最后,我们将通过一些代码示例来展示这些概念的应用。让我们一起开始这段旅程吧!
|
7天前
|
设计模式 负载均衡 监控
深入理解后端开发中的微服务架构
在现代软件开发领域,微服务架构已经成为一种流行的设计模式。本文将探讨微服务的基本概念、优势与挑战,并通过实例展示如何在实际项目中应用微服务架构。无论是初学者还是经验丰富的开发者,都能从中获得启发和实用技巧。
22 7
|
9天前
|
JavaScript 开发者
深入理解Node.js事件循环及其在后端开发中的应用
【8月更文挑战第57天】本文将带你走进Node.js的事件循环机制,通过浅显易懂的语言和实例代码,揭示其背后的工作原理。我们将一起探索如何高效利用事件循环进行异步编程,提升后端应用的性能和响应速度。无论你是Node.js新手还是有一定经验的开发者,这篇文章都能给你带来新的启发和思考。
|
9天前
|
存储 运维 负载均衡
后端开发中的微服务架构实践与思考
本文旨在探讨后端开发中微服务架构的应用及其带来的优势与挑战。通过分析实际案例,揭示如何有效地实施微服务架构以提高系统的可维护性和扩展性。同时,文章也讨论了在采用微服务过程中需要注意的问题和解决方案。
|
9天前
|
Web App开发 JavaScript 前端开发
深入浅出Node.js后端开发
【9月更文挑战第25天】本文将带你了解Node.js的基本概念和核心优势,同时提供一些实际的代码示例来加深理解。无论你是初学者还是有一定经验的开发者,都能通过本文获得有价值的信息和技巧。让我们一起探索Node.js的世界吧!
|
10天前
|
机器学习/深度学习 缓存 NoSQL
深度学习在图像识别中的应用与挑战后端开发中的数据缓存策略
本文深入探讨了深度学习技术在图像识别领域的应用,包括卷积神经网络(CNN)的原理、常见模型如ResNet和VGG的介绍,以及这些模型在实际应用中的表现。同时,文章也讨论了数据增强、模型集成等改进性能的方法,并指出了当前面临的计算资源需求高、数据隐私等挑战。通过综合分析,本文旨在为深度学习在图像识别中的进一步研究和应用提供参考。 本文探讨了后端开发中数据缓存的重要性和实现方法,通过具体案例解析Redis在实际应用中的使用。首先介绍了缓存的基本概念及其在后端系统性能优化中的作用;接着详细讲解了Redis的常见数据类型和应用场景;最后通过一个实际项目展示了如何在Django框架中集成Redis,

热门文章

最新文章

下一篇
无影云桌面