انتقل إلى المحتوى
use-cases / branch-computers-like-git / hero
لقطات · بناء بيئات التطوير

فرّع الحواسيب مثل فرع الكود

تُجمّد لقطة الحاوية المشغلة — نظام الملفات، والعمليات، والذاكرة، ومقابض الملفات المفتوحة. استعادة في 5–15 ثانية. انشقاق إلى حاوية منفصلة بطلب POST واحد. الفروع، لكن للجهاز كاملاً.

وثائق اللقطات
use-cases / branch-computers-like-git / capture

ما الذي يتم التقاطه فعلاً

وضعان، حددتا بحالة الحاوية في وقت اللقطة. الديناميكية تلتقط كل شيء؛ بدون حالة نظام الملفات فقط.

عند التشغيلالإنشاء 1–5 ث · الاستعادة 5–15 ث

حالة ديناميكية — حاوية قيد التشغيل

  • نظام الملفات (CoW delta)BTRFS reflinks؛ اللقطات اللاحقة تخزن فقط الكتل المتغيرة.
  • شجرة العمليةدوامات طويلة الأجل تستأنف منتصف الحركة، وليس من الحذاء.
  • حالة الذاكرةHeap, stack, mmaps. ~4 GB قرص إضافي لتفريغ RAM.
  • فتح واصفات الملفاتالمقابس المحلية و FDs تبقى؛ النظراء البعيدون لا.
  • تمرير الطرفيةجلسات tmux/screen الحية تستأنف منتصف السطر.
عند التوقفالإنشاء 1–5 ث · البدء البارد 5–15 ث

بدون حالة — حاوية موقوفة

  • نظام الملفات (CoW delta)نفس نموذج التخزين الإضافي كديناميكي.
  • شجرة العمليةالحاوية تبدأ طازجة من نظام الملفات المقبوض.
  • حالة الذاكرةلا يتم تفريغ RAM — يوفر القرص والوقت.
  • فتح واصفات الملفاتأعادت فتح العمليات الجديدة على البدء البارد.
  • ملفات قاعدة البياناتPostgres / SQLite تتعافى من WAL المقبوضة.
use-cases / branch-computers-like-git / branch

التفرع استدعاء HTTP واحد

اللقطات نقاط alias مسماة. /copy تشغل حاوية منفصلة من أي منها — نفس البيانات، جدول زمني مختلف.

iterm
# 1) ضع علامة على نقطة التفرع.
curl -X POST "https://api.hoody.com/api/v1/containers/$CID/snapshots" \
  -H "Authorization: Bearer $HOODY_TOKEN" \
  -d '["alias": "pre-migration", "expiry": 30]'

# 2) استعد في المكان — استعد هذه الحاوية للقطة.
curl -X PATCH "https://api.hoody.com/api/v1/containers/$CID/snapshots/pre-migration" \
  -H "Authorization: Bearer $HOODY_TOKEN"

# 3) تفرع — انشر حاوية منفصلة من نفس اللقطة.
curl -X POST "https://api.hoody.com/api/v1/containers/$CID/copy" \
  -H "Authorization: Bearer $HOODY_TOKEN" \
  -d '["target_project_id":"prod","name":"experiment-a","source_snapshot":"pre-migration"]'

الاستعادة تعيد في المكان. النسخ تنشئ حاوية مستقلة تعيش على نفسها — معرّف مختلف، جدول زمني مختلف، الأصل الخاص بك يستمر. أيضاً محدود؛ التخزين إضافي، لذا رخيص.

تدفق الاستعادةنافذة الاستعادة · 5 إلى 15 ثانية
0110:00لقطة مأخوذة
0210:14الهجرة تنفجر
0310:14:08مُعاد
use-cases / branch-computers-like-git / powers

ما الذي يفتحه نموذج الفرع

ثلاث سير عمل غير عملية مع لقطات VM والمستحيلة مع docker commit.

  1. 01

    تجارب متوازية

    انشر N حاوية من نفس اللقطة عبر /copy — جرّب ثلاث استراتيجيات هجرة بالتوازي، احتفظ بالفائز.

  2. 02

    رحلة عودة كل نشر خطير

    POST لقطة قبل أي تغيير مدمر. استعادة سبع ثوان هي زر الرجوع الخاص بك للآلة كاملة.

  3. 03

    جدول زمني متين

    الأسماء المستعارة نقاط فرع مسماة. snapshot_count في API الحاوية. التخزين إضافي، لذا رخيص للاحتفاظ بعشرات.

use-cases / branch-computers-like-git / replaces

ما هذا يستبدل

إذا وصلت إلى أي من هذه للتعافي من تغيير سيء، نموذج اللقطة يفعل نفس الوظيفة في 5–15 ثانية مع استدعاء HTTP واحد.

  • vm-snapshotsدقائق للأخذ، GBs من القرص لكل لقطة
  • vagrantصناديق محلية، بلا حالة مشتركة، بلا استعادة بعيدة
  • docker commitنظام ملفات فقط، بلا عمليات / بلا ذاكرة
  • النسخ الاحتياطية اليدويةrsync + صفحة wiki لا أحد يقرأها
  • دورات pg_dumpقاعدة بيانات فقط، تترك باقي الصندوق منتصف حالة سيئة
  • إعادة البناء من الصفر30+ دقيقة، تكسر جلسة المحرر الخاصة بك
use-cases / branch-computers-like-git / cta

Git أعطاك التفرع للكود. Hoody يعطيك التفرع للحواسيب كاملة.

اقرأ API اللقطة
use-cases / branch-computers-like-git / related

اقرأ الآخرين