Fundamentals of Backend Engineering

所在平台: Udemy

课程主页: https://www.udemy.com/course/fundamentals-of-backend-communications-and-protocols/

课程评论:没有评论

第一个写评论        关注课程

课程简介

This Coursera course, "Fundamentals of Backend Engineering," delves into the core aspects of backend development, building upon an 18-year career of practical experience. The instructor highlights that backend engineering is an art, emphasizing the recurring communication design patterns that underpin client-backend interactions. These common patterns include request-response, publish-subscribe, and push mechanisms. The course further explores various communication protocols built on TCP or UDP, such as HTTP/1.1, HTTP/2, HTTP/3, gRPC, and WebRTC, discussing their respective advantages, disadvantages, and suitability for different use cases. It also touches upon transport protocols like QUIC built on UDP. A significant portion of the course is dedicated to understanding connection establishment, detailing the roles of the kernel and the backend application process. It addresses how backend applications efficiently accept connections to prevent queue overflow and maintain accessibility. The curriculum also covers the intricacies of request processing within backend applications, explaining what constitutes a request and the performance implications of parsing requests based on different protocols. Finally, the course examines the execution styles available to backend applications, including the concepts of processes and threads, multi-process and multi-threaded architectures, and their relationship with CPU cores. It encourages engineers to explore and even invent new execution patterns tailored to their specific needs. This intermediate to advanced-level course is designed for engineers with prior backend application experience and assumes a foundational knowledge of programming and networking. It is recommended that learners complete a "Fundamentals of Network Engineering" course beforehand if their networking skills are not yet solid.

课程评论(0条)

课程详情

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 push.Based 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/1.1, 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 applicable.Before 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 connect.After 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 bugs.Once 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 needs.This 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.

课程标签

0人关注该课程

主题相关的课程