مقیاس پذیری یا توسعه پذیری(Scalability) در یک سیستم توزیع شده چیست؟

توسعه پذیری یا همان Scalability که بعضا به آن مقیاس پذیری هم گفته می شود یک تعریف بسیار ساده دارد: سیستمی که بتواند خواسته های در حال افزایش را پاسخ دهد. برای مثال اگر شما یک نرم افزار دارید که بر روی یک سرور قرار دارد(مثلا یک وب سایت)، و روزانه ۱۰۰بازدید کننده از وب سایت شما دیدن می کنند، و بعد از مدتی این ۱۰۰بازدید کننده در روز به ۱۰هزار بازدید کننده رسید، در صورتیکه سرور شما بتواند با هزینه ی به نسبت معقولی این ۱۰هزار بازدید کننده را مدیریت کند، شما یک سیستم Scalable یا توسعه پذیر خواهید داشت. مثلا فرض کنید، برای ۱۰۰بازدید در روز، شما مبلغ ۱۰هزار تومان در ماه پرداخت میکردید. حالا که بازدید شما ۱۰هزار نفر شده(یعنی ۱۰۰برابر شده)، هزینه ی شما نباید ۱۰۰برابر شود. مثلا هزینه شما به جای ۱۰هزار تومان در ماه، بایستی ۲۰هزار تومان در ماه(یعنی ۲برابر) شود، تا بتوانیم بگوییم یک سیستم توسعه پذیر داریم.

ادامه خواندن “مقیاس پذیری یا توسعه پذیری(Scalability) در یک سیستم توزیع شده چیست؟”

سیستم فایل توزیع شده(Distributed File System) چیست؟

رشد سیستم ها و محاسبات توزیع شده(محاسباتی که بر روی چندین کامپیوتر در یک سیستم توزیع شده انجام می شوند) باعث شده نیاز برای ذخیره فایل ها به صورت توزیع شده نیز به وجود آید.

سیستم فایل توزیع شده، در واقع راهکاریست، که باعث میشود، فایل های موجود بر روی Nodeهای(کامپیوترهای) مختلف در یک سیستم توزیع شده، به راحتی قابل دسترس باشند. همان طور که میدانید در یک سیستم توزیع شده، شفافیت(Transparency) وجود دارد. به این معنی که، پردازش ها در سیستم توزیع شده از چشم کاربر پنهان است(پیشنهاد میکنیم درس شفافیت را مطالعه داشته باشید). پس توزیع فایل ها نیز، بایستی از چشم کاربر استفاده کننده پنهان باشد. ادامه خواندن “سیستم فایل توزیع شده(Distributed File System) چیست؟”

شفافیت(Transparency) در یک سیستم توزیع شده به چه معناست؟

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

برای مثال، اداره ای را در نظر بگیرید که انسان های دیگر درخواست های خود را به ایمیل info@thatcompany.com ارسال می کنند. یک گروه در آن اداره، وظیفه ی ارسال ایمیل های مختلف، به بخش های مختلف آن اداره را دارد. مثلا اگر ایمیل حاوی اطلاعات فنی بود، ایمیل(بدون اطلاع کاربر ارسال کننده) به بخش فنی آن اداره فرستاده می شود. در جواب نیز، ایمیل از طرف آن اداره و از ایمیل reply@thatcompany.com دریافت برای کاربر ارسال می شود. در واقع کاربر متوجه نمی شود که آن اداره، دارای بخش های مختلفی است و همچنین متوجه این مورد نمی شود که ایمیلش به کدام بخش ارسال شده است.

ادامه خواندن “شفافیت(Transparency) در یک سیستم توزیع شده به چه معناست؟”

مفهوم Coupling در سیستم های توزیع شده

در مباحث نرم افزاری، جفت شدگی(Coupling) و چسبندگی(Cohesion) دو شاخص اصلی و معیاری برای کیفیت سیستم هستند. در یک سیستم نرم افزاری، همیشه تلاش بر این بوده که چسبندگی حداکثر شود و جفت شدگی حداقل(Highly Cohesion and Loosely Coupling). در این درس به این دو مفهوم میپردازیم و به طور دقیق تر به مفهوم Coupling در یک سیستم توزیع شده تمرکز می کنیم.

ادامه خواندن “مفهوم Coupling در سیستم های توزیع شده”

سیستم توزیع شده(Distributed System) چیست؟

حتما میدانید که سیستم عامل چیست. ویندوز یا لینوکس یا Mac OS از انواع سیستم عامل های مختلف هستند. حتی Android و IOS نیز نوعی سیستم عامل هستند که بر روی موبایل های امروز به فراوانی دیده می شوند. سیستم عامل، یک واسط کاربری در اختیار شما قرار میدهد تا به راحتی بتوانید از کامپیوتر خود استفاده کنید. سیستم عامل تمامی عملیات پنهانی(Background Operation) را برای شما انجام می دهد. مدیریت پروسه ها، مدیریت فایل سیستم ها و… از وظایف سیستم عامل هستند.

ادامه خواندن “سیستم توزیع شده(Distributed System) چیست؟”

Tensorflow چیست؟

Tensorflow یک کتابخانه متن باز برای زبان پایتون است که توسط گوگل در سال ۲۰۱۵ انتشار پیدا کرد. این کتابخانه در به برنامه نویسان کمک میکند تا بتواند طراحی و پیاده سازی شبکه های عصبی عمیق(Deep Learning Network) را به سادگی انجام دهند.

ادامه خواندن “Tensorflow چیست؟”

CURL چیست؟

cURL که در واقع (seeURL) خوانده می شود، یک کتابخانه و همچنین یک خط فرمان(Command Line) است که برای انتقال اطلاعات به یک سرور استفاده می شود.

برای مثال فرض کنید، میخواهید با استفاده از یک زبان برنامه نویسی(مثلا PHP)، یک صفحه html را از اینترنت دانلود کنید. این کار به وسیله کتابخانه cURL در PHP امکان پذیر است. در واقع cURL از طریق پروتکل، http، میتواند این صفحه را از یک وب سایت دانلود کرده و در صورت نیاز در سرور خود ذخیره کنید.

ادامه خواندن “CURL چیست؟”

پایگاه داده گراف(Graph Database) چیست؟

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

ادامه خواندن “پایگاه داده گراف(Graph Database) چیست؟”

پایگاه داده(Data Base) چیست؟

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

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

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

پایگاه داده های معروف امروزی، بیشتر پایگاه داده های رابطه ای(Relational DataBases) هستند. هر چند پایگاه داده های NoSql هم کاربرد فراوانی دارند. از محبوب ترین پایگاه داد های رابطه ای، میتوان به SQL Server، Mysql، Sqlite اشاره کرد. این پایگاه داده ها، در نرم افزارهای مختلف، مورد استفاده برنامه نویسان قرار میگیرند. هنگامی که برنامه نویسی بخواهد، اطلاعات موجود خود را بر روی کامپیوتر، ذخیره کند(تا بعداً بتواند به آن دسترسی داشته باشد)، میتواند از این پایگاه داده ها،‌ استفاده کند. مثلاً یک برنامه نویس، میخواهد، اطلاعات زمانی مربوط به خرید های یک کاربر را برای همیشه، به صورت پایدار، بر روی سیستم کامپیوتر ذخیره کند. برای این کار یک جدول، ایجاد کرده و با ایجاد دو ستون(نام کاربری، تاریخ خرید) زمان های خرید یک کاربر را بر روی سیستم، ذخیره میکند.

معمولاً برای اتصال یک زبان برنامه نویسی به یک پایگاه داده، تنظیم کننده هایی(Adaptors) وجود دارد.

پایگاه داده های امروزی، بسیار متنوع تر از پایگاه داده های رابطه ای(Relational Database) هستند. پایگاه داده های NoSql، پایگاه داده های توزیع شده(Distributed Databases)، پایگاه داده های گراف(Graph DataBases) از انواع مختلف پایگاه داده های موجود هستند.

منبع و اطلاعات بیشتر را میتوانید از اینجا پیدا کنید.

وردپرس(wordpress) چیست؟

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

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

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

وردپرس رایگان است، و میتوانید نسخه های مختلف آن را(با زبان های مختلف، مثلا فارسی یا انگیسی) دانلود کرده و با یک آموزش ساده، یک وب سایت با امکانات مختلف راه اندازی کنید.

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

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

منبع و اطلاعات بیشتر را میتوانید در اینجا  و اینجا پیدا کنید.