Bachelors Program in Computer Science Engineering
Advanced Software Development
•
Bachelor
Cloud-Native and Platform Engineering
Introduction
Cloud-native computing is an approach to designing, building, operating, and evolving software so that it takes advantage of elastic infrastructure, managed services, automation, and distributed execution. It is not synonymous with “running an application in the cloud.” A virtual machine hosted by a cloud provider may still use a monolithic architecture, manual deployment, fixed capacity, and tightly coupled dependencies. Cloud-native systems instead treat infrastructure as programmable, applications as independently deployable units, and operations as an engineering discipline supported by automation and measurement.
Platform engineering extends this idea by creating an internal platform that provides reusable “golden paths” for application teams. The platform typically supplies deployment workflows, observability, security controls, identity integration, environment provisioning, and service templates. Its purpose is not to hide all infrastructure complexity, but to reduce unnecessary cognitive load while preserving appropriate engineering control.
The chapter examines containers, orchestration, serverless computing, elasticity, managed services, service meshes, multi-tenancy, platform engineering, portability, cost, and vendor lock-in.
Learning Objectives
After completing this chapter, a student should be able to:
Explain the principles and operating model of cloud-native software.
Package and deploy an application using containers and orchestration concepts.
Compare virtual machines, containers, Kubernetes-style orchestration, and serverless execution.
Evaluate elasticity, reliability, cost, portability, and vendor lock-in.
Explain the role of managed services, service meshes, and multi-tenancy.
Propose a platform-engineering approach with suitable governance and developer workflows.
Analyze a cloud-native architecture and identify its technical and organizational risks.
1. Foundations of Cloud-Native Systems
A cloud-native system commonly exhibits the following properties:
Automation: infrastructure, testing, deployment, and recovery are defined as repeatable processes.
Loose coupling: components communicate through stable interfaces and can evolve independently.
Statelessness where practical: durable state is placed in databases or object stores rather than tied to a replaceable compute instance.
Horizontal scalability: capacity is increased by adding instances, processes, or containers.
Observability: logs, metrics, and traces make internal behavior inferable from external outputs.
Resilience: failure of an instance, zone, dependency, or deployment is expected and managed.
Security by design: identity, least privilege, encryption, isolation, and auditability are part of the delivery process.
Cloud-native design does not require microservices. A modular monolith can be cloud-native if it is automated, observable, resilient, and deployable on elastic infrastructure. Conversely, a system divided into many services may be poorly designed if it introduces excessive network calls, operational overhead, and unclear ownership.
Containers and Images
A container packages an application and its user-space dependencies while sharing the host operating system kernel. A container image is an immutable, layered artifact from which containers are created. Containers generally start faster and use fewer resources than full virtual machines, but they do not provide identical isolation properties. Kernel vulnerabilities, unsafe privileges, exposed sockets, and weak image hygiene can create serious risks.
A production image should be small, reproducible, signed or otherwise verifiable, free of unnecessary tools and secrets, and built from a controlled base image. A typical delivery sequence is:
Compile and test the application.
Build an image from a version-controlled definition.
Scan dependencies and the image for vulnerabilities.
Sign and store the image in a registry.
Deploy by immutable image digest rather than an ambiguous mutable tag.
Monitor the running workload and roll back or replace it when required.
Orchestration
An orchestrator schedules workloads, maintains the desired number of instances, exposes services, manages configuration, and supports rolling updates. Kubernetes is a prominent example, but the concepts are broader than any one product.
The desired state model separates what an operator requests from what currently exists. Controllers continuously reconcile the two. For example, if three replicas are requested and one fails, the controller attempts to create a replacement. This is valuable, but reconciliation is not magic: applications still require suitable health checks, resource limits, graceful shutdown, idempotent operations, and compatible data-management strategies.
A production deployment should distinguish:
Liveness: whether a process is stuck and should be restarted.
Readiness: whether it can receive traffic.
Startup: whether it needs additional time before normal health evaluation.
Confusing liveness and readiness can cause restart loops or route traffic to an unprepared service.
Cloud-native delivery and runtime architecture
Figure: Cloud-native delivery and runtime architecture
Figure: A simplified cloud-native delivery pipeline and orchestrated runtime.
2. Elasticity, Reliability, and Observability
Scalability is the ability to handle increased workload by adding resources or improving implementation. Elasticity is the ability to adjust resources dynamically as workload changes. A system can be scalable but not elastic if capacity is increased only through a manual procurement process.
A basic utilization measure is:
U = D / C
where U is utilization, D is demand during a specified interval, and C is available capacity in the same units and interval. The formula is meaningful only when demand and capacity are comparable—for example, requests per second. If U approaches 1, queueing delay and failure risk may increase; therefore, autoscaling normally retains headroom.
A simple capacity estimate is:
N = ⌈D / r⌉
where D is required throughput, r is sustainable throughput per instance under stated performance limits, and N is the minimum integer number of instances. This is a planning estimate, not a guarantee: redundancy, burst demand, startup time, dependencies, and resource limits must also be considered.
Reliability is often expressed through availability. If a service is available for time Ta and unavailable for time Td during an observation period, then:
A = Ta / (Ta + Td)
Availability is dimensionless. A target of 99.9% over a 30-day month permits approximately 43.2 minutes of unavailability, assuming a 30-day period and that the target is measured over the complete period. Availability targets should be connected to service-level objectives, error budgets, and business impact rather than treated as marketing claims.
Observability consists of:
Metrics: numerical time series such as request rate, error rate, latency, saturation, and cost.
Logs: timestamped events enriched with context such as request or trace identifiers.
Traces: causal paths across distributed components.
The four golden signals are latency, traffic, errors, and saturation. Observability also requires useful alerting. An alert should identify a condition requiring action, have an owner, and provide enough context for diagnosis. Collecting every possible event without retention, privacy, or cost controls is not mature observability.
3. Serverless Computing and Managed Services
Serverless computing delegates much of the server lifecycle to a provider. In function-as-a-service (FaaS), code is invoked by events or requests and billed according to a provider-specific metric such as invocations and execution duration. Serverless platforms may scale rapidly and support small teams, but they can impose execution-time limits, cold-start latency, concurrency constraints, specialized deployment models, and difficult local testing.
Serverless is best suited to event handlers, asynchronous processing, scheduled tasks, APIs with variable demand, and integrations. It is less suitable when an application requires long-lived processes, specialized operating-system control, stable high utilization, or predictable ultra-low latency.
Managed services include databases, queues, object storage, identity systems, monitoring, and machine-learning APIs. They reduce undifferentiated operational work, but they do not eliminate architecture responsibility. Teams remain accountable for data classification, backup policies, access control, recovery testing, schema evolution, performance, and contractual compliance.
A useful decision considers:
Question
Implication
Is the capability commodity or strategically differentiating?
Prefer managed services for commodity capabilities when risk is acceptable.
Is demand variable?
Serverless or elastic managed services may reduce idle capacity.
Is data highly regulated?
Confirm location, access, retention, audit, and deletion controls.
Is portability important?
Prefer open protocols, exportable data, and replaceable adapters.
Is operational expertise limited?
Managed services may reduce failure risk, but require provider evaluation.
4. Service Meshes and Distributed Communication
A service mesh provides a dedicated communication layer for service-to-service traffic. A typical mesh supplies mutual TLS, service identity, traffic routing, retries, timeouts, circuit breaking, telemetry, and policy enforcement through proxies or an equivalent data plane. A control plane distributes configuration and identities.
A mesh is not a substitute for good application design. Retries can amplify an outage when the underlying dependency is overloaded. Timeouts should reflect a bounded end-to-end latency budget. Circuit breakers should fail fast when a dependency is unhealthy. Traffic policies must be tested under partial failure, not merely demonstrated in a normal environment.
Service meshes add resource consumption, configuration complexity, upgrade obligations, and debugging challenges. They are justified when consistent cross-cutting communication policies are valuable across enough services. A small application may be better served by libraries, an API gateway, or platform-level networking features.
5. Multi-Tenancy and Isolation
A tenant is a customer, department, project, or other logically separated user group. Multi-tenancy allows multiple tenants to share an application or infrastructure. Common data models include:
Separate deployment or database per tenant: strong isolation and customization, but higher cost and operational overhead.
Separate schema per tenant: moderate isolation and operational complexity.
Shared schema with tenant identifiers: efficient and scalable, but requires rigorous authorization and query controls.
Shared application with logically isolated objects: economical, but highly dependent on correct policy enforcement.
Isolation must be evaluated across data, compute, network, identity, rate limits, noisy-neighbor effects, backups, logs, and support access. Tenant identifiers should not be accepted as trustworthy authorization by themselves. Authorization must derive from authenticated identity, tenant membership, resource ownership, and policy.
A platform should define tenant lifecycle operations: onboarding, provisioning, quotas, suspension, data export, deletion, incident notification, and offboarding. Privacy regulations may require data minimization, purpose limitation, retention controls, and demonstrable access governance.
6. Platform Engineering
Platform engineering treats internal developer capabilities as a product. Its users are application teams; its product is a reliable, documented, self-service path from code to production. A platform team may provide:
repository and service templates;
continuous integration and deployment pipelines;
infrastructure provisioning through code;
standard runtime environments;
secrets and identity integration;
observability defaults;
security scanning and policy checks;
environment catalogs and ownership metadata;
recovery, scaling, and cost-management controls.
A golden path is a recommended, supported workflow for a common task. It should be opinionated enough to reduce decisions but extensible enough to accommodate legitimate differences. A “paved road” becomes harmful when it is compulsory without feedback, creates opaque abstractions, or prevents teams from addressing unusual requirements.
Platform success should be measured by outcomes, not by the number of tools installed. Useful indicators include deployment lead time, deployment frequency, change-failure rate, mean time to restore, developer satisfaction, platform availability, support load, security findings, resource utilization, and cost per business transaction. Metrics should be interpreted together; increasing deployment frequency while increasing severe incidents is not unqualified improvement.
The platform team should publish service-level objectives, support boundaries, upgrade policies, deprecation schedules, and escalation procedures. Product management practices—user research, road maps, documentation, feedback loops, and adoption analysis—are as important as technical implementation.
7. Portability, Cost, and Vendor Lock-In
Portability is the ability to move workloads, data, or operational capabilities between environments with acceptable effort and risk. It has several dimensions:
Application portability: code runs on another runtime.
Deployment portability: infrastructure and workflows can be recreated.
Data portability: data can be exported in usable form with integrity preserved.
Operational portability: teams can observe, secure, recover, and support the system elsewhere.
Containers improve application packaging portability, but they do not make an application independent of provider-specific databases, identity models, networking, quotas, or operational processes.
The terms represent compute, storage, network transfer, managed-service charges, operations labor, and expected migration or exit cost over a stated period. All terms must use the same currency and time horizon. This is a decision model, not an invoice formula; taxes, discounts, support agreements, downtime costs, and risk may need separate treatment.
Vendor lock-in is not automatically irrational. A proprietary service may deliver substantial productivity, reliability, or security benefits. The engineering question is whether the value exceeds switching risk and whether the organization has an explicit exit strategy. Mitigations include open interfaces, abstraction at genuinely unstable boundaries, portable data formats, regular exports, documented recovery procedures, multi-cloud testing only when justified, and avoiding accidental dependence on undocumented behavior.
Multi-cloud is not a universal solution. Operating across providers can increase resilience in selected cases, but also increases identity, networking, monitoring, skills, testing, and cost complexity. A deliberate single-provider strategy with tested backups may be safer than an untested multi-cloud design.
Worked Example: Capacity and Cost Reasoning
Suppose an API must handle 2,400 requests per second. Load testing shows that one container safely handles 150 requests per second while maintaining the required latency. The minimum capacity estimate is:
N = ⌈2400 / 150⌉ = ⌈16⌉ = 16
If the architecture requires two additional containers as operational headroom and one failure domain must be able to fail without losing the target capacity, the deployment should not simply run 18 instances. The design must distribute sufficient replicas across failure domains and verify the remaining capacity after a domain failure. This illustrates why arithmetic capacity is only a starting point.
Assume a monthly estimate contains $1,200 compute, $180 storage, $250 network, $700 managed services, and $900 operations. Then:
The estimate excludes migration cost and must be compared with alternatives over the same period. It should also be tested against actual usage because network egress and managed-service consumption can be nonlinear.
A fictional online retailer operates a monolithic application on manually provisioned virtual machines. Releases occur monthly, peak-season capacity is overprovisioned, and failures are difficult to diagnose. The company wants faster delivery without compromising payment security.
Problem Analysis
The immediate problem is not simply the absence of containers. The organization has weak automated tests, unclear service ownership, no tested recovery process, and limited production observability. Decomposing the monolith immediately would multiply these weaknesses.
Approach
The team first establishes automated tests, source-controlled infrastructure, centralized logs, metrics, traces, and deployment rollback. It containerizes the existing application and runs it under an orchestrator with readiness checks and horizontal scaling. A managed relational database is selected because reliable backups, patching, and failover are more valuable than operating a database cluster internally. Payment data is isolated behind a narrowly scoped service and identity policy.
Only after observing stable boundaries does the team extract catalog search and order notification as separate services. Notifications are asynchronous through a queue, reducing coupling between checkout and email delivery. A platform team provides a service template, secure secret integration, standard dashboards, and a deployment workflow. The platform does not permit arbitrary production access; emergency access is time-limited and audited.
Outcome
The retailer obtains smaller, reversible releases and improved failure diagnosis. Peak capacity is adjusted automatically, while the database remains governed by explicit performance and recovery objectives. Costs initially rise because the organization invests in observability and automation, then become more predictable as idle virtual machines are reduced. The company documents database export procedures and tests restoration so that provider dependence is understood rather than ignored.
Learning Points
Cloud-native transformation is organizational and operational, not merely a packaging exercise.
Managed services reduce some work but create dependency and governance obligations.
Incremental decomposition is safer when boundaries are discovered through evidence.
Platform engineering succeeds when it improves developer outcomes and production reliability.
Portability is a risk-management choice with measurable costs, not an absolute property.
Challenges, Ethics, and Governance
Cloud-native systems create responsibilities beyond technical performance. Excessive telemetry may expose personal data; logs should be minimized, access-controlled, retained appropriately, and redacted. Automated scaling and deployment policies can cause financial loss if misconfigured. Budget alerts, quotas, approval boundaries, and anomaly detection are therefore governance controls.
Security controls should include strong identity, least privilege, workload isolation, image provenance, vulnerability management, encrypted communication, secret rotation, audit trails, and tested incident response. Supply-chain security is especially important because an image or dependency may contain malicious or vulnerable code. Software bills of materials, signed artifacts, reproducible builds where feasible, and trusted build environments improve accountability.
Regulated workloads require attention to jurisdiction, contractual processing terms, records retention, accessibility, breach notification, and data-subject rights. Compliance certifications supplied by a provider do not automatically make a customer’s architecture compliant; responsibility is shared and must be mapped explicitly.
Contemporary Developments
Current cloud-native practice increasingly includes WebAssembly for selected portable workloads, confidential computing for protected execution, policy-as-code, software supply-chain attestations, and internal platforms that expose self-service APIs. Artificial intelligence is also being used for anomaly detection, capacity forecasting, code assistance, and incident summarization. These uses require human review, reliable data, protection of sensitive information, and controls against automation bias. AI-generated infrastructure or deployment changes should pass the same testing, approval, and audit processes as human-authored changes.
Best-Practice Checklist
Define service ownership and measurable service-level objectives.
Build immutable, minimal, scanned, and verifiable images.
Use readiness, liveness, and startup checks for their intended purposes.
Treat infrastructure and policy as version-controlled code.
Design for graceful degradation, timeouts, bounded retries, and recovery.
Collect actionable metrics, structured logs, and distributed traces.
Choose managed services after evaluating data, cost, compliance, and exit risk.
Establish tenant isolation and authorization independently of user-supplied identifiers.
Make the internal platform discoverable, documented, supported, and feedback-driven.
Review cost, portability, and vendor dependence throughout the system lifecycle.
Chapter Summary
Cloud-native development combines automation, elastic execution, resilient distributed design, observability, and secure operational practices. Containers provide consistent packaging, while orchestrators reconcile desired and actual runtime state. Serverless and managed services can reduce infrastructure work but introduce constraints and provider dependencies. Service meshes standardize communication policies but add operational complexity. Multi-tenancy requires deliberate isolation of data, identity, resources, and support operations.
Platform engineering turns common delivery and operational capabilities into an internal product with supported golden paths. Its success depends on developer experience, reliability, security, governance, and measurable outcomes. Portability and vendor lock-in must be evaluated across application, deployment, data, and operational dimensions. Finally, cloud-native systems should be assessed not only for technical elegance but also for cost, compliance, ethical data use, recoverability, and business value.
Key Terms
Cloud-native: An approach that uses automation, elastic infrastructure, resilient design, and managed capabilities.
Container: An isolated process packaging an application and its user-space dependencies.
Container image: An immutable, layered artifact used to create containers.
Orchestrator: A system that schedules and manages workloads according to desired state.
Desired state: The declared condition that a control system attempts to maintain.
Elasticity: The ability to adjust capacity in response to changing demand.
Serverless: A computing model in which the provider manages most server lifecycle concerns.
Function-as-a-service: Event- or request-driven execution of provider-managed functions.
Managed service: A provider-operated capability such as a database, queue, or identity service.
Service mesh: A communication infrastructure layer providing traffic, security, and telemetry controls.
Multi-tenancy: Serving multiple logically separated tenants using shared or dedicated resources.
Golden path: A supported, recommended workflow for a common engineering task.
Platform engineering: Building and operating internal platforms as products for development teams.
Observability: The ability to infer system behavior from metrics, logs, and traces.
Service-level objective: A measurable target for a service characteristic such as availability or latency.
Vendor lock-in: Dependence that makes changing providers costly or technically difficult.
Portability: The ability to move a workload, data, or operation between environments.
Infrastructure as code: Declarative or programmatic management of infrastructure through versioned files.
Error budget: The tolerated amount of service-level-objective failure used to balance reliability and change.
Review Questions
Short Answer Questions
Distinguish scalability from elasticity.
What are the purposes of readiness and liveness checks?
State two benefits and two limitations of serverless computing.
What problem does a service mesh address?
Name four dimensions of portability.
Long Answer Questions
Explain how containers and orchestrators support cloud-native deployment, including their security and operational limitations.
Compare managed databases with self-managed databases using cost, reliability, control, compliance, and lock-in criteria.
Describe the responsibilities and success measures of an internal platform-engineering team.
Explain multi-tenancy models and the controls required to prevent data leakage and noisy-neighbor failures.
Discuss why observability, error budgets, and recovery testing are essential in distributed systems.
Analytical / Application Questions
An application receives 1,800 requests per second, and one instance safely handles 120 requests per second. Calculate the minimum instance count, then identify at least three reasons why a production deployment may require more capacity.
A company proposes multi-cloud solely to avoid vendor lock-in. Evaluate the proposal and recommend evidence that should be collected before adopting it.
Design a migration sequence for a manually deployed monolith with weak testing and no centralized observability. Justify why your sequence reduces technical and organizational risk.
Multiple Choice Questions with Answers
Question 1
Which characteristic most directly distinguishes elasticity from scalability?
A. Elasticity adjusts capacity as demand changes
B. Elasticity requires a monolithic architecture
C. Elasticity eliminates the need for monitoring
D. Elasticity means that all services use containers
Correct Answer: A. Elasticity adjusts capacity as demand changes
Question 2
What is the primary purpose of a readiness check?
A. To determine whether a workload should receive traffic
B. To encrypt all application data
C. To calculate monthly cloud cost
D. To replace dependency vulnerability scanning
Correct Answer: A. To determine whether a workload should receive traffic
Question 3
A service safely handles 200 requests per second. Using N = ⌈D/r⌉, what is the minimum number of instances for 1,000 requests per second?
A. 2
B. 4
C. 5
D. 10
Correct Answer: C. 5
Question 4
Which statement about managed services is most accurate?
A. They remove all responsibility for security and compliance
B. They can reduce operational work while creating provider dependency
C. They always cost less than self-managed infrastructure
D. They guarantee application portability
Correct Answer: B. They can reduce operational work while creating provider dependency
Question 5
Which set contains the commonly cited four golden signals of observability?
A. Latency, traffic, errors, and saturation
B. Users, passwords, tokens, and certificates
C. CPU, source code, images, and backups
D. Cost, invoices, contracts, and licenses
Correct Answer: A. Latency, traffic, errors, and saturation
Question 6
What is a principal risk of using unbounded retries between services?
A. They can amplify load during an outage
B. They always prevent cascading failures
C. They eliminate the need for timeouts
D. They make data encryption impossible
Correct Answer: A. They can amplify load during an outage
Question 7
Which practice best supports tenant isolation?
A. Trusting a tenant identifier supplied by the client
B. Combining authenticated identity, membership, ownership, and policy checks
C. Allowing every tenant to query the shared database
D. Using only a common administrator account
Correct Answer: B. Combining authenticated identity, membership, ownership, and policy checks
Question 8
What is the main purpose of a platform-engineering golden path?
A. To provide a supported workflow for common engineering tasks
B. To prevent all teams from using any alternative technology
C. To replace application-team ownership
D. To maximize the number of platform tools
Correct Answer: A. To provide a supported workflow for common engineering tasks
Question 9
Which statement correctly describes container portability?
A. Containers guarantee portability of provider-specific databases
B. Containers improve packaging portability but do not remove infrastructure dependencies
C. Containers eliminate the need for identity and networking design
D. Containers provide stronger isolation than every virtual machine in all circumstances
Correct Answer: B. Containers improve packaging portability but do not remove infrastructure dependencies
Question 10
Using TCO = C_compute + C_storage + C_network + C_managed + C_operations, what is the total when the terms are 500, 100, 75, 225, and 300 USD per month?