اموزش مقدماتی تا پیشرفته گولنگ پروژه محور(قسمت اول)

گولنگ یک زبان برنامه‌نویسی خاص و با ویژگی‌های منحصر به فرد است که در سال ۲۰۰۷ توسط گوگل به منظور سهولت در توسعه و افزایش بهره‌وری در محیط‌های چند هسته‌ای و رایانش ابری طراحی شده است و در سال ۲۰۰۹ به صورت عمومی و open source منتشر شد. هدف ما این هستش که سیستم فروشگاه ساز پیشرفته رو با گولنگ پیاده سازی کنیم و در نهایت روی کوبرنتیز دیپلوی اجرا کنیم یعنی ۰ تا ۱۰۰ یه پروژه گولنگی . به زودی ویدیوی این آموزش ها در وبسایت uncodev منتشر خواهند شد.اموزش مقدماتی تا پیشرفته گولنگ پروژه محور به دلیل پرفورمنس بالا و کاربردی بودن زبان برنامه نویسی گولنگ شرکت‌ها و پروژه‌های بزرگ زیادی هستن که از گولنگ برای توسعه نرم افزارهاشون استفاده کردن من جمله خود گوگل توی تصویر بالا لیست از شرکت‌های بزرگ رو میبینید که از زبان برنامه نویسی گولنگ استفاده کردن، بع عنوان مثال توی این یوزکیس یکی از جاهای که گوگل از گولنگ اومده استفاده کرده رو میتونید مشاهده کنید ، لینک این یوزکیس که گوگل استفاده کرده ، و توی این لینک هم شما میتونید سایر یوزکیسا رو تو سایت گولنگ ببنید.In 2015, to keep up with Google’s scale, our team needed to rewrite our indexing stack from a single monolithic binary written in C++ to multiple components in a microservices architecture. We decided to rewrite many indexing services in Go, which we now use to power the majority of our architecture.توی سال ۲۰۱۵ گوگل اومده سرویس‌های ایندکس گذاریشو با زبان برنامه نویسی گولنگ و معماری مایکروسرویس ریرایت کرده.بازار کار گولنگ (Golang) : تقریبا شرکت‌های زیادی رو توی ایران میشناسم که یا رفتن سمت گولنگ و یا دارن مهاجرت میکنن به سمت استفاده از گولنگ هم به خاطر اینکه معماریشون رو به مایکروسرویس یا SOA تغییر دادن و هم قابلیت‌های گولنگ باعث شده که بازار کار گولنگ خوب بشه . من خودم در اسنپ گروسری (اسنپ مارکت + اسنپ اکسپرس) مشغول به کارم و تقریبا اکثر سرویس‌ها با گولنگ ریرایت شدن و میدونم اکثر ونچرهای اسنپ هم از گولنگ استفاده میکنن در سرویس‌هاشون و کلا به دلیل اینکه برنامه نویس گولنگ کم هستش و در عین حال شرکت‌ها هم نیاز به برنامه نویس گولنگ دارن بازار کار خوبی وجود داره برای برنامه نویس کاردرست گولنگ. کافه بازار، دیوار، صبا ایده ، پاسارگاد الکترونیک، مبنا و ... هم دیدم که اگهی جذب برنامه نویس گولنگ رو دارن.مزایای گولنگ (Golang) : سادگی و خوانا بودن کد ، در طی انجام پروژه که بیشتر با گولنگ اشنا میشوید متوجه خواهید شد که چقدر کد نویسی با گولنگ ساده و قابل فهم هستش.مدیریت حافظه ، گولنگGolang دارای یک مدیر حافظه خودکار (Garbage Collector) است که نگرانی‌های مربوط به مدیریت حافظه را از بین می‌برد و خطاهای مربوط به حافظه را کاهش می‌دهد.این مطلب رو چند وقت پیش در رابطه با مدیریت حافظه هیپ و استک نوشتم که خوندنش خالی از لطف نیست.کارایی بالا ، باینری‌های اجرایی تولید شده توسط Go به صورت مستقیم وابسته به سیستم عامل نیستند و به عنوان یک فایل اجرایی ساده قابل اجرا هستند اون سیستم عامل میتونه ویندوز یا لینوکس یا ... باشه فقط مهم این هستش که براش خروجی گرفته باشه تا به راحتی اجرا بشه. این موضوع منجر به اجرای سریع‌تر برنامه‌ها می‌شود.پشتیبانی از همزمانی (Concurrency) ، یکی از بهترین و مهمترین ویژگی های گولنگ همزمانی به صورت (built-in) هستش. معنیش اینکه که قابلیت همزمانی به طور مستقیم در گولنگ تعبیه شده است و برنامه‌نویسان می‌توانند از این قابلیت به صورت مستقیم و بدون نیاز به افزودن کتابخانه‌ها یا ابزارهای خارجی، از Concurrency استفاده کنند. در مورد گوروتین‌ها،چنل‌ها و ... به صورت کامل در اینده توضیح خواهم داد و زیاد مورد استفاده قرار خواهند گرفت.یوزکیس‌های گولنگ :۱ . استفاده از گولنگ در Cloud & Network Services : به دلیل پشتیبانی گولنگ از همزمانی (Concurrency) و قدرتمند بودنش در این این زمینه برای استفاده در Cloud & Network به شدت کارایی بالایی داره ، بیش از ۷۵ درصد پروژه های Cloud Native با استفاده گولنگ توسعه پیدا کردن، پروژه‌هایی مثل داکر، کوبرنتیز و ... از طرایق این لینک میتونی کاملتر در موردش بخونی۲. استفاده از گولنگ در Command-line Interfaces (CLIs)فرض کنید شما بعد از نصب گیت توی ترمینال کلمه git رو مینویسید و بعدش یه سری کارها رو میتونید انجام بدید.این دقیقا یه برنامه cli هستش، حالا چرا پیاده سازی یه برنامه cli با گولنگ بهتر هستش؟ چون وقتی دولوپر یه برنامه cli پیاده‌سازی میکنه هدفش احتمالا یک جامعه بزرگ هستش که ممکنه هر کدوم سیستم عامل‌های مختلف داشته باشن، بنابراین بهترین گزینه گولنگ هستش که بتونه برنامش رو توی هر سیستم عاملی اجرا کنه. نکته بعدی این هستش که استارت آپ تایم برنامه گولنگی خیلی کم و نزدیک به صفر هستش. از طریق این لینک میتونی بیشتر در موردش بخونی. github-cli هم با گولنگ پیاده سازی شده است.۳. استفاده از گولنگ در Web Development :یجورایی میشه گفت گولنگ خوراک پروژه‌های مایکروسرویسی و اسکیل بالا هستش و همین الانم تو بزرگترین شرکتای دینا مخصوصا اونا که لود بالا و ترافیک بالا دارن به خوب جوابشو پس داده، مثلا کاری که خودم من بعد از ریرایت یه پروژه از php به گولنگ انجام دادم کاهش ۴۰۰ درصدی ریسپانس تایم‌ها بود به دلیل اینکه اومدم از کانکارنسی و یه سری قابلیت‌های گولنگ استفاده کردم . برای پیاده سازی یک وب اپلیکیشن با گولنگ به هیچ گونه وب فریمورکی نیاز نیست ! از ایجاد سرور گرفته تا ... رو میشه بدون نیاز به هیچ پکیجی پیاده سازی کرد البته پکیج‌های زیادی هست که تو این زمینه میتونن کمک کنن . از طریق این لینک میتونی بیشتر در موردش بخونی.۴. استفاده از گولنگ در Development Operations & Site Reliability Engineering (SRE) :وقتی خود کوبرنتیز و داکر با گولنگ توسعه پیدا کردن قطعا خیلی کارها میشه با گولنگ براش انجام داد، یا توسعه برنامه‌هایی که نیاز به پردازش همزمان دارند (مانند ابزارهای مانیتورینگ و logging ) خیلی قدرتمند و کاربردیه، گولنگ ابزارهای خودکارسازی تست (تست‌های واحد، تست‌های ادغام، و ...) را بهبود داده است که در محیط DevOps کمک می‌کند تا فرآیند ادغام مستمر (CI) بهتری داشته باشیم.گولنگ دارای ابزارها و کتابخانه‌های متعددی است که می‌توانند در توسعه ابزارها و اسکریپت‌های مدیریتی مورد استفاده قرار گیرند..توی قسمت بعد میریم سراغ کد نویسی و قسمت‌های جذاب