مهندسی بکاندهای کارآمد و مقیاسپذیر، یکی از لذتبخشترین فعالیتهای طراحی است. درک جریانهای کاری فرانتاند، طراحی APIها، انتخاب پروتکلها و دیتابیسهای مناسب و تعیین الگوهای ارتباطی — چه حجم کاری متمرکز بر CPU باشد و چه I/O — همگی بخشی از این جذابیت هستند.
با این حال، چالش واقعی در طراحی اپلیکیشنهای بکاند Real-time است که ارتباطات دوطرفه آزاد و لحظهای را پشتیبانی کنند. بارهای کاری در بازیها، چتها و حتی اپلیکیشنهای حیاتی Real-time منحصربهفرد هستند، زیرا برای عملکرد موثر به ماهیت "Push" نیاز دارند.
من چندین ماه روی طراحی این دوره وقت گذاشتم و پروتکل WebSockets را به عنوان پایه این کار انتخاب کردم. WebSockets تا به امروز گستردهترین پروتکل دوطرفه است که توسط تمام کلاینتها — از مرورگرها و برنامههای خط فرمان گرفته تا محیطهای Node و Bun و حتی زبانهایی مانند C و Go — پشتیبانی میشود.
اگرچه پروتکل جدیدتری به نام WebTransport وجود دارد، اما هنوز به اندازه WebSockets پشتیبانی گسترده نشده و در محیطهای واقعی تست نشده است. شاید چند سال دیگر، زمانی که WebTransport به بلوغ رسید، این دوره را بهروزرسانی کنم.
این دوره به سه بخش اصلی تقسیم شده است:
۱. ساختار داخلی WebSockets – بررسی عمیق نحوه عملکرد پروتکل: دستدادن (Handshake)، مکانیزمهای Keepalive، هدرهای فریم و نحوه رفتار آن روی TLS. همچنین درباره محدودیتها بحث خواهیم کرد، زیرا معتقدم درک محدودیتها به ما در ساخت اپلیکیشنهای بهتر کمک میکند. هر درس شامل یک جلسه کدنویسی و یک کوییز در پایان بخش است.
۲. مقیاسپذیری WebSockets – رساندن دانش WebSockets به حداکثر: نحوه مقیاسپذیری این پروتکل روی HTTP/1.1، HTTP/2 و HTTP/3. ما پیادهسازی با پروکسیها را در هر دو حالت Stream (لایه ۴) و Application (لایه ۷) به همراه مزایا و معایب آنها بررسی میکنیم. هر درس شامل یک جلسه کدنویسی و یک کوییز در پایان بخش است.
۳. طراحی سیستمهای Real-Time – پیادهسازی عملی تمام آموختهها با طراحی دو سیستم: یک سیستم چت I/O-intensive و یک بازی CPU-intensive. من چندین طرح برای هر کدام پیشنهاد میدهم و یکی را برای پیادهسازی انتخاب میکنم.
پیش نیاز: مبانی مهندسی بکاند.
امیدوارم از این دوره لذت ببرید.
Hussein Nasser
نویسنده، مهندس نرم افزار
اسم من حسین است و مهندس نرم افزار هستم. از زمانی که عمویم اولین کتاب برنامه نویسی ام را در سال 1998 به من داد () متوجه شدم که نرم افزار علاقه من است. من وبلاگم را راه اندازی کردم و کانال یوتیوب را به عنوان یک خروجی برای صحبت در مورد نرم افزار راه اندازی کردم.
استفاده از نرم افزار برای حل مشکلات جالب یکی از چیزهای جذابی است که من واقعا از آن لذت می برم. در کانال های رسانه های اجتماعی من با من تماس بگیرید تا داستان نرم افزار خود را بگویید، سؤال بپرسید یا مشکلات جالب را به اشتراک بگذارید. من دوست دارم آن را بشنوم!
من همچنین در زمینه سیستم های اطلاعات جغرافیایی (یا GIS) تخصص دارم. من از سال 2005 به بسیاری از سازمانها در کشورهای مختلف کمک کردم تا فناوری GIS را پیادهسازی کنند و برنامههای سفارشی را متناسب با موارد استفاده و سادهسازی گردشهای کاریشان از سال 2005 نوشتم. دویست ویدیوی یوتیوب و آموزش نرم افزار تا به امروز در حال تماشا هستند و شروع به کردند. من از سال 2015 در Esri مهندس ساختمان فن آوری های GIS جالب هستم.
نمایش نظرات