مرور بر اساس تگ‌ها

اصطلاحات واژه‌نامه را دسته‌بندی کرده‌ایم. با استفاده از فیلترها اصطلاحات را بر اساس Tag مرور کنید.

Abstraction

در زمینه رایانش، یک Abstraction (انتزاع) نمایشی است که جزئیات را از مصرف‌کننده services پنهان می‌کند (مصرف‌کننده می‌تواند یک برنامه رایانه‌ای یا انسان باشد) و سیستم را عمومی‌تر و فهمش را آسان‌تر می‌سازد. نمونه خوب آن سیستم‌عامل (OS) لپ‌تاپ شماست. OS تمام جزئیات نحوه کار رایانه را پنهان می‌کند. لازم نیست چیزی درباره CPU، حافظه و نحوه مدیریت برنامه‌ها بدانید؛ کافی است با OS کار کنید و OS جزئیات را مدیریت می‌کند...

Agile Software Development

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

API Gateway

یک API Gateway ابزاری است که APIهای منحصربه‌فرد یک Application را تجمیع می‌کند و همه آن‌ها را در یک نقطه در دسترس قرار می‌دهد. این امکان را در اختیار سازمان‌ها می‌گذارد که وظایف کلیدی، مانند Authentication و Authorization یا محدود کردن تعداد درخواست‌ها بین Applicationها را به محل متمرکز و مدیریت‌شده منتقل کنند. API Gateway به‌عنوان یک رابط مشترک برای مصرف‌کنندگان API (که اغلب خارجی هستند) عمل می‌کند. مسئله‌ای که حل می‌کند اگر در حال فراهم کردن APIها برای مصرف‌کنندگان خارجی باشید، می‌خواهید یک نقطه ورود داشته باشید تا تمام دسترسی‌ها را مدیریت و کنترل کند...

Application Programming Interface (API)

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

Autoscaling

Autoscaling (مقیاس‌پذیری خودکار) توانایی یک سیستم برای Scale خودکار است؛ معمولاً در زمینه منابع محاسباتی. با یک سیستم Autoscaling، منابع در صورت نیاز به‌طور خودکار افزوده می‌شوند و می‌توانند با تقاضای متغیر کاربران هماهنگ شوند. فرایند Autoscaling متغیر است و می‌توان آن را بر اساس Metricهای مختلف مانند حافظه یا زمان پردازش پیکربندی کرد. سرویس‌های Cloud مدیریت‌شده معمولاً با قابلیت Autoscaling همراه هستند، زیرا گزینه‌ها و پیاده‌سازی‌های بیشتری نسبت به استقرارهای On-Premise در دسترس است...

Bare Metal Machine

Bare Metal به سرور فیزیکی اشاره دارد که تنها یک سیستم‌عامل دارد. این تمایز در رایانش مدرن اهمیت دارد، زیرا بسیاری از Serverها Virtual Machine هستند. یک Server فیزیکی معمولاً رایانه‌ای نسبتاً بزرگ با سخت‌افزار قدرتمند است. نصب یک سیستم‌عامل و اجرای Applicationها به‌طور مستقیم روی آن سخت‌افزار فیزیکی، بدون استفاده از Virtualization، «اجرای روی Bare Metal» نامیده می‌شود. مسئله‌ای که حل می‌کند جفت کردن یک سیستم‌عامل با یک رایانه فیزیکی، الگوی اصلی رایانش بود...

Blue Green Deployment

Blue-Green Deployment یک راهبرد برای به‌روزرسانی سیستم‌های رایانه‌ای در حال اجرا با حداقل Downtime است. اپراتور دو محیط را نگه می‌دارد که «Blue» و «Green» نامیده می‌شوند. یکی ترافیک Production (همان نسخه‌ای که همه کاربران هم‌اکنون استفاده می‌کنند) را سرویس می‌دهد و دیگری به‌روزرسانی می‌شود. پس از اتمام Testing در محیط غیر فعال (Green)، ترافیک Production جابه‌جا می‌شود (اغلب با استفاده از Load Balancer). توجه داشته باشید که Blue-Green Deployment معمولاً به‌معنی جابه‌جا کردن کل محیط‌ها است که از تعداد زیادی Service تشکیل شده‌اند...

Canary Deployment

Canary Deployment یک راهبرد استقرار است که با دو محیط آغاز می‌شود: یکی با ترافیک زنده و دیگری با کد به‌روزشده بدون ترافیک زنده. ترافیک به‌صورت تدریجی از نسخه اصلی Application به نسخه به‌روزشده منتقل می‌شود. این جابه‌جایی می‌تواند با انتقال ۱٪ ترافیک زنده شروع شود، سپس ۱۰٪، ۲۵٪ و به همین ترتیب ادامه یابد تا همه ترافیک از نسخه جدید عبور کند. سازمان‌ها می‌توانند نسخه جدید نرم‌افزار را در Production آزمایش کنند، بازخورد بگیرند، خطاها را تشخیص دهند و در صورت لزوم به‌سرعت به نسخه پایدار Rollback کنند...

Chaos Engineering

Chaos Engineering (مهندسی آشوب) یا CE دانشی است برای انجام آزمایش روی Distributed System در محیط Production تا به توانمندی سیستم برای تاب‌آوری در شرایط آشفته و غیرمنتظره اطمینان حاصل شود. مسئله‌ای که حل می‌کند رویه‌های SRE و DevOps بر تکنیک‌هایی تمرکز دارند که تاب‌آوری محصول و Reliability را افزایش دهند. توانایی یک سیستم برای تحمل Failure (شکست در سرویس) در حالی که کیفیت سرویس کافی تضمین شود، معمولاً جزو نیازمندی‌های توسعه نرم‌افزار است...

Client-Server Architecture

در معماری Client-Server، منطق (یا کد) یک Application بین دو یا چند جزء تقسیم می‌شود: یک Client که درخواست انجام کار می‌کند (برای مثال، Web Application جیمیل که در مرورگر شما اجرا می‌شود) و یک یا چند Server که آن درخواست را پاسخ می‌دهند (برای مثال، سرویس «Send Email» که روی رایانه‌های گوگل در Cloud اجرا می‌شود). در این مثال، ایمیل‌های خروجی که شما می‌نویسید توسط Client (Web Applicationی که در مرورگر شما اجرا می‌شود) به Server (رایانه‌های جیمیل که ایمیل‌های خروجی شما را به گیرنده‌ها ارسال می‌کنند) فرستاده می‌شوند...

Cloud Computing

Cloud Computing توان پردازشی CPU، ذخیره‌سازی و قابلیت‌های شبکه را ارائه می‌دهد و دسترسی مقیاس‌پذیر و انعطاف‌پذیر به منابع در مرکز داده‌های جهانی فراهم می‌کند. این حوزه هم Cloud خصوصی را در بر می‌گیرد که برای یک سازمان و با هدف امنیت و کنترل اختصاص یافته است و هم Cloud عمومی را که برای استفاده گسترده در دسترس است و هزینه و مقیاس‌پذیری را بهینه می‌کند. مسئله‌ای که حل می‌کند به‌طور سنتی، سازمان‌هایی که به ظرفیت پردازشی بیشتری نیاز داشتند باید بین سرمایه‌گذاری پرهزینه در تأسیسات Server جدید یا ارتقای زیرساخت موجود انتخاب می‌کردند؛ فرایندی کند و پرمصرف...

Cloud Native Apps

Applicationهای Cloud Native به‌طور ویژه طراحی شده‌اند تا از نوآوری‌های Cloud Computing بهره ببرند. این Applicationها به‌سادگی با معماری‌های Cloud متناظر خود یکپارچه می‌شوند و از منابع و قابلیت‌های Scale Cloud استفاده می‌کنند. این اصطلاح همچنین به Applicationهایی اشاره دارد که از نوآوری‌های زیرساختی ناشی از Cloud Computing بهره‌مند می‌شوند. Applicationهای Cloud Native امروزی شامل Appهایی هستند که در مرکز داده ارائه‌دهنده Cloud اجرا می‌شوند و همچنین روی پلتفرم‌های Cloud Native در محیط On-Premise...

Cloud Native Security

امنیت Cloud Native رویکردی است که امنیت را در Applicationهای Cloud Native تعبیه می‌کند. این رویکرد مطمئن می‌شود که امنیت از مرحله توسعه تا Production جزئی از کل چرخه عمر Application باشد. امنیت Cloud Native تلاش می‌کند همان استانداردهای مدل‌های امنیتی سنتی را تضمین کند، در حالی که خود را با ویژگی‌های محیط‌های Cloud Native ـ یعنی تغییر سریع کد و زیرساخت بسیار زودگذر ـ سازگار می‌کند. امنیت Cloud Native ارتباط نزدیکی با رویه‌ای به نام DevSecOps دارد...

Cloud Native Storage

ذخیره‌سازی Cloud Native فناوری ذخیره‌سازی تخصصی است که متناسب با نیازهای محیط‌های Cloud Native طراحی شده است. این راهکار، ذخیره‌سازی داده را برای Applicationهای Containerized که روی پلتفرم‌هایی مانند Kubernetes یا سایر زیرساخت‌های Cloud Native اجرا می‌شوند، بهینه می‌کند. پلتفرم ذخیره‌سازی Cloud Native عمدتاً از Stateful Application پشتیبانی می‌کند که به ذخیره‌سازی داده Persistent متکی هستند. مسئله‌ای که حل می‌کند سیستم‌های ذخیره‌سازی سنتی اغلب در رشد همگام با افزایش تقاضا مشکل دارند...

Cloud Native Technology

فناوری‌های Cloud Native که با عنوان Cloud Native Stack نیز شناخته می‌شوند، فناوری‌هایی هستند که برای ساخت Applicationهای Cloud Native به‌کار می‌روند. این فناوری‌ها سازمان‌ها را قادر می‌سازند Applicationهای مقیاس‌پذیر را در محیط‌های مدرن و پویایی مانند Cloud عمومی، خصوصی و Hybrid بسازند و اجرا کنند، در حالی که از مزایای Cloud Computing حداکثر بهره را می‌برند. این فناوری‌ها از پایه به‌گونه‌ای طراحی شده‌اند که قابلیت‌های Cloud Computing را به‌طور کامل استفاده کنند و Container، Service Mesh، Microservice و زیرساخت Immutable نمونه‌هایی از این رویکرد هستند...

Cluster

کلاستر گروهی از رایانه‌ها یا Applicationهاست که Node نامیده می‌شوند و با هدف مشترکی با هم کار می‌کنند. در رایانش Cloud Native این اصطلاح اغلب هنگام صحبت درباره کلاستر Kubernetes به‌کار می‌رود. می‌توان آن را شکل خاصی از Distributed System دانست که در آن Nodeها کمی بیشتر به هم متصل‌اند. مسئله‌ای که حل می‌کند نرم‌افزاری که روی یک رایانه اجرا می‌شود یک Single Point of Failure ایجاد می‌کند — اگر آن رایانه Crash کند یا کسی اشتباهاً کابل برق را جدا کند، ممکن است یک سیستم حیاتی کسب‌وکار Offline شود...

Container Orchestration

ارکستراسیون Container به مدیریت و خودکارسازی چرخه عمر Applicationهای Containerized در محیط‌های پویا اشاره دارد. این کار از طریق ابزار ارکستراتور کانتینر (در بیشتر موارد Kubernetes) انجام می‌شود که امکان Deployment، (Auto)Scaling، Auto-Healing و Monitoring را فراهم می‌کند. ارکستراسیون یک استعاره است: ابزار ارکستراسیون کانتینرها را مانند یک رهبر ارکستر هدایت می‌کند و مطمئن می‌شود هر Container (یا موسیقی‌دان) کاری را که باید انجام دهد. مسئله‌ای که حل می‌کند مدیریت Microservice، امنیت و ارتباطات شبکه در Scale ـ و در کل مدیریت Distributed System ـ به‌صورت دستی بسیار دشوار یا حتی ناممکن است...

Containerization

کانتینری‌سازی فرایند بسته‌بندی کد Application به همراه Libraryها و وابستگی‌های موردنیاز برای اجرای آن در یک فایل اجرایی سبک‌وزن واحد ـ به نام Container Image ـ است. مسئله‌ای که حل می‌کند پیش از رواج Container، سازمان‌ها برای ارکستره کردن چند Application روی یک ماشین Bare-Metal به Virtual Machine (VM) متکی بودند. VMها به‌طور قابل توجهی از کانتینرها بزرگ‌تر هستند و برای اجرا به Hypervisor نیاز دارند. به دلیل ذخیره‌سازی، پشتیبان‌گیری و انتقال Templateهای بزرگ VM، ایجاد این Templateها نیز کند است...

Containers

کانتینر یک Process در حال اجراست که محدودیت‌های منبع و قابلیت‌های آن توسط سیستم‌عامل رایانه مدیریت می‌شود. فایل‌هایی که برای Process کانتینر در دسترس است به‌صورت یک Container Image بسته‌بندی می‌شوند. کانتینرها در کنار هم روی یک ماشین اجرا می‌شوند، اما معمولاً سیستم‌عامل از تعامل Processهای جداگانه کانتینر با یکدیگر جلوگیری می‌کند. مسئله‌ای که حل می‌کند پیش از در دسترس بودن کانتینرها، برای اجرای Applicationها به ماشین‌های جداگانه نیاز بود. هر ماشین به سیستم‌عامل خودش احتیاج داشت که برای عملکرد یک Application، CPU، حافظه و فضای دیسک مصرف می‌کرد...

Continuous Delivery (CD)

تحویل پیوسته که اغلب به‌صورت CD خلاصه می‌شود، مجموعه‌ای از رویه‌هاست که در آن تغییرهای کد به‌طور خودکار در محیط پذیرش مستقر می‌شوند (یا در حالت Continuous Deployment مستقیماً در Production). CD به‌شدت شامل فرایندهایی است که اطمینان می‌دهد نرم‌افزار پیش از استقرار به‌طور مناسب تست شده و راهی برای Rollback تغییرها در صورت نیاز فراهم می‌کند. Continuous Integration (CI) نخستین گام به سمت تحویل پیوسته است؛ یعنی تغییرها باید پیش از تست و استقرار به‌صورت تمیز Merge شوند...

Continuous Deployment (CD)

استقرار پیوسته که معمولاً به‌صورت CD خلاصه می‌شود، یک گام فراتر از تحویل پیوسته است و نرم‌افزار آماده را مستقیماً در Production مستقر می‌کند. استقرار پیوسته (CD) با Continuous Integration (CI) دست در دست کار می‌کند و اغلب با عنوان CI/CD شناخته می‌شود. فرایند CI اعتبار تغییرهای اعمال‌شده به یک Application را می‌سنجد و فرایند CD تغییرهای کد را به‌صورت خودکار از محیط Test تا Production در محیط‌های سازمان مستقر می‌کند...

Continuous Integration (CI)

یکپارچه‌سازی پیوسته که معمولاً به‌صورت CI خلاصه می‌شود، رویه‌ای است که در آن تغییرهای کد تا حد امکان به‌صورت منظم ادغام می‌شوند. CI پیش‌نیاز تحویل پیوسته (CD) است. به‌طور سنتی فرایند CI زمانی آغاز می‌شود که تغییرهای کد در سیستم Source Control (مانند Git، Mercurial یا Subversion) Commit می‌شوند و با ساخته شدن یک Artifact تست‌شده که آماده مصرف توسط سیستم CD است به پایان می‌رسد. مسئله‌ای که حل می‌کند سیستم‌های نرم‌افزاری اغلب بزرگ و پیچیده‌اند و تعداد زیادی توسعه‌دهنده آن‌ها را نگه‌داری و به‌روزرسانی می‌کنند...

Datacenter

مرکز داده ساختمانی یا تأسیسات تخصصی است که برای میزبانی رایانه‌ها ـ عمدتاً Serverها ـ طراحی شده است. این مراکز داده معمولاً به خطوط اینترنت پرسرعت متصل‌اند، به‌ویژه زمانی که بر Cloud Computing متمرکز باشند. ساختمان‌هایی که مرکز داده را در خود جای می‌دهند مجهز هستند تا حتی در رخدادهای نامطلوب نیز سرویس را حفظ کنند؛ از جمله ژنراتورهایی که در زمان Outage برق تأمین می‌کنند و سیستم تهویه قدرتمندی که رایانه‌های تولیدکننده حرارت را خنک نگه می‌دارد...

DevOps

DevOps متدولوژی‌ای است که در آن تیم‌ها کل فرایند از توسعه Application تا عملیات Production را در مالکیت دارند؛ از همین رو نام DevOps شکل گرفته است. این رویکرد فراتر از پیاده‌سازی مجموعه‌ای از فناوری‌هاست و نیاز به تغییر کامل فرهنگ و فرایندها دارد. DevOps خواستار گروه‌هایی از مهندسان است که روی اجزای کوچک (در برابر یک قابلیت کامل) کار می‌کنند و انتقال کار بین دست‌ها را ـ که منبع رایج خطا است ـ کاهش می‌دهند...

DevSecOps

اصطلاح DevSecOps به ادغام فرهنگی مسئولیت‌های توسعه، عملیات و امنیت اشاره دارد. این رویکرد، DevOps را گسترش می‌دهد تا اولویت‌های امنیتی با حداقل یا بدون اختلال در جریان کاری توسعه‌دهندگان و عملیات در آن گنجانده شود. همانند DevOps، DevSecOps یک تغییر فرهنگی است که با فناوری‌های پذیرفته‌شده و روش‌های پیاده‌سازی خاص خود هدایت می‌شود. مسئله‌ای که حل می‌کند رویّه‌های DevOps شامل Continuous Integration، Continuous Delivery و Continuous Deployment است و چرخه‌های توسعه و انتشار Application را سرعت می‌بخشد...

Digital Certificate

گواهی (Digital) ـ که اغلب با عنوان Public Key Certificate یا SSL Certificate نیز شناخته می‌شود ـ سندی دیجیتال است که برای امن کردن ارتباطات روی شبکه به‌کار می‌رود. گواهی‌ها به ما اجازه می‌دهند بدانیم موجودیتی که با آن در ارتباط هستیم همان است که ادعا می‌کند. همچنین تضمین می‌کنند ارتباطات ما خصوصی بماند؛ با رمزنگاری داده‌ای که ارسال و دریافت می‌کنیم. مسئله‌ای که حل می‌کند وقتی Deviceها روی یک شبکه ارتباط برقرار می‌کنند، تضمین ذاتی‌ای وجود ندارد که یک Device همان باشد که خود را معرفی می‌کند...

Distributed Apps

Application توزیع‌شده Applicationی است که کارکرد آن به چند بخش مستقل کوچک‌تر تقسیم می‌شود. این Applicationها معمولاً از Microserviceهای جداگانه تشکیل شده‌اند که هر کدام بخش متفاوتی از نیازهای Application بزرگ‌تر را مدیریت می‌کنند. در محیط Cloud Native، اجزای منفرد معمولاً به‌صورت Container روی یک کلاستر اجرا می‌شوند. مسئله‌ای که حل می‌کند Applicationی که روی تنها یک رایانه اجرا می‌شود، یک Single Point of Failure ایجاد می‌کند؛ اگر آن رایانه از کار بیفتد، Application در دسترس نخواهد بود...

Distributed System

سیستم توزیع‌شده مجموعه‌ای از عناصر محاسباتی خودمختار است که از طریق یک شبکه به هم متصل شده‌اند و برای کاربر مانند یک سیستم یکپارچه به نظر می‌رسند. این اجزا که معمولاً Node نامیده می‌شوند می‌توانند Deviceهای سخت‌افزاری (مانند رایانه یا تلفن همراه) یا Processهای نرم‌افزاری باشند. Nodeها برای رسیدن به هدفی مشترک برنامه‌ریزی شده‌اند و برای همکاری با هم از طریق شبکه پیام ردوبدل می‌کنند. مسئله‌ای که حل می‌کند بسیاری از Applicationهای مدرن امروز آن‌قدر بزرگ هستند که برای اجرا به ابررایانه نیاز دارند؛ به Gmail یا Netflix فکر کنید...

eBPF

eBPF یا extended Berkeley Packet Filter فناوری‌ای است که اجازه می‌دهد برنامه‌ها یا اسکریپت‌های کوچک و Sandboxed در فضای Kernel سیستم لینوکس اجرا شوند بدون آن‌که نیازی به تغییر کد منبع Kernel یا بارگذاری ماژول‌های Kernel لینوکس باشد. یک سیستم لینوکسی دو فضا دارد: Kernel و User Space. Kernel هسته سیستم‌عامل را نمایندگی می‌کند و تنها بخشی است که دسترسی نامحدود به سخت‌افزار دارد. Applicationها در User Space قرار دارند و وقتی به دسترسی‌های بالاتر نیاز دارند، درخواستی به Kernel می‌فرستند...

Edge Computing

Edge Computing رویکردی در سیستم‌های توزیع‌شده است که بخشی از ظرفیت ذخیره‌سازی و پردازش را از مرکز داده اصلی به منبع داده منتقل می‌کند. داده‌های جمع‌آوری‌شده به‌صورت محلی (برای نمونه در سوله کارخانه، یک فروشگاه یا در سطح یک شهر) پردازش می‌شوند، نه این‌که برای پردازش و تحلیل به مرکز داده متمرکز ارسال شوند. این واحدهای پردازشی یا Deviceهای محلی «لبه»ٔ سیستم را نمایندگی می‌کنند، در حالی که مرکز داده هسته آن است...

Event Streaming

Event Streaming رویکردی است که در آن نرم‌افزار داده Event را از یک Application به Application دیگر می‌فرستد تا به‌طور مستمر اعلام کند چه کاری انجام می‌دهد. تصور کنید سرویسی هر کاری که انجام می‌دهد برای سایر Serviceها Broadcast کند. هر فعالیتی که یک Service انجام می‌دهد Event نامیده می‌شود؛ از همین رو Event Streaming شکل می‌گیرد. برای مثال، NASDAQ هر ثانیه به‌روزرسانی قیمت سهام و کالاها را دریافت می‌کند. اگر Applicationی داشته باشید که مجموعه خاصی از سهام را پایش کند، می‌خواهید این اطلاعات را تقریباً Real-Time دریافت کنید...

Event-Driven Architecture

معماری رویدادمحور یک معماری نرم‌افزار است که ایجاد، پردازش و مصرف Eventها را تسهیل می‌کند. Event هر تغییری در وضعیت یک Application است. برای مثال، درخواست خودرو در یک App اشتراک سفر یک Event محسوب می‌شود. این معماری ساختاری ایجاد می‌کند که در آن Eventها می‌توانند به‌درستی از منبع خود (App درخواست‌دهنده سفر) به گیرنده‌های موردنظر (App رانندگان در نزدیکی) هدایت شوند. مسئله‌ای که حل می‌کند با افزایش داده‌های Real-Time، یافتن روش‌های مطمئن برای اطمینان از این‌که Eventها ثبت و به Service مناسب ـ که باید درخواست Event را پردازش کند ـ هدایت شوند، دشوارتر می‌شود...

Function as a Service (FaaS)

Function as a Service (FaaS) مدلی در Cloud Computing است که پلتفرمی برای اجرای Functionهایی فراهم می‌کند که با Event تحریک می‌شوند و امکان Scale خودکار بدون مداخله دستی را مهیا می‌سازد. در اصل، FaaS اجازه می‌دهد Functionهای منفردی استقرار یابند که با Eventهای مشخص فعال می‌شوند، برای مدت کوتاهی اجرا می‌شوند و سپس متوقف می‌شوند تا از هدررفت منابع جلوگیری شود. این مدل از قابلیت Autoscaling پشتیبانی می‌کند؛ یعنی به ازای هر درخواست یک Instance از Function راه‌اندازی و پس از اتمام اجرا خاتمه می‌یابد و ماهیت Stateless آن را برجسته می‌کند...

GitOps

GitOps مجموعه‌ای از رویه‌ها برای مدیریت Applicationهای نرم‌افزاری و زیرساخت است که به‌طور مستمر وضعیت مطلوب تعریف‌شده در سیستم Version Control مانند Git را با وضعیت واقعی مقایسه و همسان می‌کند. همسان‌سازی وضعیت‌ها شامل تغییر Resourceها برای منطبق شدن با وضعیت تعریف‌شده از طریق Deployment یا Update است. در GitOps، وضعیت یا پیکربندی یک سیستم به‌طور کامل در فایل‌هایی توصیف شده که در منبع حقیقت ذخیره شده‌اند؛ این منبع حقیقت معمولاً سیستم Version Control است، اما می‌تواند Source دیگری مانند Kubernetes Operator یا Artifact Storage هم باشد...

Horizontal Scaling

مقیاس‌گذاری افقی تکنیکی است که در آن ظرفیت سیستم با افزودن Nodeهای بیشتر افزایش می‌یابد، در مقابل افزودن منابع محاسباتی به Nodeهای موجود (که به آن مقیاس‌گذاری عمودی گفته می‌شود). فرض کنید سیستمی با ۴ گیگابایت RAM داریم و می‌خواهیم ظرفیت آن را به ۱۶ گیگابایت RAM برسانیم. مقیاس‌گذاری افقی یعنی این کار را با اضافه کردن ۳ Node هرکدام با ۴ گیگابایت RAM انجام دهیم، نه این‌که به سیستمی با ۱۶ گیگابایت RAM مهاجرت کنیم...

Host

اصطلاح «Host» در رایانش شبکه کاربرد فراوانی دارد. در زمینه این Glossary، این اصطلاح بسیار به «Node» نزدیک است. Host رایانه‌ای است در دسترس از طریق شبکه که یک Service، Application یا مؤلفه زیرساختی دیگر را «میزبانی» می‌کند و می‌تواند داده را به سایر رایانه‌های متصل به همان شبکه ارسال و/یا از آن‌ها دریافت کند. همانند Node، در Cloud Computing یک Host می‌تواند رایانه فیزیکی، رایانه مجازی (که VM نامیده می‌شود) یا حتی Container باشد...

Idempotence

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

Immutable Infrastructure

زیرساخت تغییرناپذیر به زیرساخت رایانه‌ای (Virtual Machine، Container، تجهیزات شبکه) اشاره دارد که پس از استقرار دیگر قابل تغییر نیست. این ویژگی می‌تواند با فرایند خودکاری اعمال شود که تغییرهای غیرمجاز را بازنویسی می‌کند یا از طریق سیستمی که از ابتدا اجازه تغییر نمی‌دهد. کانتینرها نمونه خوبی از زیرساخت تغییرناپذیر هستند، زیرا اعمال تغییر Persistent روی کانتینر تنها با ساخت نسخه جدیدی از کانتینر یا بازآفرینی کانتینر موجود از روی Image ممکن است...

Infrastructure as a Service (IaaS)

Infrastructure as a Service یا IaaS مدلی از Cloud Computing است که منابع محاسباتی، ذخیره‌سازی و شبکه فیزیکی یا مجازی‌شده را بر اساس مدل Pay-as-you-go و به‌صورت On-Demand ارائه می‌کند. ارائه‌دهندگان Cloud مالک و اداره‌کننده سخت‌افزار و نرم‌افزار هستند و این منابع را در استقرارهای Cloud عمومی، خصوصی یا Hybrid در اختیار مصرف‌کنندگان می‌گذارند. مسئله‌ای که حل می‌کند در setupهای سنتی On-Premise، سازمان‌ها اغلب در استفاده مؤثر از منابع محاسباتی مشکل دارند...

Infrastructure as Code (IaC)

Infrastructure as Code (زیرساخت به‌صورت کد) رویه‌ای است که در آن تعریف زیرساخت به‌صورت یک یا چند فایل ذخیره می‌شود. این رویکرد جایگزین مدل سنتی می‌شود که در آن زیرساخت به‌صورت سرویس به شکل دستی Provision می‌شد، معمولاً با اسکریپت‌های Shell یا ابزارهای پیکربندی دیگر. مسئله‌ای که حل می‌کند ساخت Applicationها به شیوه Cloud Native مستلزم آن است که زیرساخت Disposable و قابل بازتولید باشد. همچنین باید بتواند به‌صورت خودکار و تکرارپذیر، احتمالاً بدون دخالت انسان، On-Demand Scale شود...

Ingress

Ingress مجموعه‌ای از Ruleهاست که به مدیریت ترافیک اینترنت از بیرون به داخل یک کانتینر یا گروهی از کانتینرهای در حال اجرا در کلاستر کمک می‌کند. Ingress از دو جزء تشکیل شده است: Ingress Resource و Ingress Controller. Ingress Resource یک فایل پیکربندی است که در کنار سایر فایل‌های Manifest قرار می‌گیرد و به ادمین‌ها اجازه می‌دهد مسیریابی ترافیک خارجی را تنظیم کنند. Ingress Controller فناوری Web Serverی است که بر اساس پیکربندی موجود در Ingress Resource، ترافیک را مسیردهی می‌کند...

Kubernetes

Kubernetes که اغلب به‌صورت K8s خلاصه می‌شود، ارکستراتور متن‌باز کانتینر است. این پلتفرم چرخه عمر Applicationهای کانتینری را روی زیرساخت‌های مدرن خودکار می‌کند و مانند «سیستم‌عامل مرکز داده» عمل می‌کند که Applicationها را در سراسر یک سیستم توزیع‌شده مدیریت می‌کند. Kubernetes Containerها را روی Nodeهای یک کلاستر زمان‌بندی می‌کند و چندین منبع زیرساختی مانند Load Balancer، ذخیره‌سازی Persistent و غیره را برای اجرای Applicationهای کانتینری در کنار هم قرار می‌دهد...

Kubernetes Operator

اپراتور Kubernetes برنامه کمکی‌ای است که داخل کلاستر Kubernetes اجرا می‌شود و بدون تغییر در کد هسته Kubernetes، قابلیت‌های آن را گسترش می‌دهد تا نصب و مدیریت خودکار Applicationها و Resourceهای پیچیده را ممکن کند. مسئله‌ای که حل می‌کند وقتی می‌خواهیم یک Application Stateful پیچیده مانند کلاستر Database اجرا کنیم، باید کارهای عملیاتی زیادی انجام دهیم تا آن را پایدار نگه داریم. این موضوع به‌ویژه برای ویژگی‌هایی مانند High Availability و Zero Downtime صادق است...

Loosely Coupled Architecture

معماری Loosely Coupled (معماری سست‌پیوند) سبکی معماری است که در آن اجزای منفرد یک Application مستقل از یکدیگر ساخته می‌شوند (بر خلاف معماری‌های Tightly Coupled). هر جزء ـ که گاهی Microservice نیز نامیده می‌شود ـ برای انجام یک وظیفه مشخص ساخته می‌شود و می‌تواند توسط تعداد زیادی Service دیگر استفاده شود. پیاده‌سازی این الگو معمولاً کندتر از معماری Tightly Coupled است، اما مزایای زیادی دارد، به‌ویژه وقتی Applicationها Scale می‌شوند...

Microservices Architecture

معماری Microservices رویکردی معماری است که Application را به Serviceهای مستقل کوچک (Micro) تقسیم می‌کند و هر Service روی یک قابلیت مشخص تمرکز دارد. این Serviceها در کنار هم کار می‌کنند تا برای End-User مانند یک موجودیت واحد ظاهر شوند. Netflix را در نظر بگیرید: رابط آن به شما اجازه می‌دهد ویدیوها را جست‌وجو، مشاهده و پیش‌نمایش کنید. این قابلیت‌ها احتمالاً توسط Serviceهای کوچک‌تری پشتیبانی می‌شوند که هر کدام یک عملکرد را انجام می‌دهند؛ مانند Authentication، Search و اجرای Preview در مرورگر شما...

Monolithic Apps

Application Monolithic همه قابلیت‌ها را در یک برنامه قابل استقرار واحد جای می‌دهد. این رویکرد اغلب ساده‌ترین و آسان‌ترین نقطه شروع برای ساخت Application است. با این حال، وقتی Application از نظر پیچیدگی رشد می‌کند، Monolithها می‌توانند سختِ نگه‌داری شوند. هرچه توسعه‌دهندگان بیشتری روی همان Codebase کار کنند، احتمال تغییرهای متضاد و نیاز به ارتباطات بین‌فردی میان توسعه‌دهندگان افزایش می‌یابد. مسئله‌ای که حل می‌کند تفکیک Application به Microservice سربار عملیاتی را افزایش می‌دهد — موارد بیشتری برای تست، استقرار و پایدار نگه داشتن وجود خواهد داشت...

Multitenancy

چندمستاجری (Multitenancy) به یک نصب نرم‌افزار اشاره دارد که به چندین Tenant سرویس می‌دهد. Tenant می‌تواند کاربر، Application یا گروهی از کاربران/ Applicationها باشد که از نرم‌افزار برای کار روی مجموعه‌داده خود استفاده می‌کنند. این Tenantها داده‌ها را به‌اشتراک نمی‌گذارند (مگر به دستور مالک) و حتی ممکن است از وجود یکدیگر اطلاعی نداشته باشند. Tenant می‌تواند به کوچکی یک کاربر مستقل با یک Login ID باشد ـ مثلاً نرم‌افزارهای بهره‌وری شخصی ـ یا به بزرگی یک شرکت کامل با هزاران Login ID که هر کدام مجوزهای خود را دارند، هرچند به روش‌های گوناگون با هم مرتبط هستند...

Mutual Transport Layer Security (mTLS)

Mutual TLS (mTLS) تکنیکی است که برای احراز هویت و رمزنگاری پیام‌هایی استفاده می‌شود که بین دو Service ارسال می‌شوند. mTLS همان پروتکل استاندارد Transport Layer Security (TLS) است با این تفاوت که به‌جای اعتبارسنجی تنها یک سمت اتصال، هر دو طرف اعتبارسنجی می‌شوند. مسئله‌ای که حل می‌کند Microserviceها روی یک شبکه با هم ارتباط برقرار می‌کنند و درست مثل شبکه Wi-Fi شما، ارتباط در حال عبور روی آن شبکه می‌تواند هک شود...

Nodes

Node رایانه‌ای است که همراه با سایر رایانه‌ها ـ یا Nodeها ـ برای دستیابی به هدفی مشترک کار می‌کند. لپ‌تاپ، مودم و پرینتر شما را در نظر بگیرید: همه روی شبکه Wi-Fi شما متصل‌اند، با هم ارتباط برقرار می‌کنند و همکاری می‌کنند، و هرکدام یک Node به‌شمار می‌آیند. در Cloud Computing، Node می‌تواند رایانه فیزیکی، رایانه مجازی (که VM نامیده می‌شود) یا حتی Container باشد. مسئله‌ای که حل می‌کند اگرچه Application می‌تواند (و بسیاری نیز چنین‌اند) روی یک ماشین واحد اجرا شود، این کار ریسک‌هایی دارد؛ مهم‌ترین آن‌که Failure سیستم زیربنایی باعث اختلال در Application می‌شود...

Observability

Observability خاصیت یک سیستم است که درجه توانایی آن در تولید بینش قابل اقدام را تعریف می‌کند. این ویژگی به کاربران اجازه می‌دهد وضعیت سیستم را از خروجی‌های بیرونی آن درک کنند و اقدام‌های (اصلاحی) انجام دهند. سیستم‌های رایانه‌ای با مشاهده سیگنال‌های سطح پایین مانند زمان CPU، حافظه، فضای دیسک و سیگنال‌های سطح بالاتر و کسب‌وکاری مانند زمان پاسخ API، خطاها، تراکنش‌ها در ثانیه و غیره سنجیده می‌شوند. این سیستم‌های قابل مشاهده از طریق ابزارهای تخصصی ـ که ابزارهای Observability نامیده می‌شوند ـ مشاهده (یا Monitor) می‌شوند...

Platform Engineering

مهندسی پلتفرم هنر ساخت ابزارها و فرایندهایی است که توسعه‌دهندگان نرم‌افزار را توانمند می‌کند. این رویکرد شبیه ایجاد یک ایستگاه Self-Service است که به‌طور خاص برای رفع نیازهای توسعه‌دهندگان در طول مسیر ایجاد نرم‌افزار طراحی شده است. با فراهم کردن این ابزارها و Workflowها، مهندسی پلتفرم به توسعه‌دهندگان کمک می‌کند سریع‌تر و کاراتر کار کنند. مسئله‌ای که حل می‌کند مهندسی پلتفرم چالش توسعه نرم‌افزار کند و ناکارآمد را هدف می‌گیرد. در گذشته، توسعه‌دهندگان بخش قابل توجهی از زمان خود را صرف کارهای تکراری مانند راه‌اندازی محیط‌ها یا پیکربندی ابزارها می‌کردند...

Pod

در محیط Kubernetes، پاد پایه‌ای‌ترین واحد قابل استقرار است. پاد بلوک سازنده ضروری برای استقرار و مدیریت Applicationهای کانتینری است. هر پاد یک Instance از Application را نمایندگی می‌کند و می‌تواند یک یا چند Container را در خود جای دهد. Kubernetes پادها را به‌عنوان بخشی از Deployment بزرگ‌تر مدیریت می‌کند و در صورت نیاز می‌تواند پادها را عمودی یا افقی Scale کند. مسئله‌ای که حل می‌کند در حالی که کانتینرها معمولاً به‌عنوان واحدهای مستقل عمل می‌کنند که یک Workload مشخص را اجرا و کنترل می‌کنند، مواردی وجود دارد که کانتینرها باید با هم تعامل داشته باشند و به‌صورت Tightly Coupled کنترل شوند...

Policy as Code (PaC)

Policy as Code رویه‌ای است که در آن تعریف Policyها به‌صورت یک یا چند فایل با فرمتی قابل خوانش و پردازش توسط ماشین ذخیره می‌شود. این رویکرد جایگزین مدل سنتی می‌شود که Policyها در اسناد جداگانه و قابل خواندن برای انسان ثبت می‌شدند. مسئله‌ای که حل می‌کند ساخت Application و زیرساخت اغلب با Policyهای متعددی که سازمان تعریف می‌کند محدود می‌شود؛ برای نمونه Policyهای امنیتی که ذخیره Secret در Source Code، اجرای کانتینر با مجوز Superuser یا ذخیره‌سازی داده در خارج از منطقه جغرافیایی مشخص را ممنوع می‌کنند...

Portability

قابلیت حمل ویژگی‌ای در نرم‌افزار است که شکل خاصی از قابلیت استفاده مجدد محسوب می‌شود و به جلوگیری از «Lock-in» در محیط‌های عملیاتی مشخص ـ مانند ارائه‌دهندگان Cloud، سیستم‌عامل‌ها یا Vendorها ـ کمک می‌کند. به‌طور سنتی، نرم‌افزارها اغلب برای محیط‌های مشخصی (مثلاً AWS یا Linux) ساخته می‌شوند. در مقابل، نرم‌افزار قابل حمل بدون نیاز به بازکاری عمده در محیط‌های عملیاتی متفاوت کار می‌کند. اگر تلاش لازم برای تطبیق Application با محیط جدید در حد معقول باشد، آن Application قابل حمل به‌شمار می‌آید...

Reliability

از منظر Cloud Native، قابلیت اطمینان به این اشاره دارد که یک سیستم تا چه اندازه در برابر Failure واکنش مناسبی نشان می‌دهد. اگر سیستم توزیع‌شده‌ای داشته باشیم که با وجود تغییر زیرساخت و Failure اجزای منفرد همچنان کار کند، آن سیستم Reliable است. در مقابل، اگر سیستم به راحتی از کار بیفتد و اپراتورها مجبور باشند برای ادامه کار به‌صورت دستی مداخله کنند، سیستم Unreliable است. هدف Applicationهای Cloud Native ساخت سیستم‌هایی ذاتاً Reliable است...

Role-Based Access Control (RBAC)

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

Runtime

Runtime به‌طور کلی نرم‌افزاری است که قطعه‌ای از نرم‌افزار را اجرا می‌کند. Runtime Abstractionی از سیستم‌عامل زیربنایی است که دستورات برنامه را به اقدام‌های متناظر برای سیستم‌عامل ترجمه می‌کند. در زمینه Cloud Native، Runtime معمولاً به Container Runtime اشاره دارد. Container Runtime مشخصات Open Container Initiative را پیاده‌سازی می‌کند تا رفتار یکسانی در فناوری‌های مختلف ارکستراسیون کانتینر تضمین شود. مسئله‌ای که حل می‌کند بدون Abstractionی به نام Container Runtime، Application باید با تمام مکانیزم‌های هر سیستم‌عامل سر و کار داشته باشد که پیچیدگی اجرای App را افزایش می‌دهد...

Scalability

Scalability (مقیاس‌پذیری) به این اشاره دارد که یک سیستم تا چه اندازه می‌تواند رشد کند؛ یعنی توانایی انجام کاری را که سیستم برای آن ساخته شده افزایش دهد. برای مثال، یک کلاستر Kubernetes با افزایش یا کاهش تعداد Appهای Containerized مقیاس می‌شود، اما این Scalability به عوامل مختلفی بستگی دارد: چند Node دارد، هر Node چند Container می‌تواند مدیریت کند و Control Plane چند Record و Operation را می‌تواند پشتیبانی کند؟..

Security Chaos Engineering

Security Chaos Engineering (مهندسی آشوب امنیتی) یا SCE دانشی مبتنی بر Chaos Engineering است. SCE آزمایش‌های امنیتی پیش‌دستانه‌ای روی سیستم توزیع‌شده انجام می‌دهد تا به توانایی سیستم برای تاب‌آوری در شرایط آشفته و مخرب اطمینان حاصل شود. مهندسان آشوب امنیتی از چرخه‌های روش علمی استفاده می‌کنند؛ شامل وضعیت پایدار، فرضیه، پایش مداوم، درس‌های آموخته‌شده و اجرای اقدام‌های اصلاحی. مسئله‌ای که حل می‌کند اولویت اصلی Site Reliability Engineerها (SREها) و مهندسان امنیت سایبری بازگرداندن سرویس در سریع‌ترین زمان ممکن، دستیابی به صفر Downtime و کاهش اثرات کسب‌وکار است...

Self Healing

سیستم Self-Healing (خودترمیمی) قادر است بدون مداخله انسانی از برخی انواع Failure بازیابی شود. این سیستم یک Loop «همگرایی» یا «کنترلی» دارد که به‌طور فعال وضعیت واقعی سیستم را بررسی می‌کند و آن را با وضعیتی که اپراتورها در ابتدا مدنظر داشتند مقایسه می‌کند. اگر تفاوتی وجود داشته باشد (مثلاً تعداد Instanceهای Application کمتر از مقدار مطلوب باشد)، اقدام اصلاحی انجام می‌دهد (برای نمونه، Instanceهای جدید راه‌اندازی می‌کند)...

Serverless

محاسبات Serverless سرورها را از دید کاربر Abstraction می‌کند. مدیریت عملیاتی بر عهده ارائه‌دهنده سرویس است؛ از جمله مدیریت ماشین‌های فیزیکی و Provisioning VM. ارائه‌دهنده می‌تواند شرکت Cloud عمومی باشد یا تیم IT داخلی که به تیم‌های توسعه سرویس می‌دهد. این ارائه‌دهندگان رابط‌هایی مانند SDK، CLI یا Runtimeهای سازگار با OCI در اختیار می‌گذارند تا کاربر روی کدنویسی و استقرار تمرکز کند. هزینه‌ها بر اساس مدل Pay-per-Use محاسبه می‌شود. Scale و Provisioning منابع محاسباتی، ذخیره‌سازی یا شبکه بر اساس تقاضای Application به‌صورت خودکار و بدون دخالت کاربر تنظیم می‌شود...

Service

توجه داشته باشید که در IT واژه Service معانی متعددی دارد. در این تعریف، بر معنای سنتی‌تر تمرکز می‌کنیم: Service به معنای Microservice. این‌که Serviceها چگونه و آیا با Microserviceها تفاوت دارند، موضوعی ظریف است و افراد مختلف دیدگاه متفاوتی دارند. برای یک تعریف سطح بالا، آن‌ها را یکسان در نظر می‌گیریم. لطفاً به تعریف Microservice مراجعه کنید. به زبان اشاره توجه: با اینکه هر کشور زبان اشاره خودش را دارد، ما یعنی Deaf/Hoh Working Group، هدفمان استانداردسازی Signها برای اصطلاحات جدید cloud-native جهت استفاده جهانی است...

Service Discovery

Service Discovery فرایند یافتن Instanceهای منفردی است که یک Service را تشکیل می‌دهند. ابزار Service Discovery Nodeها یا Endpointهایی را که Service را می‌سازند ردیابی می‌کند. مسئله‌ای که حل می‌کند معماری‌های Cloud Native پویا و سیال هستند؛ یعنی دائماً در حال تغییرند. یک App Containerized احتمالاً چندین بار در طول عمر خود Start و Stop می‌شود. هر بار که این اتفاق بیفتد، آدرس جدیدی خواهد داشت و هر Appی که بخواهد آن را پیدا کند به ابزاری نیاز دارد تا اطلاعات موقعیت جدید را فراهم کند...

Service Mesh

در دنیای Microservice، Appها به چندین Service کوچک‌تر تقسیم می‌شوند که از طریق شبکه با هم ارتباط دارند. همانند شبکه Wi-Fi شما، شبکه‌های رایانه‌ای ذاتاً غیرقابل اعتماد، قابل هک و اغلب کند هستند. Service Mesh این چالش‌ها را با مدیریت ترافیک (یعنی ارتباط) بین Serviceها و افزودن ویژگی‌های Reliability، Observability و امنیتی به‌صورت یکنواخت در همه Serviceها برطرف می‌کند. مسئله‌ای که حل می‌کند پس از مهاجرت به معماری Microservice، مهندسان با صدها یا حتی هزاران Service منفرد روبه‌رو هستند که همگی باید با یکدیگر ارتباط برقرار کنند...

Service Proxy

Service Proxy ترافیک ورودی یا خروجی یک Service را رهگیری می‌کند، منطق خاصی روی آن اعمال می‌کند و سپس ترافیک را به Service دیگری منتقل می‌کند. در اصل مانند «واسطه‌ای» عمل می‌کند که اطلاعات ترافیک شبکه را جمع‌آوری و/یا Ruleهایی را روی آن اعمال می‌کند. مسئله‌ای که حل می‌کند برای پایش ارتباط Service با Service (یا همان ترافیک شبکه) و در صورت نیاز Transform یا Redirect کردن آن، باید داده جمع‌آوری کنیم...

Shift Left

در عبارت Shift Left، «چپ» به مراحل اولیه چرخه عمر توسعه نرم‌افزار اشاره دارد؛ چرخه‌ای که معمولاً از چپ به راست تصور می‌شود. Shift Left رویه‌ای است که در آن تست، امنیت یا سایر Practices توسعه در مراحل ابتدایی چرخه توسعه نرم‌افزار پیاده می‌شود، نه در انتهای آن. هرچند این اصطلاح در ابتدا به معنای انجام زودهنگام تست بود، اکنون می‌توان آن را به جنبه‌های دیگر توسعه نرم‌افزار و DevOps ـ مانند امنیت و استقرار ـ نیز تعمیم داد...

Sidecar Container

کانتینر سایدکار پیاده‌سازی الگوی Sidecar است. Applicationی که روی کانتینر دوم مستقر می‌شود در کنار Application اصلی که روی کانتینر اصلی اجرا می‌شود کار می‌کند و چرخه عمر مشترکی با آن دارد. مسئله‌ای که حل می‌کند در سناریوهای Cross-Platform، گروه‌بندی کانتینرها و چرخه عمرشان برای مدیریت مواردی مانند Logging، Monitoring، Tracing و همچنین امنیت و شبکه کارآمد است. پیش از این رویکرد، معمولاً Logging در کد داخل کانتینر پیاده می‌شد. این موضوع بسته به توسعه‌دهنده یا Application منجر به پیاده‌سازی‌های متفاوت می‌شد و معمولاً سیستم‌های پیچیده‌تری برای نگه‌داری و حاکمیت به وجود می‌آورد...

Site Reliability Engineering

Site Reliability Engineering یا SRE دانشی است که عملیات و مهندسی نرم‌افزار را ترکیب می‌کند و مهندسی نرم‌افزار را به‌طور خاص روی مسائل زیرساخت و عملیات اعمال می‌کند. یعنی Site Reliability Engineerها به‌جای ساخت قابلیت محصول، سیستم‌هایی می‌سازند که Applicationها را اجرا کنند. این رویکرد شباهت‌هایی با DevOps دارد، اما در حالی که DevOps روی رساندن کد به Production تمرکز می‌کند، SRE اطمینان می‌دهد کدی که در Production اجرا می‌شود درست کار کند...

Stateful Apps

وقتی از Appهای Stateful (و Stateless) صحبت می‌کنیم، State به هر داده‌ای اشاره دارد که App برای عملکرد مطابق طراحی باید ذخیره کند. هر فروشگاه آنلاین که سبد خرید شما را به خاطر می‌سپارد، مثالی از App Stateful است. امروزه بیشتر Applicationهایی که استفاده می‌کنیم دست‌کم تا حدی Stateful هستند. اما در محیط‌های Cloud Native، Appهای Stateful چالش‌برانگیزند؛ زیرا Applicationهای Cloud Native بسیار پویا هستند. این Applicationها می‌توانند Scale Up یا Down شوند، Restart شوند و جابه‌جا شوند، اما همچنان باید بتوانند به State خود دسترسی داشته باشند...

Stateless Apps

Appهای Stateless هر درخواست را به‌صورت مستقل پردازش می‌کنند بدون آن‌که تعامل‌های قبلی یا داده کاربر را به خاطر بسپارند. داده تعامل‌های پیشین «State» محسوب می‌شود و چون این داده ذخیره نمی‌شود، این Appها Stateless هستند. برای مثال: وقتی از موتور جست‌وجو استفاده می‌کنید و جست‌وجو قطع می‌شود (مثلاً پنجره بسته می‌شود)، نتایج آن جست‌وجو از دست می‌رود و باید از ابتدا شروع کنید. در مقابل، Applicationهایی که هنگام پردازش درخواست‌ها تعامل‌های قبلی را در نظر می‌گیرند Applicationهای Stateful نامیده می‌شوند...

Tightly Coupled Architecture

Tightly Coupled Architecture یک سبک معماری است که در آن چندین جزء (component) یک application به هم وابسته‌اند (برخلاف پارادایم loosely coupled architectures). این یعنی تغییر در یک component احتمالاً روی componentهای دیگر هم تأثیر می‌گذارد. این سبک معمولاً راحت‌تر از معماری‌های loosely coupled پیاده‌سازی می‌شود، اما می‌تواند سیستم را در برابر cascading failures آسیب‌پذیرتر کند. همچنین معمولاً نیازمند rollout هماهنگ componentها است که می‌تواند باعث کاهش بهره‌وری توسعه‌دهندگان شود...

Transport Layer Security (TLS)

Transport Layer Security (TLS) پروتکلی است که برای افزایش امنیت ارتباط روی شبکه طراحی شده است. این پروتکل تحویل امن داده‌های ارسال‌شده از طریق اینترنت را تضمین می‌کند و مانع پایش و/یا دست‌کاری احتمالی داده می‌شود. TLS به‌طور گسترده در Applicationهایی مانند پیام‌رسانی و ایمیل استفاده می‌شود. مسئله‌ای که حل می‌کند بدون TLS، اطلاعات حساس مانند عادات مرور، مکاتبات ایمیل، چت‌های آنلاین و تماس‌های کنفرانسی در هنگام انتقال به راحتی توسط دیگران ردیابی و دست‌کاری می‌شود...

Vertical Scaling

مقیاس‌گذاری عمودی که با عنوان «Scale Up و Scale Down» نیز شناخته می‌شود تکنیکی است که در آن ظرفیت سیستم با افزودن CPU و حافظه به Nodeهای موجود هم‌زمان با افزایش بار کاری بیشتر می‌شود. فرض کنید رایانه‌ای با ۴ گیگابایت RAM دارید و می‌خواهید ظرفیت آن را به ۱۶ گیگابایت RAM برسانید؛ مقیاس‌گذاری عمودی یعنی مهاجرت به سیستمی با ۱۶ گیگابایت RAM. (برای رویکرد دیگر، به مقیاس‌گذاری افقی مراجعه کنید...

Virtual Machine (VM)

ماشین مجازی (VM) رایانه‌ای به همراه سیستم‌عامل آن است که به سخت‌افزار مشخصی وابسته نیست. VMها با تکیه بر Virtualization یک رایانه فیزیکی را به چند رایانه مجازی تقسیم می‌کنند. این جداسازی به سازمان‌ها و ارائه‌دهندگان زیرساخت اجازه می‌دهد VMها را بدون تأثیر بر سخت‌افزار زیربنایی به‌سادگی ایجاد یا حذف کنند. مسئله‌ای که حل می‌کند وقتی یک ماشین Bare Metal به یک سیستم‌عامل متصل باشد، میزان استفاده از منابع ماشین محدود می‌شود...

Virtualization

مجازی‌سازی در زمینه رایانش Cloud Native به فرایندی اشاره دارد که طی آن یک رایانه فیزیکی (یا سرور) اجازه پیدا می‌کند چند سیستم‌عامل ایزوله را اجرا کند. این سیستم‌عامل‌های ایزوله و منابع محاسباتی اختصاصی‌شان (CPU، حافظه و شبکه) «ماشین مجازی» یا VM نامیده می‌شوند. وقتی از ماشین مجازی صحبت می‌کنیم منظور رایانه‌ای تعریف‌شده توسط نرم‌افزار است؛ چیزی که مانند رایانه واقعی به نظر می‌رسد و رفتار می‌کند اما سخت‌افزار خود را با ماشین‌های مجازی دیگر به اشتراک می‌گذارد...

WebAssembly

WebAssembly (که اغلب به‌صورت Wasm خلاصه می‌شود) قالبی باینری برای دستورالعمل‌هاست که به‌عنوان هدفی قابل حمل جهت کامپایل زبان‌های سطح بالا مانند C، ++C، Rust و دیگر زبان‌ها طراحی شده است. این فناوری استقرار Applicationهای سمت کاربر و سمت سرور روی وب را ممکن می‌کند. Wasm قالبی Bytecode در سطح پایین است که در ماشین مجازی اجرا می‌شود؛ معمولاً ماشین مجازی‌ای که در مرورگرهای وب ادغام شده است. هرچند در ابتدا برای وب توسعه داده شد، WebAssembly یک Runtime یونیورسال است و در محیط‌های غیر وب مانند IoT و دستگاه‌های Edge نیز کاربرد دارد...

Zero Trust Architecture

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

چگونه مشارکت کنیم

خوش‌آمدید به راهنمای مشارکت در Cloud Native Glossary خوش آمدید و از علاقه شما سپاس‌گزاریم. راه‌های متعددی برای مشارکت در این پروژه وجود دارد که در ادامه با جزئیات آن‌ها آشنا می‌شوید: کار روی یک Issue موجود پیشنهاد اصطلاح‌های جدید به‌روزرسانی اصطلاح‌های فعلی بومی‌سازی Glossary نمای کلی Glossary CNCF هدف این Glossary ساده‌سازی فضای Cloud Native — که به پیچیدگی مشهور است — و در نتیجه دسترس‌پذیرتر کردن آن برای همه است...

راهنمای سبک نگارش

این راهنمای سبک نگارش، به شما کمک می‌کند مخاطب واژه‌نامه، ساختار تعریف، سطح جزئیات موردنیاز و چگونگی حفظ سبک یکسان را درک کنید. واژه‌نامه Cloud Native از راهنمای سبک نگارش پیش‌فرض مخزن CNCF پیروی می‌کند. علاوه بر آن، قوانین زیر را دنبال می‌کند: از زبان ساده و قابل‌دسترس استفاده کنید و از اصطلاحات فنی پیچیده و Buzzwordها بپرهیزید. از زبان محاوره‌ای پرهیز کنید از زبان صریح و ملموس استفاده کنید انقباض‌ها (contraction) را حذف کنید از حالت مجهول به‌ندرت استفاده کنید جمله‌ها را به شکل مثبت بیان کنید علامت تعجب بیرون از نقل‌قول‌ها استفاده نشود اغراق نکنید از تکرار بپرهیزید مختصر باشید مخاطب واژه‌نامه برای مخاطب فنی و غیر فنی نوشته می‌شود...

مسیر مشارکت‌کنندگان

<p>سلام! 👋 از علاقه شما به مشارکت در پروژه Cloud Native Glossary تشکر می‌کنیم. چه با افزودن اصطلاح‌های جدید، چه با بومی‌سازی Glossary به زبان مادری خود و چه با کمک به تازه‌واردها، راه‌های زیادی برای فعال بودن در این جامعه وجود دارد. این سند نقش‌های مختلف مشارکت‌کنندگان را معرفی می‌کند و مسئولیت‌ها و اختیارات هر نقش را توضیح می‌دهد.</p> <ol> <li>مشارکت‌کنندگان Glossary متعلق به همه است. هر کسی با مشارکت در پروژه به‌سادگی می‌تواند مشارکت‌کننده شود.</li> </ol>..

واژه‌نامه Cloud Native

واژه‌نامه Cloud Native واژه‌نامه Cloud Native با هدف ساده‌سازی فضای Cloud Native — که به پیچیدگی شهرت دارد — ساخته شده تا درکش برای همه آسان‌تر شود؛ نه فقط متخصصان فناوری، بلکه افراد در بخش کسب‌وکار نیز. برای رسیدن به این هدف، بر سادگی تمرکز می‌کنیم (برای نمونه، استفاده از زبان ساده و بدون Buzzword، مثال‌هایی که هر کسی با تجربه فناوری بتواند با آن‌ها ارتباط برقرار کند و حذف جزئیات غیرضروری)...