اگر برای انتخاب ابر فقط سه ستون «AWS، Azure و Google Cloud» بسازید و نام سرویسها را کنار هم بگذارید، احتمالاً تصمیم گرانی میگیرید. سؤال درست این نیست که کدام برند در جهان «بهترین» است؛ سؤال این است که کدام پلتفرم برای Workload مشخص شما، با تیم، قرارداد، بودجه، ریسک و مسیر خروج واقعیتان مناسبتر است. پاسخ حرفهای از یک ماتریس نیاز شروع میشود، با Proof of Concept یکسان ادامه پیدا میکند و با شواهد هزینه، تابآوری، امنیت و عملیات به پایان میرسد.
این راهنما مقایسه AWS، Azure و Google Cloud را از سطح فهرست محصولات بالاتر میبرد. قرار است قبل از هر تعهد بلندمدت بدانید چه چیزی را اندازه بگیرید، چه هزینههایی در Calculator دیده نمیشوند، SLA را چگونه به معماری ترجمه کنید، Multi-cloud چه زمانی ارزش دارد و یک کسبوکار ایرانی پیش از هر طراحی فنی چه Gateهای قراردادی و عملیاتی را باید بگذراند.
پاسخ کوتاه: کدام Cloud Provider بهتر است؟
هیچ برنده مطلقی وجود ندارد. AWS، Azure و Google Cloud هر سه میتوانند یک سامانه Production را میزبانی کنند؛ تفاوت واقعی در Fit با Workload، Availability سرویس در Region منتخب، مدل هزینه قرارداد شما، Identity موجود، تجربه تیم، نیاز داده و AI، کیفیت Support قابلخرید و هزینه Exit آشکار میشود.
| اگر نقطه شروع شما این است | نامزد اولیه | اما قبل از انتخاب ثابت کنید |
|---|---|---|
| پرتفوی متنوع و نیاز به گزینههای معماری بسیار | AWS | تیم توان اداره تنوع، IAM، Account و Cost allocation را دارد |
| هویت و عملیات سازمانی متمرکز بر Microsoft | Azure | مزیت Integration و License در قرارداد واقعی شما قابلاندازهگیری است |
| Data/Analytics، Kubernetes یا سرویسهای مدیریتشده Google | Google Cloud | Region، Skill، Support و الگوی هزینه همان Workload مناسب است |
| فروشگاه یا SaaS با معماری استاندارد | هر سه | PoC یکسان با SLO، Load، Failure و Bill واقعی اجرا شده است |
| الزام قراردادی، تحریمی یا Payment حلنشده | هیچکدام هنوز | Eligibility، هویت حقوقی، پرداخت، Support و Exit قانونی تأیید شدهاند |
این جدول Shortlist میسازد، نه حکم خرید. نام برند باید آخرین متغیر تصمیم باشد، نه اولین متغیر.
مقایسه AWS، Azure و Google Cloud از چه چیزی منحرف میشود؟
سه خطای رایج، تصمیم را از واقعیت دور میکنند:
- سهم بازار بهجای Fit: سهم بازار درباره اندازه فروشنده است، نه Latency کاربر شما، مهارت تیم یا هزینه هر سفارش.
- قیمت یک VM بهجای TCO: Compute فقط یکی از سطرهای Bill است؛ Egress، Log، Snapshot، IP، NAT، Support، License و نیروی انسانی میتوانند نتیجه را عوض کنند.
- Feature checklist بهجای سناریو: وجود یک Feature با قابلاستفادهبودن آن در Region، Tier، Quota و قرارداد شما یکی نیست.
هر سه فروشنده Framework معماری خود را دارند. AWS Well-Architected شش Pillar، Azure Well-Architected پنج Pillar و Google Cloud Well-Architected مجموعهای از Pillarها و Perspectiveها ارائه میکنند. وجه مشترک مهم آنها این است: Reliability، Security، Performance، Cost و Operations را همزمان و با Trade-off بسنجید.
ابتدا واحد تصمیم را تعریف کنید: Company یا Workload؟
«ابر شرکت» واحد تصمیم مبهمی است. واحد قابلارزیابی، Workload است: مجموعهای از Application، Data، Dependency، تیم، جریان کاربر و هدف کسبوکار که یک Outcome مشخص میسازد. ممکن است ERP، فروشگاه، Data warehouse و سرویس AI یک شرکت پاسخ یکسانی نگیرند.
| فیلد Workload Card | نمونه برای فروشگاه ایرانی | اثر بر انتخاب |
|---|---|---|
| Outcome | ثبت و پرداخت سفارش بدون Duplicate | Reliability و Consistency مهمتر از تعداد سرویسهاست |
| کاربران | ۸۰٪ داخل ایران، ۲۰٪ خارج | Latency، CDN، DNS و مسیر شبکه باید اندازهگیری شود |
| Peak | کمپین با ۸ برابر ترافیک عادی | Autoscaling، Quota و Warm-up در PoC میآیند |
| RTO/RPO | RTO یک ساعت، RPO پنج دقیقه | Topology، Backup و هزینه Standby را تعیین میکند |
| داده حساس | PII، سفارش و رویداد پرداخت | Region، Encryption، IAM، Retention و Audit را محدود میکند |
| تیم | چهار Backend، یک DevOps | بار عملیاتی Managed service باید جدیتر وزن بگیرد |
| Exit | بازیابی سرویس حیاتی در ۳۰ روز | Export format، Data gravity و قرارداد خروج لازم میشود |
برای هر Workload یک Owner، تاریخ تصمیم و تاریخ بازبینی بگذارید. تصمیم ابری دائمی نیست؛ قیمت، Region، Team و Product lifecycle تغییر میکنند.
Gate صفر: آیا اصلاً میتوانید این سرویس را قانونی و پایدار بخرید؟
برای تیم ایرانی، Eligibility یک پاورقی نیست؛ Gate صفر معماری است. پیش از ساخت Account یا انتقال داده، قرارداد جاری، کشور و هویت طرف قرارداد، روش پرداخت، Export control، Sanctions، End user و End use، دسترسی Support و امکان دریافت Invoice را با مشاور حقوقی و مالی واجدصلاحیت بررسی کنید. از هویت، نشانی یا Payment جعلی و دورزدن محدودیت فنی استفاده نکنید؛ چنین پایهای هم ریسک حقوقی دارد و هم میتواند به Suspension و ازدسترفتن دسترسی منجر شود.
اسناد رسمی نیز استفاده را به قوانین و شرایط جاری گره میزنند: مرکز اسناد حقوقی AWS Agreement و Service Terms را مرجع میداند؛ پرسشهای صادرات Microsoft محدودیت مقصد، کاربر و End use را مطرح میکند؛ و شرایط Google Cloud استفاده ناقض Export Control Laws و برخی فعالیتها را ممنوع و امکان Suspension/Termination طبق قانون را بیان میکند. این مقاله مشاوره حقوقی نیست و Availability امروز را تضمین نمیکند.
| Gate | شاهد قابلقبول | Kill condition |
|---|---|---|
| Eligibility | تأیید کتبی حقوقی برای Entity، کاربران و End use | اتکا به هویت یا کشور غیرواقعی |
| Contract | نسخه Terms، DPA، SLA و Order Form با تاریخ | نامشخصبودن طرف مسئول یا حق Termination |
| Payment | مسیر قانونی، قابلتمدید و قابلReconcile | یک کارت/واسطه بیقرارداد و بدون Owner |
| Support | کانال، زبان، ساعت، Severity و Entitlement آزموده | Production بحرانی بدون Escalation قابلاستفاده |
| Access | تست Console/API/Artifact از شبکههای واقعی تیم | عملیات وابسته به مسیر ناپایدار و بدون Runbook |
| Exit | Export موفق داده، Artifact و Credential rotation | Backup داخل همان Failure domain و بدون Restore test |
مرز IaaS، PaaS، Serverless و SaaS را روشن کنید
دو سرویس با نام مشابه ممکن است مسئولیت عملیاتی متفاوتی تحمیل کنند. در IaaS تیم شما OS، Patch، Runtime و Application را بیشتر اداره میکند؛ در PaaS و Serverless بخشی از این مسئولیت به Provider منتقل میشود، اما Data، Identity، Application logic، Configuration و Governance همچنان با شماست.
| مدل | کنترل بیشتر | بار عملیاتی بیشتر | نمونه تصمیم |
|---|---|---|---|
| IaaS/VM | OS، Agent، Network و Runtime | Patch، Image، Scale، Backup و Hardening | Legacy یا نیاز سطح سیستم |
| Managed container | Image و Workload contract | Cluster/Node بسته به محصول | چند سرویس با Deployment استاندارد |
| PaaS | Code و Configuration | کمتر، اما محدودیت Runtime/Platform بیشتر | تیم کوچک با نیاز Release سریع |
| Serverless/FaaS | Function/Event | کم، ولی Cold start/Quota/Observability مهم | Event workload با Burst |
| Managed database | Schema/Query/Data policy | Patch و HA کمتر، مهاجرت دشوارتر | وقتی DBA/Operations محدود است |
برای هر گزینه یک Responsibility matrix واقعی بنویسید. راهنمای Shared Responsibility در AWS، مدل مسئولیت مشترک Azure و Shared Responsibility/Shared Fate در Google Cloud همگی یادآوری میکنند که رفتن به Cloud، مسئولیت Data و Access شما را حذف نمیکند.
ماتریس معادل سرویسها؛ فقط برای Orientation
نامها را برای جهتیابی کنار هم بگذارید، نه برای نتیجهگیری. Semantics، SLA، Quota، Network، IAM و Billing هر خانه متفاوت است.
| Capability | AWS | Azure | Google Cloud |
|---|---|---|---|
| Virtual machine | EC2 | Azure Virtual Machines | Compute Engine |
| Object storage | S3 | Blob Storage | Cloud Storage |
| Managed Kubernetes | EKS | AKS | GKE |
| Function | Lambda | Azure Functions | Cloud Run functions |
| Managed relational | RDS/Aurora | Azure SQL/Managed DB options | Cloud SQL/AlloyDB/Spanner |
| Data warehouse | Redshift | Microsoft Fabric/Synapse options | BigQuery |
| Identity | IAM/IAM Identity Center | Microsoft Entra ID/Azure RBAC | Cloud IAM/Cloud Identity |
| Monitoring | CloudWatch/X-Ray | Azure Monitor/Application Insights | Cloud Monitoring/Logging/Trace |
| IaC بومی | CloudFormation/CDK | ARM/Bicep | Infrastructure Manager |
اگر تیم شما به Kubernetes فکر میکند، آن را مترادف Portability نگیرید. Container image قابلحملتر است، اما Load balancer، IAM، Secret، Storage، Observability و Database معمولاً Provider-specific میمانند.
معیار اول: Region، Latency و مسیر واقعی کاربر
تعداد Region جهانی بهتنهایی معیار خوبی نیست. باید Regionهایی را مقایسه کنید که از نظر Eligibility، سرویس موردنیاز، Data residency، قیمت، Quota و Latency برای شما قابلاستفادهاند. سپس از شبکههای واقعی کاربران و Operators تست کنید.
| آزمون | اندازهگیری | چرا مهم است |
|---|---|---|
| User path | DNS، TCP/TLS، TTFB، Download در چند ISP/اپراتور | میانگین جهانی تجربه کاربر ایرانی را نشان نمیدهد |
| Operator path | Console، API، Git pull، Registry، Support portal | تیم باید هنگام Incident دسترسی عملی داشته باشد |
| Service availability | Region × Product × Tier × Feature | نام محصول ممکن است در Region منتخب Capability یکسان نداشته باشد |
| Inter-zone cost | Traffic matrix و Price line | HA میتواند هزینه Network داخلی بسازد |
| Exit path | زمان و هزینه Export یک Dataset واقعی | Data gravity فقط زمان مهاجرت نیست؛ هزینه خروج هم هست |
برای مخاطب چندمنطقهای، طراحی CDN، SEO و معماری چندمنطقهای را از Provider compute جدا ارزیابی کنید؛ برای سایت عمدتاً ایرانی نیز PoC شبکه CDN در ایران باید روی ISP و اپراتور واقعی انجام شود.
معیار دوم: Compute را با شکل بار مقایسه کنید
«قیمت هر vCPU» بدون شکل بار ناقص است. Workload ممکن است Steady، Bursty، Batch، GPU-bound، Memory-bound یا Latency-sensitive باشد. برای مقایسه، یک Profile واحد بسازید:
- CPU، Memory و Local/Network storage در صدک ۵۰، ۹۵ و Peak؛
- Concurrency و زمان پردازش هر Request/Job؛
- Startup time، Scale-out lag و Graceful shutdown؛
- Architecture پردازنده و سازگاری Dependency؛
- نسبت Base load به Burst و امکان Interruptible/Spot؛
- Licenseهای وابسته به Core، Socket یا OS.
| گزینه | Fit | ریسک پنهان | آزمون PoC |
|---|---|---|---|
| VM | Legacy، کنترل OS، Agent خاص | Patch و Capacity دستی | Image build، failover و patch window |
| Container service | Deployment استاندارد و Scale | Network/Storage/IAM integration | Rollout، autoscale و node disruption |
| Serverless | Event و Burst نامنظم | Quota، Cold start و Cost در بار پایدار | p95 cold/warm و concurrency limit |
| Spot/Preemptible | Batch قابلRetry | Interruption و Capacity availability | Checkpoint و forced termination |
| GPU/Accelerator | Training/Inference خاص | Quota، Queue، Driver و Supply | Throughput بهازای هزینه و failover |
معیار سوم: Data، Database و هزینه مهاجرت
Database معمولاً بیش از Compute Lock-in میسازد. سازگاری SQL یا API بهتنهایی کافی نیست؛ Extension، Collation، CDC، Backup format، PITR، Replica، Consistency، Transaction limit و Operational tooling را بسنجید.
| لایه | سؤال تصمیم | شاهد |
|---|---|---|
| Engine | آیا Query/Extension واقعی پشتیبانی میشود؟ | Compatibility suite روی Snapshot واقعی |
| Consistency | کدام Operation باید Strong باشد؟ | Invariant و Failure test |
| Availability | Failover چه RTO/RPO واقعی دارد؟ | Game day و Timeline |
| Backup | آیا Restore مستقل و زمانسنجی شده است؟ | Restore report و checksum |
| Migration | Downtime و CDC lag قابلقبول است؟ | Dress rehearsal |
| Exit | Export استاندارد چقدر طول و هزینه دارد؟ | نمونه Export/Import و Egress bill |
| Lifecycle | Retention/Delete/Archive چگونه اثبات میشود؟ | Policy test و audit log |
برای Data warehouse و AI، فقط Benchmark query را نسنجید. Ingestion، Transformation، Governance، Catalog، Lineage، Egress به ابزار BI، Skill تیم و هزینه Idle/Scan نیز در TCO هستند.
معیار چهارم: Reliability؛ SLA فروشنده با SLO شما یکی نیست
SLA یک تعهد قراردادی با شرط و Remedy مشخص است؛ SLO هدف داخلی تجربه کاربر است. یک SLA بالا تضمین نمیکند سامانه شما همان Availability را داشته باشد. Architecture، Quota، Dependency، Deployment و خطای انسانی میتوانند SLO را بشکنند.
| سند | مالک | پرسش کلیدی |
|---|---|---|
| Provider SLA | فروشنده | Scope، شرط Eligibility، Exclusion و Credit چیست؟ |
| Service SLO | تیم محصول | کاربر چه Reliability لازم دارد؟ |
| RTO/RPO | Business + Engineering | بازیابی چه زمان و چه اتلاف دادهای دارد؟ |
| Error budget | Product/Operations | چه زمانی Release متوقف میشود؟ |
| Runbook | On-call owner | در Region/Identity/Network failure چه میکنیم؟ |
برای هر نامزد، همان Failureها را تزریق کنید: حذف Instance، قطع Zone، Throttle API، Expire credential، Corrupt config، Latency دیتابیس و شکست Dependency. طراحی Observability، SLO و Alert و طرح Disaster Recovery و Restore باید قبل از Production آماده باشند، نه بعد از اولین Incident.
معیار پنجم: Security را از Logo و Certification استنتاج نکنید
هر سه Provider کنترلها و Compliance programهای گسترده دارند، اما امنیت Workload نتیجه Configuration شماست. Comparison باید از Threat model و Control objective شروع شود.
| کنترل | سؤال مقایسه | Evidence |
|---|---|---|
| Organization hierarchy | Account/Subscription/Project چگونه جدا میشود؟ | Landing zone و policy test |
| Identity federation | SSO، MFA و Lifecycle چگونه اعمال میشود؟ | Joiner/Mover/Leaver test |
| Least privilege | Permission analysis و approval چگونه است؟ | Role diff و access review |
| Key management | Ownership، rotation، separation و recovery چیست؟ | Key lifecycle drill |
| Network | Default deny، egress و private access چگونه است؟ | Reachability test |
| Logging | Admin/Data events پوشش و immutability دارند؟ | Attack simulation و log query |
| Supply chain | Artifact، SBOM، provenance و deploy identity چیست؟ | Unauthorized artifact rejection |
| Incident response | Credential revoke و evidence export چقدر طول میکشد؟ | Tabletop/Game day |
امنیت API و Webhook، MFA حسابهای کنترلکننده و جداسازی Break-glass باید در هر سه PoC یکسان آزموده شوند. «Provider امن است» پاسخ Security review نیست.
معیار ششم: Landing Zone و Governance
یک Demo در Account شخصی به شما نمیگوید Production چگونه اداره میشود. Landing zone حداقل باید Hierarchy، Billing، Identity federation، Log مرکزی، Network baseline، Policy، Key/Secret، Backup و Break-glass را تعریف کند.
| قابلیت Platform | Definition of Done |
|---|---|
| Account vending | محیط جدید با Owner، Budget، Tag و Guardrail خودکار ساخته میشود |
| Identity | Human و Workload identity جدا، کوتاهعمر و قابلAudit هستند |
| Network | Ingress/Egress، DNS و Private connectivity الگوی مصوب دارند |
| Policy as code | Resource ناهمخوان قبل یا بلافاصله بعد از ساخت متوقف میشود |
| Central logging | تیم Workload نمیتواند Evidence مرکزی را حذف کند |
| Cost allocation | هر هزینه به Workload، Environment و Owner برمیگردد |
| Decommission | Data، Snapshot، DNS، Secret و Commitment Owner دارند |
معیار هفتم: Developer Experience و سرعت Delivery
کاتالوگ بزرگ اگر Lead time را کم نکند، ارزش عملی ندارد. تیم باید Golden path داشته باشد: Repository تا محیط آزمایشی، Secret، Database، Telemetry، Policy و Rollback با حداقل تصمیم دستی.
| شاخص | روش اندازهگیری در PoC |
|---|---|
| Time to first safe deploy | از Repository خالی تا محیط Guardrailed |
| Change lead time | Commit تا Production verified |
| Rollback time | Alert تا بازگشت نسخه/Feature flag |
| Toil | دقایق کار دستی هفتگی برای Patch/Access/Cost/Incident |
| Debug time | از Alert تا یافتن Request/Trace/Owner |
| Onboarding | زمان دسترسی امن توسعهدهنده جدید |
Pipeline باید Build once، Artifact immutable، Approval مبتنی بر Risk، Progressive delivery و Rollback اثباتشده داشته باشد. راهنمای CI/CD امن و Progressive Delivery این Contract را مستقل از Provider شرح میدهد.
معیار هشتم: قیمت واقعی؛ از Bill of Materials تا Unit Economics
هیچ Provider همیشه ارزانتر نیست. قیمت تابع Region، SKU، ساعت، Discount، Contract، Architecture و Usage است. سه Calculator رسمی برای نقطه شروعاند: AWS Pricing Calculator، Azure Pricing Calculator و Google Cloud Pricing Calculator. Calculator پیشبینی است؛ Bill واقعی و Usage telemetry داور نهاییاند.
هزینههایی که باید در TCO بیایند
| گروه | سطرهای فراموششده |
|---|---|
| Compute | Idle، overprovision، autoscaling floor، license، control plane |
| Storage | Capacity، request، IOPS، throughput، snapshot، replication، retrieval |
| Network | Internet egress، inter-zone، inter-region، NAT، load balancer، public IP |
| Data | Scan، ingest، query، replication، CDC و export |
| Observability | Log ingest، retention، index، metric cardinality، trace sample |
| Security | Key، secret، WAF، posture، SIEM export و audit storage |
| Operations | Support plan، on-call، training، migration و incident toil |
| Resilience | Standby، backup، test environment و game day |
| Exit | Egress، dual run، conversion، revalidation و contract overlap |
فرمول تصمیم را بر هزینه کسبوکار بنا کنید:
Monthly TCO = Provider bill
software licenses
support and partner fees
engineering and on-call toil
security/compliance operations
expected incident loss
amortized migration and exit costبعد آن را به واحد کسبوکار تبدیل کنید:
Cost per successful order = Monthly workload TCO / successful paid orders
Cost per active tenant = Monthly workload TCO / active paying tenants
Cost per million events = Monthly pipeline TCO / processed valid events × 1,000,000این Unit metric اجازه میدهد رشد، بهینهسازی و معماری را با Outcome مقایسه کنید؛ کاهش Bill همراه با افت نرخ سفارش موفق، صرفهجویی نیست.
On-demand، Commitment و Spot را قاطی نکنید
برای Comparison منصفانه سه سناریو بسازید: On-demand بدون تعهد، تعهد محافظهکارانه برای Base load و معماری بهینهشده پس از مشاهده Usage. Commitment را قبل از Rightsizing نخرید.
| مدل | برای چه بخشی | ریسک | Guardrail |
|---|---|---|---|
| On-demand | عدمقطعیت و Pilot | نرخ واحد بالاتر | Budget و auto-stop |
| Commitment/Reservation | Base load پایدار | Underutilization و Lock-in زمانی | Coverage/Utilization و Owner |
| Spot/Interruptible | Batch قابلRetry | Interruption/Capacity | Checkpoint، queue و fallback |
| Autoscale | Burst | Scale lag و runaway cost | Min/max، quota و circuit breaker |
بودجه را Guardrail کنید، نه فقط Dashboard
Tag ناقص، Log بیحد، Snapshot بیOwner و Environment فراموششده با گزارش ماهانه اصلاح نمیشوند. Cost control باید در Provisioning و عملیات باشد.
- هر Resource: Workload، Environment، Owner، Cost center و Expiry؛
- Budget و Forecast در سطح قابلاقدام، نه فقط حساب کل؛
- هشدار Anomaly با Runbook و Owner؛
- Quota برای جلوگیری از انفجار ناخواسته؛
- Policy برای Log retention، Snapshot و SKU پرهزینه؛
- Showback/Chargeback بر اساس Unit economics؛
- Review دورهای Commitment، Egress و Idle.
AWS چه زمانی Fit اولیه بهتری دارد؟
AWS را در Shortlist جلوتر بگذارید وقتی Workloadهای بسیار متنوع، الگوهای تخصصی، اکوسیستم بزرگ Partner یا نیاز به ترکیبهای متعدد Managed service دارید و تیم میتواند Complexity را با Landing zone و Golden path مهار کند.
| نشانه Fit | ریسک مقابل | آزمون |
|---|---|---|
| پرتفوی ناهمگون | Service sprawl | Approved service catalog و platform template |
| نیاز معماری تخصصی | Lock-in API/Data | Exit contract و export rehearsal |
| تیم دارای تجربه AWS | دانش فردمحور | Bus-factor و onboarding exercise |
| Account isolation گسترده | Governance پراکنده | Account vending و central policy |
No-fit موقت: اگر تیم کوچک بدون Platform owner است و تنوع سرویس به انتخابهای بیقاعده تبدیل میشود، مزیت کاتالوگ میتواند Toil بسازد.
Azure چه زمانی Fit اولیه بهتری دارد؟
Azure را جلوتر بگذارید وقتی Identity، Endpoint، Windows/SQL، قرارداد سازمانی یا عملیات موجود شما واقعاً بر اکوسیستم Microsoft بنا شده و Integration میتواند Lead time یا هزینه License را کاهش دهد.
| نشانه Fit | ریسک مقابل | آزمون |
|---|---|---|
| Microsoft identity/enterprise estate | فرض مزیت بدون سنجش | SSO/RBAC/Joiner-Leaver و invoice واقعی |
| Hybrid requirement | Topology و License پیچیده | Failover، management plane و TCO |
| Windows/SQL workload | Dependency بلندمدت | License scenario و exit path |
| تیم .NET/Microsoft operations | Skill gap در Cloud-native | Golden-path delivery و incident drill |
No-fit موقت: اگر «ما Microsoft داریم» تنها دلیل است اما Workload Linux/Open-source، قرارداد تخفیفدار یا تیم Azure ندارید، Integration فرضی را امتیاز ندهید.
Google Cloud چه زمانی Fit اولیه بهتری دارد؟
Google Cloud را جلوتر بگذارید وقتی Data/Analytics، Managed Kubernetes، شبکه یا سرویسهای داده خاص آن با Requirement شما همراستا هستند و Skill، Support، Region و هزینه همان الگو در PoC تأیید میشود.
| نشانه Fit | ریسک مقابل | آزمون |
|---|---|---|
| Analytics سنگین | Scan/ingest/egress cost | Query corpus و cost per insight |
| Container/Kubernetes platform | توهم portability کامل | Storage/IAM/network/observability exit test |
| Managed data products | Data gravity | Export time/cost و dual-run |
| تیم دارای تجربه GCP | بازار نیروی محدودتر در زمینه شما | Hiring/onboarding/partner availability |
No-fit موقت: اگر Capability اصلی فقط در Region نامناسب موجود است یا مسیر Contract/Support/Skill حل نشده، جذابیت محصول بهتنهایی کافی نیست.
AI و Data نباید میانبُر انتخاب Provider شوند
هر سه Provider پلتفرمهای AI/ML و مدلهای مدیریتشده دارند. مقایسه را بر Model catalog متغیر بنا نکنید. این Contract را بسنجید:
| بُعد | پرسش |
|---|---|
| Data | داده کجا میرود، چه مدت میماند و برای چه منظوری استفاده میشود؟ |
| Model | Version، deprecation، region و output stability چگونه مدیریت میشود؟ |
| Quality | Eval corpus فارسی، hallucination و refusal چه نتیجهای دارند؟ |
| Security | Prompt injection، tool permission و data exfiltration چگونه کنترل میشود؟ |
| Cost | هزینه هر Outcome موفق، Cache و fallback چیست؟ |
| Exit | Prompt، eval، vector، model artifact و workflow چگونه منتقل میشوند؟ |
Portability را به لایهها بشکنید
Portability صفر یا یک نیست. برای هر لایه درجه وابستگی ثبت کنید:
| لایه | معمولاً قابلحملتر | معمولاً چسبندهتر |
|---|---|---|
| Application | کد با Contract استاندارد | SDK/API اختصاصی در Domain logic |
| Compute | OCI container | Serverless trigger/runtime خاص |
| Data | فرمت باز و Engine رایج | Database/API اختصاصی و Data gravity |
| Identity | OIDC/SAML federation | Role/policy semantics و managed identity خاص |
| Network | DNS/TLS استاندارد | Private endpoint، LB و firewall semantics |
| Operations | OpenTelemetry و runbook | Dashboard/alert/query اختصاصی |
| IaC | Module interface و policy test | Resource graph و provider behavior |
برای سرویس حیاتی، Exit contract شامل Format، Tool، Bandwidth، RTO خروج، Consistency، هزینه، Owner و آخرین تست است. قرار نیست همهچیز Portable باشد؛ قرار است Lock-in آگاهانه، قیمتگذاریشده و قابلمدیریت باشد.
Multi-cloud چه زمانی تصمیم خوبی است؟
Multi-cloud یعنی استفاده هدفمند از بیش از یک Provider؛ به معنی Deploy یکسان هر سرویس روی سه ابر نیست. مزیت احتمالی باید از هزینه هماهنگی بیشتر باشد.
| دلیل | معتبر وقتی | نشانه Anti-pattern |
|---|---|---|
| قابلیت تخصصی | Outcome قابلاندازهگیری دارد | خرید سرویس صرفاً برای نام برند |
| M&A/واقعیت سازمانی | همگرایی مرحلهای برنامه دارد | دو Landing zone بیOwner |
| الزام قراردادی/داده | Requirement مستند است | حدس درباره Compliance |
| Exit resilience | Failover واقعاً تست و داده Sync شده | Diagram بدون Game day |
| Negotiation leverage | TCO عملیات دوگانه محاسبه شده | صرفه نرخ با دوبرابرشدن Skill/Tool |
Active-active میان دو Cloud برای بیشتر تیمها بسیار پرهزینه است: Identity، Network، Data consistency، Deployment، Observability، Security و On-call دوگانه میشوند. اغلب یک Primary cloud، Backup قابلبازیابی مستقل، فرمتهای باز و Exit rehearsal از «همهچیز روی همهجا» سالمتر است.
Hybrid Cloud با Multi-cloud یکی نیست
Hybrid یعنی Workload میان محیط On-premises/Colocation/Edge و Public cloud تقسیم میشود. Multi-cloud یعنی بیش از یک Public provider. یک معماری میتواند هر دو باشد، اما Driver و Failure mode متفاوتاند.
| موضوع Hybrid | سؤال ضروری |
|---|---|
| Connectivity | دو مسیر، Capacity، encryption و failover دارید؟ |
| Identity | قطع ارتباط با IdP چه اثری دارد؟ |
| Data | System of record و conflict policy چیست؟ |
| Latency | آیا request chatty از WAN عبور میکند؟ |
| Operations | یک SLO و Trace end-to-end دارید؟ |
| Exit | Cloud یا On-prem dependency چگونه isolate میشود؟ |
ماتریس تصمیم وزنی بسازید
وزنها را قبل از دیدن Demo فروشنده تصویب کنید تا نتیجه را به علاقه قبلی تنظیم نکنید. امتیاز بدون Evidence صفر است.
| معیار نمونه | وزن | Evidence لازم |
|---|---|---|
| Eligibility/Contract/Support | ۱۵ | تأیید کتبی و Support drill |
| Reliability/RTO/RPO | ۱۵ | Failure test |
| Security/Governance | ۱۵ | Control test و audit evidence |
| Performance/Latency | ۱۲ | Load test از مسیر واقعی |
| ۱۲ماهه TCO | ۱۵ | Calculator + measured bill + toil |
| Developer/Operator fit | ۱۰ | Delivery و incident exercise |
| Data/Service fit | ۸ | Compatibility benchmark |
| Exit/Portability | ۶ | Export/import rehearsal |
| Partner/Skill availability | ۴ | Named resources و onboarding time |
Weighted score = Σ (criterion score from 0..5 × approved weight)
Rule:
- no evidence = 0
- failed mandatory gate = disqualified
- difference under 5% = treat as tie; prefer simpler operating modelScorecard باید Assumption، Source، Date، Owner و Confidence داشته باشد. عدد بدون Provenance، فقط ظاهر دقت است.
PoC منصفانه: یک Workload، یک Harness، سه نامزد
PoC باید تصمیم را کاهش ریسک دهد، نه اینکه یک Demo زیبا تولید کند. همان Dataset، Traffic، SLO، Security control و Failure را روی گزینهها اجرا کنید.
Contract آزمون
| بخش | تعریف |
|---|---|
| Scope | یک مسیر حیاتی end-to-end، نه کل محصول |
| Traffic | Baseline، Peak، Burst و payload واقعیشده |
| SLO | Availability، p95/p99، error rate و recovery |
| Security | SSO/MFA، least privilege، secret، log و attack case |
| Failure | Instance/zone/dependency/credential/quota failure |
| Cost | Bill line item و cost per successful transaction |
| Operations | Deploy، rollback، debug، restore و support escalation |
| Exit | Export داده و redeploy artifact خارج از سرویس |
Exit criteria برای PoC
- همه Mandatory gateها Pass شدهاند؛
- SLO در بار و Failure تعریفشده رعایت شده است؛
- هزینه به Unit metric تبدیل شده و فاصله Estimate/Bill توضیح دارد؛
- یک اپراتور غیر از سازنده توانسته Deploy، Debug و Restore کند؛
- ریسکهای باقیمانده Owner، Deadline و Acceptance دارند؛
- Decision record شامل گزینه ردشده و دلیل رد است.
نمونه تصمیم برای یک فروشگاه ایرانی
فرض کنید فروشگاه ماهانه یک میلیون Session، کمپینهای ۸برابری، PostgreSQL، صف سفارش، Object storage و تیم کوچک دارد. کاربران عمدتاً داخل ایراناند و قرارداد خرید بینالمللی باید جداگانه تأیید شود.
| مرحله | تصمیم درست | تصمیم ضعیف |
|---|---|---|
| Gate | بررسی Eligibility/Payment/Support/Access قبل از Build | ساخت با Account واسطه و امید به پایداری |
| Region | Latency از چند ISP و اپراتور | انتخاب نزدیکترین نقطه روی نقشه |
| Database | Managed PostgreSQL با Restore/Failover test | انتخاب صرفاً با قیمت Storage |
| Compute | PaaS/Container متناسب با Skill و Peak | Kubernetes فقط برای رزومه |
| Cost | هزینه هر سفارش موفق با Egress/Log/Support | مقایسه قیمت یک VM |
| Resilience | RTO/RPO و Backup خارج از Failure domain | فرض اینکه Multi-AZ همه خطاها را حل میکند |
| Exit | Export دیتابیس و Asset آزموده | نوشتن «Docker داریم، پس Portable هستیم» |
شرایط ایران: سناریوهای Failure را صریح کنید
برای تیم ایرانی، معماری فقط در برابر خرابی سرور نیست؛ باید اختلال مسیر شبکه، دسترسی Operator، Payment، Partner، Support، تغییر Contract و Currency را نیز مدل کند. هدف دورزدن قاعده نیست؛ هدف این است که سامانه روی فرض نادرست ساخته نشود.
| ریسک | کنترل پیشگیرانه | Runbook |
|---|---|---|
| عدم احراز Eligibility | Legal review پیش از Account/Order | توقف انتخاب و بررسی گزینه مجاز |
| قطع Payment | Contract، Billing owner، alert و runway | Escalate، preserve data، controlled exit |
| اختلال دسترسی تیم | تست دورهای مسیرهای مجاز، automation و break-glass | اپراتور جایگزین مجاز و change freeze |
| نوسان ارز | Scenario IRR/IRT، buffer و unit economics | کاهش Noncritical usage بدون شکستن SLO |
| اختلال CDN/DNS/Registry | Dependency map، artifact mirror مجاز و TTL plan | Failover آزموده و rollback |
| تغییر Terms/Availability | Quarterly review و Exit rehearsal | Export، dual run و cutover کنترلشده |
Backup بدون دسترسی قابلاستفاده نیست. حداقل Metadata بازیابی، Artifact، IaC، Secret recovery، Data export و DNS control را با Ownership روشن و طبق قرارداد نگه دارید. هیچ کنترل فنی جایگزین Eligibility قانونی نیست.
Build، Buy یا Managed service؟
خرید Managed service هزینه Operator را کم میکند اما Control surface و Exit cost را تغییر میدهد. تصمیم را با مجموع هزینه و ریسک بگیرید.
| معیار | Self-managed | Managed |
|---|---|---|
| Control | بیشتر | کمتر و قراردادی |
| Patch/HA | با تیم شما | بخشی با Provider، Configuration با شما |
| Time-to-market | معمولاً کندتر | معمولاً سریعتر |
| Skill burden | زیاد | کمتر اما Product-specific |
| Portability | ممکن است بیشتر | اغلب کمتر |
| Failure transparency | قابلمشاهدهتر | وابسته به Telemetry/Support فروشنده |
قانون ساده: چیزی را Self-manage کنید که Differentiator کسبوکار است، Constraint خاص دارد یا تیم واقعاً توان عملیات آن را دارد. «کنترل بیشتر» بدون On-call، Patch و Restore فقط مسئولیت بیشتر است.
RACI انتخاب و مهاجرت Cloud
| کار | Accountable | Responsible | Consulted |
|---|---|---|---|
| Business outcome و budget | Product/Business owner | FinOps | Architecture |
| Eligibility و contract | Legal/Procurement | Legal owner | Security/Finance |
| Workload architecture | Tech lead | Platform + workload team | Security/Operations |
| Security acceptance | Security owner | Security engineer | Legal/Data owner |
| PoC و benchmark | Architecture owner | Engineering | Finance/Operations |
| Cost model | Finance/FinOps | FinOps analyst | Engineering/Procurement |
| Go-live | Service owner | Delivery team | Support/Business |
| Exit readiness | Service owner | Platform/Data team | Legal/Security |
چهار Runbook که قبل از Production لازماند
۱. افزایش ناگهانی Bill
- Anomaly را به Workload/Resource/SKU/Region نسبت دهید.
- Attack، Loop، Leak، Scale و Price change را تفکیک کنید.
- Guardrail کمریسک مثل scale cap یا log sampling را اجرا کنید.
- اثر بر SLO را پایش و Root cause را ثبت کنید.
۲. اختلال Region یا Zone
- Blast radius و Provider status را با telemetry خودتان تطبیق دهید.
- Change freeze و Incident command فعال شود.
- Failover فقط طبق شرط و ظرفیت آزموده انجام شود.
- پس از بازیابی، Data reconciliation و failback کنترلشده اجرا شود.
۳. Compromise هویت مدیریت
- Credential را Revoke و Sessionها را invalidate کنید.
- Break-glass با کنترل دو نفره فعال شود.
- Audit log مستقل حفظ و Scope تغییرات مشخص شود.
- Key/Secret rotation و restore configuration انجام شود.
۴. خروج اضطراری کنترلشده
- Legal trigger، data priority و target مجاز تأیید شود.
- Export snapshot/stream با checksum و manifest اجرا شود.
- Dual run، validation و cutover بر اساس RTO انجام شود.
- Access، key، DNS، commitment و retained data decommission شوند.
برنامه ۹۰روزه انتخاب AWS، Azure یا Google Cloud
| بازه | خروجی | Gate |
|---|---|---|
| روز ۱ تا ۱۵ | Workload inventory، Outcome، SLO، RTO/RPO، Data class و Owner | Workloadهای بدون Owner وارد Comparison نشوند |
| روز ۱۶ تا ۳۰ | Eligibility/Contract/Payment/Support/Region review و Kill condition | نامزد نامعتبر حذف شود |
| روز ۳۱ تا ۴۵ | Landing-zone skeleton، Threat model، Cost BOM و PoC contract | آزمونها برای همه یکسان باشند |
| روز ۴۶ تا ۶۵ | PoC Performance/Failure/Security/Delivery/Restore/Exit | Evidence خام حفظ شود |
| روز ۶۶ تا ۷۵ | Bill reconciliation، TCO/Unit metric و matrix scoring | بدون Evidence امتیاز صفر |
| روز ۷۶ تا ۸۵ | Decision record، Risk acceptance، Architecture و migration waves | Owner و Deadline هر ریسک |
| روز ۸۶ تا ۹۰ | Canary workload، Runbook، on-call، rollback و review calendar | Go-live فقط با Restore/rollback موفق |
چکلیست نهایی انتخاب Cloud Provider
- Workload و Outcome بهجای «کل شرکت» تعریف شدهاند.
- Eligibility، Contract، Payment، Support و Access قبل از Design تأیید شدهاند.
- Region × Service × Tier × Quota با سند جاری بررسی شده است.
- Latency از مسیر واقعی کاربران و اپراتورها اندازهگیری شده است.
- Responsibility matrix برای IaaS/PaaS/Managed service وجود دارد.
- RTO/RPO، SLA شرطی، SLO و Error budget تفکیک شدهاند.
- Threat model، IAM، MFA، Log، Key و Incident drill اجرا شدهاند.
- TCO شامل Egress، Log، Support، License، Toil، DR و Exit است.
- PoC یکسان و قابلتکرار برای Shortlist انجام شده است.
- Cost per business unit با Bill واقعی محاسبه شده است.
- Lock-in هر لایه آگاهانه و Exit contract آزموده است.
- Multi-cloud فقط برای Driver مستند و پس از محاسبه Complexity انتخاب شده است.
- Decision record، RACI، Runbook و تاریخ بازبینی وجود دارند.
جمعبندی
AWS، Azure و Google Cloud را با شعار، سهم بازار یا قیمت یک VM انتخاب نکنید. یک Workload واقعی را تعریف کنید، Gateهای حقوقی و عملیاتی را بگذرانید، Requirementها را وزن دهید، همان بار و Failure را در PoC اجرا کنید و هزینه را به Outcome کسبوکار تبدیل کنید. ممکن است AWS برای یک Workload، Azure برای Workload دوم و Google Cloud برای سومی Fit باشد؛ ممکن است نیز سادهترین معماری روی یک Provider از Multi-cloud کمریسکتر باشد.
تصمیم خوب تصمیمی نیست که نام محبوبتری دارد؛ تصمیمی است که Assumptionهایش ثبت، Trade-offهایش پذیرفته، SLO و Cost آن اندازهگیری و مسیر بازیابی و خروجش پیش از بحران آزموده شده است.
پرسشهای متداول
آیا AWS از Azure و Google Cloud بهتر است؟
بهطور مطلق خیر. AWS میتواند برای تنوع Workload و اکوسیستم گسترده Shortlist مناسبی باشد، اما Fit نهایی به Region، تیم، قرارداد، TCO، Security، SLO و PoC شما بستگی دارد. همان معیارها ممکن است Azure یا Google Cloud را برای Workload دیگری جلو بیندازند.
کدام سرویس ابری ارزانتر است؟
هیچ پاسخ عمومی پایداری وجود ندارد. Region، SKU، Usage، Egress، Log، Support، License، Discount و Commitment نتیجه را تغییر میدهند. هر سه Calculator رسمی را با یک Bill of Materials واحد پر کنید و سپس Estimate را با Bill یک PoC واقعی و Cost per business outcome تطبیق دهید.
برای استارتاپ AWS بهتر است یا Azure یا Google Cloud؟
برای استارتاپ، سرعت Delivery، Skill موجود، Managed service، Support قابلدسترسی و Burn rate معمولاً مهمتر از اندازه کاتالوگ است. دو نامزد را Shortlist کنید و با یک مسیر حیاتی، Budget محدود، Restore test و Exit criteria مقایسه کنید.
آیا Multi-cloud از Vendor lock-in جلوگیری میکند؟
نه بهصورت خودکار. Multi-cloud میتواند Dependencyها را پخش کند، اما IAM، Network، Data، Observability و Skill دوگانه میسازد. Lock-in را لایهبهلایه اندازه بگیرید، فرمت باز و Exit rehearsal داشته باشید و فقط برای Driver مستند به Multi-cloud بروید.
کسبوکار ایرانی پیش از انتخاب Public cloud چه چیزی را بررسی کند؟
ابتدا Eligibility قراردادی و قانونی، هویت طرف قرارداد، Payment، Support، Region، مسیر دسترسی تیم و امکان Exit را با متخصصان واجدصلاحیت بررسی کند. سپس Latency شبکه واقعی، نوسان ارز، Backup/Restore و سناریوی تغییر Terms یا دسترسی را وارد PoC و Runbook کند؛ راهکار نباید بر اطلاعات جعلی یا دورزدن محدودیت بنا شود.






