نکته: این مطلب توسط توسعهدهندگان وبسایت TreeScale نوشته شده و تقریبا یادداشتی شخصی در ارتباط با آن است که چرا از زبان برنامهنویسی پایتون برای توسعه وبسایتشان به سمت زبان برنامهنویسی گو رفتند.
«پایتون عالی است. به خصوص با وجود قابلیت توابع async در پایتون ۳. اما مشکلی که وجود دارد این است که با وجود زبان برنامهنویسی گو، پایتون شانسی برای زنده ماندن در دنیای سازمانی و پروژههای Enterprise ندارد.»
اگر تا به حال با چنین اظهارنظری برخورد کردهاید، بنابراین قطعا تلاشی برای مشاهده زبان برنامهنویسی Go و بررسی هر چند سطحی آن کردهاید. به نظر من زبان برنامهنویسی گو یکی از آسانترین زبانهای برنامهنویسی در جهت یادگیری است، حتی از جاوااسکریپت نیز سادهتر است. من واقعا روی این حرفم پایبند هستم و میدانم که این واقعیت دارد. یکی از دلایلی که میبینم گو در این مدت زمانی انقدر پیشرفت داشته نیز همین سادگی در امر یادگیری است.
قبل از گو
قبل از پی بردن به قدرت گو ما در TreeScale از ابزارهای زیر برای کارهای مختلف استفاده میکردیم:
- ریاکتجیاس برای فرانت-اند داشبورد
- جنگو و پایتون برای بکاند و سرویس احرازهویت
- نودجیاس برای سرویس API
- PostgreSQL برای بانک اطلاعاتی و Cassandra برای عملیات ورود
- Container Registry شخصی، نوشته شده توسط Rust
همانطور که میتوانید مشاهده کنید زیرساخت کلی سیستم ما به صورت کامل از معماری میکروسرویس برخوردار است و همانطور که مشاهده میکنید ما در این معماری از تکنولوژیهای متفاوتی استفاده کردهایم.
دلیل اصلی که ما شروع به فکر کردن راجع به تغییر تکنولوژيهای مبتنی بر بک-اند و سرویسهای API کردیم نیز همین بود. ما میخواستیم همه چیز را در یک پروژه مدیریت کنیم و کدبیس یکپارچهتری داشته باشیم. بنابراین ما تصمیم گرفتیم از سرویسهای Django API استفاده بکنیم، اما بعدا متوجه شدیم که انجام چنین کاری نیاز به میزان شخصیسازی بالایی دارد.
بعد از یک ماه کار کردن با سرویس API جنگو، متوجه شدیم که جنگو برای نوشتن کارهای معمولی میتواند بسیار قدرتمند باشد، اما همین که کارایی بیشتری بخواهیم و نیاز به شخصیسازی چند ماژول داشته باشیم، همه چیز بسیار پیچیدهتر خواهد شد.
چرا گو؟
همانطور که قبلا اشاره کردم گو یک زبان برنامهنویسی ساده برای یادگیری است. اما این تنها یک جلوه کوچک از گو است.
در این مطلب قصد دارم ۵ دلیل که چرا بجای پایتون (جنگو) از گو استفاده کردیم را به شما بگویم:
۱- کامپایل شدن به یک فایل باینری
گوگل یک زبان کامپایلی است و توسعهدهندگان گوگل برای ایجاد چنین قابلیتی به خوبی عمل کردهاند. با استفاده از قابلیت static linking در گو تمام کتابخانهها و ماژولها در زمان اجرا به یک فایل باینری –براساس نوع و معماری سیستم عامل- تبدیل میشوند. اگر شما یک لپ تاپ با سیستم عامل لینوکس داشته باشید که از پردازندهای با معماری X86 بهره میبرد، میتوانید پروژهتان را کامپایل کنید و فایل باینری پروژه را برای اجرا شدن روی یک سرور با همین معماری آپلود و اجرا نمایید. در این حالت برای اجرا کردن نیازی به هیچگونه ماژول و... روی سرور ندارید.
۲- استاتیک تایپ
ممکن است برای اپلیکیشنهای کوچک استاتیک و یا داینامیک بودن یک زبان مهم نباشد، اما هر چقدر حجم پروژه شما بالاتر میرود این موضوع اهمیت بیشتری پیدا میکند. پایتون یک زبان برنامهنویسی عالی است، اما بدلیل استاتیک نبودن آن برخی اوقات ممکن است بخاطر مقداردهیهای غیر منتظره، خطاهای عجیبی را دریافت کنید.
# Django will crash process because of this
def some_view(request):
user_id = request.POST.get('id', 0)
# If this post request has "id" parameter then
# user_id would be a string,
# but you really thinking it is integer
User.objects.get(id=user_id)
قطعه کد بالا یک قسمت از پروژه جنگو است که بخاطر مقداردهیهای متناقض با خطا مواجه میشود.
اما گو برای چنین مشکلی قابلیت استاتیک تایپ دارد و حتی اگر مشکلی نیز بوجود بیاید در روند کامپایل کردن این مشکل به شما گفته میشود. بنابراین مدیریت خطای بهتری نیز خواهید داشت.
۳- کارایی
مطمئنا همگان روی این قضیه اتفاق نظر داریم که پایتون یک زبان برنامهنویسی سریع نیست. اما چنین قضیهای برای گو صادق نیست. در حقیقت زبان برنامهنویسی گو بسیار سریعتر از پایتون عمل میکند. در این لینک میتوانید بنچمارک هر دو زبان برای مثالهای مختلف را مشاهده کنید.
بنابراین نتیجه میگیریم که میزان کارایی گو به مراتب از پایتون بیشتر است. زمانی که بخواهیم مصرف بهینهتری از منابع سختافزاری داشته باشیم گو بهتر میتواند به ما پاسخ دهد، چرا که به صورت میانگین گو ۱۰ برابر کمتر نسبت به پایتون منابع مصرف میکند.
۴- نیازی به وب فریمورک نیست
این مورد را میتوان بهترین ویژگی زبان گو دانست. شما برای ساخت اپلیکیشنهای مبتنی بر وب نیازی به فریمورکها و ابزارهای مختلف ندارید، گو همه چیز را در خود دارد. در گو به صورت محلی شما قابلیت استفاده از http، json و html templating را دارید. همچنین شما میتوانید از سرویسهای API در گو استفاده کنید.
البته یک نکته لازم به ذکر این است که کتابخانهها و فریمورکهای بسیار زیادی برای گو در جهت توسعه وب ساخته شده است که میتوانید از آنها نیز استفاده بکنید. اما من پیشنهاد میدهم که از خود گو بیشتر استفاده نمایید چرا که نوشتن پروژه را برایتان بسیار آسانتر میکند.
۵. پشتیبانی/دیباگینگ عالی از طرف IDE
پشتیبانی IDEها یکی از مهمترین نکاتی است که در انتخاب یک زبان برنامهنویسی باید به آن توجه داشته باشید. یک IDE راحت میتواند ۸۰درصد از روال کدنویسیتان را بهتر کند. در حال حاضر پلاگینهای بسیار خوبی برای پشتیبانی از گو در VSCode، Jetbrains IDEA و... وجود دارد.
در نهایت براساس آماری که از کدهای نوشته شده قبلیمان داشتیم، تمام پروژه گو ۶۴ درصد کمتر نیاز به کدنویسی نسبت به پروژههای قبلی داشت.
کدنویسی کمتر، دردسر کمتر!
در پایان
گو به ما انعطافپذیری بسیار بالایی را برای کدنویسی میداد؛ زبانی که تمام مشکلات بک-اند ما را حل میکرد. حال ما در قسمت بک-اند و سرویسهای API خود، ۳۰ درصد کارایی بیشتر در اختیار داریم. حال میتوانیم فرایند ورود بلادرنگ، کار با دیتابیس، سرویس استریمینگ و... بسیار سریعتری داشته باشیم. تمام این ویژگیهای عالی را مدیون گو هستم.
دیدگاه و پرسش
در حال دریافت نظرات از سرور، لطفا منتظر بمانید
در حال دریافت نظرات از سرور، لطفا منتظر بمانید