Backend Development
Tags: webdev, programming, career, database
Published: 2022-10-29 04:17:04

Backend development is the process of writing code for anything behind the website or web app you are using. It is the server side of the website and a connector between the database and the frontend/User Interface.

A good backend developer should have the skills of designing, _developing, scaling, and testing code_ that runs the business logic of the website.

**Summary**

- Terminologies
- Technologies and Tools
   1. Server
   2. Databases
   3. Operating System
   4. Software Stack 
- Additional Resources


## Terminologies:
Let's see a few terminologies in Web Development before diving deep into the Backend.

_Frontend / User Interface(UI)_ - This is the visual page that users see from their browsers and serves as an interface to the backend. The medium article that you are reading right now is a UI.

_Backend_ - This is typically the server that sends/serves the content to your browser when you enter a website's URL.

## Technologies and tools:

## 1) Server:
The server is typically a computer that listens to requests from a client or the front end. There are two types of servers namely,

_a) Static server:_
Here the webpages lie around as a file, when a request is made, the server sends it to the browser. Here a point to note is, Static server means that static files are saved in the server. In a single line, Every request from any browser will receive the same response i.e. the source code is the same. 

A note to be made is, this has nothing to do with the dynamicity of the webpage itself, it can still have JavaScript and dynamically change contents according to the user events(refer [DOM](https://www.w3schools.com/js/js_htmldom.asp))

The best analogy to this is a **Vending Machine**.

_b) Dynamic Server:_
This kind of server is the one that modifies the content and renders a unique source code and serves it to the browser.
The best analogy to Dynamic Server is a **Restaurant**.

Here is a picture explaining the difference between dynamic and static server

![Picture credit: [Academind](https://www.youtube.com/watch?v=_wFJj94kSTU) YouTube channel](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xw0ympnpplnfqz9yoa5z.png)Picture credit: [Academind](https://www.youtube.com/watch?v=_wFJj94kSTU) YouTube channel

**What is better, Dynamic or Static?**

![Picture credit: [Academind](https://www.youtube.com/watch?v=_wFJj94kSTU) YouTube channel](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9gll9rgle1wqns0jp5de.png)Picture credit: [Academind](https://www.youtube.com/watch?v=_wFJj94kSTU) YouTube channel

**Deployment of Different servers:**

![Picture credit: [Academind](https://www.youtube.com/watch?v=_wFJj94kSTU) YouTube channel](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2o9pop7iwumdcrzz6mo4.png)Picture credit: [Academind](https://www.youtube.com/watch?v=_wFJj94kSTU) YouTube channel

## 2) Databases:

Databases can be mainly categorized into two:
a) Relational Databases
b) Non Relational Databases

![Picture Credit: Upwork](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cmsiyxmpk46082cwaccs.png)Picture Credit: [Upwork](https://www.upwork.com/mc/documents/Relational-Databases.png)

Things to learn from the database point of view:
· Schemas
· Normalization
· Stored procedure and triggers
· Knowledge of SQL commands
· Views


## 3) Operating Systems:
Knowledge of Operating Systems and different concepts related to them is indispensable to becoming a Backend Software Developer.

Here is an article explaining the main concepts of OS:
[The 10 Operating System Concepts Software Developers Need to Remember](https://data-notes.co/the-10-operating-system-concepts-software-developers-need-to-remember-480d0734d710)


## 4) Software Stack:
Here you can find the top 10 frameworks for backend Dev:
[10 Best Backend Frameworks for Web Development in 2022](https://medium.com/javarevisited/10-best-backend-frameworks-for-web-development-8d19e337f774)

Things to learn from the Backend point of view:
· Session management
· Authentication & Authorization
· Caching Mechanisms
· APIs & Web Services
· Software architectures (MVC)
· Software design patterns
· Algorithms and data structures
· Structured logging
· Debugging, profiling, and tracing
· Deployment
· Software testing
· Frameworks and Package Managers

## Additional Resources:

- [What is Backend Development](https://www.youtube.com/watch?v=cbSrsYiRamo)
- [Introduction to Backend Development](https://dev.to/kaperskyguru/introduction-to-backend-development-506a)
- [How Backend works](https://www.youtube.com/watch?v=4r6WdaY3SOA)
- [Guide to Backend Development](https://www.upwork.com/resources/beginners-guide-back-end-development)