آموزش مبانی مهندسی Backend

Fundamentals of Backend Engineering

نکته: آخرین آپدیت رو دریافت میکنید حتی اگر این محتوا بروز نباشد.
نمونه ویدیوها:
توضیحات دوره: درک الگوهای طراحی ارتباط باطن، پروتکل ها، اجرا و پروکسی آموزش اصول مهندسی باطن الگوهای طراحی ارتباط باطن درک نحوه کار پروتکل های ارتباطی Backend درک نحوه ارتباط هسته سیستم عامل با برنامه های کاربردی Backend اصول سیستم عامل (Thread, Process, async IO در لینوکس) آموزش HTTP/1.1, HTTP/2, HTTP/3 Learn gRPC, WebRTC, WebSockets Learn TLS 1.2, TLS 1.3, QUIC 0RTT پیش نیازها:مهارت های برنامه نویسی متوسط ​​(1-2 سال) داشتن یک برنامه کاربردی Backend اصول اولیه شبکه

مهندسی پس زمینه یک هنر است. در طول 18 سال کار حرفه‌ای‌ام که با برنامه‌های کاربردی پشتیبان کار می‌کردم و ساختم آن، متوجه شدم که الگوهای طراحی ارتباطی خاصی در حال ظهور هستند. روش‌های انگشت شماری وجود دارد که کلاینت‌ها با برنامه‌های کاربردی باطن ارتباط برقرار می‌کنند، اگرچه ممکن است بیشتر باشند، من معتقدم الگوهایی که در این دوره مورد بحث قرار می‌دهم رایج‌ترین آنها هستند. نمونه هایی از این الگوها عبارتند از درخواست-پاسخ، انتشار-اشتراک، کوتاه و بلند و فشار.

بر اساس این الگوهای طراحی ارتباطات، مهندسان ممکن است از تعدادی پروتکل برای ارتباطات بتن استفاده کنند. در حالی که وسایل نقلیه اصلی حمل و نقل به TCP یا UDP محدود می شوند، هزاران پروتکل خاص صنعت بر روی این دو ساخته شده است تا مشکلات خاص و موارد استفاده را برطرف کند. نمونه هایی از این پروتکل های سطح بالا عبارتند از: HTTP/1.1، HTTP/2، HTTP/3، gRPC، WebRTC و بسیاری دیگر. سایر پروتکل‌های انتقال مانند QUIC در بالای UDP ساخته شده‌اند تا جریان HTTP/2 را در سطح انتقال پایین بیاورند. هر پروتکل مزایا و معایب خود را دارد و متناسب با موارد استفاده خاص است. در این دوره، من در مورد پروتکل‌های رایج رایج بحث می‌کنم و نمونه‌ها و دموهایی را در صورت لزوم ارائه می‌دهم.

قبل از اینکه مشتری بتواند درخواستی ارسال کند، باید یک اتصال به باطن ایجاد کند. درک اینکه چگونه اتصال برقرار می شود و چه بخش هایی از ایجاد اتصال در هسته انجام می شود و چه بخش هایی در فرآیند برنامه کاربردی Backend انجام می شود بسیار مهم است. چگونه اتصال پس از آن توسط برنامه Backend پذیرفته می شود و چگونه می تواند اتصالات را با بیشترین سرعت ممکن بپذیرد تا صف هسته کامل نشود در غیر این صورت کلاینت ها دیگر نمی توانند متصل شوند.

بعد از برقراری ارتباط، کلاینت درخواست را ارسال می کند، اما دقیقاً در برنامه Backend برای خواندن درخواست چه اتفاقی می افتد؟ درخواست دقیقا چیست؟ درک هزینه تجزیه یک درخواست بر اساس پروتکل باعث می شود مهندس از کار انجام شده قدردانی کند و او را به ابزارهای بهتری برای عیب یابی مشکلات عملکرد یا اشکالات مجهز کند.

هنگامی که درخواست به پشتیبان رسید، برنامه باید درخواست را اجرا کند. وقتی نوبت به سبک اجرای آن می رسد، بک اند مجموعه ای از انتخاب های طراحی دارد. درک تفاوت بین یک فرآیند و یک رشته، چند فرآیندی، چند رشته ای و همبستگی با تعداد هسته های CPU یا رشته های سخت افزاری برای انتخاب الگوی اجرای مناسب بسیار مهم است. نیازی نیست که شخص به این الگوها بچسبد، اما می تواند الگوهای جدیدی را اختراع کند که مطابق با نیازهای او باشد.

این دوره برای مهندسانی طراحی شده است که برنامه های کاربردی باطن ساخته اند، یک دوره سطح متوسط ​​و پیشرفته است، دانش برنامه نویسی و شبکه خاصی مورد نیاز است، بنابراین توصیه می کنم قبل از شرکت در این دوره، اصول اولیه خود را در دوره مهندسی شبکه بگذرانید. دارای مهارت های شبکه سازی امیدوارم از این دوره لذت ببرید و از اینکه آن را در نظر گرفتید بسیار سپاسگزارم.


سرفصل ها و درس ها

معرفی Introduction

  • خوش آمدی Welcome

  • این دوره برای چه کسانی است؟ Who is this course for?

  • طرح کلی دوره Course Outline

  • همه اسلایدها، کد منبع و منابع را دانلود کنید Download all slides, source code and references

الگوهای طراحی ارتباط باطن Backend Communication Design Patterns

  • معرفی الگوهای طراحی ارتباط باطن Backend Communication Design Patterns Intro

  • درخواست پاسخ Request Response

  • بارهای کاری همزمان در مقابل ناهمزمان Synchronous vs Asynchronous workloads

  • فشار دادن Push

  • نظرسنجی Polling

  • نظرسنجی طولانی Long Polling

  • رویدادهای ارسال شده توسط سرور Server Sent Events

  • انتشار اشتراک (Pub/Sub) Publish Subscribe (Pub/Sub)

  • Multiplexing در مقابل Demultiplexing (پراکسی h2 در مقابل ادغام اتصال) Multiplexing vs Demultiplexing (h2 proxying vs Connection Pooling)

  • ایالتی در مقابل بی تابعیتی Stateful vs Stateless

  • الگوی ماشین کناری Sidecar Pattern

پروتکل ها Protocols

  • معرفی پروتکل ها Protocols Intro

  • ویژگی های پروتکل Protocol Properties

  • مدل OSI OSI Model

  • پروتکل اینترنت Internet Protocol

  • UDP UDP

  • TCP TCP

  • TLS TLS

  • HTTP/1.1 HTTP/1.1

  • وب سوکت ها WebSockets

  • HTTP/2 HTTP/2

  • HTTP/3 HTTP/3

  • gRPC gRPC

  • WebRTC WebRTC

راه های زیادی برای HTTPS Many ways to HTTPS

  • مقدمه مبانی ارتباط HTTPS HTTPS Communication Basics Intro

  • HTTPS از طریق TCP با TLS 1.2 HTTPS over TCP with TLS 1.2

  • HTTPS از طریق TCP با TLS 1.3 HTTPS over TCP with TLS 1.3

  • HTTPS از طریق QUIC (HTTP/3) HTTPS over QUIC (HTTP/3)

  • HTTPS بیش از TFO با TLS 1.3 HTTPS over TFO with TLS 1.3

  • HTTPS روی TCP با TLS 1.3 و 0RTT HTTPS over TCP with TLS 1.3 and 0RTT

  • HTTPS از طریق QUIC با 0RTT HTTPS over QUIC with 0RTT

الگوهای اجرای Backend Backend Execution Patterns

  • مقدمه الگوهای اجرای باطن Backend Execution Patterns Intro

  • Process و The Thread و نحوه رقابت آنها برای زمان CPU The Process and The Thread and how they compete for CPU time

  • چگونه Backend اتصالات را می پذیرد How The Backend Accepts Connections

  • خواندن و ارسال داده های سوکت Reading and Sending Socket Data

  • شنونده، پذیرنده و خواننده The Listener, The Acceptor and the Reader

  • الگوی اجرای رشته تک شنونده، گیرنده و خواننده Single Listener, Acceptor and Reader Thread Execution Pattern

  • الگوی اجرای رشته تک شنونده، پذیرنده و چند خوان Single Listener, Acceptor and Multiple Readers Thread Execution Pattern

  • تک شنونده، گیرنده، خواننده با الگوی اجرای متعادل کننده بار پیام Single Listener, Acceptor, Reader with Message Load Balancing Execution Pattern

  • موضوعات پذیرنده چندگانه در الگوی اجرای تک سوکت Multiple Accepter Threads on a Single Socket Execution Pattern

  • چندین شنونده، پذیرنده و خواننده با الگوی اجرای سوکت شاردینگ Multiple Listeners, Acceptors and Readers with Socket Sharding Execution Pattern

  • ناتوانی باطن Backend Idempotency

  • الگوریتم ناگل Nagle's Algorithm

پروکسی و تعادل بار Proxying and Load Balancing

  • پروکسی در مقابل پروکسی معکوس Proxy vs Reverse Proxy

  • Layer 4 v Layer 7 Load Balancers Layer 4 vs Layer 7 Load Balancers

موارد اضافی Extras

  • نحوه استفاده ChatGPT از رویدادهای ارسال شده توسط سرور How ChatGPT uses Server Sent Events

  • چگونه نرم افزار طراحی کنم How I design software

نمایش نظرات

آموزش مبانی مهندسی Backend
جزییات دوره
15.5 hours
51
Udemy (یودمی) Udemy (یودمی)
(آخرین آپدیت)
9,190
4.7 از 5
دارد
دارد
دارد
جهت دریافت آخرین اخبار و آپدیت ها در کانال تلگرام عضو شوید.

Google Chrome Browser

Internet Download Manager

Pot Player

Winrar

Hussein Nasser Hussein Nasser

نویسنده، مهندس نرم افزار

اسم من حسین است و مهندس نرم افزار هستم. از زمانی که عمویم اولین کتاب برنامه نویسی ام را در سال 1998 به من داد () متوجه شدم که نرم افزار علاقه من است. من وبلاگم را راه اندازی کردم و کانال یوتیوب را به عنوان یک خروجی برای صحبت در مورد نرم افزار راه اندازی کردم.

استفاده از نرم افزار برای حل مشکلات جالب یکی از چیزهای جذابی است که من واقعا از آن لذت می برم. در کانال های رسانه های اجتماعی من با من تماس بگیرید تا داستان نرم افزار خود را بگویید، سؤال بپرسید یا مشکلات جالب را به اشتراک بگذارید. من دوست دارم آن را بشنوم!

من همچنین در زمینه سیستم های اطلاعات جغرافیایی (یا GIS) تخصص دارم. من از سال 2005 به بسیاری از سازمان‌ها در کشورهای مختلف کمک کردم تا فناوری GIS را پیاده‌سازی کنند و برنامه‌های سفارشی را متناسب با موارد استفاده و ساده‌سازی گردش‌های کاری‌شان از سال 2005 نوشتم. دویست ویدیوی یوتیوب و آموزش نرم افزار تا به امروز در حال تماشا هستند و شروع به کردند. من از سال 2015 در Esri مهندس ساختمان فن آوری های GIS جالب هستم.