Companies Home Search Profile

Fundamentals of Backend Communications and Protocols

Focused View

Hussein Nasser

14:50:37

217 View
  • 1 - Welcome.mp4
    05:47
  • 2 - Who is this course for.mp4
    03:01
  • 3 - Course Outline.mp4
    10:47
  • 4 - Apache-kafka-long-polling.pdf
  • 4 - Chrome-6-Connections-Limit.pdf
  • 4 - Download all slides source code and references.html
  • 4 - Fundamentals-of-Backend-Communications-and-Protocols.pdf
  • 4 - Fundamentals-of-Backend-Communications-and-Protocols-2.pptx
  • 4 - Postgres-Pipelining.pdf
  • 4 - asynchronous-commits-postgres.pdf
  • 4 - asynchronous-io-linux-thread.pdf
  • 4 - asynchronous-replication-postgres.pdf
  • 4 - backendcourse-sourcecode.zip
  • 4 - fundamentals-of-backend-communications-and-protocols.zip
  • 4 - rabbitMQ-pushAPI.pdf
  • 4 - resources.zip
  • 5 - Backend Communication Design Patterns Intro.mp4
    02:02
  • 6 - Request Response.mp4
    27:37
  • 7 - Synchronous vs Asynchronous workloads.mp4
    42:30
  • 8 - Push.mp4
    19:59
  • 9 - Polling.mp4
    14:13
  • 10 - Long Polling.mp4
    10:11
  • 11 - Server Sent Events.mp4
    13:18
  • 12 - Publish Subscribe PubSub.mp4
    16:37
  • 13 - Multiplexing vs Demultiplexing h2 proxying vs Connection Pooling.mp4
    14:52
  • 14 - Stateful vs Stateless.mp4
    22:42
  • 15 - Sidecar Pattern.mp4
    21:33
  • 16 - Protocols Intro.mp4
    01:08
  • 17 - Protocol Properties.mp4
    10:47
  • 18 - OSI Model.mp4
    47:29
  • 19 - Internet Protocol.mp4
    01:07:12
  • 20 - UDP.mp4
    48:22
  • 21 - TCP.mp4
    55:11
  • 22 - TLS.mp4
    26:59
  • 23 - HTTP11.mp4
    31:11
  • 24 - WebSockets.mp4
    21:21
  • 25 - HTTP2.mp4
    17:03
  • 26 - HTTP3.mp4
    27:58
  • 27 - gRPC.mp4
    49:10
  • 28 - WebRTC.mp4
    01:07:44
  • 29 - HTTPS Communication Basics Intro.mp4
    03:14
  • 30 - HTTPS over TCP with TLS 12.mp4
    05:47
  • 31 - HTTPS over TCP with TLS 13.mp4
    03:54
  • 32 - HTTPS over QUIC HTTP3.mp4
    02:23
  • 33 - HTTPS over TFO with TLS 13.mp4
    01:55
  • 34 - HTTPS over TCP with TLS 13 and 0RTT.mp4
    02:06
  • 35 - HTTPS over QUIC with 0RTT.mp4
    01:46
  • 36 - Backend Execution Patterns Intro.mp4
    04:48
  • 37 - The Process and The Thread and how they compete for CPU time.mp4
    27:46
  • 38 - How The Backend Accepts Connections.mp4
    29:29
  • 39 - Reading and Sending Socket Data.mp4
    21:22
  • 40 - The Listener The Acceptor and the Reader.mp4
    02:06
  • 41 - Single Listener Acceptor and Reader Thread Execution Pattern.mp4
    03:07
  • 42 - Single Listener Acceptor and Multiple Readers Thread Execution Pattern.mp4
    05:31
  • 43 - Single Listener Acceptor Reader with Message Load Balancing Execution Pattern.mp4
    03:27
  • 44 - Multiple Accepter Threads on a Single Socket Execution Pattern.mp4
    01:57
  • 45 - Multiple Listeners Acceptors and Readers with Socket Sharding Execution Pattern.mp4
    06:48
  • 46 - Backend Idempotency.mp4
    06:24
  • 47 - Nagles Algorithm.mp4
    12:07
  • 48 - Proxy vs Reverse Proxy.mp4
    20:05
  • 49 - Layer 4 vs Layer 7 Load Balancers.mp4
    27:51
  • Description


    Understand backend communication design patterns, protocols, execution and proxying

    What You'll Learn?


    • Learn the fundamentals of backend engineering
    • Backend communication design patterns
    • Understand how backend communication protocols work
    • Comprehend how OS Kernel communicate with Backend Applications
    • Operating System fundamentals (Thread, Process, async IO in linux)
    • Learn HTTP/1.1, HTTP/2, HTTP/3
    • Learn gRPC, WebRTC, WebSockets
    • Learn TLS 1.2, TLS 1.3, QUIC 0RTT

    Who is this for?


  • Backend Engineers
  • FullStack Engineers
  • Frontend Engineers interested in the Backend (must have built a backend app)
  • Network engineers who want to get better at backend design
  • Site reliability engineers
  • More details


    Description

    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.

    Who this course is for:

    • Backend Engineers
    • FullStack Engineers
    • Frontend Engineers interested in the Backend (must have built a backend app)
    • Network engineers who want to get better at backend design
    • Site reliability engineers

    User Reviews
    Rating
    0
    0
    0
    0
    0
    average 0
    Total votes0
    Focused display
    Hussein Nasser
    Hussein Nasser
    Instructor's Courses
    My name is Hussein and I’m a software engineer. My software journey started around 1998 when my uncle gave me a book titled `Learn Programming and Visual Basic 2.0`. That book made me realized that I enjoy the craft of building software. Using every medium available I would talk about software in a form of bulletin boards, blogs, books, courses, podcasts, and videos.These days I run a YouTube channel where I cover software engineering topics with a focus on backend tech. I discuss databases, proxies, security, networking, protocols, and programming. I also cover recent news and current events in the field of software.I specialize in the field of geographic information systems (or GIS for short). Since 2005, I helped many organizations in the Middle East implement Esri GIS by designing and building mapping apps to streamline their workflows. I wrote five books on Esri’s technologies and I've been a principal engineer there since 2015.Using software to solve interesting problems is one of the fascinating things I really enjoy. Feel free to contact me on my social media channels to ask questions or share interesting problems. I would love to hear it!
    Students take courses primarily to improve job-related skills.Some courses generate credit toward technical certification. Udemy has made a special effort to attract corporate trainers seeking to create coursework for employees of their company.
    • language english
    • Training sessions 48
    • duration 14:50:37
    • Release Date 2023/01/23