من خیلی دیدم که این سوال پرسیده میشه: «بهترین فریمورک برای Go چی هست؟» این سوال هم بیشتر توسط افرادی که از زبانهای مثل PHP میرن به گولنگ پرسیده میشه. علتش هم اینه که توی پیاچپی معمولا ما یک مونولیت بزرگ داریم که همه کار رو انجام میده. از هندل کردن درخواستهای ورودی از HTTP تا اعتبار سنجی و ارتباط با دیتابیس و همهٔ عملیاتهای این وسط. در نهایت هم خروجی HTML رو تولید میکنه تحویل مخاطب میده. برای همین نیاز داریم که یک سری ابزار در کنار هم جمع شده باشه و به صورت عملیاتی فقط مورد استفاده قرار بگیره.
اما زبان Go بیشترین قدرتنمایی و شهرتش برای استفاده در معماری میکروسرویس هست. ما توی این معماری یک اپلیکیشن بزرگ که همه کار رو خودش انجام بده نداریم.
به جاش، سرویسهایی رو داریم که هر کدوم یک کاری رو انجام میده. به طور مثال:
- یک سرویس فقط کارش اینه که درخواستهای ورودی کاربر رو از HTTP بگیره.
- یک سرویس دیگه کارش اینه که درخواستهای ورودی کاربر رو Authorize کنه.
- یک سرویس دیگه کارش اینه که یه سری اطلاعات رو توی دیتابیس ذخیره کنه.
- یک سرویس دیگه ممکنه کارش این باشه که از طریق gRPC اون اطلاعات رو به یک سرویس دیگه تحویل بده.
- یک سرویس دیگه ممکنه لازم باشه اون اطلاعات رو از طریق یک مکانیز صف برای انجام شدن یک پروسهای توی نوبت قرار بده.
- …
میبینید؟ اصلا قرار نیست یک عالمه ابزار مختلف توی اپلیکیشن/سرویسهای ما در کنار هم جمع باشن. اگر یک سرویسی فقط کارش هندل کردن HTTP Request هست فقط لازمه همون پکیج رو در خودش داشته باشه. دیگه مثلا لازم نیست پکیج کار با MySQL رو داشته باشه.
عموماً اینطوریه که برنامهنویسها وقتی یک زبان جدید یاد میگیرن میرن دنبال اینکه همون کارهایی که توی زبان قبلی انجام میدادن رو توی این زبان جدید هم انجام بدن. این همیشه درست نیست! بهترین کار اینه که ببینیم:
- زبان جدید نقطهٔ قوتش چیه؟
- برای چه معماری و کاربردهایی ساخته شده؟
- روشهای رایج استفادهش به چه صورت هست؟
و سوالهایی از این دست که باعث بشه پیچ رو با چکش فرو نکنیم تو دیوار. به جاش از پیچگوشتی استفاده کنیم که هم انرژی کمتری مصرف کنیم و هم بهتر و تمیزتر کار رو انجام بدیم.
شاد باشید.