بازگشت به کتابخانهکتابخانه1.3از لپ‌تاپ تا اینترنت: سرور، هاست و Git
طراحی سیستم نرم‌افزاریSYSTEM DESIGNاز صفر تا تسلط
v1.0.0
01مبانی و تصویر بزرگ
02Scalability و ظرفیت
03لایه داده
04Cache، Queue و جریان
05معماری نرم‌افزار
06قابلیت اطمینان و عملیات
07متد طراحی
08Case Study های واقعی
09سیستم‌های توزیع‌شده عمیق
10مهندسی تولید: داده، امنیت و کارایی
11تمرین پیشرفته و کیس‌استادی‌های مکمل
12زیر کاپوت دیتابیس و معماری داده
13وب بلادرنگ و پروتکل‌های مدرن
14سیستم‌های توزیع‌شده پیشرفته
15SaaS ،SRE ،امنیت و شبکه پیشرفته
16طراحی سیستم در عصر AI
17Case Study های تکمیلی
LESSON 1.3فصل ۱مبانی و تصویر بزرگ

از لپ‌تاپ تا اینترنت: سرور، هاست و Git

  • ~۱۲ دقیقه
  • ۵ پرسش
  • متن را انتخاب کن تا هایلایت شود

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

این درس همان جعبه ابزار روزمره وب است. اگر این اسم‌ها را قاطی کنی، بعداً در طراحی سیستم هم قاطی می‌کنی: نمی‌فهمی «سرور» یعنی ماشین، «هاست» یعنی اجاره، و Deploy یعنی رساندن کد به آن ماشین.

سه چیز را قاطی نکن

مردم می‌گویند «هاست بخر» یا «بگذار روی سرور». این‌ها یکی نیستند. مثل فرق ساختمان، واحد اجاره‌ای، و پلاک روی در.

Server
خودِ ماشین. یک کامپیوتر که معمولاً در دیتاسنتر است، همیشه روشن است، و برنامه تو را اجرا می‌کند. لپ‌تاپ تو وقتی خواب است Server نیست.
Hosting
اجاره کردن جا روی آن ماشین. تو ساختمان نمی‌خری؛ یک واحد یا یک تکه از ساختمان را کرایه می‌کنی. به فارسی همان «هاست» است.
Domain
اسمی که مردم تایپ می‌کنند، مثل shop.ir. Domain خودش سایت نیست؛ فقط یک برچسب است که با DNS به IP همان Server وصل می‌شود.
localhost
همین کامپیوتر خودت. وقتی سایت را روی لپ‌تاپ تست می‌کنی، آدرسش معمولاً localhost است — هنوز روی اینترنت نیست.

از اتاق مشترک تا ابر

سؤال واقعی این نیست «هاست بهتر است یا سرور؟» سؤال این است: چقدر کنترل می‌خواهی، چقدر پول می‌دهی، و اگر همسایه شلوغ کرد، سایت تو می‌لرزد یا نه؟

Shared Hosting
ارزان‌ترین حالت: ده‌ها سایت روی یک ماشین، با یک پنل آماده. برای سایت شخصی خوب است. کنترل کم است؛ اگر همسایه CPU را بخورد، تو هم کند می‌شوی.
VPS
مخفف Virtual Private Server. یک تکه مجازی از یک ماشین واقعی که انگار سرور خودت است: سیستم‌عامل، SSH، نصب هر چه بخواهی. تعادل رایج بین قیمت و کنترل.
Dedicated
کل ماشین فیزیکی مال توست. قدرت و ایزوله بیشتر، قیمت بالاتر. وقتی یک VPS دیگر جا ندارد یا باید سخت‌افزار خاص داشته باشی.
VM
ماشین مجازی. روی یک سخت‌افزار قوی، چند کامپیوتر جعلی ساخته می‌شود. VPS معمولاً همان یک VM اجاره‌ای است.
Cloud
به‌جای یک ماشین ثابت، قطعه‌ها را از یک ابر بزرگ کرایه می‌کنی: VM، دیسک، دیتابیس. می‌توانی امروز یک ماشین داشته باشی و فردا ده تا. معروف‌ها: AWS، GCP، Azure.

چه کسی آشپزی می‌کند؟ IaaS و PaaS و SaaS

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

IaaS
زیرساخت به‌عنوان سرویس. ماشین خام می‌گیری؛ نصب سیستم، Nginx، دیتابیس و امنیت با توست. مثل اجاره یک واحد خالی.
PaaS
پلتفرم به‌عنوان سرویس. کد را می‌فرستی، اجرا با آن‌هاست. Vercel و Netlify و Railway از این خانواده‌اند. کمتر دردسر، کمتر کنترل.
SaaS
نرم‌افزار آماده. Gmail یا Notion را استفاده می‌کنی، نه اینکه خودت میزبانش باشی. تو کاربر هستی، نه میزبان.

Git: دفترچه تاریخچه کد

بدون Git، کد یعنی چند پوشه روی لپ‌تاپ و ترس دائمی که «نسخه دیروز کجا رفت؟» Git هر تغییر را با اسم و تاریخ قفل می‌کند تا بشود برگشت، شاخه زد، و چند نفر روی یک پروژه کار کنند بدون اینکه فایل را با واتساپ بفرستند.

Git
ابزار تاریخچه کد روی کامپیوتر خودت. می‌فهمد چه فایلی عوض شد و می‌تواند هر نسخه قدیمی را برگرداند.
Repository
انبار پروژه. همان پوشه پروژه به‌اضافه تاریخچه‌اش. کوتاه‌شده‌اش Repo است.
Commit
یک عکس فوری از تغییرات، با یک پیام. مثل «دکمه پرداخت را درست کردم». تاریخچه از همین عکس‌ها ساخته می‌شود.
Branch
یک شاخه جدا برای کار جدید، بدون خراب کردن نسخه اصلی. معمولاً شاخه اصلی main یا master است.
Merge
ادغام شاخه در شاخه دیگر. کار تمام‌شده را برمی‌گردانی روی نسخه اصلی.
Pull Request
در GitHub یا GitLab درخواست می‌دهی که شاخه‌ات را Merge کنند. بقیه کد را می‌بینند، حرف می‌زنند، بعد تأیید می‌شود. به آن PR هم می‌گویند.
clone / push / pull
clone یعنی یک کپی از Repo را روی لپ‌تاپ بیاور. push یعنی تغییرات را به سرور Git بفرست. pull یعنی تغییرات بقیه را بگیر.

Git با GitHub یکی نیست. Git ابزار است؛ GitHub و GitLab و Bitbucket سایت‌هایی هستند که Repo را نگه می‌دارند، PR می‌سازند و به CI/CD وصل می‌شوند. کد را آن‌جا می‌گذاری تا بقیه و سرور Deploy هم به آن برسند.

CI/CD: از پوش تا سایت زنده

قدیم‌ها فایل را با FTP روی هاست کپی می‌کردند. یک فایل جا می‌ماند، سایت می‌خوابید، و کسی نمی‌فهمید کدام نسخه روی سرور است. CI/CD همین کار را مکانیزه می‌کند.

مسیر کد از لپ‌تاپ تا سرور
لپ‌تاپ → بایگانی نسخه‌ها (Git) → جعبه روی خط تولید (Pipeline) → قفسه سرور. Deploy یعنی همین رساندن، نه فقط «آپلود یک فایل».
DIAGRAMمسیر کد تا اجرا
Laptop + Git
GitHub / GitLab
CI Pipeline
VPS یا PaaS
CI
مخفف Continuous Integration. هر بار Push می‌کنی، یک ربات تست و بررسی را خودش اجرا می‌کند. اگر چیزی شکست، قبل از رسیدن به کاربر می‌فهمی.
CD
دو معنی نزدیک: Continuous Delivery یعنی نسخه آمادهٔ انتشار همیشه موجود است؛ Continuous Deployment یعنی همان نسخه خودکار روی سرور هم می‌رود.
Pipeline
همان خط تولید: نصب وابستگی، تست، ساخت، Deploy. اگر یک پله خراب شود، بقیه جلو نمی‌روند.
GitHub Actions
نمونه رایج Pipeline که کنار خود GitHub زندگی می‌کند. GitLab CI هم همان کار را داخل GitLab می‌کند. Jenkins نسخه قدیمی‌تر و خودمیزبان است.
Deploy
رساندن نسخه جدید به محیطی که کاربر می‌بیند — یا به محیط آزمایش. Deploy موفق یعنی کد از Repo به Server (یا PaaS) رسید و در حال اجراست.

چند اصطلاح که هر وب‌کار می‌شنود

این‌ها را حفظ نکن؛ شغل هر کدام را بفهم. در آگهی کار و در حرف زدن تیم، مدام تکرار می‌شوند.

Frontend / Backend
Frontend همان چیزی است که در مرورگر دیده می‌شود: HTML و CSS و JS. Backend منطق پشت صحنه است: سرور، دیتابیس، پرداخت. یک نفر ممکن است هر دو را بکند؛ سیستم معمولاً هر دو را دارد.
SSH
ورود امن متنی به Server یا VPS. مثل این است که صفحه‌کلیدت به آن ماشین وصل شود. برای نصب برنامه و دیدن لاگ.
SFTP
نسخه امن‌تر FTP برای کپی فایل. هنوز در هاست‌های قدیمی هست؛ در تیم‌های مدرن معمولاً Pipeline جای آن را گرفته.
Environment variable
تنظیمات محرمانه یا متغیر بیرون از کد: رمز دیتابیس، کلید درگاه. در فایل .env روی سرور می‌ماند، نه داخل Git.
Staging
یک کپی شبیه Production برای آزمایش، قبل از اینکه کاربر واقعی ببیند. اگر این‌جا شکست، هنوز فرصت هست.
Production
محیط واقعی کاربر. این‌جا جای آزمایش نیست. Deploy به Production باید با تست و معمولاً با Pipeline باشد.
Docker
برنامه را با تمام وابستگی‌هایش داخل یک Container بسته‌بندی می‌کند. روی لپ‌تاپ و روی VPS تقریباً یکسان اجرا می‌شود. «روی سیستم من کار می‌کرد» را کم می‌کند.
Nginx
برنامه رایجی که جلوی در Server می‌ایستد: درخواست را می‌گیرد، فایل ثابت را می‌دهد، یا به برنامه تو پاس می‌دهد. هم وب‌سرور است هم Reverse Proxy.
npm
جعبه ابزار نصب کتابخانه‌های JS. تقریباً هر پروژه فرانت یا Node یک فایل package.json دارد که npm از روی آن نصب می‌کند.
SSL
در حرف مردم همان قفل HTTPS است. از نظر فنی امروز TLS است؛ Certificate همان مدرک قفل است.

به زبان ساده

سرور خود ماشین است، هاست اجاره جا روی آن ماشین است، Git تاریخچه کد است و CI/CD همان کد را خودکار تست و منتشر می‌کند.

مثال واقعی

مثل ساختمان: Shared آشپزخانه مشترک است، VPS واحد خودت، Dedicated کل ویلا. کد را با Git ثبت می‌کنی و Pipeline مثل پیک آن را به واحد می‌رساند.

دانش‌سنجی

آزمون درس

۵ Q
01
Hosting دقیقاً یعنی چه؟
02
تفاوت اصلی VPS با Shared Hosting چیست؟
03
کار اصلی Git چیست؟
04
CI در CI/CD یعنی چه؟
05
محیط Staging برای چیست؟