{"id":203,"date":"2026-10-12T19:21:21","date_gmt":"2026-10-12T19:21:21","guid":{"rendered":"http:\/\/www.scmgalaxy.com\/tutorials\/2010\/03\/17\/overcoming-cloud-computing-obstacles\/"},"modified":"2026-10-12T19:21:21","modified_gmt":"2026-10-12T19:21:21","slug":"overcoming-cloud-computing-obstacles","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/blog\/overcoming-cloud-computing-obstacles\/","title":{"rendered":"Overcoming Cloud Adoption Obstacles: A Practical Playbook for Availability, Security, and Performance"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><em>Originally published on 2010-03-17; fully revised and updated.<\/em><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"600\" height=\"400\" src=\"https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2010\/03\/cloud-computing-obstacles.png\" alt=\"Overcoming cloud computing obstacles\" class=\"wp-image-4199\" srcset=\"https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2010\/03\/cloud-computing-obstacles.png 600w, https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2010\/03\/cloud-computing-obstacles-300x200.png 300w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Cloud migration decisions are often less about technology and more about risk acceptance. If you need to justify cloud adoption to leadership, this guide helps you frame the discussion around concrete controls for availability, security and auditability, and performance during data migration.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Why cloud adoption gets blocked<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Most objections fall into a small set of recurring themes. Addressing these early turns a vague debate into an implementation plan.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Availability:<\/strong> concern that provider outages will impact customer-facing systems.<\/li><li><strong>Security and auditability:<\/strong> concern over where data lives, who can access it, and whether audit trails are sufficient.<\/li><li><strong>Performance and transfer speed:<\/strong> concern that moving large datasets to cloud infrastructure will be slow or disruptive.<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">A practical workflow to de-risk cloud adoption<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Use an iterative workflow that starts with business and compliance requirements, then validates architecture choices through a pilot.<\/p>\n\n\n\n<pre class=\"mermaid\">\nflowchart TD\n    A[Define business and compliance requirements] --> B[Classify workloads and data]\n    B --> C{Sensitive or regulated data}\n    C -- Yes --> D[Plan private or hybrid controls]\n    C -- No --> E[Use public cloud baseline controls]\n    D --> F[Set availability and disaster recovery targets]\n    E --> F\n    F --> G[Test network and migration throughput]\n    G --> H[Run pilot with monitoring and SLA review]\n    H --> I{Pilot meets targets}\n    I -- No --> J[Adjust architecture or provider]\n    J --> G\n    I -- Yes --> K[Approve phased migration]\n<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Availability and resilience: evaluate architecture, not just SLA numbers<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The original article emphasized SLA expectations such as 99.9% or 99.99% availability. Those targets are still useful as a starting point, but uptime outcomes depend heavily on <em>your deployment design<\/em> (single region vs multi-region, failover strategy, monitoring, and recovery testing).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Questions to ask providers during evaluation<\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li>How is uptime measured, and what is excluded from SLA calculations?<\/li><li>What compensation applies if SLA commitments are missed?<\/li><li>What are the documented RTO and RPO options?<\/li><li>What native features are available for multi-zone or multi-region failover?<\/li><li>How are planned maintenance events communicated?<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Deployment pattern<\/th><th>Availability benefit<\/th><th>Trade-off<\/th><th>Typical fit<\/th><\/tr><\/thead><tbody><tr><td>Single provider, single region<\/td><td>Simple operations<\/td><td>Regional outage is a major risk<\/td><td>Low-criticality workloads<\/td><\/tr><tr><td>Single provider, multi-zone or multi-region<\/td><td>Improved resilience to localized failures<\/td><td>Higher architecture and data replication complexity<\/td><td>Most production applications<\/td><\/tr><tr><td>Multi-provider active or standby<\/td><td>Reduces dependency on one vendor<\/td><td>Highest operational complexity and cost<\/td><td>High-criticality or strict continuity requirements<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php language-bash\"><span class=\"hljs-comment\">#!\/usr\/bin\/env bash<\/span>\nendpoints=(<span class=\"hljs-string\">\"https:\/\/app.example.com\/health\"<\/span> <span class=\"hljs-string\">\"https:\/\/api.example.com\/health\"<\/span>)\n<span class=\"hljs-keyword\">for<\/span> url in <span class=\"hljs-string\">\"${endpoints&#91;@]}\"<\/span>; <span class=\"hljs-keyword\">do<\/span>\n  <span class=\"hljs-keyword\">if<\/span> curl -fsS <span class=\"hljs-string\">\"$url\"<\/span> &gt;\/dev\/<span class=\"hljs-keyword\">null<\/span>; then\n    <span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">\"$(date -Iseconds) OK $url\"<\/span>\n  <span class=\"hljs-keyword\">else<\/span>\n    <span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">\"$(date -Iseconds) FAIL $url\"<\/span>\n  fi\ndone<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Security and auditability: map controls to data sensitivity<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The source post distinguished public and private cloud concerns. A practical approach is to classify data first, then pick the control model that satisfies regulatory and audit requirements without overengineering low-risk workloads.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Model<\/th><th>Strengths<\/th><th>Limitations<\/th><th>Best fit<\/th><\/tr><\/thead><tbody><tr><td>Public cloud<\/td><td>Fast provisioning, broad managed services, lower entry cost<\/td><td>Requires strong identity, network, and key-management discipline<\/td><td>General workloads with standard compliance needs<\/td><\/tr><tr><td>Private cloud<\/td><td>Greater isolation and custom control boundaries<\/td><td>Higher build and operations overhead<\/td><td>Strict isolation or specialized regulatory requirements<\/td><\/tr><tr><td>Hybrid cloud<\/td><td>Place sensitive and less-sensitive workloads differently<\/td><td>Integration, policy, and observability complexity<\/td><td>Organizations with mixed risk profiles<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Baseline controls to require<\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li>Encryption in transit and at rest<\/li><li>Centralized identity and least-privilege access<\/li><li>Immutable audit logs with defined retention periods<\/li><li>Backup and recovery testing cadence<\/li><li>Documented incident response and notification procedures<\/li><\/ul>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php language-bash\"><span class=\"hljs-comment\"># Example: encrypt a migration archive before transfer<\/span>\n\ntar -czf finance-export.tar.gz .\/finance-export\nopenssl enc -aes<span class=\"hljs-number\">-256<\/span>-cbc -salt -pbkdf2 -in finance-export.tar.gz -out finance-export.tar.gz.enc<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Performance and migration throughput: treat first data load as a separate project<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Even when steady-state cloud performance is acceptable, the initial data move is often the biggest bottleneck. Plan transfer method, integrity checks, and cutover windows explicitly.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Data transfer approach<\/th><th>Advantages<\/th><th>Risks or limits<\/th><th>When to use<\/th><\/tr><\/thead><tbody><tr><td>Online transfer over internet or VPN<\/td><td>Immediate start, no physical logistics<\/td><td>Constrained by available bandwidth and latency<\/td><td>Small to medium datasets and ongoing sync<\/td><\/tr><tr><td>Offline seeding with encrypted drives or provider device<\/td><td>Can move very large initial datasets faster<\/td><td>Chain-of-custody and handling requirements<\/td><td>Large one-time bulk migration<\/td><\/tr><tr><td>Dedicated private connectivity<\/td><td>More predictable throughput for recurring transfers<\/td><td>Provisioning time and recurring cost<\/td><td>Continuous high-volume data movement<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php language-bash\"><span class=\"hljs-comment\"># 1) Measure available throughput<\/span>\niperf3 -c test-endpoint.example.com -t <span class=\"hljs-number\">30<\/span>\n\n<span class=\"hljs-comment\"># 2) Perform incremental transfer<\/span>\nrsync -avh --partial --progress \/data\/ migration@test-gateway:\/ingest\/\n\n<span class=\"hljs-comment\"># 3) Verify integrity before cutover<\/span>\nsha256sum \/data\/critical-export.tar.gz\nssh migration@test-gateway <span class=\"hljs-string\">\"sha256sum \/ingest\/critical-export.tar.gz\"<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Best practices<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>Turn each objection into a measurable control (SLO, RTO\/RPO, audit evidence, transfer plan).<\/li><li>Run a pilot before full migration and include failure testing in scope.<\/li><li>Do not rely on SLA language alone; validate architecture-level resilience.<\/li><li>Classify data before choosing public, private, or hybrid deployment patterns.<\/li><li>Plan initial data seeding, incremental sync, and checksum validation as separate workstreams.<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Article source (historical):<\/strong> <a href=\"http:\/\/business-technology.suite101.com\/article.cfm\/overcoming-cloud-computing-obstacles\">http:\/\/business-technology.suite101.com\/article.cfm\/overcoming-cloud-computing-obstacles<\/a>. Original post: <a href=\"https:\/\/www.devopsschool.com\/blog\/overcoming-cloud-computing-obstacles\/\">https:\/\/www.devopsschool.com\/blog\/overcoming-cloud-computing-obstacles\/<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Cloud adoption usually stalls on three concerns: uptime, data risk, and migration speed. This guide shows how to evaluate each risk, compare architecture options, and plan a safer move to the cloud.<\/p>\n","protected":false},"author":1,"featured_media":4199,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_joinchat":[],"footnotes":""},"categories":[2],"tags":[3692,531,646,3470,3691,3694,3695,3696,3688,3687,3685,3686,3392,3471,3690,3693,3689,1528,3684,3683],"class_list":["post-203","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorised","tag-best-practices-to-avoid-cloud-adoption-challenges","tag-cloud","tag-cloud-computing","tag-cloud-computing-adoption","tag-cloud-computing-adoption-best-practices","tag-cloud-computing-adoption-challenges","tag-cloud-computing-adoption-guide","tag-cloud-computing-adoption-instruction","tag-cloud-computing-difficulties","tag-cloud-computing-issues","tag-cloud-computing-obstacles","tag-cloud-computing-problems","tag-cloud-technology","tag-cloud-technology-adoption","tag-cloud-technology-adoption-best-practices","tag-cloud-technology-adoption-challenges","tag-common-obstacles-in-cloud-computing","tag-computing","tag-obstacles","tag-overcome"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/203","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/comments?post=203"}],"version-history":[{"count":4,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/203\/revisions"}],"predecessor-version":[{"id":79033,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/203\/revisions\/79033"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media\/4199"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media?parent=203"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/categories?post=203"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/tags?post=203"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}