Introduction
In this article, I’ll cover a general introduction to backend development without a deep dive into the code. I’ll provide languages and frameworks that you can explore more. If you're is looking for more technical tutorials, follow me and check my other posts :)
If you’re not a software developer terms like backend or front end development can give her a headache. Adding to that a long list of different tools, languages and frameworks it’ll confuse where to start. However, there’s good news - you don't need to learn coding to understand the basics. It’s helpful to know the basics of typical tech stack whether any developer is working around you.
I've divided this article into few sections.
Let's start by agenda:
- What is backend?
- API's
- Servers
- Databases
- Backend developer
- Backend languages
1. What is backend?
Imagine a typical web application like your online banking service - what comes to your mind? You have the visual part which is created for human interaction and something behind. That’s the easiest way we can describe front end (the visible part - colours, animations, layout, and all the stuff that you can experience) below sample interface of a web application.
The backend is the internal engine of the application which includes things like the server, API and the database. The backend is often described as a “server-side” opposite to “client-side” or “browser side” where the client sends a request to the backend by clicking on a specific button. The backend is the machinery that works silently behind the scenes.
A common backend is a mix of the server, APIs, databases and operating systems that power an application’s front end. Every app can use very different tools whether it’s the use of cloud-based servers and data warehouses, containerization with a service like Docker, APIs to replace more complex processing or Backend-as-a-Service providers. Below sample library app schema visualised with GraphQL Editor.
To start things, we’ll break the server side down into four main components: the server, API, the database, the operating system, and the software. In the next chapters, we’ll explain more about each of these components of the backend.
2. API's
Technically, API stands for Application Programming Interface. In general terms, it's a set of clearly defined methods, rules and definitions of communication between applications. In terms of backend development, it's crucial to mention that backend and frontend are communicating via API. Good designed API makes it simpler to develop parts of the web app by providing all the blocks, which are then put together by developer. To give it context to our article API is a set of rules on how the frontend asks backend for data.
The most popular standards for creating API for the web today are REST API GraphQL. Exploring GraphQL more we can say it is a query language for your API. The most important feature of GraphQL is that its language agnostic with its own rules and definitions. It’s not created to work with any specific technology. Below you can see an example of GraphQL with GraphQL Editor.
3. Servers
When you type any domain into a web browser that means you type server address. If you go deeper into specific sections of that website, you’ll see that extended URL with additional details. This include folder path, subdirectory locations and specific file names. Let’s have a look at Google’s logo. This particular address contains precise information on where exactly on the server file exists.
As part of other components, the server is the heart of the system. It could be located locally on your computer or in a modern way in the cloud. You can imagine a cloud as a group of connected computers. That network of computers can run various tasks including file storage, security and encryption, databases, email, and web services. The cheapest option of cloud servers is a shared virtual machine, a computer which are running many servers at the same time. More expensive one are dedicated machines which you can rent according to your needs. Virtualisation creates shared servers.
The primary goal of virtualisation is to manage workloads by transforming traditional computing to make it more scalable. In operating system-level virtualisation, it is possible to run multiple operating systems on a single piece of hardware. Virtualisation technology involves separating the physical hardware and software by emulating device using the software.
One of a popular lightweight alternative to virtualisation is containerization. Imagine catching application into a virtual container with its environment. It provides benefits of loading an application onto a virtual machine, as the application runs on any suitable physical computer without any worries. Containerization has gained recent fame with the open-source technology called Docker. Using containers, you can easily migrate apps between servers.
As you’ve got the basics about on-site servers, expand your knowledge with a look at virtualisation, how servers get provisioned to house multiple apps, and containerization, another way servers provision their operating systems out to house compartmentalised applications.
4.Databases
A database is the storage of a collection of data. That may sound overly naive, but it pretty much sums up what any database is. A database could be as primary as a text file with a list of names. Alternatively, it could be as complex as a large, relational database management system, complete with in-built tools to help you maintain the data.
Any time you request something from a website or search a place to stay at Airbnb your front end sends a request to the database and creates a response. The data is transmitted back to the website, and you see the result of your actions. You can also update or edit data in your database from the visual interface. Imagine uploading pictures to Facebook or adding a description to your products in CMS.
A Database Management System (DBMS), is a tool that enables the management and creation of databases. Today most database systems are referred to as a Relational-DBMS, because of their capacity to store related data across multiple tables. When more than two tables contain related data, they have a relationship. You design your database in a way that defines which tables will have to be related. Most popular relational DBMS include Microsoft Access, SQL Server, MySQL.
Alternatively, to related databases we have NoSQL. It’s a comprehensive term that doesn’t describe any particular database type. It’s a group of databases that don’t fit into a relational model. Let’s explore some examples:
- Column store database,
- Graph databases that use a graphical model,
- Document store database that uses a document-oriented model,
5. Backend developer
Back-end developers work with front-end developers by giving the outward facing web app elements of server-side logic. In other words, back-end dev’s create the business logic to make the web app work correctly, and they achieve this through the use of back end scripting languages. Some of the regular responsibilities include:
- Writing server-side code
- Interacting with the database
- Writing code to communicate with the database
- Deploying the system online so the app can be usable
- Maintaining security of the code
- Maintaining code to be optimised to handle large traffic volume
- Integrating server-side logic with front end
- Design and implementation of data storage solutions
- Building reusable code and libraries for future use
- Writing documentation for ease of use for new developers
- Back-end developers usually work in groups or teams. Within larger organisations, there can be both back-end and front-end engineers, which can include engineers - with specific roles like REST API developers or quality assurance or architects.
6. Backend languages
Back-end developers can learn a variety of languages and frameworks depending on the type of app they’re developing, its specific processing specifications, and what other components already exist on the back end.
Languages will differ in file size, speed, adaptability, how many lines of code required, and the style of coding. Some back-end scripting languages are object-oriented, a method of programming that bundles properties and functions within objects. Different languages may be compiled rather than interpreted, something that affects load speed, readability, and processing power needed to run the app.
Most of the sites are built on PHP, making it one of the most common back-end languages. However, there are plenty of others to choose from. You may want to use the processing power of Python for a data-driven site, or leverage the speed of lightweight languages like Ruby for quick prototyping. It’s up to you and your developers, and every language has its pros and typical applications.
Take a look at a few of the other big hitters in back-end programming, like:
- Java
- C# and C++
- .NET
- Perl
- Scala
- Node.js (and JavaScript)
Top comments (9)
It's frustrating to see mom-in-the-abstract still being used as jokey shorthand for a lack of familiarity with specific technical subjects. That framing really gets this piece off on the wrong foot, and it's entirely superfluous since the remaining 90% of it seems to be aimed at people who are actually getting involved with a dev team, not at answering the usual "so what do you do, exactly?" holiday dinner-table questions.
So glad to see I am not the only one frustrated over the "explain it to your mom" thing. My mom's a kickass banker and I can never match her expertise in her field, so it would be hypocritical of me to expect her to understand mine. This elitist attitude about tech expertise really bugs me.
Sorry girls! Didn't wanted to frustrate anybody! I was choosing between some other relatives and finally decide about mom :]
Should I use grandpa? ;)
Good content for someone who is curious but will have to agree with the the people above. There is a serious lack of women in tech and to feed the stereotype is just wrong.
@robmatyszewski you might think about the feedback that your chosen framing device has nothing to do with the rest of the piece anyway?
@dmfay updated ;)
I have some conflicting points with your post
This post hardly touches the actual backend stuff. You have said GraphQl is the most popular API Standard, basing on what did you conclude that? REST API is pretty widely used and is not very easy to be replaced entirely with GraphQL. I know the advantages of it but it has so many limitations and any one thing can never become standard here as it depends on business use-cases.
You haven't mentioned go-lang and python as backend languages(especially with Django) at all which are also widely used. Also, the mere mentioning of the languages will not suffice. for e.g- nodejs is not at all preferable if the project is more CPU intensive (this is just one point).
Mysql is not at all suitable for good-sized projects. I don't understand why it is always mentioned in every beginner tutorial, why not postgresql? Mysql is not at all a good database to learn. It's not even truely SQL. Postgresql is the most SQL oriented and popular open-source database out there.
I would add Golang also for backend programming languages. It's good for writing web services.
Cool! Will update!