زبان مناسب برای سوئیچ های پرداخت الکترونیک

با سلام خدمت همگی دوستان
شرکت ها و سازمان های دولتی که در حوزه ارائه خدمات پرداخت الکترونیک (شرکت های PSP) یا لایه های پایین تر در همین حوزه فعالیت دارند، برای پردازش و انجام تراکنش های مالی خود نیاز به تکنولوژی ای بسیار سریع و کم خطا و امنیت بالا دارند.
طبق بررسی و تحقیقی که در این زمینه کردم، اکثر این سوئیچ ها با زبان JAVA - Spring & JAVA EE(SOA) توسعه داده شدند.
تازگی مطلع شدم یکی از این شرکت ها جدیدا از زبان Go برای سوئیچ جدید خود استفاده کرده که فعلا با توجه به حجم بار کم، پاسخگویی تقریبا مناسبی هم داشته.
این مسئله برای من جالب بود و می خواستم نظر دوستان و متخصصان گرامی راجب این قضیه بدونم که آیا زبان و تکنولوژی سمت سرور با Go از نظر سرعت و دقت و امنیت اطلاعات در مقابل با زبان و تکنولوژی های JAVA به چه شکل است؟ به نظر شما به جز این دو زبان، چه زبان های دیگری از لحاظ پرفورمنس و امنیت مورد قبول برای پروژه های اینچنین بزرگ و حساس هستند؟

با تشکر.

خیر. ربطی به زبانی که استفاده میکنن نداره. درسته که یه زبانهایی سرعتشون از یه سریهای دیگه بیشتره ولی باید ببینیم برنامه‌نویسش کیه و چطوری مساله رو پیاده کرده.
توی اینجور شرکتها، طبیعیه اگه هیچکدوم از استانداردهای برنامه‌نویسی رعایت نشه و فقط به محصول نهایی نگاه بشه. طبیعیه که حقوق برنامه‌نویس بر اساس تعداد خطی که نوشته تغییر کنه. طبیعیه که حافظه رو 50 بار free کنن و کدهای لایبرری رو کپی کنن تو فایلشون به جای صدا زدن لایبرری و کدهاشون رو از اینطرف کپی کنن اونطرف که تعداد خطهاشون بالا بره. و…
توی این شرکتها طبیعیه اگه کسی نیاد کدی رو refactor نکنه برای بهینه‌سازی و همینطور روی هم کدهاشون رو بریزن و برن جلو.

حالا اینکه یه شرکت سرعت پاسخگویی سرورش بهتره، شاید به خاطر اینه که درست حسابی‌تر از بقیه کد زدن. شاید به خاطر این باشه که هنوز اونقدر قدیمی نشدن که کدهای قدیمی و کند، توی پروژشون باشه. شاید هم به خاطر این باشه که واقعا یه نفر پیدا شده داره پروژه رو اصولی مدیریت میکنه و هرکی هرکاری دلش بخواد نمیکنه.

جدای این مسائل، گولنگ و جاوا، پرفرمنس مشابهی دارن. درحالی که یک برنامه‌ی یکسان توی هرکدوم از این زبانها میتونه دو مدل مختلف نوشته شده باشه که یکیش ۱۰۰ برابر سریعتر از اون‌یکیه. درحالی که زبان و پلتفرم، یکی هستن.

تجربه‌ی شخصی: من یه برنامه توی پایتون نوشتم که از یه لایبرری عکس (Pillow) استفاده میکنه که توی C/C++ نوشته شده. بعد اومدم مشابه همون برنامه رو توی C (با imagemagik) نوشتم.
نسخه‌ی C دقیقا ۲ برابر رم بیشتری مصرف میکرد! درحالی که نسخه‌ی پایتون هم داشت یه سری کد C/C++ رو اجرا میکرد. فرقش این بود که سازنده‌های اون لایبرری عکس، یه چیزایی از C میدونستن که من نمیدونستم.

2 پسندیده

درود خدمت شما . در ادامه صحبت پویا عزیز باید بگم هر زبان برنامه نویسی که نیروی کاری اون رو دارید استارت کارو بزنید. برخی از زبان ها ممکنه حتی یک جامعه خوبی رو به شما هدیه بده که کار رو در یک بخش ساده کنه ولی ممکنه نیروی کاری زیادی براش نباشه و پروژه شما به سمت شکست بره

2 پسندیده

به نظر من، یه مورد دیگه که توی سیستم‌های اینچنینی باید در نظر گرفته بشه جدای از بحث زبان و تکنولوژی، اینه که کل سیستم در مواجهه با خطا چطور رفتار می‌کنه؟

سلام، بله بیشتر برنامه های سوئیچینگ و کوربَنکینگ با جاوا نوشته شدن ولی بعد از .netcore خصوصا سال 2019 به بعد که قدرت دات نت بیشتر شده توی ایران هم شرکت هایی از جمله شرکت قبلی ما از سی شارپ برای این زمینه استفاده کرده، چیزی که خیلی مهمه باید زیرساخت خیلی قوی باشه تا بتونه حجم درخواستهای زیادی رو هندل کنه، خود ما چندین نود Oracle RAC با کلی چیزمیز دیگه آپ کرده بودیم.
استفاده از گولنگ هم محدودیتهای خاص خودش رو داره، بیشتر برنامه نویس هایی که از بک گراند جاوا و… کد گولنگ میزنن با فرهنگ گولنگ آشنایی ندارن و معمولا کد تمیزی نمیزنن، گولنگ برای نوشتن اپلیکیشنهای مونولیتیک خیلی بزرگ انتخاب خوبی نیست چون با بزرگ شدن پروژه مدیریت کد توش خیلی سخت میشه، ولی به خاطر وجود گوروتین یه سری جاها واقعا نسبت به thread سریع تر عمل میکنه و سرعت خوبی داره و حجم کمی حافظه میخوره، ولی به این معنا نیست که برنامه نوشته شده به زبان سی شارپ یا جاوا کند تر از گولنگ هستش، تو Golang هم شما میتونید از جنریک گو استفاده کنید و تو شرایط خاصی کدتون بسیار کند تر از استفاده از interface بشه یا مثلا اگه از channel درست استفاده نکنید یه جاهایی یقه شما رو میگیره.
چیزی که توی نوشتن اینجور برنامه ها خیلی خیلی مهمه تجربه زیاد برنامه نویسی هستش، چون با پول مردم سرکار دارید، استرس زیادی هم داره توسعه این سیستمها، تیم کوربَنکینگ ما کسایی بودن که گاها بالای 35، 40 سال سنشون بود.

3 پسندیده