Md Daily – Telegram
Md Daily
725 subscribers
239 photos
15 videos
21 files
283 links
راجب مقالات و مستندات فنی یا غیر فنی که میخونم و علایقم اینجا مینویسم :)


گروه کانال: https://news.1rj.ru/str/MdDailyGap

کورس ها: https://news.1rj.ru/str/MdDaily/395

وبلاگ: https://mddaily.ir
Download Telegram
Md Daily
#ام_دی_کورس اگه یه روزی تو مصاحبه ازتون بپرسن شما چطوری وبسایت Stack Overflow رو طراحی می کردید و شما بگید با استفاده از سرورهای On-premises (سرورهای فیزیکی هستند که در مکان یک شرکت قرار می‌گیرند و توسط یک سازمان میزبانی و نگه‌داری می شوند) و معماری یک پارچه…
#ام_دی_کورس

مصاحبه کننده احتمالاً انتظار یه سیستم خفن با این ویژگی‌ها رو داره:

* سیستم رو به چندتا سرویس کوچیک تقسیم کنن.
* هر سرویس یه دیتابیس خودش رو داشته باشه.
* از کشینگ پیشرفته در همه ی بخش ها استفاده کنن.
* سرویس ها به صورت غیرهمزمان از طریق صف پیام با یکدیگر ارتباط برقرار می کنن.
* سیستم رو با استفاده از Event Sourcing با CQRS پیاده سازی کنن.
* دانششون رو در مورد سیستم های توزیع شده به رخ بکشن.

آنچه در واقعیت است:

وبسایت Stack Overflow با 9 تا سرور On-premises، کل ترافیک رو پوشش میده و سیستمش یکپارچه (monolith) هست! سرورهای خودش رو داره و روی ابر اجرا نمیشه.

خلاصه اینکه همه فکر میکنن سیستم های بزرگ باید پیچیده و مدرن باشن، اما Stack Overflow با یه سیستم ساده و قدیمی، کار می کنه و موفق هم هست.

ادامه در پست بعدی ...

🆔 @MdDaily
👍74🔥1
Md Daily
#ام_دی_کورس مصاحبه کننده احتمالاً انتظار یه سیستم خفن با این ویژگی‌ها رو داره: * سیستم رو به چندتا سرویس کوچیک تقسیم کنن. * هر سرویس یه دیتابیس خودش رو داشته باشه. * از کشینگ پیشرفته در همه ی بخش ها استفاده کنن. * سرویس ها به صورت غیرهمزمان از طریق صف پیام…
#ام_دی_کورس

سوالی که پیش میاد اینکه Monolith یا Microservice کدوم معماری بهتر هستش؟

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

معماری میکروسرویس با این ایده میاد که برنامه رو به بخش های کوچیک تقسیم کنیم و هر بخش فقط یک کار را مستقل از بقیه بخش ها انجام بده. مثلا اگه شما یک سایت فروشگاهی دارید و قرار هست به صورت میکروسرویس طراحی بشه معماری شما به این صورت میشه:
سرویس محصولات - سرویس مدیریت کاربران - سرویس سفارشات - سرویس پرداخت - سرویس تحویل .
و هرکدوم از این سرویس ها باید در فضای جداگانه ای اجرا شوند و از طریق API باهم دیگه در ارتباط باشند .
پس معماری میکروسرویس برخلاف اسمش خیلی هم میکرو نیست . و هر ارتباط بین سرویس ها برای شما و تیمتون پیچیدگی ها و چالش های جدیدی را بوجود میارن که نگهداری پروژه رو نسبت به معماری یک پارچه سخت تر میکنه

خب چه زمانی باید از میکرو سرویس استفاده کنیم چه زمانی از معماری یکپارچه؟

باید ببینید نیاز پروژتون چیه . معماری میکرو سرویس برای اجرا نیاز به یک زیر ساخت ابری داره، آیا می تونید زیر ساختش رو تامین کنید؟ شایدم فکر کنید معماری میکروسرویس‌ها برای استارتاپ بسیار عالی هستش اما میکروسرویس‌ها همراه با ریسک‌های تجاری هم هستند.در این رابطه David Strauss می‌گه:

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


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

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

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

🆔 @MdDaily
👍83
سایت های رایگان برای hosting :
🗻Codeberg

🌐 Netlify

🏢 GitHub Pages

🚀 Surge

🔧 GitLab Pages

🔥 Firebase Hosting

👥 Bitbucket

🌟 Vercel

💻 Render

🤏 Tiiny host

🚀 AWS Amplify

🏰 Neocities

☁️ Cloudflare Pages

🌥 Gatsby Cloud

📃 Carrd

💾 Freehosting

🌎 InfinityFree

💻 000webhost

🏆 Awardspace

🔧 Byet Host

🐍 Pythonanywhere

🆔 @MdDaily
👍41👌1
سلام دوستان :)

خیلی خوشحالم که خانواده ی MdDaily در کنار شما عزیزان در حال بزرگ تر شدنه 🫶

این اخر هفته چه دوره ای رو داشته باشیم؟
4
با تشکر از تمام عزیزانی که توی نظر سنجی شرکت کردند ❤️

طبق نتیجه ی نظر سنجی از این هفته مجموعه دوره ی داکر رو شروع می کنیم و منابع مختلفی برای آماده کردن این دوره استفاده خواهد شد مثل کتاب های :

Docker in Action
Learning Docker

پ ن:
فایل پی دی اف کتاب ها را هم قبل از شروع دوره میفرستم
5
Md Daily
دوره ها:
نظر سنجی فقط برای اولویت دادن به ترتیب قرار گیری دوره ها تو کانال بود
تمام موضوعاتی که توی نظرسنجی هستند دوره هاشون توی کانال منتشر خواهد شد
2
#ام_دی_کورس

🐳 کرش کورس داکر

توی این دوره از آموزش های MdDaily قرار باهم یه نگاه سریعی به داکر بندازیم، ببینیم برای چی ساخته شده، چه مشکلی رو قرار حل کنه و در نهایت چطوری باید ازش استفاده کنیم، پس با من همراه باشید‌ :)

ادامه در پست بعدی...


🆔 @MdDaily
3🔥1
#ام_دی_کورس

فایل پی دی اف کتاب هایی که به عنوان source این دوره ازشون استفاده شده

👇🏻👇🏻👇🏻

🆔 @MdDaily
2🔥1
Md Daily
#ام_دی_کورس 🐳 کرش کورس داکر توی این دوره از آموزش های MdDaily قرار باهم یه نگاه سریعی به داکر بندازیم، ببینیم برای چی ساخته شده، چه مشکلی رو قرار حل کنه و در نهایت چطوری باید ازش استفاده کنیم، پس با من همراه باشید‌ :) ادامه در پست بعدی... 🆔 @MdDaily
#ام_دی_کورس

داکر چیه و چه مشکلی را قرار حل کنه؟

خب با در نظر گرفتن سناریو های مختلف به این سوال پاسخ میدیم:

سناریوی اول:

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

سناریوی دوم:

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

سناریوی سوم:

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

سناریوی چهارم:

شما چنتا تا پروژه دارید که هر کدوم از پروژه ها پیش نیاز های خودشون رو دارند و قرار روی سرور دیپلوی کنید، برای هر پروژه باید کانفیگ های جداگونه ای انجام بدید و ممکنه در این فرایند با کلی خطا و ناهماهنگی مواجه بشید

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

ادامه در پست بعدی...


🆔 @MdDaily
11👍1🔥1
#ام_دی_کورس

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

مگه چنتا ماشین مجازی رو میشه هم زمان روی یه سیستم برای هرکاری اجرا کرد :)

تفاوت داکر و مجازی ساز خیلی ساده و خلاصه اینکه:
مجازی ساز میاد یه سیستم عامل کامل را شبیه سازی میکنه ولی کانتینر های داکر فقط یه محیط ایزوله جدا از سیستم عامل اصلی ایجاد میکنن که از یه کرنل استفاده میشه


ادامه در پست بعدی...


🆔 @MdDaily
11🔥1
#ام_دی_کورس

توی دنیای داکر 3 مفهوم مهم و اساسی وجود داره:

📝 Dockerfile

💾 Image

📦 Container


در ادامه هر کدوم از این مفاهیم رو جداگونه بررسی میکنیم

ادامه در پست بعدی...


🆔 @MdDaily
1🔥1
#ام_دی_کورس

داکر فایل (Dockerfile) مثه یه دستور پخت میمونه، یه کد یا برنامه ایه که به داکر میگه چطوری Image ها را بیلد کنه

ادامه در پست بعدی...


🆔 @MdDaily
🔥2❤‍🔥1
Md Daily
#ام_دی_کورس داکر فایل (Dockerfile) مثه یه دستور پخت میمونه، یه کد یا برنامه ایه که به داکر میگه چطوری Image ها را بیلد کنه ادامه در پست بعدی... 🆔 @MdDaily
#ام_دی_کورس

داکر ایمیج(Image) یه فایلیه که حاوی همه چیز های لازم برای اجرای یه برنامه یا سرویسه. مثلاً اگه بخوایم یه وب سایت رو روی داکر اجرا کنیم، به یه داکر ایمیج نیاز داریم که حاوی کد وب سایت، سیستم عامل، کتابخانه ها و هر چیز دیگه ای باشه که وب سایت برای اجرا نیاز داره.

داکر ایمیج ها رو می تونیم با استفاده از دستورات داکر بسازیم یا از داکر رجیستری مثه داکر هاب دانلود کنیم. داکر رجیستری یه منبعیه که داکر ایمیج های آماده رو برای دانلود ارائه میده.

یا به عبارت دیگه می تونیم بگیم داکر ایمیج یه نسخه ی آماده ی یه برنامه یا سرویسه که میشه خیلی سریع و آسون اون رو اجرا کرد.


ادامه در پست بعدی...


🆔 @MdDaily
1🔥1
#ام_دی_کورس

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

یا به عبارت دیگه :

داکر ایمیج ها صرفا شامل کد ها و پیش نیاز ها هستند که در کانتینر ها و در یک محیط مستقل اجرا میشن . شما میتونید یه داکر ایمیج داشته باشید و چندین کانتینر که این داکر ایمیج رو اجرا میکنن


ادامه در پست بعدی...


🆔 @MdDaily
🔥31👍1
#ام_دی_کورس

خب تا اینجا با مفاهیم مهم و اساسی داکر آشنا شدیم و حالا وقت اینکه این مفاهیم رو توی عمل ببینیم :)


اگه داکر رو نصب ندارید برای استفاده از داکر توی لینوکس داکر انجین رو نصب کنید:
https://docs.docker.com/engine/install/

و برای مک و ویندوز از داکر دسکتاپ استفاده کنید:
https://docs.docker.com/get-docker/


تفاوت Docker Desktop با Docker Engine:

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


ادامه در پست بعدی...


🆔 @MdDaily
👍31🔥1👏1
#ام_دی_کورس

خب برای ساخت داکر فایل یک فایل بنام Dockerfile ایجاد می کنیم.

برای اینکه نیاز نباشه ما همه چیز رو مثل دپندسی و سیستم عامل از اول کانفیگ و آماده کنیم، میایم با استفاده از دستور:

FROM نسخه ی ایمیج:نام ایمیج

به داکرفایل میگیم که ما می خوایم از تمپلیت آماده مثلا اوبونتو استفاده کنیم :

FROM ubuntu:20.04

پس یعنی ایمیج ما میشه برپایه ی ایمیج ابونتو . اگه شما مثلا داشتید رویه وب سایت کار میکردید بجای ubuntu میتونستید مستقیما از nginx استفاده کنید و دیگه نیازی به نصب و کانفیگ nginx از پایه نبود

درنهایت داکر میاد ایمیج اوبنتو رو از رجیستری docker hub میگیره


ادامه در پست بعدی...


🆔 @MdDaily
1🔥1
#ام_دی_کورس

با استفاده از RUN میتونیم کامند اجرا کنیم :

RUN کامند

اینجا من میخوام از پکیج sl استفاده کنم پس:

RUN apt-get install sl

برای تنظیم و استفاده از environment variables هم از ENV استفاده میشه:

ENV مقدار:نام متغیر

برای نمونه من اینجا مقدار متغیر PORT رو روی 8080 قرار دادم:

ENV PORT=8080


ادامه در پست بعدی...


🆔 @MdDaily
1🔥1