در عصر حاضر، بهینه‌سازی منابع سخت‌افزاری و نرم‌افزاری به یکی از چالش‌های کلیدی سازمان‌ها تبدیل شده است. در این میان، مجازی‌سازی سنتی (Traditional Virtualization) و کانتینری‌سازی (Containerization) به عنوان دو فناوری پیشرفته مطرح می‌شوند که با معماری متمایز، امکان اجرای چندین محیط مستقل بر روی یک زیرساخت فیزیکی واحد را ارائه می‌دهند.
در این مقاله به بررسی جامع تفاوت‌های اساسی این دو فناوری می‌پردازیم. در گام نخست، معماری، مؤلفه‌ها و سازوکار عملکرد هر یک به تفصیل تحلیل می‌شود. سپس، مزایا و محدودیت‌های آن‌ها در حوزه‌های کارایی، امنیت، مقیاس‌پذیری و مدیریت منابع را مورد ارزیابی قرار می‌دهیم. در بخش پایانی، کاربردهای صنعتی هر فناوری و چشم‌انداز آینده آن‌ها در اکوسیستم فناوری اطلاعات را بررسی خواهیم کرد.

مجازی‌سازی سنتی (Traditional Virtualization)؛ معماری و عملکرد

  • تعریف و تاریخچه مجازی‌سازی سنتی

در فناوری مجازی‌سازی سنتی امکان ایجاد ماشین‌های مجازی (Virtual Machines – VMs) فراهم می‌شود. ریشه‌های این فناوری به دهه 1960 میلادی بازمی‌گردد، زمانی که شرکت IBM نخستین بار آن را در سیستم‌های mainframe به کار گرفت. در عصر حاضر، این فناوری به صورت گسترده در مراکز داده (دیتاسنترها)، پلتفرم‌های رایانش ابری و زیرساخت‌های سازمانی مورد استفاده قرار می‌گیرد.

  • معماری مجازی‌سازی سنتی

ساختار مجازی‌سازی سنتی مبتنی بر یک لایه نرم‌افزاری حیاتی به نام هایپروایزر (Hypervisor) است. این لایه به دو صورت مستقیم بر روی سخت‌افزار فیزیکی (Type 1) یا بر روی سیستم عامل میزبان (Type 2) نصب می‌گردد. وظیفه اصلی هایپروایزر، مدیریت و تخصیص بهینه منابع سخت‌افزاری شامل پردازنده (CPU)، حافظه (RAM) و فضای ذخیره‌سازی بین ماشین‌های مجازی (VMs) است. هر ماشین مجازی با دریافت سهم اختصاص یافته از منابع، به صورت مستقل عمل و سیستم عامل و برنامه‌های خود را اجرا می‌کند.

هایپروایزر نوع ۱ (BareMetal Hypervisor): اجرای مستقیم روی سخت‌‌افزار

  • مثال: VMware ESXi، Microsoft HyperV، Xen.
  • کاربرد: برای محیط‌های سازمانی با نیاز به کارایی و امنیت بالا.

هایپروایزر نوع ۲ (Hosted Hypervisor): نصب روی یک سیستم عامل میزبان (مانند Windows یا Linux) 

  • مثال: Oracle VirtualBox، VMware Workstation.
  • کاربرد: برای توسعه و تست

اجزای هر ماشین مجازی (VM) عبارتند از:

  • یک سیستم عامل کامل (Guest OS) مانند Windows یا Linux.
  • مجموعه‌ای از منابع اختصاص یافته (vCPU، حافظه مجازی، فضای ذخیره‌سازی).
  • شبکه‌سازی و درایورهای مجازی

 

 

  • مزایای مجازی‌سازی سنتی

1. ایزوله‌سازی کامل منابع: 
هر ماشین مجازی (VM) در محیطی کاملاً مستقل و مجزا عمل می‌کند، به طوری که خرابی، مشکلات امنیتی یا حملات به یک VM، هیچ تأثیری بر عملکرد سایر ماشین‌های مجازی نخواهد داشت.

2. پشتیبانی چندسکویی:
این فناوری امکان میزبانی و اجرای همزمان سیستم‌عامل‌های مختلف (مانند Windows، Linux و macOS) را بر روی یک سخت‌افزار فیزیکی فراهم می‌نماید.

3. سطح امنیتی پیشرفته:
به دلیل جداسازی سخت‌افزاری و معماری ایزوله، احتمال نفوذ و انتشار حملات بین ماشین‌های مجازی به حداقل می‌رسد.

4. مدیریت یکپارچه و متمرکز:
با استفاده از ابزارهای حرفه‌ای مانند VMware vCenter، امکان نظارت، کنترل و مدیریت هزاران ماشین مجازی به صورت متمرکز و کارآمد وجود دارد.

5. انعطاف‌پذیری در تخصیص منابع:
تنظیم و تغییر پویای منابع اختصاص یافته (CPU، حافظه، فضای ذخیره‌سازی) به هر VM بر اساس نیازهای متغیر کسب‌وکار، امکان‌پذیر است.

6. قابلیت انتقال و تحمل پذیری خطا:
پشتیبانی از ویژگی‌هایی مانند vMotion در VMware که امکان جابه‌جایی زنده ماشین‌های مجازی بین سرورهای فیزیکی را بدون وقفه سرویس فراهم می‌کند.

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

  • معایب مجازی‌سازی سنتی

1. مصرف بالای منابع سیستم:
هر ماشین مجازی نیازمند یک نسخه کامل از سیستم عامل است که موجب مصرف قابل توجه منابع پردازشی (CPU) و حافظه (RAM) می‌شود. این امر به ویژه در محیط‌هایی با تعداد زیاد VMها مشهود است.

2. کاهش کارایی به دلیل سربار عملکردی:
وجود لایه هایپروایزر موجب ایجاد سربار (Overhead) در عملکرد سیستم می‌گردد، به ویژه در عملیات ورودی/خروجی (I/O) که ممکن است تا 15% کاهش کارایی را به همراه داشته باشد.

3. زمان‌بر بودن فرآیندها:
• راه‌اندازی یک ماشین مجازی جدید معمولاً چندین دقیقه زمان می‌برد.
• فرآیند Migration ماشین‌های مجازی به سرورهای دیگر کند و پیچیده است.

4. پیچیدگی مدیریتی:
• اعمال وصله‌های امنیتی و به‌روزرسانی‌ها برای هر ماشین مجازی به صورت جداگانه لازم است.
• مدیریت نگهداری و پیکربندی تعداد زیادی VM مستلزم صرف زمان و منابع انسانی قابل توجهی است.

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

Containerization؛ انقلابی در مجازی‌سازی

  • تعریف و تاریخچه کانتینری‌سازی

کانتینری‌سازی یک روش نوین و بهینه‌شده برای مجازی‌سازی است که برنامه‌های کاربردی و کلیه وابستگی‌های آنها (کتابخانه‌ها، تنظیمات و محیط اجرا) را در واحدهای مستقل و سبک‌وزنی به نام کانتینر بسته‌بندی می‌نماید. برخلاف ماشین‌های مجازی، کانتینرها از هسته سیستم عامل میزبان به صورت اشتراکی استفاده می‌کنند.
دهه 2000: ریشه‌های این فناوری به قابلیت‌های جداسازی فرآیندها در سیستم‌عامل لینوکس (مانند LXC) بازمی‌گردد.
سال 2013: با معرفی پلتفرم Docker، کانتینری‌سازی به شکل امروزی متحول شد و محبوبیت گسترده‌ای یافت.
عصر حاضر: این فناوری به ستون فقرات معماری‌های مدرن مانند میکروسرویس‌ها و پیاده‌سازی‌های DevOps تبدیل شده است.

  • معماری Containerization (کانتینری‌سازی)

تفاوت کلیدی با VMها:
کانتینرها برخلاف ماشین‌های مجازی، بدون نیاز به سیستم عامل مجازی، مستقیماً بر روی هسته سیستم عامل میزبان (Host OS Kernel) اجرا می‌شوند.

موتور کانتینر (Container Engine):
– نرم‌افزارهای مدیریتی مانند Docker یا containerd
– مسئولیت ایجاد و مدیریت کانتینرها
– استفاده از مکانیزم‌های لینوکس شامل:
namespaceها: برای جداسازی فرآیندها
cgroups: برای کنترل و تخصیص منابع

ساختار کانتینرها:
1. تصویر (Image):
– بسته‌ای شامل نرم‌افزار و تمام وابستگی‌های آن
مثال: Docker Image

2. لایه‌های فایل سیستم:
– معماری لایه‌ای خواندنی-نوشتنی
مزیت: صرفه‌جویی قابل توجه در فضای ذخیره‌سازی
– امکان اشتراک‌گذاری لایه‌های پایه بین کانتینرهای مختلف

این معماری سبک‌وزن امکان اجرای سریع و کارآمد برنامه‌ها را در محیط‌های مختلف فراهم می‌سازد.

  • مزایای Containerization (کانتینری‌سازی)

  1. کارایی بهینه‌شده:
    با بهره‌گیری از هسته مشترک سیستم عامل میزبان، سربار عملکردی به حداقل می‌رسد و کارایی سیستم در مقایسه با مجازی‌سازی سنتی به‌طور محسوسی افزایش می‌یابد.
  1. مقیاس‌پذیری فوق‌العاده:
    امکان راه‌اندازی نمونه‌های جدید کانتینر در کسری از ثانیه تا چند ثانیه فراهم است که پاسخ‌گویی به نیازهای متغیر بار کاری را تسهیل می‌کند.
  1. سبک‌وزنی و حجم پایین:
    حذف نیاز به سیستم عامل مجازی برای هر نمونه، موجب کاهش چشمگیر مصرف منابع و فضای ذخیره‌سازی می‌شود.
  1. چرخه توسعه و استقرار کارآمد:
    یکپارچگی ذاتی با پلتفرم‌های مدرنی مانند Docker و Kubernetes، فرآیندهای CI/CD و استقرار برنامه‌ها را ساده‌تر و سریع‌تر می‌سازد.
  1. بهینه‌سازی مصرف منابع:
    توانایی اجرای ده‌ها کانتینر بر روی یک سرور فیزیکی بدون کاهش محسوس کارایی، منجر به استفاده حداکثری از ظرفیت سخت‌افزاری می‌شود.
  1. قابلیت حمل و سازگاری:
    تصاویر کانتینر به‌صورت مستقل از پلتفرم عمل می‌کنند و در محیط‌های مختلف (محلی، ابری، هیبریدی) به‌صورت یکسان اجرا می‌شوند.
  • معایب کانتینری‌سازی

  1. ایزوله‌سازی محدودتر:
    – به دلیل اشتراک‌گذاری هسته سیستم عامل میزبان، آسیب‌پذیری در هسته می‌تواند تمام کانتینرهای روی سرور را تحت تأثیر قرار دهد.
    – در مقایسه با ماشین‌های مجازی که ایزوله‌سازی سخت‌افزاری دارند، سطح جداسازی کمتری ارائه می‌دهد.
  1. محدودیت‌های پلتفرمی:
    – کانتینرهای مبتنی بر لینوکس به صورت native روی سیستم‌عامل ویندوز قابل اجرا نیستند (مگر با استفاده از Windows Subsystem for Linux یا WSL).
    – عدم پشتیبانی کامل از سیستم‌عامل‌های مختلف در مقایسه با راهکارهای مجازی‌سازی سنتی.
  1. ملاحظات امنیتی:
    – نیاز به پیکربندی دقیق برای جلوگیری از دسترسی‌های غیرمجاز بین کانتینرها.
    – در صورت عدم تنظیم صحیح namespaceها و cgroups، احتمال نشت منابع یا داده‌ها وجود دارد.
    – آسیب‌پذیری‌های احتمالی در موتور کانتینری‌سازی (مانند Docker) می‌تواند تمام کانتینرهای میزبان را در معرض خطر قرار دهد.

این محدودیت‌ها نشان می‌دهد که کانتینری‌سازی ممکن است برای همه انواع workloadها مناسب نباشد و انتخاب بین کانتینر و VM باید بر اساس نیازهای خاص هر پروژه انجام شود.

تحلیل تفاوت‌های مجازی‌سازی سنتی و Containerization از نظر کاربردها و مقایسه فنی

1. مقایسه از نظر معماری

سطح مجازی‌سازی

  • مجازی‌سازی سنتی:
  1. لایه اجرا: در سطح سخت‌افزار پیاده‌سازی می‌شود.
  2. مؤلفه‌های مجازی:
    شامل BIOS مجازی برای هر نمونه
    – درایورهای مجازی اختصاصی
    – زیرساخت شبکه‌سازی مستقل برای هر VM
  1. بهینه‌سازی سخت‌افزاری:
    – استفاده از فناوری‌های Intel VT-x و AMD-V
    – شتاب‌دهی عملیات مجازی‌سازی در سطح پردازنده
  • Containerization(کانتینری‌سازی):
  1. لایه اجرا: در سطح سیستم عامل عمل می‌کند.
  2. مکانیزم‌های جداسازی:
    استفاده از namespaceهای لینوکس برای:
    – جداسازی فرآیندها
    – ایزوله‌سازی شبکه
    – سیستم فایل مستقل
  1. مدیریت منابع:
    بهره‌گیری از cgroups (کنترل‌گروه‌ها) برای:
    – تخصیص و محدودیت منابع
    – نظارت بر مصرف CPU، حافظه و I/O
    امکان اولویت‌بندی تخصیص منابع بین کانتینرها

مدیریت حافظه

معیار

VMs

Containes

اشتراک حافظه

غیرممکن

امکان‌پذیر

Swap Space

ختصاصی برای هر VM

مشترک با Host

Page Cache مستقل

اشتراکی

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

 

 

2. مقایسه از نظر عملکرد

زمان راه‌اندازی: 

  • VMها برای راه‌اندازی، به چند دقیقه زمان نیاز دارند.
  • کانتینرها در چند ثانیه اجرا می‌شوند.

مصرف حافظه: 

  • یک VM با Ubuntu ممکن است 1 تا 2 گیگابایت RAM مصرف کند.
  • یک کانتینر Ubuntu فقط 50 تا 100 مگابایت نیاز دارد.

کارایی شبکه:

  • تأخیر شبکه در VMها تقریباً 20٪ بیشتر است.
  • پهنای باند در کانتینرها تقریباً 15٪ بهتر است.

معیارهای I/O:

  • عملکرد دیسک:

  • VMها با virtual disk: میزان 60-70٪ کارایی فیزیکی
  • کانتینرها با volumeها: میزان 85-95٪ کارایی فیزیکی
  • دسترسی به فایل‌سیستم:

  • NFS در VMها: 30ms تأخیر
  • Bind mounts در کانتینرها: <5ms تاخیر

3. مقایسه از نظر امنیت

  • مجازی‌سازی سنتی (VMها):
    1. ایزوله‌سازی قوی:
    – جداسازی کامل در سطح سخت‌افزار.
    – هر VM دارای فضای حافظه و منابع پردازشی کاملاً مستقل.
    – عدم تأثیر خرابی یا حمله به یک VM، روی سایر ماشین‌ها.
    2. سطح حمله محدود:
    – هایپروایزر سطح کمتری از آسیب‌پذیری نسبت به هسته سیستم عامل دارد.
    – معماری سخت‌افزاری از مکانیزم‌های امنیتی مانند TPM پشتیبانی می‌کند.
  • کانتینری‌سازی:
    1. چالش‌های امنیتی:
    – اشتراک هسته سیستم عامل بین کانتینرها.
    – امکان اثرگذاری آسیب‌پذیری در هسته روی تمام کانتینرها.
    2. راهکارهای افزایش امنیت:
    – SecComp: فیلتر کردن syscallهای خطرناک
    – SELinux: اعمال سیاست‌های امنیتی اجباری
    – AppArmor: محدودسازی دسترسی‌های فرآیندها
    – محدودیت‌های cgroups: کنترل مصرف منابع

بنابراین جمع‌بندی مقایسه امنیتی مجازی سازی سنتی و کانتینری‌سازی به صورت زیر است:

  • برای محیط‌های حساس با نیاز امنیتی بالا: VMها گزینه مناسبی به شمار می‌آیند.
  • برای محیط‌های چابک با نیاز به مقیاس‌پذیری: کانتینرها با پیاده‌سازی راهکارهای امنیتی اضافه توصیه می‌شود.
  • راهکار ترکیبی: استفاده از کانتینرها بر روی VMها برای توازن بین امنیت و کارایی.

کاربردهای هر فناوری در صنعت

استفاده تخصصی از مجازی‌سازی سنتی:

۱. محیط‌های بانکی و مالی

 دلایل انتخاب:

  • نیاز به ایزوله‌سازی کامل بین سیستم‌های حساس.
  • الزامات انطباق نظارتی مانند PCIDSS.
  • پشتیبانی از سیستم‌عامل‌های قدیمی (مانند Windows Server 2008).

مثال‌های عملی:

  • Core Banking Systems
  • Payment Processing
  • ATM Backends

۲. محیط‌های نظامی و امنیتی

 مزایا:

  • امکان airgapped deployment
  • پشتیبانی از multilevel security
  • مقاومت در برابر حملات sidechannel

۳. دسکتاپ‌های مجازی (VDI)

راهکارهای رایج:

  • VMware Horizon
  • Citrix Virtual Apps and Desktops
  • Microsoft Remote Desktop Services

استفاده تخصصی از Containerization :

۱. معماری‌های میکروسرویس مدرن

الگوهای پیاده‌سازی:

  • Service Mesh (Istio, Linkerd)
  • Sidecar Pattern
  • EventDriven Architecture

مزایا:

  • Autoscaling عمودی و افقی
  • Canary Deployments
  • A/B Testing

۲. هوش مصنوعی و یادگیری ماشین

 سناریوهای کاربردی:

  • مدل‌های آموزشی در Kubernetes\
  • سرویس‌های استنتاج با GPU Sharing
  • پایپلاین‌های MLOps

ابزارهای تخصصی:

  • Kubeflow
  • NVIDIA Triton Inference Server
  • TensorFlow Serving

۳. اینترنت اشیا (IoT)

الگوهای استقرار:

  • Edge Computing با k3s
  • Fog Computing
  • OTA Updates برای دستگاه‌ها

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

 ۱. کانتینرها درون VMها

 مزایا:

  • امنیت VM + چابکی کانتینر
  • مناسب برای محیط‌های چند مستأجره

معماری‌های رایج:

  • Kubernetes روی VMware
  • OpenShift Virtualization

۲. راهکارهای ابری ترکیبی

 سناریوها:

  • Burst to Cloud
  • Disaster Recovery
  • GeoDistributed Deployments

جدول مقایسه کاربردی مجازی‌سازی سنتی و Containerization

تحلیل SWOT فناوری‌های مجازی‌سازی

♦ تحلیل SWOT مجازی‌سازی سنتی (VMBased)

قوت‌ها (Strengths):

  •  سطح امنیتی و ایزوله‌سازی بسیار بالا
  • پشتیبانی گسترده از سیستم‌عامل‌های مختلف
  • بلوغ فناوری و پشتیبانی سازمانی قوی
  • مناسب برای محیط‌های حساس و missioncritical

ضعف‌ها (Weaknesses):

  • مصرف منابع سخت‌افزاری بالا
  • زمان راه‌اندازی و استقرار طولانی
  • سربار عملکردی (Overhead) قابل توجه
  • پیچیدگی در مدیریت و نگهداری

فرصت‌ها (Opportunities):

  • کاربرد در محیط‌های امنیتی حساس (مانند سازمان‌های دولتی و مالی)
  • توسعه راهکارهای ابری امن (Secure Cloud)
  • یکپارچه‌سازی با فناوری‌های جدید مانند Confidential Computing

تهدیدها (Threats):

  • رقابت فزاینده با فناوری کانتینری‌سازی
  • کاهش سهم بازار در کاربردهای چابک و مبتنی بر DevOps
  • نیاز به سرمایه‌گذاری سنگین سخت‌افزاری

 

 

♦ تحلیل SWOT کانتینری‌سازی (Containerization)

قوت‌ها (Strengths):

  •  چابکی و سرعت استقرار بسیار بالا
  • مقیاس‌پذیری افقی کارآمد
  • بهینه‌سازی مصرف منابع سخت‌افزاری
  • یکپارچه‌سازی طبیعی با DevOps و CI/CD

ضعف‌ها (Weaknesses):

  • چالش‌های امنیتی ناشی از اشتراک هسته
  • محدودیت در پشتیبانی از سیستم‌عامل‌های ناهمگن
  • نیاز به تنظیمات امنیتی پیشرفته (SELinux, SecComp, …)
  • وابستگی به ثبات و امنیت هسته میزبان

فرصت‌ها (Opportunities):

  • رشد سریع بازار DevOps و میکروسرویس‌ها
  • توسعه اکوسیستم‌های مدیریت کانتینر (Kubernetes, Service Mesh)
  • پذیرش روزافزون در معماری‌های ابری و Edge Computing

تهدیدها (Threats):

  • محدودیت‌های ذاتی معماری مبتنی بر هسته مشترک
  • چالش‌های امنیتی در محیط‌های چنداجاره‌ای (Multitenant)
  • رقابت فناوری‌های جدید مانند Unikernels و MicroVM

هر دو فناوری با توجه به نقاط قوت و ضعف خود، کاربردهای مناسبی در سناریوهای مختلف دارند. در بسیاری از موارد، معماری‌های ترکیبی (مانند اجرای کانتینرها روی VMها) می‌توانند توازن مناسبی بین امنیت و چابکی ایجاد نمایند.

 

چشم‌انداز آینده فناوری‌های مجازی‌سازی

محیط‌های سنتی و امنیتی: همچنان به VMها نیاز دارند.
سیستم‌های چابک و ابری: کانتینرها گزینه بهینه هستند.

راهکارهای آینده: ترکیب این دو فناوری (مانند Kata Containers) بیشتر خواهد شد.

  • ترکیب VM و کانتینرها (مثل Kata Containers).
  • Serverless Computing (مانند AWS Lambda).
  • افزایش استفاده از Kubernetes برای مدیریت کانتینرها.

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

جمع‌بندی و راهکار عملیاتی

انتخاب فناوری بر اساس نیازهای سازمانی:

1.محیط‌های با الزامات امنیتی بالا (مانند سیستم‌های بانکی، دولتی و سلامت):

  • راهکار پیشنهادی: مجازی‌سازی سنتی (VM)
  • دلایل: ایزوله‌سازی سخت‌افزاری، ممیزی امنیتی دقیقتر، سازگاری با استانداردهای نظارتی

2. کاربردهای چابک و مقیاس‌پذیر (توسعه نرم‌افزار، میکروسرویس‌ها):

  • راهکار پیشنهادی: کانتینری‌سازی
  • دلایل: استقرار فوری، بهینه‌سازی منابع، یکپارچگی با DevOps

3. راهکار ترکیبی پیشرفته:

الگوی VM + Container: اجرای کلاسترهای کانتینری (مانند Kubernetes) بر روی زیرساخت مجازی‌شده
مزایا:

  • امنیت سطح هایپروایزر + چابکی کانتینرها
  • امکان مدیریت یکپارچه منابع
  • مناسب برای محیط‌های ابری هیبریدی

نقشه راه پیاده‌سازی:

  1. ارزیابی دقیق نیازهای کسب‌وکار
  2. آنالیز الزامات امنیتی و مقیاس‌پذیری
  3. طراحی معماری ترکیبی متناسب با workloadها
  4. اجرای مرحله‌ای با قابلیت مانیتورینگ و بهینه‌سازی مستمر

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

مقاله پیشنهادی:

کاربرد سرور اچ پی در محیط‌های ابری و مجازی سازی