❇️ سری آموزش #Microservices در NET Core. (بخش اول)
موضوعات #Microservices و Distributed System ها موضوعاتی نیستند که با یک یا چند مقاله جسته و گریخته بتوان آنها را فرا گرفت. اینها موارد بزرگی هستند و نکات، تکنیک ها و ابزار های زیادی دارند که یاد گرفتن آنها نیازمند یک سری آموزش پیوسته و جامع است.
سری آموزش Building Microservices On .NET Core یکی از بهترین منابع برای یادگیری Microservice ها در NET Core. است که به صورت عملی و گام به گام همراه با مثال و سورس آن در گیتهاب منتشر شده است.
1️⃣ Building Microservices On .NET Core – Part 1 The Plan
2️⃣ Building Microservices On .NET Core – Part 2 Shaping microservice internal architecture with CQRS and MediatR
3️⃣ Building Microservices On .NET Core – Part 3 Service Discovery with Eureka
4️⃣ Building Microservices On .NET Core – Part 4 Building API Gateways With Ocelot
5️⃣ Building Microservices On .NET Core – Part 5 Marten An Ideal Repository For Your Domain Aggregates
6️⃣ Building Microservices On .NET Core – Part 6 Real time server client communication with SignalR and RabbitMQ
7️⃣ Building Microservices On .NET Core – Part 7 Transactional Outbox with RabbitMQ
🔰 سورس پروژه آموزشی در گیتهاب
https://github.com/asc-lab/dotnetcore-microservices-poc
🔸Microservices
🔹From monolith to microservices – to migrate or not to migrate?
🔸UI in Microservices World – Micro Frontends pattern and Web Components
🔹How to create better code using Domain-Driven Design
🔸CQRS and Event Sourcing Intro For Developers
این سری آموزشی رو از دست ندین به زودی چندتا از بهترین منابع برای این موضوع معرفی میشه
موضوعات #Microservices و Distributed System ها موضوعاتی نیستند که با یک یا چند مقاله جسته و گریخته بتوان آنها را فرا گرفت. اینها موارد بزرگی هستند و نکات، تکنیک ها و ابزار های زیادی دارند که یاد گرفتن آنها نیازمند یک سری آموزش پیوسته و جامع است.
سری آموزش Building Microservices On .NET Core یکی از بهترین منابع برای یادگیری Microservice ها در NET Core. است که به صورت عملی و گام به گام همراه با مثال و سورس آن در گیتهاب منتشر شده است.
1️⃣ Building Microservices On .NET Core – Part 1 The Plan
2️⃣ Building Microservices On .NET Core – Part 2 Shaping microservice internal architecture with CQRS and MediatR
3️⃣ Building Microservices On .NET Core – Part 3 Service Discovery with Eureka
4️⃣ Building Microservices On .NET Core – Part 4 Building API Gateways With Ocelot
5️⃣ Building Microservices On .NET Core – Part 5 Marten An Ideal Repository For Your Domain Aggregates
6️⃣ Building Microservices On .NET Core – Part 6 Real time server client communication with SignalR and RabbitMQ
7️⃣ Building Microservices On .NET Core – Part 7 Transactional Outbox with RabbitMQ
🔰 سورس پروژه آموزشی در گیتهاب
https://github.com/asc-lab/dotnetcore-microservices-poc
Very simplified insurance sales system made in a microservices architecture using .NET Core
🔰 دیگر مقالات مرتبط🔸Microservices
🔹From monolith to microservices – to migrate or not to migrate?
🔸UI in Microservices World – Micro Frontends pattern and Web Components
🔹How to create better code using Domain-Driven Design
🔸CQRS and Event Sourcing Intro For Developers
این سری آموزشی رو از دست ندین به زودی چندتا از بهترین منابع برای این موضوع معرفی میشه
Telegram
Attach Files
❇️ سری آموزش #Microservices در NET Core. (بخش دوم)
موضوعات #Microservices و Distributed System ها موضوعاتی نیستند که با یک یا چند مقاله جسته و گریخته بتوان آنها را فرا گرفت. اینها موارد بزرگی هستند و نکات، تکنیک ها و ابزار های زیادی دارند که یاد گرفتن آنها نیازمند یک سری آموزش پیوسته و جامع است.
سری آموزش Building microservices through Event Driven Architecture یکی از بهترین منابع برای یادگیری Microservice ها در NET Core. است که به صورت عملی و گام به گام همراه با مثال و سورس آن در گیتهاب منتشر شده است.
1️⃣ Building microservices through Event Driven Architecture part1 : application specific business rules
2️⃣ Building microservices through Event Driven Architecture part2 : domain objects and business rules
3️⃣ Building microservices through Event Driven Architecture part3: Presenters, Views, and Controllers
4️⃣ Building microservices through Event Driven Architecture part4: repositories
5️⃣ Building microservices through Event Driven Architecture part5: dockerization (Web Api Core and SQL Server Linux)
6️⃣ Building microservices through Event Driven Architecture part7: Implementing EventSourcing on Domain Model
7️⃣ Building microservices through Event Driven Architecture part8: Implementing EventSourcing on Repositories
8️⃣ Building microservices through Event Driven Architecture part9: Implementing EventSourcing on Application
9️⃣ Building microservices through Event Driven Architecture part10: Handling updates
🔟 Building microservices through Event Driven Architecture part11: Run Unit tests inside a docker container
🔰 سورس پروژه آموزشی در گیتهاب
https://github.com/logcorner/LogCorner.EduSync.Speech.Command/
در این سری آموزشی موضوعات زیر پوشش داده است
🏷Microservices 🏷CleanArchitecture 🏷DDD 🏷CQRS 🏷EventSourcing 🏷TDD 🏷Docker 🏷 Container 🏷EFCore 🏷ASPNETCore
این سری آموزشی رو از دست ندین به زودی چندتا از بهترین منابع برای این موضوع معرفی میشه
_____________________
موضوعات #Microservices و Distributed System ها موضوعاتی نیستند که با یک یا چند مقاله جسته و گریخته بتوان آنها را فرا گرفت. اینها موارد بزرگی هستند و نکات، تکنیک ها و ابزار های زیادی دارند که یاد گرفتن آنها نیازمند یک سری آموزش پیوسته و جامع است.
سری آموزش Building microservices through Event Driven Architecture یکی از بهترین منابع برای یادگیری Microservice ها در NET Core. است که به صورت عملی و گام به گام همراه با مثال و سورس آن در گیتهاب منتشر شده است.
1️⃣ Building microservices through Event Driven Architecture part1 : application specific business rules
2️⃣ Building microservices through Event Driven Architecture part2 : domain objects and business rules
3️⃣ Building microservices through Event Driven Architecture part3: Presenters, Views, and Controllers
4️⃣ Building microservices through Event Driven Architecture part4: repositories
5️⃣ Building microservices through Event Driven Architecture part5: dockerization (Web Api Core and SQL Server Linux)
6️⃣ Building microservices through Event Driven Architecture part7: Implementing EventSourcing on Domain Model
7️⃣ Building microservices through Event Driven Architecture part8: Implementing EventSourcing on Repositories
8️⃣ Building microservices through Event Driven Architecture part9: Implementing EventSourcing on Application
9️⃣ Building microservices through Event Driven Architecture part10: Handling updates
🔟 Building microservices through Event Driven Architecture part11: Run Unit tests inside a docker container
🔰 سورس پروژه آموزشی در گیتهاب
https://github.com/logcorner/LogCorner.EduSync.Speech.Command/
در این سری آموزشی موضوعات زیر پوشش داده است
🏷Microservices 🏷CleanArchitecture 🏷DDD 🏷CQRS 🏷EventSourcing 🏷TDD 🏷Docker 🏷 Container 🏷EFCore 🏷ASPNETCore
این سری آموزشی رو از دست ندین به زودی چندتا از بهترین منابع برای این موضوع معرفی میشه
_____________________
Telegram
Attach Files
👍1
❇️ سری آموزش ویدئویی #Microservices در NET Core. (بخش سوم)
موضوعات #Microservices و Distributed System ها موضوعاتی نیستند که با یک یا چند مقاله جسته و گریخته بتوان آنها را فرا گرفت. اینها موارد بزرگی هستند و نکات، تکنیک ها و ابزار های زیادی دارند که یاد گرفتن آنها نیازمند یک سری آموزش پیوسته و جامع است.
سری آموزش ویدئویی Distributed .NET Core (DShop) یکی از بهترین آموزش های ویدئویی منابع برای یادگیری Microservice و Distributed System ها در NET Core. است که به صورت عملی و گام به گام همراه با مثال و سورس آن در گیتهاب منتشر شده است. این آموزش همراه زیرنویس انگلیسی است (از قسمت Caption در Youtube)
0- Distributed .NET Core (DShop) - Teaser
1- Distributed .NET Core (DShop) - Episode 1 [Intro, HTTP requests flow, Infrastructure with Docker]
2- Distributed .NET Core (DShop) - Episode 2 [CQRS - Write side, Discounts service, MongoDB repository]
3- Distributed .NET Core (DShop) - Episode 3 [Subscribing RabbitMQ messages, API gateway]
4- Distributed .NET Core (DShop) - Episode 4 [Asynchronous microservices integration via events]
5- Distributed .NET Core (DShop) - Episode 5 [CQRS - Read side, Internal HTTP communication]
6. Distributed .NET Core (DShop) - Episode 6 [Service discovery & Load balancing with Consul + Fabio]
7- Distributed .NET Core (DShop) - Episode 7 [Handling asynchronous requests, SignalR, Polly]
8- Distributed .NET Core (DShop) - Episode 8 [Distributed transactions, 2PC, Event Choreography, Saga]
9- Distributed .NET Core (DShop) - Episode 9 [Vault secrets, Seq logging, Jaeger distributed tracing]
10- Distributed .NET Core (DShop) - Episode 10 [Metrics with AppMetrics, InfluxDB, Prometheus, Grafana]
11- Distributed .NET Core (DShop) - Episode 11 [Travis CI pipelines, custom MyGet feeds]
12- Distributed .NET Core (DShop) - Episode 12 [Docker basics, Docker Hub, docker-compose]
13- Distributed .NET Core (DShop) - Episode 13 [Integration tests with xUnit, Web API, Mongo, RabbitMQ]
14- Distributed .NET Core (DShop) - Episode 14 [Consumer-driven contract testing with Pact]
15- Distributed .NET Core (DShop) - Episode 15 [Orchestration with Portainer, Kubernetes and Rancher]
🔰 سورس پروژه آموزشی در گیتهاب
https://github.com/devmentors/DNC-DShop
در این سری آموزشی موضوعات زیر پوشش داده است
🏷Microservices 🏷DistributedSystem 🏷DDD 🏷CQRS 🏷Docker 🏷 Container 🏷ASPNETCore 🏷SqlServer 🏷Redis 🏷NoSql 🏷MongoDb 🏷InfluxDb 🏷SignalR 🏷JWT 🏷RabbitMQ 🏷Grafana 🏷AppMetrics 🏷Prometheus 🏷Jaeger 🏷Seq 🏷ELK 🏷ApiGateway 🏷Consul 🏷Kubernetes
🔸این سری آموزشی رو به هیچ عنوان از دست ندین
🔹بازم منبع خوب هست. تو کامنتا بگین معرفی کنم یا بسه؟!
_______________
موضوعات #Microservices و Distributed System ها موضوعاتی نیستند که با یک یا چند مقاله جسته و گریخته بتوان آنها را فرا گرفت. اینها موارد بزرگی هستند و نکات، تکنیک ها و ابزار های زیادی دارند که یاد گرفتن آنها نیازمند یک سری آموزش پیوسته و جامع است.
سری آموزش ویدئویی Distributed .NET Core (DShop) یکی از بهترین آموزش های ویدئویی منابع برای یادگیری Microservice و Distributed System ها در NET Core. است که به صورت عملی و گام به گام همراه با مثال و سورس آن در گیتهاب منتشر شده است. این آموزش همراه زیرنویس انگلیسی است (از قسمت Caption در Youtube)
0- Distributed .NET Core (DShop) - Teaser
1- Distributed .NET Core (DShop) - Episode 1 [Intro, HTTP requests flow, Infrastructure with Docker]
2- Distributed .NET Core (DShop) - Episode 2 [CQRS - Write side, Discounts service, MongoDB repository]
3- Distributed .NET Core (DShop) - Episode 3 [Subscribing RabbitMQ messages, API gateway]
4- Distributed .NET Core (DShop) - Episode 4 [Asynchronous microservices integration via events]
5- Distributed .NET Core (DShop) - Episode 5 [CQRS - Read side, Internal HTTP communication]
6. Distributed .NET Core (DShop) - Episode 6 [Service discovery & Load balancing with Consul + Fabio]
7- Distributed .NET Core (DShop) - Episode 7 [Handling asynchronous requests, SignalR, Polly]
8- Distributed .NET Core (DShop) - Episode 8 [Distributed transactions, 2PC, Event Choreography, Saga]
9- Distributed .NET Core (DShop) - Episode 9 [Vault secrets, Seq logging, Jaeger distributed tracing]
10- Distributed .NET Core (DShop) - Episode 10 [Metrics with AppMetrics, InfluxDB, Prometheus, Grafana]
11- Distributed .NET Core (DShop) - Episode 11 [Travis CI pipelines, custom MyGet feeds]
12- Distributed .NET Core (DShop) - Episode 12 [Docker basics, Docker Hub, docker-compose]
13- Distributed .NET Core (DShop) - Episode 13 [Integration tests with xUnit, Web API, Mongo, RabbitMQ]
14- Distributed .NET Core (DShop) - Episode 14 [Consumer-driven contract testing with Pact]
15- Distributed .NET Core (DShop) - Episode 15 [Orchestration with Portainer, Kubernetes and Rancher]
🔰 سورس پروژه آموزشی در گیتهاب
https://github.com/devmentors/DNC-DShop
در این سری آموزشی موضوعات زیر پوشش داده است
🏷Microservices 🏷DistributedSystem 🏷DDD 🏷CQRS 🏷Docker 🏷 Container 🏷ASPNETCore 🏷SqlServer 🏷Redis 🏷NoSql 🏷MongoDb 🏷InfluxDb 🏷SignalR 🏷JWT 🏷RabbitMQ 🏷Grafana 🏷AppMetrics 🏷Prometheus 🏷Jaeger 🏷Seq 🏷ELK 🏷ApiGateway 🏷Consul 🏷Kubernetes
🔸این سری آموزشی رو به هیچ عنوان از دست ندین
🔹بازم منبع خوب هست. تو کامنتا بگین معرفی کنم یا بسه؟!
_______________
YouTube
Distributed .NET Core (DShop) - Teaser
Welcome to the teaser of an incoming Distributed .NET Core course! :)
Repository:
https://github.com/devmentors/DNC-DShop
More content at: https://devmentors.io
Join our Discord: https://devmentors.io/discord
Follow us:
https://twitter.com/dev_mentors…
Repository:
https://github.com/devmentors/DNC-DShop
More content at: https://devmentors.io
Join our Discord: https://devmentors.io/discord
Follow us:
https://twitter.com/dev_mentors…
❇️ پروژه ASP.NET Core آزمون آنلاین مبتنی بر DDD و CQRS و Event Sourcing
🔰تکنولوژی های استفاده شده :
✔️ASP .NET Core
✔️#React
✔️#Microservices
✔️#DDD
✔️#CQRS
✔️#Event_Sourcing
✔️#PostgreSQL
✔️#RabbitMQ
✔️#Docker
✔️#Kubernetes
✔️#TDD
https://github.com/netcorebcn/quiz
__________________
🔰تکنولوژی های استفاده شده :
✔️ASP .NET Core
✔️#React
✔️#Microservices
✔️#DDD
✔️#CQRS
✔️#Event_Sourcing
✔️#PostgreSQL
✔️#RabbitMQ
✔️#Docker
✔️#Kubernetes
✔️#TDD
https://github.com/netcorebcn/quiz
__________________
GitHub
GitHub - netcorebcn/quiz: Example real time quiz application with .NET Core, React, DDD, Event Sourcing, Docker and built-in infrastructure…
Example real time quiz application with .NET Core, React, DDD, Event Sourcing, Docker and built-in infrastructure for CI/CD with k8s, jenkins and helm - GitHub - netcorebcn/quiz: Example real time ...
✅ پروژه سورس باز فروش بیمه به صورت Microservices در NET Core.
🔰 تکنولوژی های استفاده شده
.NET Core 2.1
Entity Framework Core
#MediatR
#Marten
#Eureka
#Ocelot
#JWT Tokens
#RestEase
#RawRabbit
#NHibernate
#Polly
#NEST (#ElasticSearch client)
#Dapper
#SignalR
#MicroServices
DynamicExpresso
https://github.com/asc-lab/dotnetcore-microservices-poc
🔰 تکنولوژی های استفاده شده
.NET Core 2.1
Entity Framework Core
#MediatR
#Marten
#Eureka
#Ocelot
#JWT Tokens
#RestEase
#RawRabbit
#NHibernate
#Polly
#NEST (#ElasticSearch client)
#Dapper
#SignalR
#MicroServices
DynamicExpresso
https://github.com/asc-lab/dotnetcore-microservices-poc
❇️ کتاب رایگان ماکروسافت برای آموزش #Microservices در NET Core.
💎بدون شک این کتاب یکی از بهترین و کامل ترین منابع جهت یادگیری توسعه برنامههای مبتنی بر معماری Microservices و مدیریت آنها با استفاده از Docker Containers در NET Core. است.
https://docs.microsoft.com/en-us/dotnet/architecture/microservices/
لینک دانلود PDF کتاب
https://aka.ms/microservicesebook
🔸برای یادگیری بهتر میتوانید پروژه eShopOnContainers که بر اساس مفاهیم این آموزش نوشته شده است را بررسی کنید.
https://github.com/dotnet-architecture/eShopOnContainers
💎بدون شک این کتاب یکی از بهترین و کامل ترین منابع جهت یادگیری توسعه برنامههای مبتنی بر معماری Microservices و مدیریت آنها با استفاده از Docker Containers در NET Core. است.
https://docs.microsoft.com/en-us/dotnet/architecture/microservices/
لینک دانلود PDF کتاب
https://aka.ms/microservicesebook
🔸برای یادگیری بهتر میتوانید پروژه eShopOnContainers که بر اساس مفاهیم این آموزش نوشته شده است را بررسی کنید.
https://github.com/dotnet-architecture/eShopOnContainers
❇️ برنامه ASP.NET Core مدیریت پارکینگ مبتنی بر DDD و CQRS و Event Sourcing و ...
✔️ ASP.NET Core
✔️ EntityFramework Core
✔️ Domain Driven Design (#DDD)
✔️ #Microservices
✔️ #RabbitMQ
✔️ #Service_Mesh
✔️ #CQRS
✔️ #Event_Sourcing
✔️ #Eventual_Consistency
✔️ #Docker & #Kubernetes Support
🔰مخزن پروژه :
https://github.com/EdwinVW/pitstop
✔️ ASP.NET Core
✔️ EntityFramework Core
✔️ Domain Driven Design (#DDD)
✔️ #Microservices
✔️ #RabbitMQ
✔️ #Service_Mesh
✔️ #CQRS
✔️ #Event_Sourcing
✔️ #Eventual_Consistency
✔️ #Docker & #Kubernetes Support
🔰مخزن پروژه :
https://github.com/EdwinVW/pitstop
GitHub
GitHub - EdwinVW/pitstop: This repo contains a sample application based on a Garage Management System for Pitstop - a fictitious…
This repo contains a sample application based on a Garage Management System for Pitstop - a fictitious garage. The primary goal of this sample is to demonstrate several software-architecture concep...
👍1
Forwarded from TondTech (مسعود بیگی)
صبح شنبه تونو با این مقاله هوتن شروع کنید که چند جا در #رسمیو برامون نجات دهنده بود.
https://www.linkedin.com/posts/hootanht_microservices-systemdesign-softwarearchitecture-activity-7291205813237383168-9e17
https://www.linkedin.com/posts/hootanht_microservices-systemdesign-softwarearchitecture-activity-7291205813237383168-9e17
Linkedin
پترن 𝗢𝘂𝘁𝗯𝗼𝘅 چیه و چرا انقدر مهمه؟ | Hootan Hemmati
پترن 𝗢𝘂𝘁𝗯𝗼𝘅 چیه و چرا انقدر مهمه؟
حتماً تا حالا برات پیش اومده که بخوای پیام یا دادهای رو از یک سرویس به سرویس دیگه بفرستی، اما نگران باشی که اگه اون سرویس مقصد موقتاً از کار بیفته، تکلیف پیامت چی میشه؟ یا اینکه اگه هنگام آپدیت پایگاه دادهات خطایی رخ بده،…
حتماً تا حالا برات پیش اومده که بخوای پیام یا دادهای رو از یک سرویس به سرویس دیگه بفرستی، اما نگران باشی که اگه اون سرویس مقصد موقتاً از کار بیفته، تکلیف پیامت چی میشه؟ یا اینکه اگه هنگام آپدیت پایگاه دادهات خطایی رخ بده،…
👍6
کالبدشکافی یک مهاجرت بزرگ: چرا ردیت قلب تپندهاش را به Go سپرد؟
اخیراً تیم مهندسی Reddit یکی از مهمترین تغییرات زیرساختی چند سال اخیر خود را فاش کرد: بازنویسی سرویس کامنتها (Comment Service) از پایتون به Go.
شاید بپرسید چرا کامنت؟ در ردیت، کامنتها فقط یک لیست ساده متنی نیستند؛ آنها یک ساختار درختی پیچیده و عمیق (Deeply Nested) دارند که پردازش و نمایش آنها در اسکیل میلیونی، یک چالش تمام عیار مهندسی است.
چرا پایتون دیگر پاسخگو نبود؟ (The Bottleneck)
ردیت سالهاست که یک "Python Shop" محسوب میشود. پایتون برای توسعه سریع عالی است، اما وقتی صحبت از High Throughput و محاسبات سنگین در لحظه میشود، کم میآورد:
۱. هزینه بالای ساخت آبجکتها: در پایتون، هر نود (Node) در درخت کامنتها یک آبجکت سنگین است. وقتی قرار است هزاران کامنت را برای یک ترد (Thread) لود کنید، سربار حافظه و CPU وحشتناک میشود.
۲. قفل مفسر جهانی (GIL): پردازش همزمان درخواستها در پایتون به دلیل GIL محدودیت دارد و نمیتوان از تمام هستههای CPU به صورت واقعی (Parallelism) بهره برد.
۳. تایپدهی پویا: در سیستمهای بسیار بزرگ، چک کردن تایپها در زمان اجرا (Runtime) هم سربار دارد و هم ریسک باگ را بالا میبرد.
چرا Go ناجی سیستم شد؟
تیم ردیت تصمیم گرفت برای این سرویس خاص به سراغ Go برود. نتایج خیرهکننده بود:
✅ مدیریت همزمانی (Concurrency): با استفاده از Goroutineها، ردیت توانست درخواستهای واکشی (Fetch) کامنتها را به صورت موازی و بسیار سبک انجام دهد. کاری که در پایتون نیازمند Threadهای سنگین سیستمعامل بود، در Go با چند کیلوبایت حافظه انجام شد.
✅ ساختار دادهای بهینه: برخلاف پایتون، Go اجازه میدهد کنترل دقیقی روی نحوه چیدمان دادهها در حافظه داشته باشید (Memory Layout). این یعنی کاهش فشار روی Garbage Collector و افزایش سرعت پردازش.
✅ کاهش تاخیر (Latency): نتیجه نهایی، کاهش چشمگیر زمان پاسخگویی (Response Time) سرویس کامنت بود، حتی در زمانهایی که ترافیک پلتفرم به اوج میرسد.
درسهایی برای طراحی سیستم (System Design):
این حرکت ردیت یک کلاس درس عالی برای معماران نرمافزار است:
- معماری چند زبانه (Polyglot): لازم نیست کل پلتفرم با یک زبان نوشته شود. ردیت همچنان برای بیزنس لاجیکهای لایه بالا از پایتون استفاده میکند، اما برای لایههای زیرین و پرفشار، Go را وارد کرده است.
- میکروسرویس واقعی: جدا کردن سرویس کامنت، اجازه داد تا فقط "همان بخش" اسکیل شود، بدون اینکه نیاز باشد کل کدبیس تغییر کند.
📊 نتیجه: سرویس جدید با منابع سختافزاری کمتر، ترافیک بیشتری را مدیریت میکند و تجربه کاربری (UX) روانتری را ارائه میدهد.
🔗 مطالعه مقاله فنی کامل در ردیت:
https://www.reddit.com/r/RedditEng/s/2tmpQVQSdv
#Reddit #Golang #SystemDesign #Microservices #Backend #PythonVsGo #HighThroughput
🎺 برای یادگیری بیشتر و دریافت مطالب مفید در زمینه .NET و برنامهنویسی، به کانال ما بپیوندید!
📚💻 @dotnetcode🖥 👨💻
اخیراً تیم مهندسی Reddit یکی از مهمترین تغییرات زیرساختی چند سال اخیر خود را فاش کرد: بازنویسی سرویس کامنتها (Comment Service) از پایتون به Go.
شاید بپرسید چرا کامنت؟ در ردیت، کامنتها فقط یک لیست ساده متنی نیستند؛ آنها یک ساختار درختی پیچیده و عمیق (Deeply Nested) دارند که پردازش و نمایش آنها در اسکیل میلیونی، یک چالش تمام عیار مهندسی است.
چرا پایتون دیگر پاسخگو نبود؟ (The Bottleneck)
ردیت سالهاست که یک "Python Shop" محسوب میشود. پایتون برای توسعه سریع عالی است، اما وقتی صحبت از High Throughput و محاسبات سنگین در لحظه میشود، کم میآورد:
۱. هزینه بالای ساخت آبجکتها: در پایتون، هر نود (Node) در درخت کامنتها یک آبجکت سنگین است. وقتی قرار است هزاران کامنت را برای یک ترد (Thread) لود کنید، سربار حافظه و CPU وحشتناک میشود.
۲. قفل مفسر جهانی (GIL): پردازش همزمان درخواستها در پایتون به دلیل GIL محدودیت دارد و نمیتوان از تمام هستههای CPU به صورت واقعی (Parallelism) بهره برد.
۳. تایپدهی پویا: در سیستمهای بسیار بزرگ، چک کردن تایپها در زمان اجرا (Runtime) هم سربار دارد و هم ریسک باگ را بالا میبرد.
چرا Go ناجی سیستم شد؟
تیم ردیت تصمیم گرفت برای این سرویس خاص به سراغ Go برود. نتایج خیرهکننده بود:
✅ مدیریت همزمانی (Concurrency): با استفاده از Goroutineها، ردیت توانست درخواستهای واکشی (Fetch) کامنتها را به صورت موازی و بسیار سبک انجام دهد. کاری که در پایتون نیازمند Threadهای سنگین سیستمعامل بود، در Go با چند کیلوبایت حافظه انجام شد.
✅ ساختار دادهای بهینه: برخلاف پایتون، Go اجازه میدهد کنترل دقیقی روی نحوه چیدمان دادهها در حافظه داشته باشید (Memory Layout). این یعنی کاهش فشار روی Garbage Collector و افزایش سرعت پردازش.
✅ کاهش تاخیر (Latency): نتیجه نهایی، کاهش چشمگیر زمان پاسخگویی (Response Time) سرویس کامنت بود، حتی در زمانهایی که ترافیک پلتفرم به اوج میرسد.
درسهایی برای طراحی سیستم (System Design):
این حرکت ردیت یک کلاس درس عالی برای معماران نرمافزار است:
- معماری چند زبانه (Polyglot): لازم نیست کل پلتفرم با یک زبان نوشته شود. ردیت همچنان برای بیزنس لاجیکهای لایه بالا از پایتون استفاده میکند، اما برای لایههای زیرین و پرفشار، Go را وارد کرده است.
- میکروسرویس واقعی: جدا کردن سرویس کامنت، اجازه داد تا فقط "همان بخش" اسکیل شود، بدون اینکه نیاز باشد کل کدبیس تغییر کند.
📊 نتیجه: سرویس جدید با منابع سختافزاری کمتر، ترافیک بیشتری را مدیریت میکند و تجربه کاربری (UX) روانتری را ارائه میدهد.
🔗 مطالعه مقاله فنی کامل در ردیت:
https://www.reddit.com/r/RedditEng/s/2tmpQVQSdv
#Reddit #Golang #SystemDesign #Microservices #Backend #PythonVsGo #HighThroughput
📚💻 @dotnetcode
Please open Telegram to view this post
VIEW IN TELEGRAM
Reddit
From the RedditEng community on Reddit
Explore this post and more from the RedditEng community
👍10❤5🔥3👏1