۳۰ آذر ۱۴۰۳

Techboy

اخبار و اطلاعات روز تکنولوژی

ساخت زیرساخت ابری قابل برنامه ریزی برای توسعه دهندگان

با توجه به چیزهای زیادی که در مورد هوش مصنوعی وجود دارد، ساده کردن آن با تکنیک های توسعه آشنا، به ویژه زیرساخت هایی مانند کد و پایتون، منطقی است.

با توجه به چیزهای زیادی که در مورد هوش مصنوعی وجود دارد، ساده کردن آن با تکنیک های توسعه آشنا، به ویژه زیرساخت هایی مانند کد و پایتون، منطقی است.

اکثر توسعه‌دهندگان از زیرساخت به‌عنوان کد (IaC) استفاده نمی‌کنند، استدال می‌کند که رهبر فناوری AWS، کریس مانس اما ۱۰ تا ۱۵ درصد از توسعه‌دهندگانی که از فناوری‌های توسعه مدرن مانند IaC استفاده می‌کنند، خراب می‌شوند. همانطور که جو دافی، مدیر عامل Pulumi در مصاحبه ای اشاره می کند، حتی اگر مخاطبان IaC نسبتاً کم باقی بماند، علاقه به پایتون و هوش مصنوعی در حال تسریع پذیرش است. در شرکت هایی که فناوری را به عنوان یک مزیت رقابتی می بینند، توسعه دهندگان در حال حفاری عمیق در زیرساخت ها هستند. IaC ابزار انتخابی آنها برای انجام موفقیت آمیز این کار است.

IT جدید

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

سپس محاسبات توزیع شد – موجی که با ماشین‌های مجازی شروع شد، با کانتینرها متورم شد، سپس با موج جزر و مدی با Kubernetes حرکت کرد – توسعه‌دهندگان را به انتهای عمیق زیرساخت‌های ابری سوق داد. عبارات «شفت به چپ» و «شما آن را می‌سازید، شما مالک آن هستید» پیش پا افتاده‌اند، مسئولیت‌های عمیق‌تری را که توسعه‌دهنده‌های معمولی امروز بر عهده دارند، منعکس می‌کنند. توسعه‌دهندگان نه تنها برنامه‌ها را می‌نویسند، بلکه همه کارهای دیگری را که زمانی در سرزمین متخصصان زیرساخت بود، انجام می‌دهند.

برقراری منابع و چارچوب‌های محاسباتی مستلزم زمان و دانش است، و هم برای توسعه‌دهندگان و هم برای تیم‌های پلتفرم یک وضعیت دائمی درهم شکستن بوده است که آنها را قادر می‌سازد انتزاع مناسب را برای دقیقاً آنچه که رابط توسعه‌دهنده باید برای منابع ابری باشد بیابند. جاوا اسکریپت مرورگر وب را قابل برنامه ریزی کرد و باعث رنسانس برنامه های کاربردی وب و تجربیات تلفن همراه شد که هنوز در جریان است. ما در آستانه یک پیشرفت مشابه در ایجاد زیرساخت های ابری واقعاً قابل برنامه ریزی برای توسعه دهندگان هستیم.

به روز رسانی GitHub Copilot شامل فیلتر آسیب پذیری امنیتی است

اولین امواج زیرساخت به عنوان کد

زیرساخت به عنوان کد (IaC) امروزه بسیار محبوب است، اما در واقع چیز جدیدی نیست. قدمت این مفهوم به بیش از ۵۰ سال قبل برمی‌گردد و اصول اولیه زیرساخت‌های خودکارسازی را توصیف می‌کند. همانطور که معماری نرم‌افزار محور (SOA) معماری برنامه‌ها را از برنامه‌های کاربردی یکپارچه به الگوهای میکروسرویس تکامل داد، IaC حرکت آهسته‌سوزی بوده است که بلوک‌های ساختمانی پایه برای نحوه تفکر ما از زیرساخت‌های ابری را به چالش می‌کشد.

IaC در دهه ۲۰۱۰، زمانی که Puppet، Chef و Ansible روش‌های IaC را برای پیکربندی ماشین‌های مجازی معرفی کردند، واقعاً روی نقشه قرار گرفت. سرآشپز به دلیل اجازه دادن به توسعه دهندگان برای استفاده از زبان های برنامه نویسی مانند Ruby و استفاده مجدد و به اشتراک گذاری که با استفاده از قراردادهای یک زبان آشنا همراه بود، بسیار محبوب بود.

در طول دهه بعد، جنبش IaC وارد عصر جدیدی شد، زیرا پلتفرم‌های ارائه‌دهنده ابر عمومی به بلوغ رسیدند و Kubernetes به مدل عملی ابری تبدیل شد. HashiCorp’s Terraform تبدیل به فرزند پوستر IaC شد و انتزاعات جدیدی را برای پیکربندی منابع ابری معرفی کرد و یک زبان خاص دامنه (DSL) به نام HashiCorp Configuration Language (HCL) را ارائه کرد که برای دوری از توسعه دهندگان از لوله کشی زیرساخت های ابری سطح پایین طراحی شده است. AWS CloudFormation و Azure Resource Management دو رقیب دیگر در این موج IaC بودند.

آیا زبان‌های خاص دامنه اشتباه بوده است؟

در آن تکامل به DSLها، جو دافی، مدیر عامل Pulumi معتقد است که جنبش IaC مسیر اشتباهی را طی کرد. او می‌گوید: «من سال‌ها را در جامعه زبان‌های برنامه‌نویسی گذراندم، و ضرب‌المثلی داشتیم که «هر زبان خاص دامنه‌ای به‌طور تصادفی و بد طراحی شده یک زبان برنامه‌نویسی همه‌منظوره بزرگ می‌شود.» پیچیدگی ابر DSL ها، YAML و زبان های نشانه گذاری را می شکند.

دافی می‌گوید مشکل کلی DSLها این است که چگونه توسعه‌دهندگان و تیم‌های مهندسی پلتفرم را از مدیریت زیرساخت‌های ابری با قراردادهای زبان برنامه‌نویسی آشنا دور می‌کنند. دافی می‌گوید: «مسلماً اگر به IaC نگاه کنید، به آرامی چرخ را از غنای زبان، انتزاع و استفاده مجدد، مدیران بسته‌ها، ابزارهای تست، تجزیه و تحلیل استاتیک، ویرایشگرها و امکانات آنها مانند تکمیل بیانیه، بررسی خطاهای تعاملی و مستندسازی، بازسازی و بسیاری موارد دیگر. تله‌ها یک باغ دیواری هستند که به طور فعال توسعه‌دهندگان را از بهره‌برداری از قابلیت‌های ابری منع می‌کند و در عین حال بهره‌وری تیم زیرساخت را مختل می‌کند.”

معایب راه حل های بومی ابری

استفاده از زبان های آشنا با زیرساخت ابر

دافی پیشنهاد می‌کند: «درمان کردن با توسعه‌دهندگان با دستکش‌های کودکان در مورد فضای ابری اشتباهی است که من همیشه می‌بینم». IaC هیجان‌انگیز است زیرا کل فضای ابری را به مجموعه‌ای از بلوک‌های ساختمانی قابل برنامه‌ریزی و ترکیبی تبدیل می‌کند که می‌توان از آن برای ساخت برنامه‌های کاربردی غنی‌تر و قدرتمندتر استفاده کرد. به عنوان یک صنعت، ما فراتر از سرورهای برنامه کاربردی تک ماشینی و سیستم عامل های تک ماشینی به محاسبات توزیع شده در فضای ابری که توسط Kubernetes تنظیم شده است، حرکت کرده ایم. اما در جایی که رویکردهای DSL به IaC سعی می‌کنند این پیچیدگی زیرساخت را از توسعه‌دهندگان پنهان کنند، Pulumi به توسعه‌دهندگان اجازه می‌دهد از قراردادهای داخلی در زبان‌های برنامه‌نویسی که قبلاً به‌عنوان رابط اصلی برای ابر استفاده می‌کنند استفاده کنند.

دافی تأکید می‌کند: «من به شدت احساس می‌کنم که هر جا که بتوانیم روی شانه‌های غول‌ها بایستم». “مشکلات سخت به اندازه کافی برای حل وجود دارد. ما نیازی به ساخت نمونه‌های مصنوعی فقط برای سرگرمی نداریم.»

رویکرد پولومی به IaC زیرساخت‌های چندزبانه است و از Node.js (جاوا اسکریپت، TypesScript)، Python، Go، .Net (C#، F#، VB) و جاوا پشتیبانی می‌کند. کاتالوگ ارائه دهندگان Pulumi پشتیبانی شده بیش از ۱۵۰ ارائه دهنده زیرساخت مختلف را در بر می گیرد – و نه فقط ابرهای بزرگ، بلکه شرکت هایی مانند Cloudflare، Snowflake، MongoDB، Confluent، و بسیاری دیگر.

دافی می‌گوید: «استفاده از زبان‌هایی که [توسعه‌دهندگان] از قبل می‌دانند، مانع ذهنی بزرگی را از انجام IaC برطرف می‌کند. منابع ابری را به بلوک‌های ساختمانی قابل برنامه‌ریزی تبدیل می‌کند که می‌توانند درست مانند هر شیء دیگر به زبان مورد علاقه‌شان به هم بچسبند.» گرفتاری چیست؟ همانطور که او ادامه می دهد، «بخش سخت پس از آن یادگیری در مورد آن بلوک های ساختمانی خاص است، که مسلماً «پیچیدگی واقعی» ذاتی حوزه مشکل است. اساساً، استفاده از یک زبان آشنا تمام پیچیدگی های تصادفی را از بین می برد، مه را از بین می برد و به مردم اجازه می دهد فقط روی حل مشکلات واقعی تمرکز کنند.”

پرداختن به توهمات هوش مصنوعی با نسل افزوده بازیابی

یک رویکرد زبان اول به زیرساخت

وقتی به حوزه‌های زیرساخت برنامه‌های کاربردی در زبان‌های بالغ فکر می‌کنیم، مانند جاوا با J2EE و قابلیت‌های گسترده جاوا برای مدیریت همزمان و کد چند رشته‌ای، توسعه‌دهندگان دهه‌ها تجربه سختی در استفاده از زبان‌های اولیه مورد علاقه خود دارند. به گفته دافی، این تمایل اولیه توسعه دهندگان و تیم های پلتفرم برای استفاده از قراردادهای زبانی که قبلاً با آنها آشنا هستند، به ویژه در پایتون و هوش مصنوعی قوی است. در جایی که DSL ها برای مقابله با پیچیدگی باید خم شوند و بپیچند، زبان های بالغی مانند پایتون این مشکلات مقیاس را خارج از جعبه حل می کنند.

دافی می‌گوید: «کلاد یک ابر رایانه غول‌پیکر است و هوش مصنوعی بزرگترین مصرف‌کننده آن ابر رایانه است که تا به حال دیده‌ایم». در این دنیا، توانایی برنامه‌ریزی انعطاف‌پذیر ابررایانه و مقابله با پیچیدگی‌هایی که در آن مقیاس پدیدار می‌شوند، دقیقاً دلیل ایجاد زبان‌های برنامه‌نویسی شگفت‌انگیز برای شروع است.» توسعه‌دهندگان واقعاً نمی‌خواهند با زیرساخت‌ها کار کنند. دافی می‌گوید: «اگرچه زیرساخت‌ها همه این تجربیات جدید هوش مصنوعی را تقویت می‌کنند، اما این چیزی نیست که اکثر مهندسان هوش مصنوعی صبح‌ها به آن فکر می‌کنند. “استفاده از Python آن را از یک فکر بعدی درهم و برهم به یک چیز زیبا و قابل برنامه ریزی زیبا تبدیل می کند، درست مانند هر نرم افزار دیگری.”

این نبرد بین DSL ها در مقابل زبان های برنامه نویسی عمومی در فضای IaC جدید نیست. در سال ۲۰۲۰، درباره مدل‌های جدید زبان‌های برنامه‌نویسی اعلامی نوشتم و اینکه چگونه آنها با زبان‌های ضروری در این دامنه IaC در تضاد هستند. چیزی که در این نبرد زبانی اعلامی IaC در مقابل زبان همه منظوره جدید است، هجوم طلایی هوش مصنوعی است. پایتون بیل‌هایی است که ده‌ها میلیون توسعه‌دهنده از آن استفاده می‌کنند، و در این لحظه انگیزه خاصی وجود دارد که بتوانید از طریق لنز زبان اصلی خود درباره زیرساخت‌ها استدلال کنید.