چک لیست برای ایجاد و انتشار برنامه های کاربردی وب

برای ایجاد برنامه وب خود در زمان ما، کافی نیست که بتوانید آن را توسعه دهید. یک جنبه مهم، راه اندازی ابزارهایی برای استقرار برنامه، نظارت، و همچنین مدیریت و مدیریت محیطی است که در آن کار می کند. همانطور که دوران استقرار دستی در حال فراموشی است، حتی برای پروژه های کوچک، ابزارهای اتوماسیون می توانند مزایای ملموسی را به همراه داشته باشند. هنگام استقرار "با دست"، اغلب می توانیم فراموش کنیم چیزی را جابجا کنیم، این یا آن تفاوت ظریف را در نظر بگیریم، آزمایش فراموش شده را اجرا کنیم، این لیست را می توان برای مدت طولانی ادامه داد.

این مقاله ممکن است به کسانی کمک کند که به تازگی اصول ایجاد برنامه های کاربردی وب را یاد می گیرند و می خواهند کمی در مورد شرایط و قراردادهای اساسی بدانند.

بنابراین، ساختن برنامه ها هنوز هم می تواند به 2 قسمت تقسیم شود: هر چیزی که به کد برنامه مربوط می شود و هر چیزی که به محیطی که این کد در آن اجرا می شود مربوط می شود. کد برنامه نیز به نوبه خود به کد سرور (که اغلب بر روی سرور اجرا می شود: منطق تجاری، مجوز، ذخیره سازی داده ها و غیره) و کد مشتری (که در دستگاه کاربر اجرا می شود: اغلب) تقسیم می شود. رابط، و منطق مرتبط با آن).

بیایید از چهارشنبه شروع کنیم.

اساس کار هر کد، سیستم یا نرم افزاری سیستم عامل است، بنابراین در زیر به محبوب ترین سیستم های موجود در بازار هاستینگ می پردازیم و توضیح مختصری در مورد آنها خواهیم داد:

ویندوز سرور - همان ویندوز، اما در یک تغییر سرور. برخی از عملکردهای موجود در نسخه کلاینت (عادی) ویندوز در اینجا وجود ندارد، به عنوان مثال، برخی از خدمات برای جمع آوری آمار و نرم افزارهای مشابه، اما مجموعه ای از ابزارهای کمکی برای مدیریت شبکه، نرم افزار پایه برای استقرار سرورها (وب، ftp، ...). به طور کلی، ویندوز سرور شبیه ویندوز معمولی است، مانند ویندوز معمولی، با این حال، 2 برابر بیشتر از همتای معمولی خود هزینه دارد. با این حال، با توجه به اینکه به احتمال زیاد برنامه را روی یک سرور اختصاصی/مجازی مستقر خواهید کرد، هزینه نهایی برای شما، اگرچه ممکن است افزایش یابد، حیاتی نیست. از آنجایی که پلتفرم ویندوز جایگاه قابل توجهی در بازار سیستم عامل مصرف کننده دارد، نسخه سرور آن برای اکثر کاربران آشناترین نسخه خواهد بود.

یونیکس-سیستم مشابه کار سنتی در این سیستم ها نیازی به حضور یک رابط گرافیکی آشنا ندارد و تنها یک کنسول را به عنوان عنصر کنترل به کاربر ارائه می دهد. برای یک کاربر بی تجربه، کار در این قالب می تواند دشوار باشد، فقط هزینه خروج از یک ویرایشگر متنی که در داده ها بسیار محبوب است چقدر است. نیرو، یک سوال مرتبط با این موضوع در 6 سال گذشته بیش از 1.8 میلیون بازدید داشته است. توزیع های اصلی (ویرایش) این خانواده عبارتند از: Debian - یک توزیع محبوب، نسخه های بسته در آن عمدتاً بر روی LTS متمرکز شده است (پشتیبانی طولانی مدت - پشتیبانی برای مدت طولانی)، که در قابلیت اطمینان و پایداری نسبتاً بالا سیستم و بسته ها بیان می شود. اوبونتو – حاوی توزیع‌هایی از همه بسته‌ها در آخرین نسخه‌هایشان است که ممکن است بر ثبات تأثیر بگذارد، اما به شما امکان می‌دهد از عملکردی که با نسخه‌های جدید ارائه می‌شود استفاده کنید. Red Hat Enterprise Linux – OS، که برای استفاده تجاری قرار گرفته است، پرداخت می شود، اما شامل پشتیبانی از فروشندگان نرم افزار، برخی بسته های اختصاصی و بسته های درایور می شود. CentOS - منبع باز نوعی از لینوکس Red Hat Enterprise که با عدم وجود بسته های اختصاصی و پشتیبانی مشخص می شود.

برای کسانی که تازه شروع به تسلط بر این حوزه کرده اند، توصیه من سیستم ها خواهد بود ویندوز سروریا اوبونتو. اگر ویندوز را در نظر بگیریم، این در درجه اول آشنایی سیستم است، اوبونتو - تحمل بیشتر نسبت به به روز رسانی ها، و به نوبه خود، برای مثال، مشکلات کمتری در هنگام راه اندازی پروژه هایی در مورد فناوری هایی که به نسخه های جدید نیاز دارند.

بنابراین، پس از تصمیم گیری در مورد سیستم عامل، بیایید به مجموعه ای از ابزارها برویم که به شما امکان می دهند (نصب)، به روز رسانی و نظارت بر وضعیت برنامه یا قطعات آن در سرور را انجام دهید.

تصمیم مهم بعدی قرار دادن اپلیکیشن شما و سرور آن خواهد بود. در حال حاضر، رایج ترین آنها 3 راه است:

  • میزبانی (نگهداری) سرور به تنهایی مقرون به صرفه ترین گزینه است، اما باید یک IP ثابت از ارائه دهنده خود سفارش دهید تا منبع شما در طول زمان آدرس خود را تغییر ندهد.
  • یک سرور اختصاصی (VDS) اجاره کنید - و به طور مستقل آن را مدیریت کنید و بارها را مقیاس کنید
  • برای اشتراک در برخی از هاست های ابری، که در آن مدل پرداخت برای منابع مورد استفاده بسیار رایج است، پرداخت کنید (اغلب به شما فرصتی می دهند تا عملکرد پلت فرم را به صورت رایگان امتحان کنید). برجسته ترین نمایندگان این جهت: Amazon AWS (یک سال رایگان استفاده از خدمات را می دهند، اما با محدودیت ماهانه)، Google Cloud (300 دلار به حساب می دهند که می تواند در طول سال در خدمات میزبانی ابری خرج شود) ، Yandex.Cloud (آنها 4000 روبل می دهند. برای 2 ماه)، Microsoft Azure (دسترسی رایگان به خدمات محبوب برای یک سال، + 12 روبل برای هر سرویس برای یک ماه). بنابراین، شما می توانید هر یک از این ارائه دهندگان را بدون صرف یک ریال، اما نظر تقریبی در مورد کیفیت و سطح خدمات ارائه شده، امتحان کنید.

بسته به مسیر انتخاب شده، تنها چیزی که در آینده تغییر خواهد کرد این است که چه کسی تا حد زیادی مسئول این یا آن حوزه مدیریت است. اگر خود را میزبانی می کنید، پس باید درک کنید که هرگونه وقفه در برق، اینترنت، خود سرور، نرم افزار مستقر در آن - همه اینها کاملاً بر روی شانه های شما قرار دارد. با این حال، برای آموزش و آزمایش، این بیش از حد کافی است.

اگر ماشین اضافی ندارید که بتواند نقش یک سرور را بازی کند، باید از راه دوم یا سوم استفاده کنید. مورد دوم مشابه مورد اول است، با این تفاوت که شما مسئولیت در دسترس بودن سرور و قدرت آن را به دوش هاست منتقل می کنید. مدیریت سرور و نرم افزار همچنان تحت کنترل شماست.

و در نهایت گزینه اجاره ظرفیت ارائه دهندگان ابر. در اینجا می توانید کنترل خودکار تقریباً هر چیزی را بدون پرداختن به جزئیات فنی زیاد تنظیم کنید. علاوه بر این، به جای یک ماشین، می توانید چندین نمونه در حال اجرا موازی داشته باشید، که به عنوان مثال می توانند مسئولیت بخش های مختلف برنامه را بر عهده بگیرند، در حالی که از نظر هزینه تفاوت زیادی با داشتن یک سرور اختصاصی ندارند. و همچنین، ابزارهایی برای ارکستراسیون، کانتینرسازی، استقرار خودکار، ادغام مداوم و موارد دیگر وجود دارد! در ادامه به برخی از این موارد خواهیم پرداخت.

به طور کلی، زیرساخت سرور به این شکل است: ما یک "ارکستراتور" داریم ("ارکستراسیون" فرآیند مدیریت چندین نمونه سرور است)، که تغییرات محیطی را در یک نمونه سرور مدیریت می کند، یک ظرف مجازی سازی (اختیاری، اما کاملاً کاملاً). اغلب مورد استفاده قرار می گیرد)، که به شما امکان می دهد برنامه را به لایه های منطقی ایزوله و نرم افزار Continuous Integration تقسیم کنید - به روز رسانی ها برای کد میزبان از طریق "اسکریپت ها" اجازه می دهد.

بنابراین، ارکستراسیون به شما امکان می‌دهد وضعیت سرورها را ببینید، به‌روزرسانی‌ها را در محیط سرور منتشر یا بازگردانید و غیره. در ابتدا، بعید است که این جنبه روی شما تأثیر بگذارد، زیرا برای هماهنگ کردن هر چیزی، به چندین سرور نیاز دارید (می توانید یکی داشته باشید، اما چرا این لازم است؟)، و برای داشتن چندین سرور، به آنها نیاز دارید. در میان ابزارهای موجود در این جهت، محبوب ترین ابزار Kubernetes است که توسط آن توسعه یافته است گوگل.

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

علاوه بر این، علاوه بر فراهم کردن محیط، ما نیاز به اطمینان از استقرار مناسب برنامه داریم که شامل انواع تبدیل کد، نصب کتابخانه ها و بسته های مرتبط با برنامه، آزمایش های در حال اجرا، اعلان های مربوط به این عملیات و غیره است. در اینجا ما باید به مفهومی مانند "ادغام مداوم" توجه کنیم (CI - یکپارچه سازی مداوم). ابزارهای اصلی در این زمینه در حال حاضر جنکینز هستند (نرم افزار CI نوشته شده در جاوا ممکن است در ابتدا کمی پیچیده به نظر برسد) تراویس CI (نوشته شده در روبی، ذهنی، تا حدودی ساده تر جنکینزبا این حال، دانشی در زمینه پیکربندی استقرار هنوز مورد نیاز است. Gitlab CI (نوشته شده روی روبی و برو).

بنابراین، پس از صحبت در مورد محیطی که برنامه شما در آن کار می کند، زمان آن فرا رسیده است که در نهایت به بررسی ابزارهایی که دنیای مدرن برای ایجاد همین برنامه ها به ما ارائه می دهد، بپردازیم.

بیایید با اصول اولیه شروع کنیم: بخش مدیریت (باطن) - بخش سرور. انتخاب زبان، مجموعه ای از توابع اساسی و ساختار از پیش تعریف شده (چارچوب) در اینجا عمدتاً با ترجیحات شخصی تعیین می شود، اما با این وجود، قابل ذکر است (نظر نویسنده در مورد زبان ها کاملاً ذهنی است، اگرچه با یک ادعا. به یک توصیف بی طرفانه):

  • پایتون یک زبان نسبتاً دوستانه برای یک کاربر بی تجربه است، برخی از اشتباهات را می بخشد، اما همچنین می تواند با توسعه دهنده کاملاً سختگیر باشد تا کار بدی انجام ندهد. قبلاً یک زبان نسبتاً بالغ و معنادار است که در سال 1991 ظاهر شد.
  • Go - زبانی از Google، همچنین بسیار دوستانه و راحت است، کامپایل کردن و دریافت فایل اجرایی در هر پلتفرمی بسیار آسان است. می تواند ساده و دلپذیر باشد یا می تواند پیچیده و جدی باشد. تازه و جوان، نسبتاً اخیراً در سال 2009 ظاهر شد.
  • Rust کمی بزرگتر از همکار قبلی خود است که در سال 2006 منتشر شد، اما در مقایسه با همتایان خود هنوز کاملاً جوان است. با هدف توسعه دهندگان با تجربه تر، اگرچه هنوز سعی می کند بسیاری از وظایف سطح پایین را برای برنامه نویس حل کند.
  • جاوا یک کهنه کار توسعه تجاری است که در سال 1995 معرفی شد و امروزه یکی از رایج ترین زبان های مورد استفاده در توسعه برنامه های کاربردی سازمانی است. با مفاهیم اولیه و تنظیمات سنگین، زمان اجرا می تواند برای یک مبتدی بسیار چالش برانگیز باشد.
  • ASP.net یک پلتفرم توسعه اپلیکیشن است که توسط مایکروسافت منتشر شده است. برای نوشتن عملکرد، زبان سی شارپ (تلفظ C شارپ)، که در سال 2000 ظاهر شد، عمدتا استفاده می شود. پیچیدگی آن با سطح بین جاوا و Rust قابل مقایسه است.
  • PHP که در ابتدا برای پیش پردازش HTML استفاده می شد، در حال حاضر، اگرچه رهبری مطلق را در بازار زبان دارد، روندی به سمت کاهش استفاده وجود دارد. آستانه ورودی پایین و سهولت در نوشتن کد دارد، اما در عین حال، هنگام توسعه برنامه های نسبتاً بزرگ، ممکن است عملکرد زبان کافی نباشد.

خوب، آخرین بخش برنامه ما - ملموس ترین برای کاربر - ظاهر (frontend) – چهره برنامه شماست؛ با این قسمت است که کاربر مستقیماً در تعامل است.

بدون پرداختن به جزئیات، پیشانی مدرن بر روی سه ستون، چارچوب ها (و نه چندان زیاد)، برای ایجاد رابط های کاربری ایستاده است. بر این اساس، سه محبوب ترین عبارتند از:

  • ReactJS یک چارچوب نیست، بلکه یک کتابخانه است. در واقع، این فریم ورک تنها در نبود برخی از توابع "خارج از جعبه" و نیاز به نصب دستی آنها با عنوان افتخار خود متفاوت است. بنابراین، انواع مختلفی از "آماده سازی" این کتابخانه وجود دارد که چارچوب های منحصر به فردی را تشکیل می دهد. به دلیل برخی اصول اولیه و تنظیمات کاملاً تهاجمی محیط ساخت، ممکن است برای یک مبتدی کمی سخت باشد. با این حال، برای شروع سریع، می توانید از بسته "create-react-app" استفاده کنید.
  • VueJS چارچوبی برای ساخت رابط کاربری است. از این سه گانه، به حق عنوان کاربرپسندترین چارچوب را به خود اختصاص داده است؛ برای توسعه در Vue، مانع ورود کمتر از سایر برادران ذکر شده است. علاوه بر این، او جوان ترین در میان آنها است.
  • Angular پیچیده ترین این فریم ورک ها در نظر گرفته می شود، تنها موردی که نیاز دارد TypeScript (افزونه برای زبان جاوا اسکریپت). اغلب برای ساخت برنامه های بزرگ سازمانی استفاده می شود.

با خلاصه کردن آنچه در بالا نوشته شد، می‌توان نتیجه گرفت که اکنون استقرار یک برنامه کاربردی با نحوه انجام این فرآیند قبلاً متفاوت است. با این حال، هیچ کس شما را از انجام "استقرار" به روش قدیمی منع نمی کند. اما آیا زمان اندکی که در ابتدا ذخیره می شود ارزش تعداد زیادی اشتباه را دارد که توسعه دهنده ای که این مسیر را انتخاب می کند باید روی آن قدم بگذارد؟ من معتقدم که پاسخ منفی است. با صرف زمان کمی بیشتر برای آشنایی با این ابزارها (و نیازی به بیش از آن ندارید، زیرا باید بفهمید که آیا در پروژه فعلی خود به آنها نیاز دارید یا خیر)، می توانید آن را به طور قابل توجهی کاهش دهید، به عنوان مثال ، موارد خطاهای ارواح بسته به محیط و که فقط در سرور تولید ظاهر می شوند، تجزیه و تحلیل شبانه از آنچه منجر به خرابی سرور شده و چرا شروع نمی شود، و موارد دیگر.

منبع: www.habr.com

اضافه کردن نظر