معماری هزینه
1) اصول و نقشها
هزینه به عنوان یک ویژگی قیمت بخشی از UX/محصول و راه حل های معماری است.
مسئولیت مشترک مهندسین، پلت فرم/DevEx، امور مالی، محصول - یک حلقه بازخورد واحد.
تنها یک منبع حقیقت کاتالوگ برچسب/برچسب، فرهنگ لغت هزینه و منابع داده.
سازمان دیده بان → بهینه سازی → مدیریت حلقه. داشبورد داخلی، دروازه های اتوماتیک و سیاست ها.
نقش ها: معمار ارزش، تحلیلگر FinOps، مالک محصول، تیم پلت فرم.
2) مدل داده ارزش
اقتصاد واحد:- برای API: '$/1000 requests', '$/millisecond CPU', '$/GB egress'.
- برای دادهها: «$/GB-month of storage»، «$/request to the database»، «$/million messages».
- برای کاربر: «CAC»، «ARPU/ARPPU»، «حاشیه ناخالص»، «LTV: CAC».
- برای جریان: «$/معامله»، «$/سپرده»، «$/تست اجرا».
cost_record {
ts, provider, account, region, service, usage_qty, usage_unit,
list_price, net_price, discounts,
tags: { env, team, product, feature, tenant, cost_center, pii, tier },
resource_id, allocation_keys: {req_id?, tenant_id?, dataset?}
}
برچسب های طلا (مورد نیاز): 'env'، 'تیم'، 'محصول'، 'ویژگی'، 'هزینه _ مرکز'، 'مالک'، 'pii'، 'tier (گرم/گرم/سرد)'، 'منطقه'.
3) Attribution: showback/chargeback
Showback: گزارش های شفاف در مورد تیم ها/ویژگی ها بدون شارژ انتقال داخلی.
بازپرداخت: توزیع توسط قوانین: هزینه های مستقیم به مالک ؛ منابع به اشتراک گذاشته شده - توسط کلید: RPS، ثانیه CPU، ساعت GB، حجم رویدادها.
cluster_cost = sum(provider_cost where resource in "k8s-node:")
weights = { service: cpu_seconds(service)/total_cpu_seconds }
for service in services:
charge[service] = direct_cost(service) + cluster_cost weights[service]
4) سیاست به عنوان کد
قوانین بودجه: محدودیت های 'env/team/feature' ؛ خودکار هشدار/بلوک را در پیش بینی بیش از حد.
الزامات برچسب: منابع بدون برچسب های اجباری - انکار در کنترل پذیرش.
محدودیت های پروفایل: ممنوعیت ماشین های بزرگ در «dev»، TTL در منابع کوتاه مدت، حداقل رزرو.
yaml policy: require-tags-and-limits deny_if_missing_tags: [team, product, env, cost_center, owner]
constraints:
env==dev:
max_instance_type: "c6i. large"
ttl_hours: 72
5) محاسبات: الگوهای کاهش هزینه
اندازه صحیح (rightsizing): خودکار تطبیق vCPU/RAM بر اساس p95/p99، فصلی و headroom.
مقیاس خودکار: مبتنی بر هدف (CPU/RPS/lag)، توابع مرحله ؛ محافظت در برابر ضربه از طریق هیسترزیس.
انتخاب مدل قیمت: بر روی تقاضا در مقابل نقطه/قابل پیش بینی، موارد رزرو شده/برنامه های پس انداز ؛ مخلوط برای انتقادی و پس زمینه.
خطوط لوله دسته ای: پنجره های بار «ارزان»، فشرده سازی دسته ای، صف های اولویت.
درخواست های ذخیره سازی و زغال سنگ: کاهش خواندن از منابع گران قیمت
بهینه سازی لبه/شبکه: HTTP/2/3، زنده نگه داشتن، فشرده سازی، CDN.
یک مثال از یک autoscale (pseudo):
if rps > target1. 2 for 3m: replicas += ceil(rps/target); cool_down 5m if rps < target0. 6 for 10m: replicas = max(min_replicas, replicas-1)
6) ذخیره سازی و داده ها: گرم/گرم/سرد
پاره شدن: داده های داغ (دسترسی سریع)، گرم (درخواست های نادر)، سرد/بایگانی.
فرمت ها: ستون (Parquet/ORC) برای تجزیه و تحلیل، فشرده سازی و پارتیشن بندی بر اساس تاریخ/کلید.
TTL/ILM: سیاست زندگی را تنظیم کنید: «گرم 7d → گرم 90d → سرد 365d → حذف».
لایه کش: Redis/Memcached با ادغام درخواست، حفاظت از طوفان خانم.
سهمیه ها و بودجه های درخواست: محدودیت های قابل پیش بینی در پیوست ها/اسکن های گران قیمت.
yaml dataset: events_main lifecycle:
- phase: hot; duration: 7d; storage: nvme
- phase: warm; duration: 90d; storage: ssd; compress: zstd
- phase: cold; duration: 365d; storage: object; glacier: true
- phase: purge; duration: 0d
7) شبکه و خروج
به حداقل رساندن ترافیک بین منطقه ای: نسخه های محلی و تجمع لبه.
CDN و حافظههای نهان: origin-shield, reasonable TTL, validation/disability.
پروتکل ها: باینری (gRPC) برای چت، فشرده سازی تنها در جایی که مفید است.
رویدادهای Dedup و فیلتر کردن بر روی تولید کننده: «زباله را حمل نکنید».
8) قابلیت مشاهده و هزینه SRE
کارت های هزینه تله متری: «$/log-GB»، «$/metric-series»، «$/trace».
نمونه برداری و جمع آوری: نمونه برداری مبتنی بر دم، معیارهای downsampling، حفظ اهمیت (معیارهای SLO - اولویت بالاتر).
مرده از سیاهههای مربوط و «ورود به سیستم بهداشت»: ممنوعیت PD، کاهش زمینه فانتوم، محدودیت در اندازه این رویداد است.
9) CI/CD و محیط آزمایش
Ephemeral با خودکار TTL، محیط زیست «توسط PR» می ایستد.
Perf-smoke در PR: کوتاه مدت برای ارزیابی اولیه «هزینه تحقیق».
کش/مصنوعات: استفاده مجدد از ظرف، کامپایل ها.
گیتس: ساخت/استقرار رد شده است اگر «قیمت تاخیر «/RPS نسبت به پایه> X٪ بدتر شده است.
10) پیش بینی، بودجه و ناهنجاری
پیش بینی ها: فصلی/روند، رویدادها (کمپین ها، نسخه ها)، همبستگی ویژگی.
بودجه های سطح: تیم/محصول/ویژگی/مستاجر ؛ افزایش در 80/90/100٪.
ناهنجاری ها: قله های ناگهانی توسط سرویس/منطقه/حساب ؛ خودکار «bisect» و بازگشت پرچم.
if forecast(month_end_cost) > budget0. 9 and variance ↑:
alert(team_owner)
suggest: rightsizing + RI/SP coverage + ILM tighten
11) تدارکات و بازرگانی
RI/برنامه های پس انداز/متعهد استفاده: پوشش پایه پایدار ؛ پوشش مانیتور و درصد «استفاده نشده».
نقطه/قابل پیش بینی: وظایف پس زمینه و گردش کار تحمل ؛ چک کردن و راه اندازی مجدد سریع.
مجوزها و SaaS: ماتریس ROI، معیار جایگزین، دوره «بررسی تناسب اندام فروشنده».
12) چند اجاره و صدور صورت حساب
تقسیم توسط مستاجر: جدایی منطقی/فیزیکی، محدودیت ها و سهمیه ها.
محدود/ratecaps مستاجر آگاه: جلوگیری از «همسایه پر سر و صدا».
مدل های استفاده: صورتحساب توسط رویدادها، RPS، حجم داده ها ؛ معیارهای شفاف برای مشتریان.
13) ایمنی و انطباق به عنوان یک عامل هزینه
رمزنگاری و ذخیره سازی: FPE/کلید - هزینه های KMS/HSM ؛ بهینه سازی فرکانس عملیات.
نسخه های قانونی: بازپرداخت «قانونی» را از موارد عملیاتی جدا کنید. بایگانی ارزان تر از ذخیره سازی «گرم ابدی» است.
به حداقل رساندن داده ها: داده های کمتر - صورتحساب و خطرات کمتر.
14) مهندسی ضد الگوهای (گران!)
API های چت بدون دسته و ذخیره.
صف های نامحدود و موازی سازی نامحدود - رشد تاخیر و شمارش.
صفر TTLs و کلید های داغ بدون coalessing.
داشبوردهای «all-seeing» با میلیونها متریک سری.
منابع بدون برچسب → «خاکستری» هزینه بدون صاحب.
فقدان ILM/TTL → رشد ذخیره سازی برای همیشه.
15) ابزار و مصنوعات (فروشنده خنثی)
دایرکتوری برچسب (schema + linter در CI).
استخراج هزینه (استفاده از جمع آوری/صدور صورت حساب، عادی به یک فرمت واحد).
اقتصاد واحد داشبورد (API-cost، data-cost، tenant-cost).
ویرایش خودکار (rightsizer، RI/SP-recommendation، ILM-enforcer).
سیاست های هزینه (پذیرش/OPA/Kiverno) و خطوط قرمز بودجه.
16) دستور العمل های کوچک
فرمول قیمت درخواست (HTTP)
request_cost = (cpu_ms $/cpu_ms) +
(mem_mb_s $/mb_s) +
(egress_mb $/mb) +
(db_calls $/call) +
(cache_ops $/op miss_penalty)
حسابرسی خدمات سریع
3 نقطه پایانی گران قیمت با $/1000 req.
ضربه/کش خانم و کلید طوفان.
لیست منابع بدون برچسب
ILM و نگهداری داده ها.
پوشش RI/SP (٪).
سیاست بازپرداخت اقتصادی
retry = min(3, floor(budget_ms / (base_timeout_ms 1. 5^attempt)))
jitter = uniform(0. 5..1. 5)
17) ارزش معمار چک لیست
1. معیارهای واحد تعریف شده («$/req»، «$/GB-month»، «$/txn») و صاحبان ؟
2. سیاست برچسب اجرا شد ؟ آیا منابع بدون برچسب مسدود شده اند ؟
3. Showback/chargeback و گزارش های محصول/ویژگی اجرا شده ؟
4. مقیاس خودکار و راست پیکربندی شده، headroom تعریف شده است ؟
5. داده های تون (گرم/گرم/سرد)، ILM/TTL اعمال می شود ؟
6. خروج و جريان بين منطقهاي به حداقل رسيده ؟ CDN/حافظه نهان فعال است ؟
7. قابلیت مشاهده بهینه شده (نمونه برداری، نگهداری، downsampling) ؟
8. آیا CI/CD دروازه رگرسیون و سیاست چک فعال?
9. آیا پیش بینی/بودجه/تجزیه و تحلیل ناهنجاری خودکار ؟
10. مخلوط RI/SP/Spot بارهای پایه را پوشش می دهد ؟
11. آیا سهمیه ها، محدودیت ها و معیارهای استفاده شفاف برای چند مستاجر وجود دارد ؟
12. کتابچه راهنمای FinOps و برنامه بررسی هزینه ماهانه مستند شده است ؟
نتیجه گیری
معماری ارزش «صرفه جویی به هر قیمتی» نیست، بلکه مدیریت ارزش است: هزینه هر میلی ثانیه چقدر است و چقدر درآمد ایجاد می کند. با تعبیه هزینه در معماری، فرایندها و ابزارها (برچسب ها، سیاست ها، دروازه ها، داشبورد ها، ILM، مقیاس خودکار)، شما یک پلت فرم دریافت می کنید که در آن تصمیم گیری بر اساس معیارها و اقتصاد، نه شهود انجام می شود. این محصول را سرعت می بخشد، خطر را کاهش می دهد و کسب و کار را به طور قابل پیش بینی سودآور می کند.