راهنمایی برای ایجاد یک وب اپلیکیشن به عنوان سرویس و خدمات (SaaS)

با سلام خدمت همه شما دوستان و متخصصین گرامی
من برای پیاده سازی ایده ای که در ذهن داشتم شروع به یادگیری زبان برنامه نویسی پایتون کردم و الان هم در حال یادگیری وب فریمورک فلسک (Flask) و تمپلت انجین Jinja هستم.
ولی به این دلیل که تازه کار هستم ( از اسم کاربریم هم معلومه البته :slight_smile: ) یک سری سوالات برام هست که راهکارهاش رو نمیدونم ( که صد البته کم هم نیست :sweat_smile: ).

یک سری از این سوالات رو در این تاپیک مطرح میکنم و پیشاپیش از عزیزانی که من رو در خصوص این سوالات راهنمایی میکنند تشکر و قدردانی میکنم .

برنامه که مدنظر دارم پیاده سازیش کنم در واقع میشه گفت یک سرویس CMS مانند هست .

2 روش برای ارایه به کلاینت به ذهنم میرسه :

A - که در واقع این وب اپلیکیشن روی سروری که مربوط به خودمون هست ران و ارایه بشه ، و بعد کلاینت ها بتونند در پنلشون در سایت ما دامین یا ساب دامنه اختصاصی خودشون رو ثبت کنند و با تغییر دی ان اس اون از طریق دامنه خودشون به سرویس دسترسی داشته باشند .

B - که فرض بفرمایید این CMS بصورت یک بسته نصبی ( مثل وردپرس ) ارایه بشه و در زمان نصب نیاز باشه کلاینت لایسنسی رو که خریداری کرده وارد کنه و بتونه محصول رو بر روی دامنه خودش نصب کنه، بدون اینکه نیاز به دانش برنامه نویسی داشته باشه و با یک راهنما بتونه این کار رو انجام بده.

در خصوص روش A میشه بفرمایید نیازمندی هاش برای اجرا به این صورت چیه ؟ چه مواردی رو باید یادبگیرم برای انجام و ارایه سرویس به این صورت

در خصوص روش B آیا برای وب اپلیکیشنی که با پایتون و فلسک پیاده سازی بشه این روش قابل انجام هست؟ و آیا در این روش میشه به نحو احسن از کدها مراقب و محافظت کرد؟

سوال سوم ، چون در ابتدای کار با Jinja هستم ، میخواستم بدونم آیا با استفاده از این تمپلت انجین آیا این امکان رو میشه بوجود آورد که کلاینت بتونه بدون نیاز به دسترسی به کدهای وب اپلیکیشن فقط با آشنایی با مبحث فرانت اند بتونه قالب وب اپلیکیشن رو بر حسب نیازش تغییر بده؟

ممنون میشم بنده رو در خصوص هرکدام از موارد بالا راهنمایی بفرمایید و منابعی برای این موارد اگر باهاش برخورد کردید رو معرفی بفرمایید.

سلام و خوش اومدید.

برای هر دو روش، علاوه بر دانش برنامه نویسی پایتون، نیاز به دانش لینوکس بالایی دارید.
برای روش اول نیاز به دونستن dns و نحوه‌ی کار کردش هستید و همچنین باید با bind9 آشنایی کامل داشته باشید و بتونید اسکریپتهایی (یا پایتون و یا shell) بنویسید که کانفیگهای dns رو مدیریت کنه.
برای روش دوم نیاز به یه نرم‌افزار installer دارید. که بهتره با shell script نوشته بشه (تا پایتون و بقیه‌ی نیازمندیهای سیستم رو برای کاربر نصب و راه‌اندازی کنه) به علاوه باید بتونید سیستم‌عاملهای مختلف رو کانفیگ کنید و تجربه‌ی دیپلوی نرم‌افزار پایتون (flask + uwsgi + nginx + mysql/pgsql) داشته باشید (روی سیستم‌عاملهای مختلف حداقل debian و ubuntu و centos که بیشتر از بقیه استفاده میشه)

درمورد بحث لایسنس، نمیتونم اطمینان بدم که کاربر قرار نیست لایسنس رو کرک کنه و حداقل کاری که باید انجام بشه (که این هم جلوی کرک شدن رو نمیگیره) اینه که لایسنس با سرور اصلی پروژه چک بشه.
از اونجایی که پایتون، یک زبان اسکریپتی هست، باید سورس رو به کاربر ارائه بدید. تقریبا راهی برای بستن سورس وجود نداره. بنابر این، کلا این روش رو برای درآمد زایی پیشنهاد نمیکنم. مگر اینکه پلن درآمدزایی دیگه‌ای داشته باشید (مثل gitlab که دو نسخه داره. یکی رایگان و دیگری روی سرورهای خودشه)

1 Like

ممنونم از وقتی که برای پاسخ و راهنمایی بنده گذاشتید .
من هم خودم تمایلم به ارایه محصول به روش A که در واقع برای کلاینت و شاید خود من به عنوان ارایه دهنده هم کمترین دردسر رو خواهد داشت.
پس در واقع مسیر طولانی مدتی رو در پیش دارم برای یادگیری مواردی که فرمودید . و حتی با پیاده سازی نمونه اولیه سرویس نمیشه به راحتی پیادش کرد . ( البته برای من تازه کار) :neutral_face:

1 Like

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

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

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

در خصوص پروژه ای که مثال هم زدم در واقع برای شروع بیشتر یک ابزار کوچک و کاربردی برا قشر خاصی خواهد بود که چون باهاشون سرکار دارم بررسی کردم دیدم با یک سری ابزار ساده میشه خیلی از مشکلات رو در اون حوزه حل کرد و این رو بهونه ای کردم برای خودم که یادگیری پایتون رو با انجام این ایده جمع ببندم ، که هم کمتر خسته بشم هم شور و شوق یادگیری رو بتونم حفظ کنم .
بیشتر یک Fun هست ( که البته میتونه از لحاظ تجاری هم بهش نگاه کرد ) . دلیل من هم برای انتخاب یک روش برای عرضه اون از میان یکی دو روش بالا که عنوان کردم به این دلیل هست که این قشر سر رشته ای از کامپیوتر و نرم افزار ندارند ، پس بهتره به نحوی ارایه بشه که با کمترین سختی ، هزینه و زمان بتونن فرصت استفاده ازش رو داشته باشند .

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

باز هم از دوستانی همچون شما و دیگر عزیزانی که در این فروم که میبینم بی مزد و منت وقتشون رو برای کمک به بقیه میگزارند تشکر میکنم ، و همچنین پایه گذاران عزیز این مجموعه که موجبات دور هم جمع شدن رو فراهم کردند.:pray:

1 Like

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

راستی، برای css من Bulma رو پیشنهاد میکنم. علاوه بر سادگی و کاستومایز زیاد و راحت، یه سری تم آماده هم داره که میتونید به کاربرها امکان انتخاب بدید.

بله ، Bulma رو قبلا اتفاقی دیده بودم ، ولی وقتی میخواستم پیداش کنم بعد از یه مدت اصلا اسمش به ذهنم نمیرسید تا اینکه دیدم شما معرفیش کردید و لینکش رو قرار دادید :pray:

موافقم با نظر شما . سعی میکنم اگر کار آبرومندی شد در گیت و فروم قرارش بدم ( کدهایی رو که زدم + مراحلی که طی کردم ) رو تا هم توسط با تجربه ها دیده بشه و ایراداتی رو که مشاهده فرمودند لطف کنند و گوشزد کنند ، و هم شاید بعدا برای کسی که مثل من تجربه های اولش با این زبان و فریمورک باشه بتونه راهنمای مثبتی تلقی بشه.

از شما و بقیه دیگر دوستان و متخصصین عزیز انجمن هم میخوام بر بنده منت بگذارند و اگر که در خصوص پایتون و فریمورک هاش برای ایجاد وب اپلیکیشن ها نکته ای کوتاه ، منبعی یا کدی که بتونه مسیر من رو در بدست آوردن تجربه کوتاه تر کنه دارند و بهش برخورد کردند رو عنوان بفرمایند.

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

پایتون زبون خوبیه قابلیتها و لایبرریهای زیادی هم داره. بهترین نیست (بهترین نداریم!) ولی جزء ۱۰تای اوله.
از نظر من flask بهترین انتخابه بین لایبرریهای وب پایتون.

برای وب، اگه دنبال جایگزین میگردید، ruby رو پیشنهاد میکنم گرچه خودم پایتون رو ترجیه میدم.