什么是后端?

1、什么是后端?

后端开发人员从事于构建Web应用程序背后的实际逻辑,负责通过API向前端或者其他系统提供其他需要的信息,如:数据。

实际上,开发web应用中对用户不可见的部分,称为web后端,也就是后端工作。

简单来说,在应用程序或网站的屏幕上看不到的所有东西都是前端的后端。

如:核心业务逻辑、数据库等等。

后端开发压力通常比前端的大,因为后端是web应用的“灵魂”,它影响web前端的方方面面,除了业务逻辑以外,还需要考虑安全性、稳定性、可维护性、可拓展性、伸缩问题等等。

2、定义

后端开发(Back-End Development,也称服务端开发、服务器端开发等)是创建完整可运行的Web应用服务端程序(服务端程序和资源合称为后端,即在服务器上运行的、不涉及用户界面的部分)的过程,是Web应用程序开发的一部分。

后端开发者使用Java、Golang等语言及其衍生的各种框架、库和解决方案来实现Web应用程序的核心业务逻辑,并向外提供特定的API,使得Web应用能够高效、安全、稳定地运行。

3、具体职责


-->实现Web应用程序的实际业务逻辑。

即:实现Web应用程序的具体功能(如注册、发表和查询信息等)或Web应用程序在服务端执行的具体操作。

后端开发这项工作的主要内容。


-->使用API和创建API。

后端需要向前端提供前端所需的数据,也需要使用第三方API来完成业务逻辑(如完成某个功能需要通过API调用其他应用、在使用框架进行开发时需要使用语言和框架的API、操作数据库时需要使用数据库或ORM框架的API等)。

因为在后端开发的过程中经常需要与API打交道,所以有人也把后端开发称为“API开发”,就像有些人将前端称为“GUI开发”一样。
-->优化。

在用户量达到一定程度后,就会出现诸如响应慢等各种问题(加载很慢,比如学习抢课总是系统会慢半拍);同时,随着代码行数的增多,许多架构上的缺陷可能也会随之暴露出来,如代码逻辑混乱、模块划分不正确等。

此时就需要后端开发人员对Web应用程序进行优化,如重构、分布式部署、优化业务逻辑、单体应用拆分成微服务等。


-->架构设计。

虽然一般只有高级的后端开发人员和架构师才需要关注架构问题,但是架构设计是后端开发中非常重要的一环,因为它决定了如何组织代码、某个模块负责解决什么样的问题、系统的扩展性和可维护性如何、业务逻辑如何进行组织等,也会一定程度上影响到业务逻辑的具体实现(比如微服务和单体架构这两种架构下,同一种业务逻辑的实现可能完全不同)。
 

3、特点

1、后端是工作在服务器上的,负责通过API向前端或其他系统提供其所需的信息(如数据等)。
2、后端开发实际上是开发Web应用中对用户不可见的部分(如核心业务逻辑、数据库等),大多数的后端开发都是不涉及用户界面的(除了在前后端不分离的架构中将前端的静态页面通过模板引擎改造成动态页面时)。
通常情况下,一个Web应用的绝大多数代码都属于后端代码,因为后端承担了Web应用实际的业务逻辑。
3、后端开发的压力通常比前端开发要大,因为后端是Web应用的“灵魂”,它影响着Web应用的方方面面,除了业务逻辑之外还需要考虑安全性、稳定性、可维护性、可扩展性、伸缩性等问题。

 

4、技术

程序设计语言

许多语言都可以用于后端开发,比较流行的是Java和Go。

例如我所使用的就是Go语言,也曾经使用过Java。此外,由于后端开发中经常需要和数据库打交道,所以作为后端开发者,还需要懂SQL语言(如果使用了NoSQL的话,也需要懂NoSQL数据库的语言)。


数据库

数据库作为一种简单易用的持久化机制,可以让用户的信息不因为断电等故障而丢失,Web应用开发中经常需要用到数据库,甚至许多简单的Web应用本质上都只是“数据库的可视化系统”,也因为绝大多数简单的业务逻辑本质上都只是对数据库的增删改查(即CRUD)。


框架、库和解决方案

想要高效率地开发Web应用,框架、库和解决方案是必不可少的,比如MVC框架、ORM框架、RPC框架、微服务开发框架、云基础设施(如Service Mesh、容器编排工具等)、运行时环境/容器(如Docker)、消息队列(Message Queue,MQ)、日志收集和分析工具等;这部分有一些框架是可以跨语言通用的,比如gRPC(RPC框架)、Istio(Service Mesh),也有一些是某种语言专用的,如Spring Cloud(微服务开发工具,JVM技术栈专用)、Gin(MVC框架,Go语言专用)。


架构和指导思想

架构是后端开发中非常重要的一部分,作为一名后端开发者需要了解常见的架构,如三层架构、SOA、微服务架构、六边形架构等,还需要了解常用于后端开发中的指导思想,如设计模式、MVC模式、DDD、CQRS/ES等。


包管理工具/项目管理工具

因为后端开发中经常要用到各种框架和库,所以用于管理这些框架和库的管理工具是非常重要的。每一门语言都有自己的包管理工具,如Java的Maven,Go语言的go mod等;
基础知识。不管是前端开发还是后端开发,都需要对操作系统、计算机网络、数据结构等基础知识有一定了解,还需要了解对应语言的编码规范、重构等知识,这可以帮助你理解框架和库,也能帮助你写出更高质量的代码。


开发方法

实际上这个也可以说是属于指导思想的一部分,包括CI/CD、敏捷开发、DevOps等;
版本管理工具。相信我,几乎没有人能离开这玩意。最常用的是Git。

5、

后端开发是一个非常综合的领域,既有非常抽象的架构和指导思想,又有具体的解决方案和业务逻辑,还涉及到许多计算机底层问题(如多线程、网络、I/O等)。

后端开发的技术含量实际上是非常高的,也非常有意思,充满了未知与挑战。

像微服务、云原生、DDD、CQRS/ES、高并发、负载均衡、缓存、消息队列、多线程、微服务监控、Service Mesh等技术,每一项都值得我们去研究,而这些技术中有很多都是在大型Web应用中被频繁使用的,如果你真正了解后端开发的话,是绝无可能说出“后端开发很枯燥”这样的话的。

请记住,并不是不涉及界面的工作就一定很枯燥。

后端开发实际上比前端开发更需要细心。就如前文所述,后端是Web应用程序的“灵魂”,后端开发中的许多问题都决定着Web应用的“生死存亡”,尤其是数据校验、多线程/多进程、锁、异步编程、事务/分布式事务、与第三方系统的交互等,这些问题有非常非常多的细节,且既复杂又非常重要,一旦在细节上出现问题(如数据校验不完全或加锁解锁的逻辑出现错误),轻则出现错误的数据或业务逻辑不能正常运行,重则直接导致整个Web应用挂掉或出现安全问题(如数据校验不完全导致的文件上传漏洞、函数使用错误导致的远程命令执行漏洞等)。所以如果你想从事后端开发,那足够细心绝对是一个必要的条件。

与前端开发是“写代码给人看”的不同,后端开发是“写代码给服务器看”(或者说给前端/第三方系统看)的。虽然这两个说法都不太严谨,但是后端开发更多的就是与服务器打交道(如降低资源使用率、提高Web应用程序的运行效率等等),而不是与人打交道(如提高页面的美观程度、思考用户的使用逻辑和心理等等)。

前端的逻辑更多的是交互逻辑,如点击某个按钮应该弹出什么窗口、怎么把数据渲染成用户想要看到的页面等,而后端的逻辑更多的是实际的业务逻辑,如完成某个功能需要怎样做、请求某个API应该返回什么样的数据等。

后端看似简单,实际上技术含量是非常高的。就如前面所说,现在的后端可不仅仅是CRUD,而是随着互联网和云计算技术的发展而不断改变,Web应用程序在需求不断变化的过程中功能变得越来越强,架构变得越来越复杂,对性能的考验也越来越严峻,技术含量自然也就越来越高。作为一名后端开发工程师,需要有不断学习新技术的觉悟,还需要有一定的自学能力,因为不是什么技术都有人教你的,在学习和使用最新技术时对着英文文档啃是常有的事。

对系统的基础设施(如框架、库和解决方案等)感兴趣的人。据我所知,许多在云原生方面有深刻造诣的大佬都是从后端开发者成长起来的,许多框架的作者曾经也是后端开发者。如果你碰巧像我一样对框架、库和解决方案(如Spring Boot、Spring Cloud、Gin、Kubernetes、Istio等)十分感兴趣,那么可以从成为一名后端开发者开始,在编写业务代码的过程中慢慢体会框架的重要性和所用框架的优缺点,以及如何设计一个好的框架。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/42086.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

初学vue3与ts:获取组件ref实例

/*** 获取组件ref* param {VueComponentIns} 组件实例* returns 组件ref*/ // eslint-disable-next-line export function useCompRef<T extends abstract new (...args: any) > any>(_: T) {return ref<InstanceType<T>>(); }使用 <a-com ref"a…

汇凯金业:数字货币对经济的影响有哪些

随着信息技术的飞速发展&#xff0c;数字货币作为一种新兴的货币形态&#xff0c;正逐步走进人们的视野&#xff0c;并对传统经济体系产生着深远影响。它不仅革新了交易方式&#xff0c;更在重塑金融格局、赋能经济发展等方面展现出巨大潜力。 一、交易效率的“加速器” 数字…

单例模式之懒汉式

文章目录 单例模式&#xff08;懒汉式&#xff09;代码懒汉式&#xff08;线程不安全&#xff09;懒汉式&#xff08;线程安全&#xff0c;加锁&#xff09;双重检查锁&#xff08;线程安全&#xff0c;推荐&#xff09; 单例模式&#xff08;懒汉式&#xff09; 懒汉式是符合…

xxl-job集成SpringBoot

安装xxl-job客户端一般有很多方式&#xff0c;我这里给大家提供两种安装方式&#xff0c;包含里面的各项配置等等。 前期需要准备好MySQL数据库。复制SQL到数据库里面。 # # XXL-JOB v2.4.2-SNAPSHOT # Copyright (c) 2015-present, xuxueli.CREATE database if NOT EXISTS x…

项目机会:4万平:智能仓,AGV,穿梭车,AMR,WMS,提升机,机器人……

导语 大家好&#xff0c;我是社长&#xff0c;老K。专注分享智能制造和智能仓储物流等内容。 如下为近期国内智能仓储物流相关项目的公开信息线索&#xff0c;这些项目具体信息会发布到知识星球&#xff0c;请感兴趣的球友先人一步到知识星球【智能仓储物流技术研习社】自行下载…

《SoC设计方法与实现》:全面掌握系统芯片设计精髓(可下载)

SoC&#xff08;System on Chip&#xff0c;系统级芯片&#xff09;设计是一项复杂而精细的工程活动&#xff0c;它涉及到将一个完整的电子系统的所有组件集成到一个单一的芯片上&#xff0c;包括处理器核心、内存、输入/输出端口以及可能的其他功能模块。这种集成不仅要求设计…

oracle存储结构-----逻辑存储结构(表空间、段、区、块)

文章目录 oracle存储结构图&#xff08;逻辑存储物理存储&#xff09;oracle逻辑存储结构图逻辑存储结构、表空间、段、区、数据块的关系&#xff1a;1、数据 块&#xff08;block&#xff09;---逻辑存储最小单位2、 数据区&#xff08;extent&#xff09;--存储空间分配和回收…

【AutoencoderKL】基于stable-diffusion-v1.4的vae对图像重构

模型地址&#xff1a;https://huggingface.co/CompVis/stable-diffusion-v1-4/tree/main/vae 主要参考:Using-Stable-Diffusion-VAE-to-encode-satellite-images sd1.4 vae 下载到本地 from diffusers import AutoencoderKL from PIL import Image import torch import to…

电脑经常黑屏

情况简述&#xff1a; 电脑经常突然黑屏&#xff0c;并且鼠标还能看到并且可操控 你是不是试过以下方法&#xff1a; 更换显卡驱动版本❌重置BIOS❌重装系统❌全网找千篇一律没啥用的教程❌ 这个标志熟悉吧&#xff0c;看看你的电脑里是否安装了火绒&#xff0c;如果装了继续…

MySQL在Windows系统上的详细安装指南

一、准备工作 1. 确定MySQL版本 访问MySQL官方网站&#xff1a;首先&#xff0c;你需要访问MySQL的官方网站&#xff08;MySQL&#xff09;&#xff0c;或者更具体地&#xff0c;访问MySQL的下载页面&#xff08;MySQL :: Download MySQL Community Server&#xff09;。 选择…

Linux运维:mysql主从复制原理及实验

当一台数据库服务器出现负载的情况下&#xff0c;需要扩展服务器服务器性能扩展方式有向上扩展&#xff0c;垂直扩展。向外扩展&#xff0c;横向扩展。通俗的讲垂直扩展是将一台服务器扩展为性能更强的服务器。横向扩展是增加几台服务器。 主从复制好比存了1000块钱在主上&…

Android14之获取包名/类名/服务名(二百二十三)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

深度学习-梯度下降算法-NLP(五)

梯度下降算法 深度学习中梯度下降算法简介找极小值问题数学上求最小值梯度梯度下降算法 找极小值问题在深度学习流程中深度学习整体流程图求解损失函数的目标权重的更新 深度学习中梯度下降算法简介 找极小值问题 引子&#xff1a; 我们训练一个人工智能模型&#xff0c;简单…

磁致伸缩液位计原理和特点

工作原理 磁致伸缩液位计的工作原理基于磁性材料在外部磁场作用下的尺寸变化来进行液位测量。该液位计主要由电子变送器、浮球&#xff08;浮子&#xff09;、探测杆&#xff08;测杆&#xff09;三部分组成。在磁致伸缩液位计的传感器测杆外配有一浮子&#xff0c;此浮子可以…

【SpringCloud应用框架】Nacos服务配置中心

第四章 Spring Cloud Alibaba Nacos之服务配置中心 文章目录 一、基础配置二、新建子项目1.pom文件2.YML配置3.启动类4.业务类5.Nacos配置规则 三、Nacos平台创建配置操作四、自动配置更新五、测试 一、基础配置 Nacos不仅仅可以作为注册中心来使用&#xff0c;同时它支持作为…

【环境准备】 Vue环境搭建

文章目录 前言vue-cli 安装创建项目3.0、以下3.0 、以上 前言 书接上回《NodeJs(压缩包版本)安装与配置》&#xff0c;安装完了NodeJs&#xff0c;接下来就要配置vue的环境了。 vue-cli 安装 安装vue-cli输入如下命令 #&#xff08;安装的是最新版&#xff09; npm install …

观察者模式(Observer Pattern)

观察者模式&#xff08;Observer Pattern&#xff09; 定义 观察者模式定义了一种一对多的依赖关系&#xff0c;让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时&#xff0c;会通知所有观察者对象&#xff0c;使它们能够自动更新自己。别名&#xff1…

鼠标宏怎么设置?6款鼠标自动点击器强推,游戏玩家专用!(2024全)

随着电子游戏和日常应用的不断发展&#xff0c;我们经常会遇到一些重复性的任务或操作。而在这种情况下&#xff0c;鼠标宏以其自动化的特点成为了许多玩家和使用者的利器之一。如果你正在寻找如何设置鼠标宏来简化操作并提高效率&#xff0c;那么你来对地方了。在本文中&#…

【Java]认识泛型

包装类 在Java中&#xff0c;由于基本类型不是继承自Object&#xff0c;为了在泛型代码中可以支持基本类型&#xff0c;Java给每个基本类型都对应了一个包装类型。 除了 Integer 和 Character&#xff0c; 其余基本类型的包装类都是首字母大写。 泛型 泛型是在JDK1.5引入的…

ASAN排查程序中内存问题使用总结

简介 谷歌有一系列Sanitizer工具&#xff0c;可用于排查程序中内存相关的问题。常用的Sanitizer工具包括&#xff1a; Address Sanitizer&#xff08;ASan&#xff09;&#xff1a;用于检测内存使用错误。Leak Sanitizer&#xff08;LSan&#xff09;&#xff1a;用于检测内存…