Cloud Service and Deployment Models Questions
The foundational service models (IaaS, PaaS, SaaS, FaaS) and deployment models (public, private, and hybrid cloud) and when each is appropriate. Covers the shared-responsibility boundary, the core value proposition of cloud versus on-premises, how service-model choice shifts operational ownership, vendor lock-in risks and mitigation, and when a single-cloud, multi-cloud, or hybrid-cloud strategy is the better choice. The conceptual entry point before any provider-specific or architectural depth.
Describe a concise, repeatable approach to produce a high-level Total Cost of Ownership (TCO) estimate for moving a core application to a public cloud for a 3-year horizon. Which cost categories do you include (cloud, networking, staff, licensing, migration), and how would you handle uncertainty and sensitivity analysis?
Sample Answer
Direct answer
A repeatable Total Cost of Ownership (TCO) approach for a 3-year cloud migration is: fix a small set of cost categories, build a low, base, and high estimate per category per year rather than a single number, sum to a 3-year total, and present the range together with the one or two assumptions that actually drive it, instead of a single, falsely precise figure.
Cost categories
- Cloud: compute and storage run rate.
- Networking: data-transfer and egress cost, easy to under-budget because it scales with usage in a way that's less visible than compute.
- Staff: both steady-state operations after migration and the migration labor itself, which is usually front-loaded into year one and often underestimated.
- Licensing: existing software licenses that may be retired or kept during a transition period, plus any new cloud-native tooling now paid for separately.
- Migration: one-time cost of assessment, refactoring, data transfer, and a dual-run period where both the old and new environments are paid for simultaneously.
Handling uncertainty and sensitivity
Treat each category as a range, not a point estimate, and weight the range asymmetrically toward the high side for anything without direct historical data, since migrations of this shape run over more often than under. Rather than sensitivity-testing every category equally, identify the one or two most likely to actually swing the total, usually the one-time migration cost and the ongoing infrastructure run rate, and spend the analysis effort there.
Worked example
For a hypothetical mid-sized application migration (illustrative figures, not derived from any real deal), assume a steady-state post-migration run rate of $180k a year in cloud compute and storage plus $20k a year in networking, $90k a year in steady-state operations staff, and $40k a year in licensing. Year one additionally carries a $120k one-time migration cost and elevated staff cost of $150k, migration labor plus ramping operations, while cloud and networking only reach about half the steady-state rate as workloads cut over gradually through the year.
| Category | Year 1 | Year 2 | Year 3 |
|---|---|---|---|
| Migration (one-time) | $120k | $0 | $0 |
| Cloud (compute, storage) | $90k | $180k | $180k |
| Networking (data transfer, egress) | $10k | $20k | $20k |
| Staff (operations + migration labor) | $150k | $90k | $90k |
| Licensing | $40k | $40k | $40k |
| Year total | $410k | $330k | $330k |
Base-case 3-year TCO: $410k + $330k + $330k = $1,070k (about $1.07 million).
For sensitivity, apply a downside of minus 10 percent to the one-time migration cost and minus 15 percent to the combined cloud-and-networking line (the two most estimate-sensitive items), and an asymmetric upside of plus 30 percent to migration and plus 15 percent to cloud-and-networking, reflecting that migrations more often overrun than underrun.
Low case: migration $120k times 0.9 is $108k; cloud-and-networking $100k times 0.85 is $85k in year one and $200k times 0.85 is $170k in years two and three. Year 1 low = 108 + 85 + 150 + 40 = $383k; Year 2 and Year 3 low = 170 + 90 + 40 = $300k each. 3-year low = 383 + 300 + 300 = $983k.
High case: migration $120k times 1.3 is $156k; cloud-and-networking times 1.15 is $115k in year one and $230k in years two and three. Year 1 high = 156 + 115 + 150 + 40 = $461k; Year 2 and Year 3 high = 230 + 90 + 40 = $360k each. 3-year high = 461 + 360 + 360 = $1,181k.
The presented range is roughly $983k to $1,181k around a base case of $1,070k, about plus or minus 10 percent, and the two line items that drive nearly all of the spread are the migration cost and the cloud-and-networking run rate.
Trade-offs and pitfalls
The most common mistake is budgeting only the recurring run rate and forgetting the one-time migration and dual-run overlap cost, which routinely turns out to be one of the largest single-year line items. A second mistake is ignoring networking, since data-transfer and egress cost is often billed separately and can quietly become a meaningful recurring cost that a "compute and storage" estimate alone misses. A third is presenting a single-point TCO number as if it were precise; a 3-year infrastructure estimate carries enough real uncertainty, demand growth, price changes, migration scope creep, that a range with named drivers is both more honest and more useful for a budget decision than false precision.
Compare the IaaS, PaaS, and SaaS delivery models, with a concrete example of each. Discuss the pros and cons for a small engineering team, then recommend which model, or combination of models, you would adopt to host a medium-sized web application serving around 10,000 daily active users, run by a 4-person team with limited operations experience. Describe a hybrid approach you might reach for instead, and explain when it would make sense.
Sample Answer
Direct answer
For a 4-person team with limited operations experience hosting an application around 10,000 daily active users, I would recommend PaaS as the primary model, a managed application platform plus a managed database, reserving IaaS only for any piece that genuinely needs it, and treating SaaS as a source of building blocks to buy, such as authentication or transactional email, rather than as the hosting model for the core app itself.
Comparing the three for a small team
IaaS gives full control and potentially the cheapest per-unit compute, but the team would own OS patching, scaling configuration, and monitoring, which competes directly with the very small number of engineering hours available for the actual product. Wrong default here.
PaaS gives up some control, but a 4-person team gets a production-grade deployment, managed scaling, managed database, automated patching, without hiring or becoming operations specialists. That is exactly the trade a resource-constrained team should make.
SaaS is the right model for well-defined, already-solved problems adjacent to the product, using a SaaS product for email delivery, a SaaS-provided authentication service, or a support-ticketing tool for customer service, rather than for the core application, since the core app is presumably the team's actual differentiated product and isn't something an off-the-shelf SaaS product would be.
The recommendation
A managed application platform for the app tier plus a managed database for storage, with a couple of SaaS building blocks glued in for auth and transactional email rather than built from scratch. This keeps the team's operations surface down to "watch a dashboard and occasionally adjust a scaling policy" instead of "own a fleet."
A hybrid approach, and when it makes sense
A hybrid here would mean keeping the core app on a managed platform while running one specific piece on IaaS, for example a background job that needs a software dependency the managed platform doesn't support, or a steady, cost-sensitive batch workload where a small reserved virtual machine is genuinely cheaper at this scale than the managed equivalent. This makes sense once the team has one clear, isolated piece of the system with a requirement PaaS can't satisfy, or a cost delta large enough to justify the added operational surface for that one piece, not as a blanket decision to control more of the stack.
The analytics variant: a different lock-in calculus
If the workload were analytics or business intelligence (BI) flavored instead of a general customer-facing app, for instance this same 4-person team standing up internal reporting dashboards, the PaaS-first instinct needs an extra check. A fully SaaS BI tool gets a working dashboard fastest, but it usually couples the team's reporting logic and data tightly to that vendor's proprietary query language and connectors, a much larger vendor lock-in exposure than picking a managed application platform for a general web app, where the exit path (redeploy the same container elsewhere) is comparatively cheap. A PaaS-level option, a managed data warehouse queried with standard SQL, costs the team a bit more setup and ongoing responsibility, someone has to model the data and maintain the queries, but keeps the exit path open, since standard SQL and exported data are portable in a way a BI SaaS product's proprietary dashboard definitions typically are not. For a 4-person team specifically, that's worth naming explicitly rather than defaulting to "SaaS is always right for a small team," because the team's limited operations capacity has to be weighed against how expensive it would be for that same small team to unwind a deep SaaS BI dependency two years later if the vendor's pricing or roadmap stops fitting.
Trade-offs and pitfalls
The first pitfall is treating "small team, limited ops" as an automatic vote for SaaS everywhere; SaaS for your core differentiated product usually means you're not actually building a product anymore, just configuring someone else's. The second is over-indexing on cost-per-unit-compute when comparing IaaS to PaaS at this scale: at 10,000 daily active users, the labor cost of even a fraction of one engineer's time spent on operations very likely exceeds the sticker-price premium of PaaS, so the "PaaS costs more per server" argument that matters at large scale mostly doesn't apply yet.
You discover that a proposed architecture relies heavily on a single cloud-provider managed service with proprietary APIs. As solutions architect you need to document vendor lock-in risk and propose mitigations. List technical and contractual mitigations you would recommend, and how you'd estimate the migration effort later if needed.
Sample Answer
Direct answer
Documenting lock-in risk on a real architecture means going past "we depend on Service X" to a risk-register entry that names the specific capability you actually use, counts how many integration points touch it, and states plainly what breaks and how fast if the vendor changes terms or deprecates the feature. Mitigations split into technical (retrofit an abstraction boundary, keep a tested export path) and contractual (notice periods, price caps, exit rights), and a later migration-effort estimate should be built bottom-up from countable units of work, not guessed as a lump sum.
Documenting the risk
For the proprietary managed service in question, write down: which specific capability you use (not just the service's name); what a competing or open-source alternative would look like; how many integration points touch it, meaning call sites, data formats it produces, and downstream consumers; and a plain-language severity statement such as "if this vendor doubles price or retires this feature, these specific customer-facing behaviors break, and it would take roughly N weeks to recover."
Mitigations
Technical. Retrofit an abstraction boundary so internal callers use your own interface rather than the vendor's software development kit directly. Identify a concrete reference alternative, an actual competing service or open-source equivalent, and note which of its own proprietary features you are deliberately not using today, which tells you how close you already are to portable. Add automated, regularly tested data export to a standard format, so a future migration doesn't discover mid-cutover that the export path was never actually exercised.
Contractual. Negotiate an explicit deprecation-notice clause (a committed minimum notice period before a relied-upon feature is retired), price-increase caps or predictable renewal terms, and, where there is credible negotiating leverage, a right to extract data in a specified format on exit.
Estimating migration effort later: a worked example
A workable approach is a surface-area estimate: enumerate every integration point, classify each as trivial, moderate, or complex based on how provider-specific its logic is, price each class using a per-item basis from a comparable past migration, sum it, and add contingency weighted toward the high side, since migrations of this shape run over more often than under.
Suppose the application uses a proprietary managed queue-and-workflow product across 12 background jobs. On inspection, 8 use only generic enqueue and dequeue semantics (trivial, about 1 person-day each to re-point at a standards-based alternative), 3 use the provider's specific retry and dead-letter queue (DLQ, where failed messages are routed for inspection) configuration (moderate, about 4 person-days each to re-implement the same semantics elsewhere), and 1 relies on a proprietary workflow-orchestration feature with no direct equivalent (complex, scoped separately at 15 person-days based on a comparable past redesign).
8×1+3×4+15=8+12+15=35 person-days (base estimate)
Applying a 40 percent contingency for the migration-overrun pattern:
35×1.4=49 person-days
That gives a planning range of roughly 35 to 49 person-days, presented to stakeholders as "about 7 to 10 weeks of one engineer's time" (35 divided by 5 working days per week is 7 weeks, 49 divided by 5 is 9.8 weeks), rather than a single, falsely precise number.
Trade-offs and pitfalls
The biggest pitfall in documenting lock-in risk is treating it as binary, locked in or not, rather than as a spectrum of how many integration points exist, how proprietary each one is, and how reversible the data is; a risk-register entry that just says "high risk, uses a proprietary service" without that breakdown doesn't actually help anyone prioritize or estimate later. The second pitfall is doing the estimate once, at design time, and never revisiting it: treat the trivial and moderate and complex breakdown as living documentation that gets rechecked whenever new integration points are added, or the estimate silently rots and becomes useless exactly when it is needed most.
Define vendor lock-in in the context of cloud platforms. List five common lock-in vectors (APIs, managed services, data formats, tooling, identity) and propose practical mitigation techniques for each vector that a cloud architect might implement during evaluation and design.
Sample Answer
Direct answer
Vendor lock-in is the cost, in effort, time and money, of switching away from a provider once you have adopted its services, and it grows precisely where you have taken on the most provider-specific convenience. Five common vectors are proprietary application programming interfaces (APIs), managed services with no equivalent elsewhere, provider-specific data formats, provider-specific tooling, and identity. A cloud architect can mitigate each of these during evaluation and design, before the dependency is load-bearing, at a fraction of the cost of untangling it later.
The five vectors and their mitigations
APIs. Calling a provider's proprietary API surface directly throughout the application ties every call site to that vendor. Mitigation: introduce a thin abstraction layer, an internal client wrapping the provider's software development kit, so a future swap touches one module instead of every call site. Where a genuinely portable standard already exists, prefer it over a proprietary equivalent even when the proprietary option is marginally more convenient today.
Managed services with no equivalent elsewhere. Adopting a highly specific proprietary service means there is no "just switch providers" path, only "rebuild it." Mitigation: at design time, evaluate whether an open-source or multi-cloud-available alternative meets the need at an acceptable extra operational cost, and treat the proprietary option as a deliberate, documented trade rather than a default.
Data formats. Exporting data only in a provider-specific format, or having no bulk-export path at all, means migration starts with a data-transformation project before anything else can move. Mitigation: build and periodically test a bulk-export path to an open format (CSV, Parquet, or a standard SQL dump) as part of normal operations, not as a one-time migration afterthought, so it stays trustworthy.
Tooling. Building deployment automation entirely around a provider's proprietary infrastructure-as-code or continuous integration and continuous delivery (CI/CD) product makes the pipeline itself a migration cost. Mitigation: prefer a portable infrastructure-as-code tool such as Terraform over a provider-only equivalent for anything you might need to reproduce elsewhere, and keep build and deploy logic in provider-agnostic tooling where practical.
Identity. Wiring every application's authentication and authorization directly to a provider's identity and access management (IAM) system makes identity itself hard to unwind, since every permission and integration would need recreating. Mitigation: front identity with a standard protocol such as OpenID Connect (OIDC) so the provider's identity system sits behind a portable interface, and keep an inventory of every place a provider-specific role or permission is referenced.
Trade-offs and pitfalls
Every mitigation above has a real, upfront cost, and sometimes worse day-one ergonomics, in exchange for optionality you may never use. The practical stance is to spend mitigation effort proportional to how core and how hard to replace a dependency is, not apply every mitigation to every service uniformly. A low-stakes utility service can reasonably be adopted with zero abstraction; a system-of-record data store deserves the full treatment. The pitfall is doing the opposite: abstracting the trivial dependency for the sake of tidiness while leaving the genuinely core, hard-to-replace one wired in directly because "it was easier to ship that way."
A client asks whether to host their application in public cloud, private cloud, or remain on-prem. Explain the technical, security, compliance, performance, and cost factors you would evaluate to make this recommendation. Provide examples of workloads that should remain on-prem and those that typically benefit most from public cloud.
Sample Answer
Direct answer
The decision isn't really "cloud versus on-prem" on a single axis. It's the tenancy model, shared, multi-tenant public cloud versus dedicated, single-tenant private cloud or on-premises hardware, traded against five concrete factors: technical fit, security posture, compliance obligations, performance and latency needs, and cost structure. Most real recommendations end up as a split rather than one answer for the whole company.
The five factors
Technical. Does the workload need elastic, unpredictable scaling, which favors public cloud, or a fixed, well-understood, steady capacity profile, which favors on-premises or private, where you're not paying an elasticity premium you never use?
Security. Public cloud gives a mature, continuously updated security baseline maintained by a large provider team, but multi-tenancy means your isolation guarantees rest partly on the provider's controls. On-premises or private gives full physical control at the cost of having to build and maintain that posture yourself, a real, ongoing cost most organizations underestimate.
Compliance. Some regulatory or contractual requirements, a specific data-locality mandate or a requirement that data never leave a physical facility, can only be satisfied by physical control that even a carefully chosen public cloud region can't fully replicate. Check the exact wording of the requirement rather than assuming "picked the right region" is automatically sufficient.
Performance. Workloads with extremely tight, physically bound latency requirements, such as control systems on a factory floor that must respond to local sensors in single-digit milliseconds, benefit from being physically co-located with what they control, something no public cloud region, however close, fully replicates. Most business applications don't have this constraint, and public cloud's global network is the better fit for them.
Cost. Public cloud converts a large upfront capital expenditure (CapEx) into an ongoing operating expenditure (OpEx) that scales with usage, attractive for unpredictable or fast-growing demand. On-premises or private can genuinely be cheaper per unit of compute at a large, steady, well-utilized scale, but only if the organization has both the capital to invest and the discipline to keep utilization high, since idle owned hardware is pure sunk cost in a way idle cloud capacity, at least, can be turned off.
Workloads that fit each side
Public cloud: a customer-facing web application with unpredictable, growing traffic; a globally distributed service needing points of presence close to users worldwide; short-lived development and test environments that would sit mostly idle if they were owned hardware.
On-premises or private: a factory-floor industrial control system with hard, physically local latency requirements; a workload subject to a data-locality mandate requiring data to never leave a specific facility; a very large, steady, highly utilized batch workload where owning hardware at scale genuinely beats renting it.
Trade-offs and pitfalls
The common pitfall is a "cloud-default bias," recommending public cloud reflexively because it's the current industry default, without checking the workload's actual utilization pattern. A steady, highly utilized, predictable workload is exactly the case where public cloud's elasticity premium buys nothing, and on-premises or a committed private-cloud capacity plan can be the more defensible, if less fashionable, answer. A second pitfall is treating "private cloud" and "on-premises" as identical: a private cloud can be hosted by a third party in their data center, on dedicated single-tenant infrastructure managed with cloud-like self-service tooling, which is a meaningfully different operational and cost profile from an organization running its own physical data center. The recommendation should specify which of the two it means.
Unlock Full Question Bank
Get access to all 16 Cloud Service and Deployment Models interview questions and detailed answers.
Sign in to ContinueJoin thousands of developers preparing for their dream job.