سرویس با golang

microservices
golang

#1

سلام .

خوشحالم devheroes رو پیدا کردم . دوستان تا الان با go میکرو سرویس برا پروژه هاتون نوشتین و توی کار با حجم بالا تست کردین ؟ اگر آره لطفا تجربیات خودتون رو بیان کنید . تشکر .


#2

go واقعا برای توسعه سریع و کم اشتباه عالیه, یادگیریش آسونه و کلا زبان قابل اعتمادیه


#3

توسعه سریع که نداره فریمورک هایی هستن که با ده دقیقه کد زدن میشه یه وبسایت خوب امن و همه کاره باهاش راه انداخت ولی گو همه چیزو باید خودم انجام بدم اکثرا .

ولی مسئله اینه من تا الان خودم زیر بار پروژه بزرگ ازش استفاده نکردم همش پروژه کوچیک بوده برای همین نمیدونم توی scale بزرگ و چالش های امنیتی و … جواب میده و چطور اگر مشکلی پیش اومد باید حل بشه .

دوست دارم اگر تجربه دارین مطرح کنید لطفا .


#4

اون که گفتم تجربم بود :smile:

راستی خوش آمدی به این سایت :sunny:


#5

بله من مقداری با go تجربه ساختن میکروسرویس دارم
اگر سوال یا کمکی نیاز دارید خوشحال میشم کمک کنم


#6

از همراهیتون ممنونم :slight_smile:


#7

Go به درد میکروسرویس های بسیار کوچک و با یک هدف میخوره
به دلیل نداشتن ساختار های oop یا فانکشنال ساختن برنامه های بسیار پیچیده با go سخته


#8

من با go یکم تجربه داشتم . اول اینکه اینترفیس و اشاره گر و سینتاکس متفاوت این زبان دست ب دست هم میدن و باعث میشه وقتی حجم کد بالا رفت کارتون سخت بشه . دوما هم دوباره همین عوامل دست ب دست هم میدن و باعث میشن خوانایی کد سخت بشه و زمان میبره که چشم و مغز بتونن عادت کنن . البته اینا برای من اتفاق افتاده بود و ممکنه بعضی ها خیلی هم دوست داشته باشند .
بنظر من go برای برنامه های cli و همون طور که جناب سم دی وی ار عرض کردند وب سرویس های کوچولو و ساده خوبه .
البته من از گو برای دستگاه های ابزار دقیق هم استفاده کردم که متاسفانه بخاطر کمبودهای بی شمار این زبان خوب از آب درنیومد و دوباره مجبور شدم با زبان دیگه از نو بنویسم . ولی یک سرویس برای tcp با گو نوشتم که چون ساده و کوچک بود خیلی هم استفاده از این زبان لذت بخش بود .


#9

مرسی . میشه بگین چه کمبود هایی داشت و اینکه چطور شما رو سردرگم میکرد ؟


#10

خلاصه نظر شخصی من درباره Go
نکات مثبت
کار با error ها
Concurrency model بسیار خوب
تایپ سیستم
Fmt
جامعه بزرگ
ساده و آسان برای یادگیری
یک راه برای انجام کار

نکات منفی
Mutability
نبود generic ها که باعث تکرار بیش از حد کد هامیشه
سختی مدل کردن پیچیدگی بدون oop یا functional programming


#11

سلام . مرسی

به جای جنریک که interface{} داره اتفاقا خیلی خوشم اومد من از این قابلیت من اول فکر کردم مثل Any هست در زبان های دیگه ولی دیدم نه دقیقا میشه خیلی کارا باهاش کرد زبانی مثل گو رو پویا میکنه که در نوع خودم برام جالبه .

شی گرایی و فانکشنال بودن هم که اصلا این مشکل نیست گو متفاوته و مدل کاریش چیز دیگست برای همین باید ذهن شی گرایی و … رو کنار گذاشت اما بازم میشه بهش شی گرا نگاه کرد و پیاده سازی کرد .

Mutability یکم توضیح میدی ؟


#12

Interface{} تمام هدف کامپایلرو از بین میبره و اصلا در مقابل generic ها قابل مقایسه نیست چون generic ها با اینکه abstraction درست میکنن کاملا در کامپایلر چک میشن
Interface{} در runtime چک میشن

Immutability یعنی داده ها وقتی درست میشن تغییر نمیکن در فانکشنال پروگرمینگ این کار رایج ولی زبان های دیگه ازاین پشتیبانی می‌کنند که باعث میشه برنامه خطاهاش کنار بشه
Go این کارو به خوبی پشتیبانی نمیکنه


#13

بله و این متفاوت بودن زیباست اما وقتی که نهایتا 2000 خط کد داشته باشی :blush: باید قبول کرد پروژه های گو واقعا اسون و زیبا و جذابن اما وقتی که پروژه کوچولو باشه
مشکل از ذهنیت شی گرا نیس مشکل اصلی بنظر من اینه که این سینتاکس متفاوت زبان گو و روش عجیبش که جاگزین شی گرایی شده گاهی اوقات واقعا سخت و پیچیده میشه داخل پروژه. اینترفیس ها واقعا زیبا هستند و کاربردی اما اگر یکم مدلی که میخوایین پیچیده باشه و در این وسط هم از انبوه توابع استفاده کنید واقعا کار خطایابی و توسعه کد تغییر کد خواندن کد و گاهی اوقات حتی استفاده از خود تابع مشکل میشه و باید کلی وقت بین struct interface تلف کنید تا بفهمین تابعی ک خودتون نوشتین چجوری باید استفاده بشه و اینجاست که میگین چرا اینجوری شد:laughing::laughing::laughing::laughing:
دومین ایراد گو که نه تنها من بلکه خیلی های دیگه هم ازش ناراضی ان پیام های نامربوط خطا در گو هست که حتی گاهی اوقات اصلا پیام خطا ربطی به موضوع خطا نداره


#14

:blush:یک چیزم به عنوان برادر کوچولو بگم که از اساتید اینجا واقعا استفاده کن حرف بیخودی نمیگن مثل بقیه گروههای تلگرامی .من قبلا بحث زیاد میکردم اما اینجا یاد گرفتم استفاده کنم