This can be found in roadmap form at NavigoLearn.com
This is a roadmap that gives an overview of the key concepts and technologies you need to know to become a Backend Developer. It is not tied to a specific programming language which makes it a versatile guide.
Backend Development Intro: This section covers the basics. What is a server, a protocol and the internet works. It also discusses the roles, responsibilities, and common technologies that backend developers use.
Server-side Programming: Here you'll pick a programming language to work with and understand basic data structures of the chosen language.
Databases: You’ll learn about different types of DBMS's (Database Management Systems) like SQL, NoSQL and ORMs for database interaction.
APIs: This section discusses the different types of APIs such as RESTful API, GraphQL API, etc.
Authentication & Authorization: It covers the theories of authentication and authorization as well as various techniques such as Session Authentication, JSON Web Tokens (JWT), OAuth, and OpenID Connect.
Caching: Here you'll learn about caching to enhance performance.
Containerization: Covers technologies like Docker, Kubernetes for containerizing applications making them scalable and manageable.
Cloud Providers: Provides an overview of major cloud service providers.
Backend Architectures: Covers the popular architectural models used in backend development.
Testing: Discusses various types of testing as well as popular testing frameworks, and various testing methodologies.
Logging and Monitoring: Covers various aspects of monitoring an application from log management and network monitoring to performance and security monitoring.
CI/CD: Covers the basics of Continuous Integration and Continuous Deployment, including the best practices and tools for both.
Rate Limiting and Throttling: Discusses the techniques and libraries for rate limiting and throttling to ensure fair usage of limited resources.
This path should give you a broad understanding of backend development. Please remember this is a guide and not a strict rulebook. Backend development is vast, and this roadmap provides a way to navigate through resources available to the best of author's knowledge. Be sure to take each section at your own pace, even out of order if you wish. Ensuring you understand each concept thoroughly.
- Backend Development Intro
- What is a server?
- What is a protocol?
- How the internet works?
- Pentagon Backend (What/When/Where/Why/How)
- Role of a Backend Developer
- Common Backend Technologies
- Server-side Programming
- Choose a language
- Basic Data Structures
- Databases
- SQL
- SQL Injections
- NoSQL
- MongoDB
- Redis
- Cassandra
- ORMs
- SQL
- APIs (Application Programming Interfaces)
- Types of APIs
- RESTful APIs
- HTTP Methods
- RESTful API Design
- RESTful API Best Practices
- GraphQL APIs
- ProtoBuf
- RESTful APIs
- Websockets & Real-time Communication (WS/WSS)
- API Security
- Types of APIs
- Authentication & Authorization
- Understanding Authentication
- Understanding Authorization
- Authentication Techniques
- Session Authentication
- JSON Web Tokens (JWT)
- OAuth
- OpenID Connect
- Caching
- Types of caching
- In-Memory Caching
- HTTP Caching
- Database Query Caching
- Cache Invalidation
- Cache Best Practices
- Types of caching
- Containerization
- Docker
- Kubernetes
- Docker Swarm
- Apache Mesos
- Helm
- LXD
- Podman
- Containerd
- Docker
- Cloud Providers
- Backend Architectures
- Monolithic
- Microservices
- Serverless
- Service-Oriented Architecture (SOA)
- Testing
- Types of testing
- Testing frameworks
- Node.js
- Python
- Go
- PHP
- Kotlin
- Testing Methodologies
- Test Driven Development (TDD)
- Behavior Driven Development (BDD)
- Exploratory Testing
- Stress Testing
- Security Testing
- Logging and Monitoring
- Application Monitoring
- Log Management
- Infrastructure Monitoring
- Network Monitoring
- Security Monitoring
- Performance Monitoring
- Tools for Logging and Monitoring
- Application Monitoring
- CI/CD (Continuous Integration / Continuous Deployment)
- Basics of CI (Continuous Integration)
- Tools for CI
- Jenkins
- TravisCI
- CircleCI
- GitHub Actions
- Basics of CD (Continuous Deployment)
- Tools for CD
- Jenkins
- AWS CodeDeploy
- Google Cloud Deployment Manager
- Heroku
- CI/CD Best Practices
- Rate Limiting and Throttling
- Rate Limiting Techniques
- Fixed Window Counter
- Sliding Window Log
- Token Bucket
- Leaky Bucket
- Libraries for Rate Limiting
- Node.js
- Python
- Go
- Kotlin
- Rate Limiting Techniques
- Basics of computer science
- You should have a basic understanding of how computers work. This includes things like how memory works, how the CPU works, etc. You don't need to know everything, but you should have a basic understanding of how computers work.
- Git and GitHub
- For collaboration and version control and to get familiar with the development workflow.
- Data Structures and Algorithms
- I go into this a bit in this roadmap.
- Understanding of data structures and algorithms is essential for backend development. You don't need to know every algorithm under the sun, but you should have a basic algorithmic foundation.
- Servers and HTTP/HTTPS
- I go into this a bit in this roadmap.
- It's important to know a bit about how http works and how servers work. This will help you understand how to build applications that work on the internet.
- Basic frontend technologies
- Technologies such as HTML, CSS and a little bit of JavaScript
- You don't need to be an expert, you need to know this to properly communicate with frontend developers and to understand how the frontend and backend work together.
-
Backend Development Intro
- This section contains information on what you need to know to get started with backend development. You don't need to know everything in this subtree to get started, but it's important to have a basic understanding of the concepts listed here, so you can talk to people and get help if you get stuck working on a project.
- Learn web development as an absolute beginner - Coder Coder
- 1.A What is a server?
- It's important to understand the concept of what a server is and how it works. This will help you understand how anything on the internet works. You may already have a vague idea if you're a gamer, but could you really define what a server is?
- What is a Server? (Deepdive) - Video - LiveOverflow
- What is a Server? - Article - GeekforGeeks
- 1.B What is a protocol?
- Protocols are the rules that govern how computers communicate with each other. You should have a basic understanding of what a protocol is and how it works to avoid headaches ahead.
- What is a protocol? - Video - Internet-class
- What is a Protocol? (Deepdive) - Video - LiveOverflow
- Why are protocols so highly structured? - Video - Internet-class
- What is a protocol? | Network protocol definition - Article - CloudFlare
- 1.C How the internet works?
- Do you have any idea how the internet works? If not, you should probably learn. It might not be complicated as you might think.
- Computer Networking in 100 Seconds - Video - Fireship
- The Two Generals’ Problem - Video - Tom Scott
- The Http and the Web | Http Explained | Request-Response Cycle - Video - The TechCave
- Hypertext Transfer Protocol (HTTP) - Article - ExtraHop
- 1.D Pentagon Backend (What/When/Where/Why/How)
- Why do you want to learn backend development? What value does it add? What problems does it solve? These are all questions you should ask yourself before you start learning backend development.
- 1.DA Role of a Backend Developer
- What does a backend developer do? What are their responsibilities?
- Backend Development explained in 2 minutes - Video - mayuko
- What does a back-end developer do? - Article - LinkedIn
- 1.DB Common Backend Technologies
- What technologies do backend developers use? What skills do they need?
- A list of things that are commonly used in backend development. And most of what you'll be learning in this roadmap.
- Languages & Frameworks
- Be it Express, Django or any other framework, the easiest way to get started with backend development is to use a framework. Frameworks are a collection of libraries and tools that make it easier to build applications by abstracting away the complexity of the underlying technologies.
- Databases & ORMs
- Databases are used to store data. There are many different types of databases, but the most common ones are relational databases like MySQL, PostgreSQL, etc. and NoSQL databases like MongoDB, Redis, etc. ORMs are used to interact with databases. They allow you to write code instead of SQL queries to interact with the database.
- APIs & communication Protocols
- APIs are used to communicate between different applications. They allow you to send and receive data between applications. There are many different types of APIs, but the most common ones are REST APIs, GraphQL APIs, and WebSockets.
- Caching
- Caching is used to store data in memory so that it can be accessed faster. It's used to improve the performance of applications by reducing the number of times data needs to be fetched from the database or other external sources.
- Identity & Access
- Authentication is used to verify that a user is who they say they are. Authorization is used to determine what a user can and cannot do. This can be done using a variety of different methods, but the most common ones are JWTs and OAuth.
- Containerization
- Containerization is used to package applications into containers so that they can be run on any machine without having to worry about dependencies or other external factors. The most common containerization tool is Docker.
- Cloud Providers
- Cloud providers are used to host applications in the cloud. They provide a variety of different services, but the most common ones are storage, compute, and networking. The most popular cloud providers are AWS, Azure, GCP and DigitalOcean.
-
Server-side Programming
- Server-side programming is the backbone of backend development, where the magic happens behind the scenes. In this realm, developers wield programming languages like JavaScript, Python, Go, PHP, Ruby, and others to build applications that run on remote servers rather than your device or browser.
- 2.A Choose a language
- It's encouraged to pick a language and stick to it while starting out. It's less about which one you choose and more about learning to think like a programmer. Below are a few short videos of languages that are commonly used in backend development.
- JavaScript in 100 seconds - Video - Fireship
- Python in 100 seconds - Video - Fireship
- Go in 100 seconds - Video - Fireship
- PHP in 100 seconds - Video - Fireship
- Kotlin in 100 seconds - Video - Fireship
- 2.B Basic Data Structures
- Understand the basics of arrays, strings, linked lists, stacks, queues, trees, and hash tables. You don't need to know how to implement them, but you should know how they work and when to use them.
- 10 Key Data Structures We Use Every Day - Video - ByteByteGo
- Algorithms and Data Structures Tutorial — Full Course for Beginners - Video - freeBootCamp.org
-
Databases
- The world of databases is a fundamental pillar of backend development. It's where your application's data is stored, retrieved, and managed. SQL databases are the most common type of database, but there are many other types of databases as well.
- 3.A SQL
- SQL is a language used to interact with relational databases. It's used to create, read, update, and delete data from databases. It's one of the most common languages used in backend development.
- SQL in 100 seconds - Video - Fireship
- Learn SQL In 60 Minutes - Video - freeCodeCamp.org
- SQL Tutorial — Web Tutorial - W3Schools
- 3.AA SQL Injections
- SQL injections are one of the most common security vulnerabilities in web applications. They allow attackers to execute arbitrary SQL queries on the database. You should know how to prevent them.
- SQL Injections are scary!! (hacking tutorial for beginners) - Video - NetworkChuck
- SQL Injection Prevention Cheat Sheet - Article - OWASP Cheat Sheet
- 3.B NoSQL
- NoSQL databases are used to store unstructured data. They're often used in conjunction with relational databases to store data that doesn't fit into the relational model. They're also used to store data that needs to be accessed quickly.
- What Is a NoSQL Database? | NoSQL Explained - Video - IBM Developer
- SQL vs. NoSQL Explained (in 4 Minutes) - Video - Exponent
- Which Is Better? SQL vs NoSQL - Video -
Web Dev Simplified
- 3.BA MongoDB
- MongoDB is a document-oriented database. It's one of the most popular NoSQL databases. It's used to store data in JSON-like documents.
- MongoDB in 100 seconds - Video - Fireship
- MongoDB Crash Course - Video - Web Dev Simplified
- MongoDB Tutorial - Web Tutorial - W3Schools
- 3.BB Redis
- Redis is an in-memory data store. It's used to store data in key-value pairs. It's often used to store session data or cache data.
- Redis in 100 seconds - Video - Fireship
- Redis Crash Course - Video - Web Dev Simplified
- Getting started with Redis - Documentation - Redis
- 3.BC Cassandra
- Cassandra is a distributed database. It's used to store data in a distributed fashion. It's often used to store data that needs to be accessed quickly.
- Cassandra in 100 seconds - Video - Fireship
- Apache Cassandra Database – Full Course for Beginners - Video - freeCodeCamp.org
- Cassandra Documentation - Getting Started - Documentation - Apache Cassandra
- 3.BA MongoDB
- 3.C ORMs
- ORMs are used to interact with databases. They allow you to write code instead of SQL queries to interact with the database. They're often used in conjunction with relational databases to make it easier to work with them.
- ORM: The Good, the Great, and the Ugly - Video - Coding Tech
- What is an ORM? - Article - Prisma
- What is an ORM – The Meaning of Object Relational Mapping Database Tools - Article - freeCodeCamp.org
-
APIs (Application Programming Interfaces)
- An API is a set of definitions and protocols that allows applications to communicate with each other. It's a way for different software applications to interact with each other. Get familiar with what APIs are and why they are important.
- APIs Explained (in 4 Minutes) - Video - Exponent
- What is an API and what does it do - Article - Open API Hub
- 4.A Types of APIs
- There are several types of APIs including REST, SOAP (mostly useless in modern applications), and GraphQL. Each has its own uses, advantages and disadvantages. Understand them and decide which one suits your needs best.
- 4.AA RESTful APIs
- REST stands for REpresentational State Transfer. It is an architectural style for creating web services. RESTful APIs are built using HTTP methods like GET, POST, PUT, DELETE, etc.
- RESTful APIs in 100 Seconds // Build an API from Scratch with Node.js Express - Video - Fireship
- REST API concepts and examples - Video - WebConcepts
- Representational state transfer (REST) and Simple Object Access Protocol (SOAP) - Article - IBM Cloud
- 4.AAA HTTP Methods
- HTTP methods are used to perform different actions on resources. They're used to create, read, update, and delete data from databases. They're also used to perform other actions like sending emails, uploading files, etc.
- HTTP/1 to HTTP/2 to HTTP/3 - Video - WebConcepts
- HTTP Methods - Documentation - MDN Web Docs
- HTTP response status codes - Documentation - MDN Web Docs
- 4.AAB RESTful API Design
- RESTful APIs are designed using a set of principles called RESTful design principles. These principles are used to design APIs that are easy to use and understand. They're also used to design APIs that are easy to maintain and extend.
- REST Tutorial - How to Design a Good RESTful API - Video - Grace Hopper Academy
- RESTful API Design — Step By Step Guide - Article - Better Programming
- 4.AAC RESTful API Best Practices
- RESTful APIs are designed using a set of principles called RESTful design principles. These principles are used to design APIs that are easy to use and understand. They're also used to design APIs that are easy to maintain and extend.
- Rest API - Best Practices - Design - Video - High-Performance Programming
- What Is Idempotence? - Article - REST API Tutorial
- 4.AB GraphQL APIs
- GraphQL is a query language for APIs and a runtime for executing those queries with your existing data.
- GraphQL In 100 Seconds - Video - Fireship
- Learn GraphQL In 40 Minutes - Video - freeCodeCamp.org
- GraphQL is the better REST - Article - HowToGraphQL
- 4.AC ProtoBuf - https://protobuf.dev
- 4.B Websockets & Real-time Communication (WS/WSS)
- WebSockets provide a bidirectional, full-duplex communications protocol over a single TCP connection for real-time data transfer between the client and the server. This is one of the newer technologies in the backend development and support used to be spotty, but it's well-supported nowadays.
- WebSockets in 100 Seconds - Video - Fireship
- A Beginner's guide to WebSockets - Video - freeCodeCamp.org
- WebSockets - Article - MDN Web Docs
- 10 Websocket Best Practices - Article - Climb the Ladder
- WebSocket Cheat Sheet - Article - Read the Docs
- 4.C API Security
- Understanding how to secure your APIs is essential as they are one of the most common attack vectors used by malicious actors.
- API Security Cheat Sheet - Article - OWASP Cheat Sheet
- API Security - Article - Red Hat
- WebSocket Security Cheat Sheet - Article - OWASP Cheat Sheet
-
Authentication & Authorization
- Authentication and Authorization are critical processes in securing your application.
- Both processes work together: authentication confirms that users are who they say they are, and authorization gives those users permissions to access resources.
- It is crucial to understand the difference between the two and how they are implemented in web development.
- Authentication vs Authorization - Video - Coding With Chaim
- Authentication vs. Authorization: What's the Difference? - Article - CSO
- What’s the difference between authentication and authorization? - Article - IBM Cloud
- 5.A Understanding Authentication
- Authentication is the process of verifying the identity of a user, device, or system. It often involves validating credentials like username and password.
- "Basic Authentication" in Five Minutes - Video - OktaDev
- Introduction to Web Authentication: The New W3C Spec - Article - Auth0
- 5.B Understanding Authorization
- Authorization is the process of giving someone permission to do or have something. In multi-user systems, a system administrator defines for the system which users are allowed access to the system and what privileges of use.
- 5.C Authentication Techniques
- Modern applications use techniques like session, JSON Web Tokens (JWT), OAuth, and OpenID for authentication and authorization.
- Session vs Token Authentication in 100 Seconds - Video - Fireship
- Web API Security | Basic Auth, OAuth, OpenID Connect, Scopes & Refresh Tokens - Video - Ambient Coder
- 5.CA Session Authentication
- Session authentication is a technique that uses cookies to store session information on the client side. It's used to authenticate users and prevent unauthorized access to resources.
- How does a web session work - Video - Placement Mentor
- Sessions - Article - Auth0
- 5.CB JSON Web Tokens (JWT)
- JSON Web Tokens is an open standard for securely transmitting information between parties as a JSON object.
- JWT Authentication Tutorial - Node.js - Video - Web Dev Simplified
- Don’t Use JWT for Login Sessions - Short Video - Coding in Flow
- Implementing JWT Authentication in Node.js/Golang - Article - Soham Kamani
- 5.CC OAuth
- OAuth 2.0 is the modern protocol for creating and managing authorization between applications.
- OAuth 2.0 - An Overview - Video - InterSystems Learning Services
- Demystifying OAuth: Enabling Secure and Seamless User Authentication - Article - Kevin C. on LinkedIn
- OAuth 2.0 and OpenID Connect (in plain English) - Video OktaDev
- OAuth 2.0 - Article - OAuth
- 5.CD OpenID Connect
- OpenID Connect is an identity layer on top of the OAuth 2.0 protocol, which allows clients to verify the identity of the end-user based on the authentication performed by an authorization server.
- How OpenID Connect Works - Article - OpenID
Checkpoint: You should now have a basic understanding of backend - Front-end developer level
You should be able to use backend APIs at this point to integrate them into your frontend applications.
You should also be able to build simple backend applications.
Project ideas:
- To Do List app (REST API)
- Add Task
- Edit Task
- View Task
- Delete Task
- Mark Task as Done
- What else can you think of?
- Simple Blog app (REST API)
- Add Post
- Edit Post
- Fetch Post
- Delete Post
- Search Post? — Database focused task
- What else can you think of?
- Simple Chat App (WebSockets + REST)
- Send Message
- Receive Messages
- Delete Message
- Search Message history? — Database focused task
- What else can you think of?
- E-commerce App (REST API)
- Add Product
- Edit Product
- Fetch Product
- Delete Product
- Search Product? — Database focused task
- What else can you think of?
-
Caching -
- Fair warning this section has a lot of text articles and not many videos.
- Caching is the process of storing copies of files or data in a cache, or a temporary storage location, so that they can be accessed more quickly. Databases, web pages, and other objects can be cached in response to repeated requests for the same data.
- Caching - Simply Explained - Video - Simply Explained
- Caching Overview - Article - Amazon Web Services
- 6.A Types of caching
- There are several types of caching that you could use depending on
your needs, such as in-memory caching (like Memcached or Redis), HTTP
caching, database query caching, etc.
- 6.AA In-Memory Caching
- Here is where you store data in memory, so that it can be accessed faster. It's used to improve the performance of applications by reducing the number of times data needs to be fetched from the database or other external sources. We talked about this in the Redis node. Another example of in-memory caching is Memcached.
- Cache Memory Explained - Video - ALL ABOUT ELECTRONICS
- Redis Caching in Node.js - Video - Traversy Media
- 6.AB HTTP Caching
- HTTP caching refers to the practice of storing copies of web resources in a cache close to the user for faster access. The browser storage, service workers and proxies can serve as HTTP caches. This improves the performance and efficiency of web applications by reducing the load on the server.
- Caching - Article - Google Developers
- HTTP Caching - Article - MDN Web Docs
- 6.AC Database Query Caching
- Database query caching is a technique to boost the performance of your application by storing the result set of a query in cache. When the same query is executed again, the DBMS can return the result from cache instead of executing the query again. This can dramatically reduce the load on the database and speed up query results.
- Caching Slow Database Queries with Node.js and Redis - Video - Redis
- Boost Your Node.js Application Performance with Redis Caching - Article - codedamn
- 6.AA In-Memory Caching
- There are several types of caching that you could use depending on
your needs, such as in-memory caching (like Memcached or Redis), HTTP
caching, database query caching, etc.
- 6.B Cache Invalidation
- Cache invalidation is a process in a computer system where entries in a cache are replaced or removed.
- Cashing with Caching - Article - ITNEXT
- What Is Cache Invalidation - Blog - Pantheon
- 6.C Caching Best Practices
- Caching needs to be implemented carefully as improper caching can lead to users being served stale or inappropriate data. There are several best practices to follow when implementing caching.
- Principles of Cache Design in Web Application - Article - Philip Feng Ph.D. on Medium
-
Containerization
- Containerization is a method of using operating systems' virtualization features to run applications and services in resource-isolated processes. Containers bundle an application together with all related configurations, libraries, and files necessary to run. This ensures the application works in any environment. Docker is one of the most popular tools for creating and managing containers.
- Never install locally - Video - Coderized
- 7 Cases When You Should Not Use Docker - Article - freeCodeCamp.org
- 7.A Docker
- Docker is an open-source platform that uses OS-level virtualization to deliver software in packages called containers. Containers are isolated from each other and bundle their own software, libraries, and configuration files; they can communicate with each other through well-defined channels. By containerizing the application platform and its dependencies, differences in OS distributions and underlying infrastructure are abstracted away, making the application more portable and secure. Docker is widely used in continuous integration and continuous deployment (CI/CD) workflows and in conjunction with orchestration tools like Kubernetes.
- Docker in 100 Seconds - Video - Fireship
- Learn Docker in 7 Easy Steps — Full Beginner's Tutorial - Video - Fireship
- Docker Tutorial for Beginners — A Full DevOps Course on How to Run Applications in Containers - Video - freeCodeCamp.org
- 7.AA Kubernetes
- Kubernetes (also known as K8s) is a portable, extensible, open-source platform for managing containerized workloads and services. It facilitates both declarative configuration and automation of applications. It has become a standard in the cloud-native world and is largely adopted for managing microservices-based architectures.
- Kubernetes Explained in 100 Seconds - Video - Fireship
- What is Kubernetes | Kubernetes explained in 15 mins - Video - TechWorld with Nana
- An Introduction to Kubernetes - Article - Google Cloud Documentation
- Kubernetes Security Cheat Sheet - Article - OWASP Cheat Sheet
- 7.AB Docker Swarm
- Docker Swarm is native clustering and orchestration for Docker. It turns a pool of Docker hosts into a single, virtual Docker host. It's easy to use and preferred by developers and system administrators who are already familiar with Docker.
- What is Docker Swarm? - Video - TechWorld with Nana
- Docker swarm beginner tutorial - Video - DevOps Directive
- Docker Swarm Introduction - Article - Docker Documentation
- 7.AC Apache Mesos
- Apache Mesos is an open-source project to manage computer clusters. It was originally developed at the University of California at Berkeley. It provides efficient resource isolation and sharing across distributed applications or frameworks.
- Getting Started with Apache Mesos (MesosCon) - Video - The Linux foundation
- Getting Started with Mesos - Documentation - Apache Mesos
- 7.AD Helm
- Helm is a package manager for Kubernetes that allows developers and operators to more easily package, configure, and deploy applications and services onto Kubernetes clusters.
- Quickstart Guide - Documentation - Helm
- 7.B LXD
- LXD is a next generation system container manager. It offers a user experience similar to virtual machines but using Linux containers instead. It's image based with pre-made images available for a wide number of Linux distributions and is built around a very powerful, yet pretty simple, REST API.
- LXD - Documentation - Ubuntu (Canonical parent company of both projects)
- 7.C Podman
- Podman is a daemon-less container engine for developing, managing, and
running Containers on Linux. The design of Podman is to be a drop-in
replacement for Docker. Podman uses the same command-line interface as
Docker, however, it operates without a daemon, and it employs
container runtimes like
runc
for running containers. - Get Started with Podman - Documentation - Podman
- Podman is a daemon-less container engine for developing, managing, and
running Containers on Linux. The design of Podman is to be a drop-in
replacement for Docker. Podman uses the same command-line interface as
Docker, however, it operates without a daemon, and it employs
container runtimes like
- 7.D Containerd
- Containerd is an industry-standard core container runtime. It is available as a daemon for Linux and Windows, and it manages the complete container lifecycle of its host system, which includes image transfer and storage, container execution and supervision, and low-level storage handling. Containerd is designed to be embedded into a larger system, rather than being used directly by developers or end-users.
- Getting started with containerd - Documentation - Containerd
-
Cloud Providers - Cloud providers are platforms offering a range of computing services over the internet. These services typically include servers, storage, databases, networking, software, analytics, and even artificial intelligence. Major cloud providers include Amazon Web Services (AWS), Google Cloud Platform (GCP), and Microsoft Azure. They enable businesses to run their applications without needing to maintain the underlying infrastructure, offering scalability and flexibility.
-
Backend Architectures
- There are several different types of backend architectures. Each has its own advantages and disadvantages. It's important to understand the differences between them so that you can choose the right one for your needs.
- Monolith vs Microservices vs Serverless - Video - Code with Ryan
- 9.A Monolithic Architecture
- This is the traditional way of building applications. It's where you have a single application that handles everything from the frontend to the backend. It's easy to get started with, but it's not the most scalable or flexible. There aren't any resources on this because it does not require any special knowledge.
- 9.B Microservices Architecture
- Microservices architecture is a method of developing software applications as a suite of independently deployable, small, modular services in which each service runs a unique process and communicates through a well-defined, lightweight mechanism to serve a business goal.
- Open Answers: What are microservices? - Video - RedHat
- Microservices explained — the What, Why and How? - Video - TechWorld with Nana
- Microservices - Article - Microservices.io
- 9.C Serverless Architecture
- Serverless architecture is a method of developing software applications as a suite of independently deployable, small, modular services in which each service runs a unique process and communicates through a well-defined, lightweight mechanism to serve a business goal. This can be really expensive compared to other architectures.
- Serverless Computing in 100 Seconds - Video - Fireship
- Serverless Architecture Explained - Video - TechWorld with Nana
- Serverless Architecture - Article - Martin Fowler
- The Amazon Prime Video Monolith Shift: Dissecting Microservices, Serverless, and the Real-World Cost - Article - Abhishek Ranjan on Medium
- 9.D Service-Oriented Architecture (SOA)
- Service-Oriented Architecture is a style of software design where services are provided to the other components by application components, through a communication protocol over a network. The basic principles of service-oriented architecture are independent of vendors, products and technologies.
- Service-Oriented Architecture - Video - Systems Innovation
- What is service-oriented architecture (SOA)? - Article - Red Hat
- What Is SOA (Service-Oriented Architecture)? - Article - Amazon Web Services
-
Testing
- Testing is a critical part of software development that involves evaluating the functionality of a software application to find any software bugs. It checks whether the developed software met the specified requirements and identifies any defects to improve the quality of the product.
- Different types of testing include unit testing, integration testing, functional testing, system testing, manual testing, and automated testing. Understanding these concepts is essential for the development of reliable and high-performing software applications.
- Software Testing Explained in 100 Seconds - Video - Fireship
- 10.A Types of Testing
- There are several different types of testing including unit testing, integration testing, end-to-end testing, etc. Each has its own advantages and disadvantages. It's important to understand the differences between them so that you can choose the right one for your needs.
- 5 Types of Testing Software Every Developer Needs to Know! - Video - Alex Hyett
- Software Testing Training – Manual Testing Basics for Beginners - Playlist - Guru99
- 10.B Testing Frameworks
- This is a broad topic, and there are many different types of testing frameworks. Here I'll outline some of the most popular ones for the languages recommended earlier in the roadmap.
- 10.BA Node.js
- 10.BB Python
- 10.BC Go
- 10.BD PHP
- 10.BE Kotlin
- 10.C Testing Methodologies
- 10.CA Test Driven Development (TDD)
- Test-driven development is a software development process relying on software requirements being converted to test cases before software is fully developed, and tracking all software development by repeatedly testing the software against all test cases.
- Test-Driven Development // Fun TDD Introduction with JavaScript - Video - Fireship
- Do People HATE Test Driven Development (TDD)? - video - Continuous Delivery
- TDD - Article - Agile Alliance
- What is Test Driven Development (TDD)? - Article - Guru99
- 10.CB Behavior Driven Development (BDD)
- Behavior-driven development is an Agile software development process that encourages collaboration among developers, QA and non-technical or business participants in a software project.
- An Ultimate Guide To BDD - Article - Continuous Delivery
- Test Driven Development vs Behavior Driven Development - Article - Continuous Delivery
- 10.CC Exploratory Testing
- Exploratory testing is a software testing approach that allows testers to apply their knowledge and expertise to design and execute tests. It's a great way to find bugs that might not be found by other testing methods.
- Exploratory Testing - Article - Guru99
- Exploratory Testing Vs Scripted Testing: Who Wins? - Article - Software Testing Help
- 10.CD Stress Testing
- Stress testing is a type of performance testing that validates the stability and reliability of a system or application under extreme conditions. It's used to find bugs that might not be found by other testing methods.
- What is Stress Testing? - Video - QAFox
- Stress Testing - Article - Guru99
- 10.CE Security Testing
- Security testing is a type of testing that validates the security of a system or application. It's used to find vulnerabilities that might not be found by other testing methods.
- Security Testing - Article - Guru99
- Security Cheat Sheet - Article - OWASP Cheat Sheet
- 10.CA Test Driven Development (TDD)
Checkpoint: You should now have a general understanding of backend development.
You should be able to build more advanced WebApps and APIs with this knowledge.Project ideas: Sorry I got none... you can suggest some in the issues section on GitHub. (https://github.com/NavigoLearn/RoadmapsMarkdown)
-
Logging and Monitoring
- Logging and monitoring are essential for any application. They allow you to see what's happening in your application and how it's performing. They also allow you to see if there are any errors or issues that need to be fixed. You should learn your language's logging and monitoring tools.
- JavaScript — Beyond Console Log in 100 Seconds - Video - Fireship
- Python — Python Logging: How to Write Logs Like a Pro! - Video - ArjanCodes
- Go — How to Properly Log Things in Go (Native) - STOP using fmt.Println() - Video - GoLang Dojo
- PHP - How to Log Errors in PHP | PHP Error Reporting and Debugging for Beginners | Log Website Errors - Video - Dani Krossing
- 11.A Application Monitoring
- Application monitoring is a process that ensures that a software application processes and performs tasks as expected. The purpose of monitoring is to detect and resolve any issues or abnormalities that could affect expected and efficient operation.
- 11.AA Log Management
- Log management includes all the stages from the creation of log events to their ultimate disposal. Proper log management practices can give valuable insights into system performance, security, user behaviors, system functionality, and troubleshooting issues.
- What is Log Management? - Article - SolarWinds
- 11.AB Infrastructure Monitoring
- Infrastructure monitoring is the task of ensuring that all the hardware, software, networks, and processes in your IT infrastructure are running smoothly and optimally.
- Infrastructure Monitoring Overview - Article - DataDog
- 11.AC Network Monitoring
- Network monitoring is the use of a system that constantly monitors a computer network for slow or failing components, and that notifies the network administrator (via email, SMS or other alarms) in case of outages or other trouble.
- What is Network Monitoring? - Article - IBM
- 11.AD Security Monitoring
- Security monitoring is the collection, analysis, and escalation of indications and warnings to detect and respond to intrusions. This is crucial to ensure the safety of your applications and infrastructure.
- What is Security Monitoring? - Article - Hewlett Packard Enterprise
- 11.AE Performance Monitoring
- Performance monitoring is the process of detecting and diagnosing system performance problems. It helps you maintain system efficiency, meet service-level agreements (SLAs), and identify areas of improvement.
- Performance Monitoring - an overview - Article - Science Direct
- 11.B Tools for Logging and Monitoring
- There are many tools available for logging and monitoring your systems. Here are a few of the most popular:
- Loggly - Product - Cloud-based log management and analytics service that leverages machine-generated big data to deliver real-time IT insights.
- Splunk - Product - Software for searching, monitoring, and analyzing machine-generated big data, via a web-style interface.
- Elasticsearch - Product - A search and analytics engine based on the Lucene library.
- Logstash - Product - An open-source data collection engine with real-time pipelining capabilities.
- Kibana - Product - An open-source data visualization plugin for Elasticsearch.
- Prometheus - Product - An open-source systems monitoring and alerting toolkit.
- Grafana - Product - An open platform for beautiful analytics and monitoring.
- New Relic - Product - A cloud-based platform that gives devs, ops, and tech teams the tools to monitor and optimize their operations
- DataDog - Product - Monitoring service for cloud-scale applications, providing monitoring of servers, databases, tools, and services, through a SaaS-based data analytics platform.
- Sentry - Product - Open-source error tracking that helps developers monitor and fix crashes in real time.
-
CI/CD (Continuous Integration / Continuous Deployment)
- Continuous Integration (CI) and Continuous Deployment (CD) are pivotal practices in modern software development allowing for code changes to be automatically built, tested, and deployed. They foster a culture of fast feedback, lower the risk associated with release and increase software quality.
- DevOps CI/CD Explained in 100 Seconds - Video - Fireship
- Continuous integration vs. delivery vs. deployment - Article - Atlassian
- What is CI/CD? Continuous integration and continuous delivery explained - Article - InfoWorld
- 12.A Basics of Continuous Integration
- Continuous Integration is a development practice where developers integrate code into a shared repository frequently, preferably several times a day. Each integration can then be verified by an automated build and automated tests.
- What is Continuous Integration? - Video - IBM Technology
- Continuous Integration - Article - Martin Fowler
- 12.B Tools for Continuous Integration
- 12.BA Jenkins
- Jenkins is an open-source automation server that enables developers to build, test, and deploy their software.
- Jenkins User Documentation - Documentation
- 12.BB Travis CI
- Travis CI is a hosted continuous integration service used to build and test software projects hosted at GitHub.
- Travis CI Tutorial - Documentation
- 12.BC CircleCI
- CircleCI is a CI/CD tool that supports rapid software development and publishing.
- Welcome to CircleCI - Documentation
- 12.BD GitHub Actions
- GitHub Actions make it easy to automate all your software workflows with world-class CI/CD.
- 5 Ways to DevOps-ify your App - GitHub Actions Tutorial — Video - Fireship
- GitHub Actions — Documentation
- 12.BA Jenkins
- 12.C Basics of Continuous Deployment
- Continuous Deployment is a strategy for software releases wherein any code commit that passes the automated testing phase is automatically released into the production environment.
- What is Continuous Deployment? - Video - IBM Technology
- What is Continuous Delivery - Article - Continuous Delivery
- 12.D Tools for Continuous Deployment
- 12.DA Jenkins
- Pipeline as Code with Jenkins - Article - Jenkins
- 12.DB AWS CodeDeploy
- AWS CodeDeploy is a fully managed deployment service that automates software deployments to a variety of compute services such as Amazon EC2, AWS Fargate, AWS Lambda, and your on-premises servers.
- What is CodeDeploy? - Documentation - Amazon Web Services
- 12.DC Google Cloud Deployment Manager
- Deployment Manager is an infrastructure deployment service that automates the creation and management of Google Cloud resources.
- Google Cloud Deployment Manager - Documentation - Google Cloud
- 12.DD Heroku
- Heroku is a platform as a service (PaaS) that enables developers to build, run, and operate applications entirely in the cloud.
- Heroku - Documentation - Heroku
- 12.DA Jenkins
- 12.E CI/CD Best Practices
- Best practices for CI/CD include maintaining a code repository, automating the build, keeping the build fast, testing in a clone of the production environment, make it easy to get the latest deliverables; everyone can see what's happening and automate deployment.
- Top 8 CI/CD best practices for your DevOps team’s success - Article - Middleware
-
Rate Limiting and Throttling
- They are essential strategies to prevent resource overuse, defend APIs, ensure service quality, and stop abuse.
- Rate Limiting, API Keys, and OAuth - Article - Stripe Engineering Blog
- API Rate Limiting and Throttling Explained - Article - Nordic APIs
- 13.B Rate Limiting Techniques
- 13.BA Fixed Window Counter
- It entails counting the number of requests made inside a fixed time window. Requests beyond the set limit within the window are blocked until the window resets.
- Understanding the Rate-Limiting Algorithms - Article - Quinbay
- 13.BB Sliding Window Log
- The Sliding Log method keeps a timestamp log for each request. The number of requests within the current window is checked before deciding to allow or reject the request.
- An alternative approach to rate limiting - Article - Figma
- 13.BC Token Bucket
- The Token Bucket method involves adding a token to the 'bucket' at predefined timings. A request is allowed only if a token could be removed from the bucket.
- What is Token Bucket algorithm in computer networks? - Article - Tutorials Point
- 13.BD Leaky Bucket
- The Leaky Bucket algorithm functions like a 'bucket' with a small leak at the bottom. When the request rate surpasses the drain rate, the bucket 'leaks' and excess requests are discarded.
- Computer Network | Leaky bucket algorithm - Article - GeeksForGeeks
- 13.BA Fixed Window Counter
- 13.C Libraries for Rate Limiting
- 13.CA Node.js:
- Express Rate Limit - NPM - IP rate-limiting middleware for Express.
- Slow Down - NPM - Slows down responses rather than blocking them.
- 13.CB Python:
- RateLimiting - Documentation - Provides rate-limiting features for Flask routes.
- 13.CC Go:
- Tollbooth - Documentation - A rate limiter for HTTP requests.
- 13.CD Kotlin:
- Ktor limits - Documentation - Rate limiting for Ktor.
- 13.CA Node.js:
Checkpoint: You should now have a broad understanding of everything going into backend development.
You should be able to build about anything you want with this knowledge.Project ideas:
- Build a script scheduler
- Develop a functionality that permits users to create scripts running on a schedule that they specify.
- Implement a feature to allow users to select the script interpreter (like Node.js, Python, Bash, Zsh, Lua, etc.) to use based on their script's requirements.
- Allow users to set webhooks that become active when the script finishes its run.
- Provide the ability for users to establish environment variables specific to the script.
- Build a permissions system and restrict certain commands, making them accessible only with additional permissions.
- Engineer a simple frontend application to manage the scripts.
- Incorporate an interface to view the console output of the executed scripts.
- Log the output of the scripts either in a database or a log file for debugging purposes.
- Include a feature to view the logs of the scripts in the web user interface, provided the user has necessary permissions.
- Introduce an option for users to pause, stop, or resume scripts.
- Add user authentication and authorization to ensure safe access to the scheduler.
- Build a web crawler
- Establish your target website(s) for crawling.
- Build a parser to extract information.
- Store this extracted information in a structured format (like JSON, XML or in a Database).
- Implement an approach to navigate through different web pages and links.
- Reliably handle runtime exceptions and errors.
- Design a system to respect robots.txt rules.
- Add user-agent strings and manage request headers.
- Introduce multi-threading or asynchronous processing to speed up crawling.
- Create a result viewer or output handler to inspect, validate and use your crawling data.