5. Cloud-Native Platforms and Software EngineeringIntroduction and ContextCloud computing has altered not only where software runs but also how software is conceived, developed, deployed, operated, and governed. Earlier application architectures often treated infrastructure as a stable, externally managed environment. Cloud-native engineering reverses this assumption. Infrastructure is programmable, workloads are distributed, failures are expected, and delivery is continuous. Applications are designed to exploit elasticity, automation, observability, and platform services rather than merely being relocated to virtual machines. Cloud-native does not mean simply using a public cloud, containers, or Kubernetes. It is an architectural and organizational approach in which software is decomposed, automated, observable, resilient, and delivered through repeatable processes. The approach brings together containers, orchestration, service meshes, APIs, functions, immutable infrastructure, infrastructure as code, continuous integration and delivery, GitOps, DevSecOps, and platform engineering. For doctoral-level study, the central issue is not whether a particular tool is popular. It is how these mechanisms alter architectural properties, engineering practices, organizational power, risk, and long-term technological dependence. A well-designed cloud-native platform can improve delivery performance and operational reliability, but excessive decomposition can create complexity, network dependence, technical debt, and vendor lock-in. Architecture therefore requires evidence-based trade-offs rather than technological fashion. Learning ObjectivesBy the end of this chapter, the reader should be able to: 1. Explain the architectural and organizational characteristics of cloud-native systems. 2. Distinguish containers, orchestration, service meshes, APIs, and functions as complementary rather than interchangeable technologies. 3. Design a delivery lifecycle using infrastructure as code, CI/CD, GitOps, and DevSecOps. 4. Evaluate immutable infrastructure and platform engineering in relation to reliability, governance, and developer productivity. 5. Analyze portability, interoperability, technical debt, and vendor lock-in using explicit decision criteria. 6. Assess the risks, ethical implications, and operational consequences of cloud-native adoption. From Cloud Hosting to Cloud-Native EngineeringA cloud-hosted application may run in a cloud provider while retaining assumptions associated with traditional data centers: manually configured servers, large release batches, centralized databases, and limited automation. A cloud-native application is designed around distributed execution and automated change. Its architecture usually emphasizes independently deployable components, declarative configuration, horizontal scaling, automated recovery, and observable behavior. The distinction can be expressed through four dimensions. The first is technical design: workloads are packaged, provisioned, connected, and monitored through software. The second is operational design: teams assume responsibility for the complete lifecycle of services, including reliability and security. The third is organizational design: cross-functional teams and internal platforms reduce the separation between development and operations. The fourth is economic design: capacity becomes elastic, but consumption, data transfer, managed services, and operational complexity must be actively controlled. Cloud-native architecture is therefore a socio-technical system. A Kubernetes cluster cannot compensate for unclear ownership, poor testing, weak security practices, or an absence of service-level objectives. Conversely, a capable engineering culture can use simpler technologies effectively. The appropriate question is not “How many cloud-native components should be adopted?” but “Which capabilities are necessary to achieve the required quality attributes at acceptable cost and risk?” Architectural Building BlocksContainers and the unit of deploymentA container packages an application and its dependencies into an isolated user-space environment that shares the host operating system kernel. Container images are normally constructed in layers and identified by immutable digests. Compared with traditional virtual machines, containers generally start faster and use fewer resources, although their isolation boundary differs from that of a virtual machine and must not be treated as equivalent in every security context. Containers improve repeatability by reducing differences between development, testing, and production environments. They also establish a useful deployment unit. However, they do not automatically create a microservice architecture. A monolithic application can be placed in a container, and a poorly designed collection of containers can still behave as a tightly coupled monolith. Production practice requires image provenance, minimal base images, vulnerability scanning, non-root execution where feasible, dependency control, signed artifacts, and a defined retention policy. An image should be promoted through environments rather than rebuilt differently for each environment. Configuration and secrets should be supplied at runtime through controlled mechanisms. Kubernetes and orchestrationKubernetes provides a declarative control plane for scheduling and managing containerized workloads. The desired state is represented through resources such as Deployments, StatefulSets, Jobs, Services, ConfigMaps, and Secrets. Controllers continuously compare the desired state with observed state and take corrective action. This reconciliation model is one of Kubernetes’ most important conceptual contributions. Kubernetes supplies service discovery, workload scheduling, rolling updates, health checks, scaling mechanisms, and extensibility through custom resources and operators. It does not, by itself, guarantee application correctness, data consistency, security, or cost efficiency. A cluster may recover a failed process while the application remains functionally incorrect. Effective design therefore combines Kubernetes mechanisms with domain-level health indicators, resilience patterns, and observability. The abstraction has a cost. Kubernetes introduces a large API surface, networking complexity, control-plane dependencies, and specialized skills. It is valuable when workload diversity, portability, scaling, or operational automation justify that complexity. For a small stable application, a managed application platform or a simpler container service may be a more responsible architectural choice. APIs and service boundariesAPIs are contracts through which software components communicate. They may be synchronous, such as REST or gRPC calls, or asynchronous, such as events and messages. An API contract includes data structures, semantics, error behavior, authentication requirements, compatibility expectations, and performance characteristics. Cloud-native decomposition should begin with business capabilities and ownership boundaries, not with an arbitrary number of deployable units. A service should own a coherent responsibility and, where possible, its data model. Excessive synchronous calls create temporal coupling: a user request may fail because several downstream services are unavailable. Asynchronous communication, caching, bulkheads, timeouts, retries with backoff, circuit breakers, and idempotency can reduce this coupling, but they introduce consistency and debugging challenges. API governance is consequently a design discipline. Versioning, contract testing, schema evolution, rate limiting, deprecation policies, and an API catalogue are more important than the choice between particular API styles. Interoperability depends on open specifications and stable semantics, not merely on exposing an endpoint. Service meshesA service mesh places a communication layer, often through sidecar or node-level proxies, between services. It can provide mutual TLS, service identity, traffic routing, retries, telemetry, and policy enforcement without requiring every application team to implement these functions independently. A mesh is especially useful when many services need consistent communication policies. The abstraction also has limitations. It adds latency, resource consumption, operational components, and another debugging layer. Retries implemented at multiple layers can amplify traffic and worsen an outage. A mesh should therefore be introduced when its policy, security, or observability benefits exceed its complexity. It is not a substitute for sound service design or network engineering. Functions and event-driven executionFunction-as-a-Service platforms execute relatively small units of code in response to events or requests. They can reduce infrastructure management and align cost with execution, particularly for irregular workloads, data processing, automation, and integration tasks. Their design constraints may include startup latency, execution duration, concurrency limits, statelessness, and provider-specific event models. Functions are not universally superior to containers. Long-running workloads, specialized runtimes, predictable high utilization, or complex local state may be better served by containers or virtual machines. Function architectures also require careful treatment of retries, duplicate events, ordering, dead-letter handling, observability, and permission boundaries. Declarative Operations: Immutable Infrastructure and Infrastructure as CodeTraditional infrastructure administration often modifies live servers in place. Over time, undocumented changes produce configuration drift: the actual environment no longer corresponds to the intended environment or to its recorded specification. Immutable infrastructure addresses this problem by replacing rather than modifying deployed artifacts. A new machine image, container image, or environment version is built, tested, and deployed; rollback means selecting a previous known version. Immutability improves auditability and reproducibility, but it does not eliminate state. Databases, queues, object stores, secrets, and external integrations remain stateful and require migration, backup, recovery, and retention strategies. A careless “replace everything” approach can destroy data or cause unnecessary disruption. Infrastructure as code (IaC) expresses infrastructure resources in version-controlled declarative or programmatic definitions. IaC supports review, repeatability, automated testing, policy enforcement, and environment reconstruction. Its lifecycle commonly includes planning, approval, application, verification, and controlled destruction. State management is critical: concurrent changes, secret exposure, imported resources, and partial failures must be handled explicitly. A mature IaC practice separates reusable modules from environment-specific values, validates configuration before deployment, records ownership, applies least privilege, and prevents unmanaged manual changes. Policy as code can enforce requirements such as approved regions, encryption, network restrictions, tagging, or maximum exposure. IaC does not make a design correct; it makes the design repeatable, including its errors. Review and testing remain essential. Delivery Systems: CI/CD, GitOps, and DevSecOpsContinuous integration (CI) is the frequent integration of changes into a shared codebase, supported by automated compilation, unit tests, static analysis, and artifact production. Continuous delivery keeps software in a deployable state through automated validation and controlled promotion. Continuous deployment extends this principle by automatically releasing qualifying changes to production. A reliable pipeline treats artifacts as traceable, immutable outputs. A typical flow is: - commit and peer review;
- dependency and secret checks;
- build and unit testing;
- creation and signing of an artifact;
- integration, contract, security, and performance testing;
- deployment to an environment;
- verification through health, telemetry, and policy checks;
- progressive release or rollback.
The distinction between delivery and deployment is organizational as well as technical. A regulated organization may automate all evidence generation while retaining an approval gate for production release. Such a gate should be risk-based rather than a manual repetition of automated checks. GitOps applies a declarative, version-controlled repository as the authoritative source for an environment’s desired state. An agent in the target environment observes the repository and reconciles actual state with it. This improves traceability and rollback, limits direct administrative access, and provides a clear audit trail. GitOps becomes ineffective when repositories contain opaque generated files, approvals are bypassed, or secrets are stored insecurely. It also requires a strategy for urgent remediation, because emergency changes must be reconciled back into the declared state. DevSecOps integrates security into the development and operations lifecycle rather than treating it as a late inspection. Activities include threat modeling, secure design reviews, software composition analysis, static and dynamic testing, infrastructure scanning, secrets detection, identity governance, runtime monitoring, and incident learning. Automated tools produce findings, but risk-based prioritization is still a human and organizational responsibility. An unreviewed flood of low-value alerts can weaken rather than improve security. Platform Engineering as an Organizational CapabilityPlatform engineering develops internal products that provide reusable pathways for application teams. A platform may offer templates, deployment workflows, identity integration, observability, databases, messaging, policy controls, and documentation through a portal or service interface. Its purpose is to reduce cognitive load while preserving appropriate autonomy for development teams. The platform should be treated as a product with users, feedback, service objectives, a roadmap, and lifecycle management. A platform team that merely centralizes control can recreate the bottlenecks associated with traditional operations. A successful platform supplies paved roads rather than rigid walls: common defaults are secure and easy to use, while justified exceptions remain possible. Platform engineering also changes governance. Controls can be embedded in templates and workflows, making compliant behavior the easiest behavior. Yet central platforms concentrate expertise and may create a new internal dependency. Documentation, portability of application artifacts, exit procedures, and transparent platform service levels are therefore important. Evaluating Portability, Interoperability, and Lock-InPortability is the ability to move an application or workload between environments with acceptable modification and cost. Interoperability is the ability of different systems to exchange and use information effectively. These concepts are related but distinct. An application may use an open API and interoperate well while still being difficult to port because it depends on a provider-specific database or identity service. Portability should be evaluated at several layers: source code, container images, orchestration descriptors, data, identity, networking, observability, and operational skills. Kubernetes manifests may be portable in syntax while relying on provider-specific load balancers, storage classes, ingress controllers, policy engines, or managed databases. Portability is therefore a spectrum, not a binary property. Vendor lock-in is not automatically irrational. A specialized managed service may provide superior reliability, analytics, security, or productivity. The relevant question is whether the value exceeds the cost of dependence and whether the organization understands its switching options. A useful evaluation includes: 1. the strategic value of the service; 2. the uniqueness and substitutability of its interfaces; 3. data extraction and migration feasibility; 4. contractual, geographic, and regulatory constraints; 5. skills and tooling required in an alternative environment; 6. the cost and time of exit; 7. the effect of dependence on bargaining power and resilience. Architectural responses include open data formats, contract-based APIs, abstraction at appropriate boundaries, multi-cloud or hybrid deployment where justified, regular recovery and migration exercises, and documented exit plans. Multi-cloud is not a universal remedy. It may increase duplicated operations, reduce economies of scale, and create more failure modes. Deliberate single-provider specialization can be the better decision when its assumptions are explicit and reversible enough for the organization’s risk appetite. Technical Debt in Cloud-Native SystemsTechnical debt is the future cost created by expedient design or implementation decisions. Cloud-native systems generate distinctive forms of debt: obsolete images, unmaintained dependencies, excessive microservices, undocumented APIs, fragile pipelines, unmanaged cloud resources, inconsistent observability, excessive platform customization, and dependence on scarce skills. Some debt is strategic and temporary; other debt is accidental and compounding. For example, introducing a service boundary to enable independent scaling may be justified, while creating ten services for a small domain without ownership or operational capacity is likely to produce accidental complexity. Debt should be made visible through architecture records, dependency inventories, service ownership, reliability indicators, platform health metrics, and explicit remediation work. Useful indicators include deployment lead time, change failure rate, recovery time, availability against service-level objectives, alert quality, unused resource cost, vulnerability age, pipeline duration, and the proportion of unsupported components. Metrics should guide inquiry rather than become targets that teams optimize at the expense of system integrity. A Practical Reference Architecture and Engineering MethodA robust implementation can proceed through an incremental method. First, define business capabilities, regulatory constraints, service-level objectives, recovery objectives, data classifications, and ownership. Second, choose the smallest architecture that can satisfy those requirements. Third, establish a secure software supply chain: source control, code review, dependency management, signed artifacts, controlled registries, and traceable promotion. Fourth, define infrastructure and policies as code. Fifth, deploy workloads through a managed orchestration or application platform, adding a service mesh only where communication policy or identity requirements justify it. Sixth, establish observability across logs, metrics, traces, events, and business indicators. Seventh, introduce progressive delivery using canary, blue-green, or feature-flag techniques. Finally, exercise failure recovery, security response, data restoration, and provider-exit procedures. This method reflects an important principle: reliability is produced by architecture, automation, and learning. Chaos experiments, game days, post-incident reviews, and controlled load tests reveal assumptions that normal operation conceals. Experiments must be authorized, bounded, observable, and ethically managed. Illustrative Case: Northstar Health ServicesBackgroundNorthstar Health Services, a fictional regional healthcare organization, operated a patient appointment and laboratory-result system on manually configured virtual machines. Releases occurred every six weeks. The system experienced long release validation periods, inconsistent configurations between environments, and difficulty demonstrating security controls to auditors. Situation and problemBusiness units requested mobile access, partner integration, and faster release of clinical workflow improvements. At the same time, patient data was subject to strict confidentiality, retention, and availability requirements. A proposal recommended moving all functionality to microservices on Kubernetes and using several provider-specific managed services. The architecture board identified two risks. First, decomposing the application without understanding domain boundaries could multiply operational complexity. Second, adopting proprietary data and messaging services could make a future exit expensive. A direct “rewrite and migrate” strategy was rejected. AnalysisThe organization mapped business capabilities and found that scheduling, identity, laboratory integration, notifications, and reporting had different change rates and availability needs. Scheduling and identity required strong transactional behavior; notifications could tolerate asynchronous processing; reporting could use a separate analytical pipeline. The team also classified data and identified which workloads could contain patient information. The board compared alternatives using delivery speed, clinical availability, security, recovery, operational burden, and exit cost. It selected a staged approach: retain the core transactional module initially, containerize it, and place it behind an API gateway; extract notifications and selected integration capabilities as independently deployable services; use managed Kubernetes for workloads requiring orchestration; and retain an explicit relational data export process. Strategy and solutionNorthstar established a platform team with application developers, security engineers, and operations specialists. The platform supplied approved container templates, IaC modules, centralized identity, secrets management, logging, metrics, tracing, and CI/CD pipelines. GitOps controlled non-emergency environment changes. Images were scanned and signed before promotion, and production releases used canary deployment with automated rollback criteria. A service mesh was introduced only for services requiring mutual TLS and consistent traffic policy. API contracts were versioned and tested by both producers and consumers. Patient data remained encrypted in transit and at rest, access was logged, and production debugging was designed to avoid unnecessary exposure of sensitive records. The organization documented provider-specific dependencies and tested restoration into a secondary environment rather than claiming complete multi-cloud portability. OutcomeThe fictional case does not assert numerical performance results; its outcome is architectural and organizational. Releases became smaller and more traceable, security evidence was generated through the delivery workflow, and teams gained a common operational path. The organization retained some provider dependence but understood it through an exit register, data-export tests, and documented replacement options. Most importantly, it avoided converting every component into a microservice merely because the platform made that technically possible. Learning pointsThe case demonstrates that cloud-native modernization is a portfolio of controlled changes, not a single migration event. Platform engineering can improve autonomy when it is designed around user needs. Portability must be tested at the data and operations layers, not inferred from containerization. Finally, regulated environments require security, privacy, auditability, and recovery to be designed into the platform rather than appended after deployment. Risks, Governance, and Professional ResponsibilityDistributed systems enlarge the failure surface. Network partitions, clock differences, partial deployments, stale caches, exhausted quotas, certificate expiry, dependency outages, and incorrect retries can produce failures that are not visible in a single-process design. Teams should define ownership, escalation, service-level objectives, error budgets, dependency limits, and tested recovery procedures. Security risks include compromised images, vulnerable dependencies, exposed dashboards, excessive permissions, insecure admission policies, poisoned build pipelines, and stolen credentials. A software bill of materials can improve supply-chain visibility, but it is useful only when organizations maintain it and act on material risk. Least privilege, workload identity, network segmentation, secret rotation, signed artifacts, and runtime detection should be proportionate to data and threat sensitivity. Governance must also address privacy, data residency, retention, algorithmic accountability, accessibility, and auditability. Observability systems can become repositories of personal or confidential information. Traces, logs, and debugging tools should apply data minimization and controlled access. Automated deployment must not remove human accountability for high-impact decisions. Common mistakes include adopting Kubernetes before establishing operational capability, treating containers as a security boundary, creating synchronous call chains across many services, adding retries without budgets, storing secrets in source repositories, confusing GitOps with simple Git-based deployment, and measuring developer productivity through superficial activity counts. Another error is assuming that an abstraction layer eliminates lock-in; abstractions themselves have implementation, performance, and maintenance costs. Emerging DirectionsSeveral developments are shaping cloud-native engineering. WebAssembly and lightweight sandboxing may broaden the range of portable execution environments, although ecosystem maturity and operational integration remain important questions. eBPF-based networking and security can provide kernel-level visibility and policy with less application modification. Software supply-chain frameworks increasingly emphasize provenance, attestations, reproducible builds, and verifiable deployment chains. Platform engineering is becoming more product-oriented, with internal developer portals, self-service workflows, and policy-aware automation. AI-assisted operations may help classify alerts, summarize incidents, recommend remediation, or generate infrastructure definitions. These systems require human verification because recommendations can encode incomplete context, reproduce insecure patterns, or obscure responsibility. The future is therefore unlikely to be defined by one universal platform. It will be defined by the ability to compose automation, governance, and specialized services while preserving understandable operational boundaries. Best Practices for Doctoral-Level Design and EvaluationA defensible cloud-native architecture should: - begin with quality attributes, business boundaries, and risk rather than tools;
- assign explicit ownership for every service, data store, pipeline, and platform capability;
- use declarative, version-controlled configuration and immutable, traceable artifacts;
- design APIs for compatibility, failure, security, and evolution;
- measure reliability and delivery outcomes, not tool adoption;
- secure the software supply chain from source to runtime;
- test backups, restoration, failover, rollback, and provider exit;
- minimize sensitive data in logs and telemetry;
- treat the internal platform as a product with users and service objectives;
- record assumptions, exceptions, technical debt, and provider-specific dependencies;
- review architecture continuously as workload, regulation, and organizational capability change.
Chapter SummaryCloud-native software engineering combines distributed application design with programmable infrastructure, automated delivery, and operational ownership. Containers provide repeatable packaging; Kubernetes reconciles desired workload state; APIs establish service contracts; service meshes can standardize communication policy; and functions support event-driven execution. Immutable infrastructure and infrastructure as code reduce configuration drift and improve reproducibility. CI/CD, GitOps, and DevSecOps connect source changes to secure, observable, and auditable releases. Platform engineering turns these capabilities into reusable internal products, but must avoid replacing one centralized bottleneck with another. Portability and interoperability are layered properties that must be assessed across code, data, identity, networking, and operations. Vendor lock-in may be an acceptable strategic trade-off when it is understood, governed, and balanced by exit capabilities. The principal lesson is that cloud-native architecture is not a checklist of technologies. It is a socio-technical design problem involving reliability, security, cost, organizational capability, technical debt, ethics, and long-term adaptability. Key TermsContainer: A packaged application environment that shares the host kernel while isolating processes and dependencies. Kubernetes: A declarative orchestration platform that manages containerized workloads through reconciliation. Microservice: An independently deployable service organized around a coherent business or technical capability. API: A defined interface and contract through which software components communicate. Service mesh: A communication infrastructure layer providing capabilities such as identity, routing, encryption, and telemetry. Function as a Service: An execution model in which provider-managed functions run in response to events or requests. Immutable infrastructure: Infrastructure replaced by versioned artifacts rather than modified in place. Infrastructure as Code: The definition and management of infrastructure through version-controlled code or declarative specifications. Configuration drift: Divergence between declared and actual infrastructure or application configuration. Continuous integration: Frequent integration of code changes supported by automated verification. Continuous delivery: Maintaining software in a releasable state through automated build and validation processes. GitOps: An operational model in which version-controlled declarative state drives environment reconciliation. DevSecOps: Integration of security practices throughout development, delivery, and operations. Platform engineering: The creation of internal platforms that provide reusable capabilities and developer self-service. Portability: The ability to move a workload between environments with acceptable modification and cost. Interoperability: The ability of systems to exchange and use information effectively. Vendor lock-in: Dependence on a provider that makes substitution or migration difficult or costly. Technical debt: Future cost created by expedient or deficient technical decisions. Service-level objective: A defined target for a service characteristic such as availability or latency. Software supply chain: The people, processes, tools, dependencies, and artifacts involved in producing and delivering software. Review QuestionsShort Answer Questions1. How does cloud-native engineering differ from merely hosting an application in the cloud? 2. What problem does the Kubernetes reconciliation model address? 3. Why are API contracts important in distributed applications? 4. Distinguish continuous delivery from continuous deployment. 5. What is configuration drift, and how can infrastructure as code reduce it? Long Answer Questions1. Explain how containers, Kubernetes, APIs, service meshes, and functions contribute different capabilities to a cloud-native architecture. 2. Discuss immutable infrastructure and infrastructure as code, including their treatment of state, rollback, security, and governance. 3. Analyze the relationship among CI/CD, GitOps, and DevSecOps in a regulated organization. 4. Evaluate platform engineering as both a technical and organizational capability. 5. Develop a framework for assessing portability, interoperability, vendor lock-in, and technical debt. Analytical / Application Questions1. A university operates a low-volume student-record application and is considering Kubernetes, a service mesh, and multiple cloud providers. Design a decision process that determines whether each technology is justified. 2. An organization’s deployment frequency has increased, but incident recovery time and cloud cost have also risen. Use the chapter’s concepts to diagnose likely causes and propose measurable interventions. 3. Design a secure GitOps and DevSecOps workflow for a healthcare application that processes confidential data. Identify controls for artifacts, secrets, access, observability, release verification, and disaster recovery. 22. Multiple Choice Questions with AnswersQuestion 1Which characteristic most clearly distinguishes a cloud-native application from an application merely hosted in the cloud? A. It uses a public-cloud billing account. B. It is designed for automation, distributed operation, observability, and resilient change. C. It runs exclusively on virtual machines. D. It avoids all managed services. Correct Answer: B. It is designed for automation, distributed operation, observability, and resilient change. Question 2What is the principal operational function of Kubernetes controllers? A. They convert all applications into microservices. B. They replace application-level testing. C. They reconcile observed state with declared desired state. D. They eliminate the need for network connectivity. Correct Answer: C. They reconcile observed state with declared desired state. Question 3A team wants to improve interoperability between independently developed services. Which practice is most directly relevant? A. Defining versioned API contracts and compatibility policies. B. Increasing the number of containers per service. C. Using manual server configuration. D. Disabling observability to reduce overhead. Correct Answer: A. Defining versioned API contracts and compatibility policies. Question 4Which situation most strongly justifies introducing a service mesh? A. A single small application with no service-to-service communication. B. A requirement for consistent mutual TLS, identity, routing, and telemetry across many services. C. A need to eliminate all application testing. D. A desire to avoid defining service ownership. Correct Answer: B. A requirement for consistent mutual TLS, identity, routing, and telemetry across many services. Question 5What is a central advantage of immutable infrastructure? A. It permits unlimited manual changes to production servers. B. It removes the need to back up stateful data. C. It replaces versioned artifacts rather than accumulating undocumented in-place changes. D. It guarantees that every provider offers identical services. Correct Answer: C. It replaces versioned artifacts rather than accumulating undocumented in-place changes. Question 6In a GitOps model, what normally serves as the authoritative representation of an environment’s desired state? A. An undocumented production server. B. A version-controlled declarative repository. C. A developer’s local configuration file. D. A manually edited monitoring dashboard. Correct Answer: B. A version-controlled declarative repository. Question 7Which statement best reflects a sound approach to vendor lock-in? A. Any use of a managed service is unacceptable. B. Multi-cloud always eliminates lock-in at lower cost. C. Provider dependence should be evaluated against value, substitutability, exit cost, and risk. D. Containerization guarantees complete portability. Correct Answer: C. Provider dependence should be evaluated against value, substitutability, exit cost, and risk. Question 8A platform team provides templates, secure defaults, deployment workflows, and self-service observability while allowing justified exceptions. This is an example of: A. A paved-road platform engineering model. B. Configuration drift. C. Manual change management. D. A monolithic database architecture. Correct Answer: A. A paved-road platform engineering model. Question 9Which practice best addresses software supply-chain risk? A. Rebuilding artifacts separately in every environment. B. Using unsigned dependencies without inventory. C. Scanning, signing, tracing, and controlling promotion of artifacts. D. Storing credentials in application source code. Correct Answer: C. Scanning, signing, tracing, and controlling promotion of artifacts. Question 10Why can excessive microservice decomposition increase technical debt? A. It always prevents independent deployment. B. It can multiply APIs, operational dependencies, observability needs, and ownership demands without sufficient benefit. C. It makes all failures impossible to diagnose. D. It eliminates the need for data governance. Correct Answer: B. It can multiply APIs, operational dependencies, observability needs, and ownership demands without sufficient benefit.
|