❗The content presented here is sourced directly from Udemy platform. For comprehensive course details, including enrollment information, simply click on the 'Go to class' link on our website.
Updated in [October 07th, 2023]
What does this course tell?
(Please note that the following overview content is from the original platform)
Backend engineering is an art During my 18 years career working with and building backend applications I discovered that certain communication design patterns keep emerging There are only handful of ways clients communicate with backend applications although they might be more I believe the patterns I discuss in this course are the most common Examples of these patterns are request-response publish-subscribe short and long and pushBased on these communication design patterns engineers may use a number of protocols for concrete communication While core transport vehicles are limited to either TCP or UDP tons of industry specific protocols are built on top of these two to address certain problems and use cases Examples of these high level protocols are HTTP&11 HTTP&2 HTTP&3 gRPC WebRTC and many more Other transport protocols like QUIC was built on top of UDP to bring HTTP&2 streaming down at the transport level Each protocol has its pros and cons and fits certain use cases In the course I discuss the top common protocols and provide examples and demos where applicableBefore the client can send a request it has to establish a connection to the backend Understanding how the connection is established and what parts of connection establishment is done at kernel and what parts are done at the backend application process is critical How the connection is then accepted by the backend application and how it can accept connections as fast as possible so the kernel queue doesn't get full otherwise clients can no longer connectAfter the connection is established the client sends the request but what happens exactly in the backend application to read the request? What exactly is a request? Understanding the cost of parsing a request based on the protocol makes the engineer appreciate the work done and equip her with better tools to troubleshoot performance problems or bugsOnce the request reaches the backend the application has to execute the request The backend has a buffet of design choices when it comes to the style of execution it can choose Understanding the difference between a process and a thread multi-process multi-threaded and the correlation to the number of CPU cores or hardware threads is crucial to pick the right execution pattern One does not have to stick with these patterns but can invent new ones that suits their needsThis course is designed for engineers who have built backend applications it is an intermediate advance level course certain programming and networking knowledge is required so I recommend taking my fundamentals of network engineering course before taking this course if you don't have the networking skills I hope you enjoy this course and thank you so much for considering it
We considered the value of this course from many aspects, and finally summarized it for you from two aspects: skills and knowledge, and the people who benefit from it:
(Please note that our content is optimized through artificial intelligence tools and carefully reviewed by our editorial staff.)
What skills and knowledge will you acquire during this course?
During the course "Fundamentals of Backend Engineering," learners will acquire the following skills and knowledge:
1. Communication Design Patterns: Understand the common communication design patterns between clients and backend applications, such as request-response, publish-subscribe, short and long, and push.
2. Protocols: Gain knowledge about various protocols used for communication, including HTTP/1.1, HTTP/2, HTTP/3, gRPC, WebRTC, and more. Explore their pros, cons, and use cases.
3. Connection Establishment: Learn how connections are established between clients and backend applications. Understand the roles of the kernel and backend application in connection establishment and how to optimize connection acceptance to prevent kernel queue overflow.
4. Request Parsing: Understand the process of reading and parsing requests in the backend application. Gain insights into the cost of parsing requests based on the protocol used, enabling better troubleshooting of performance issues and bugs.
5. Request Execution: Explore different execution styles in the backend application, such as process-based, thread-based, multi-process, and multi-threaded. Understand the correlation between execution patterns and CPU cores or hardware threads.
6. Intermediate to Advanced Level: This course is designed for engineers with prior experience in building backend applications. It is recommended to have certain programming and networking knowledge. If lacking networking skills, it is suggested to take the "Fundamentals of Network Engineering" course before enrolling in this course.
Note: The course aims to provide specific and detailed knowledge in a concise manner, without unnecessary information.
Who will benefit from this course?
This course on Fundamentals of Backend Engineering will benefit engineers who have already built backend applications and are looking to enhance their skills and knowledge in this field. It is an intermediate to advanced level course, so it is suitable for individuals with certain programming and networking knowledge.
Specific professions that will benefit from this course include:
1. Backend Engineers: This course will provide backend engineers with a deeper understanding of communication design patterns and protocols used in backend applications. It will equip them with the knowledge to choose the right protocols for specific use cases and troubleshoot performance issues.
2. Software Developers: Developers who work on the backend of applications will benefit from this course as it covers various execution patterns and design choices. It will help them make informed decisions regarding process/thread management and optimize the execution of requests.
3. Network Engineers: While this course assumes a certain level of networking knowledge, it can also benefit network engineers who want to gain a better understanding of backend communication and how it relates to network protocols like TCP, UDP, HTTP, gRPC, etc.
4. System Architects: Professionals involved in designing and architecting backend systems will find value in this course. It covers important aspects such as connection establishment, request parsing, and execution patterns, which are crucial for designing scalable and efficient backend architectures.
Course Syllabus
Introduction
Backend Communication Design Patterns
Protocols
Many ways to HTTPS
Backend Execution Patterns
Proxying and Load Balancing
Extras