什么是后端?

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.pswp.cn/web/42086.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/42086.shtml
英文地址,請注明出處:http://en.pswp.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;用于檢測內存…