Data Mining and Feature Engineering

Chapter 12
Scalable Pipelines, Feature Stores and MLOps

Post Graduate Diploma in Data Science
Data Mining and Feature Engineering   •   Post Graduate

12. Scalable Pipelines, Feature Stores and MLOps

Introduction and Context

A machine-learning model is often presented as the central product of data science. In operational settings, however, the model is only one component of a larger system. Data must be collected, validated, transformed, joined, stored, served, monitored, and periodically replaced. A model that performs well in a notebook may fail when its input data changes, when a feature is unavailable at prediction time, or when a revised pipeline cannot be reproduced. The engineering discipline concerned with making these activities reliable and repeatable is commonly described as machine-learning operations, or MLOps.

This chapter examines the relationship between scalable data-mining pipelines, feature stores, and MLOps. A pipeline converts raw data into reliable analytical assets and model predictions. A feature store manages reusable feature definitions and supports consistent access to features during training and inference. MLOps extends these ideas to deployment, governance, monitoring, automation, and organizational coordination.

The topic is especially important in data mining because feature engineering is rarely a one-time activity. Features may be calculated from billions of transactions, updated at different frequencies, and consumed by many models. The central challenge is therefore not merely to create informative variables, but to create them in a manner that is reproducible, computationally efficient, traceable, secure, and consistent across the full model lifecycle.

Learning Objectives

After studying this chapter, the learner should be able to:

1. Explain the architecture and purpose of scalable data-mining and machine-learning pipelines.

2. Distinguish batch, streaming, and hybrid feature-computation patterns.

3. Describe feature-store components, feature definitions, lineage, versioning, and online-offline consistency.

4. Design testing and validation strategies for data, features, pipelines, and models.

5. Explain deployment, monitoring, drift detection, retraining, and rollback processes.

6. Evaluate technical, organizational, ethical, and governance risks in MLOps systems.

7. Apply MLOps principles to an industry-oriented feature-engineering scenario.

From Notebook Experiments to Production Systems

A notebook normally contains a sequence of exploratory actions: loading a file, removing missing values, joining tables, calculating features, training a model, and inspecting results. Such a sequence may be useful for discovery but is not automatically a production pipeline. It may depend on a particular file location, an analyst’s local environment, an undocumented assumption, or a manually selected date range. Re-running it later may produce a different dataset or a different model.

A production pipeline expresses the same logic as an explicit, testable, and executable workflow. It identifies inputs, transformations, outputs, dependencies, configuration, and failure conditions. A pipeline should also record the version of source data, code, libraries, feature definitions, and model artifacts used in an execution. This enables reproducibility: the ability to recreate a result or explain why a result changed.

A typical machine-learning lifecycle contains the following connected stages:

  • ingestion of structured, semi-structured, or unstructured data;
  • quality assessment and schema validation;
  • transformation and feature computation;
  • training, validation, and evaluation;
  • registration of feature and model artifacts;
  • deployment for batch or real-time inference;
  • monitoring of data, features, predictions, and outcomes; and
  • retraining, promotion, rollback, or retirement.

These stages form a feedback loop rather than a simple linear chain. Monitoring may reveal data drift, a production defect, or declining business performance. That evidence can initiate investigation, feature revision, retraining, or a change in the decision policy.

Architecture of a Scalable Pipeline

A scalable architecture separates concerns without isolating them from one another. The data layer may include operational databases, event streams, files, application logs, and external data providers. A storage layer, often implemented through a data lake, lakehouse, or warehouse, preserves raw and curated data. Processing engines execute transformations either periodically or continuously. Orchestration tools schedule and coordinate tasks, while registries maintain metadata about datasets, features, experiments, and models.

A useful conceptual architecture has five planes. The data plane contains source records and computed features. The processing plane performs batch or streaming transformations. The serving plane provides features or predictions to downstream applications. The control plane manages scheduling, permissions, configuration, and deployment. The governance plane records lineage, quality, ownership, retention, and compliance information.

Scalability has several meanings. Vertical scalability increases the capacity of an individual machine. Horizontal scalability distributes computation and storage across multiple machines. Elastic scalability adjusts resources according to workload. A well-designed pipeline also scales organizationally: multiple teams can reuse definitions without silently implementing different versions of the same feature.

A pipeline is often represented as a directed acyclic graph. Nodes represent tasks or datasets, and edges represent dependencies. For example, a customer-transaction table may feed a daily aggregation, which feeds a feature table, which feeds model training. Graph-based orchestration permits independent tasks to run in parallel and allows failed tasks to be retried without rerunning the entire workflow. Idempotence is important: executing a task twice with the same inputs should not create incorrect duplicate outputs.

Data partitioning is another important design decision. Time-based partitions support incremental processing and historical backfills. Entity-based partitioning can distribute customer, product, or account records. Poor partitioning can produce data skew, in which a small number of partitions contain disproportionate amounts of data and become performance bottlenecks. Pipeline designers must therefore consider volume, velocity, cardinality, update frequency, and access patterns.

Batch, Streaming, and Hybrid Feature Computation

Batch processing computes results periodically. A nightly customer-spend feature, for example, may aggregate all transactions received during the previous day. Batch systems are comparatively simple, efficient for large historical datasets, and suitable when decision latency is measured in hours or days. Their weakness is that information arriving after the scheduled computation may not be reflected until the next run.

Streaming processing handles events continuously or in short windows. A fraud-detection system may compute the number and value of transactions associated with a card during the preceding ten minutes. Streaming supports low-latency decisions but introduces challenges involving out-of-order events, duplicate messages, late arrivals, state management, and fault recovery.

Many organizations use a hybrid architecture. Historical data is processed in batch, while recent events update online state. The two paths must implement equivalent business logic. If the training pipeline calculates “transactions during the previous 30 days” differently from the online service, model performance may deteriorate even when both implementations are individually correct. This is one reason feature definitions should be treated as shared, governed artifacts rather than informal code fragments.

Event time and processing time must be distinguished. Event time is when an activity occurred; processing time is when the system received or handled it. Time-window features should generally be based on event time, subject to an explicitly defined policy for late data. Otherwise, delayed events can be assigned to the wrong period and create inconsistent features.

Feature Stores as Shared Feature Infrastructure

A feature store is a system for defining, storing, discovering, serving, and governing machine-learning features. It is not simply a database containing columns. Its value lies in connecting the semantic definition of a feature with its computation, historical values, serving requirements, ownership, and lineage.

A feature typically has an entity key, a value, a timestamp, and metadata. The entity may be a customer, device, account, product, or transaction. Examples include `customer_30_day_order_count`, `account_average_balance_90_day`, and `device_failed_login_count_1_hour`. Metadata may include the definition, data type, transformation logic, owner, source tables, update frequency, quality expectations, sensitivity classification, and approved uses.

Most feature-store architectures contain an offline store and an online store. The offline store preserves historical feature values, often in a warehouse or lakehouse, and supports training datasets, analysis, backtesting, and reproducible point-in-time retrieval. The online store contains current or recent values optimized for low-latency lookup during prediction. Some systems also maintain a registry that catalogs feature definitions and manages lifecycle states.

The offline store must support point-in-time correctness. Suppose a model is trained to predict whether a customer will default on a loan issued on 1 June. A feature used for that training example must reflect information available by 1 June, not a repayment recorded in July. A point-in-time join reconstructs the feature value as it existed at the prediction timestamp. Failure to apply this principle creates target leakage and leads to overly optimistic evaluation.

The online-offline consistency problem arises when training and serving use different transformations, data sources, or time semantics. A feature may have one value in the training dataset and another value when the live model requests it. Consistency can be improved by using shared transformation definitions, common libraries, automated comparison tests, and a controlled promotion process. It is also useful to compare offline-computed and online-computed values for sampled entities before deployment.

Feature reuse is a major organizational benefit. Instead of allowing every team to create its own definition of “active customer,” a feature store can publish a documented definition with an owner, version, quality status, and permitted use. Reuse reduces duplication, but it does not eliminate the need for judgment. A feature created for one prediction horizon or population may be inappropriate for another.

Feature Definitions, Lineage, and Versioning

A feature definition should specify more than a name. At minimum, it should describe the entity, value type, computation window, event-time rules, source data, null-handling policy, update frequency, and intended meaning. For example, “average order value over 30 days” is incomplete unless the organization defines whether cancelled orders are excluded, whether refunds reduce the value, and how a customer with no orders is represented.

Lineage records the chain from source data to feature to model to prediction or decision. It answers questions such as: Which source columns created this feature? Which code version produced it? Which models consumed it? Which reports or decisions depended on the model? Lineage is valuable for debugging, impact analysis, audit, and regulatory response.

Versioning should cover code, data schemas, feature definitions, datasets, models, and deployment configuration. A change to a feature may be backward compatible, such as correcting documentation, or behavior-changing, such as altering the treatment of refunds. Behavior-changing revisions should receive a new version and undergo appropriate validation. A model registry commonly records candidate, approved, deployed, and retired states, together with evaluation results and approval evidence.

Data versioning is difficult because datasets are large and continuously changing. Practical approaches include immutable raw data, partitioned snapshots, content hashes, snapshot identifiers, and reproducible query specifications. The appropriate mechanism depends on cost, regulatory requirements, and the volatility of the data.

Testing the Data-to-Decision Chain

Testing in MLOps extends beyond conventional software unit tests. A reliable system tests data, transformations, features, models, and operational behavior.

Schema tests verify that required fields exist and have expected types, ranges, and formats. Integrity tests examine uniqueness, referential relationships, duplicate records, and null rates. Distribution tests compare current data with historical baselines. Freshness tests confirm that data arrived within an acceptable time window. Constraint tests can express domain rules, such as non-negative transaction amounts or dates that cannot precede account creation.

Transformation tests use small, known input datasets for which the correct output is established. They should include boundary cases, missing values, late events, time-zone changes, duplicate events, and empty groups. Feature tests check data type, expected range, update frequency, coverage across entities, and computation logic. Tests should distinguish a genuine business change from a pipeline defect; therefore, an alert should provide sufficient context for investigation.

Training tests may verify that the training set contains no future information, that the label is defined correctly, that classes are represented, and that train-validation splits respect time or entity boundaries. Model tests can include minimum performance thresholds, fairness checks, robustness tests, and prediction sanity checks. Deployment tests assess latency, throughput, serialization, dependency compatibility, and failure behavior.

Testing should occur at several points: before code is merged, during pipeline execution, before a model is promoted, and after deployment. A pipeline that is technically successful but produces an empty feature table must be treated as failed. Quality gates prevent an apparently healthy workflow from silently delivering unusable outputs.

Deployment Patterns and Release Management

A model can serve predictions in batch, online, or through a hybrid arrangement. Batch inference generates predictions on a schedule and is suitable for campaign selection, periodic risk scoring, or inventory planning. Online inference receives a request and returns a prediction within a defined latency budget. Hybrid systems may precompute expensive features while calculating a small number of rapidly changing features at request time.

Deployment should separate the model artifact from the serving environment and configuration. Containers, dependency locking, infrastructure-as-code, and automated build processes help ensure that the tested artifact is the artifact placed in production. A model registry provides a controlled path from experimentation to approval and deployment.

Several release strategies reduce operational risk. In a canary release, a small fraction of traffic is directed to the new version while key metrics are observed. In a blue-green deployment, two complete environments exist and traffic is switched between them. Shadow deployment sends production inputs to a candidate model without using its outputs for decisions. These approaches allow comparison before full adoption.

Rollback must be designed before deployment. The organization should know which previous model, feature version, and serving configuration can be restored; how long the restoration will take; and how predictions generated during the incident will be handled. A model that cannot be rolled back safely is not production-ready.

Monitoring, Drift, and Retraining

Monitoring converts a deployed system into an observable system. Operational monitoring includes request volume, latency, error rate, resource consumption, feature-store availability, and pipeline completion time. Data monitoring includes missingness, freshness, schema changes, cardinality, and distribution shifts. Model monitoring includes prediction distributions, confidence or score distributions, calibration, and business outcomes.

Data drift describes a change in input distributions. Concept drift describes a change in the relationship between inputs and the target. Prediction drift describes a change in the model’s outputs. These forms of drift are related but not interchangeable. A model may experience data drift without immediate performance loss, or performance may deteriorate even when simple input distributions appear stable.

When labels arrive later, delayed-performance monitoring is necessary. For example, a credit model may not receive reliable default outcomes for months. In the interim, proxy indicators and operational metrics can be monitored, but they should not be mistaken for definitive model accuracy.

Drift metrics may include changes in means, quantiles, category frequencies, divergence measures, or statistical tests. No single threshold is universally correct. An alert should consider materiality, sample size, seasonality, expected business cycles, and the cost of intervention. Automatic retraining on every alert is unsafe because drift may reflect temporary events, faulty data, or an attack.

A sound retraining policy combines triggers and governance. Triggers may include a sustained performance decline, a confirmed data-source change, a scheduled review, or a material shift in the population. Before retraining, engineers should determine whether the issue is caused by data quality, feature logic, model inadequacy, or a changed business process. Retrained models must pass the same validation, approval, fairness, and deployment controls as their predecessors.

An Illustrative Case: Real-Time Payment Fraud Detection

Background

Consider an illustrative payment company, MeridianPay, operating a fraud-detection service for card-not-present transactions. The company initially trained a gradient-boosted model using customer and transaction aggregates produced nightly in a warehouse.

Situation and Problem

The model performed satisfactorily in offline evaluation but missed bursts of fraudulent transactions occurring within minutes. Moreover, after deployment, the production score distribution differed substantially from the training distribution. Investigation showed that the training feature `transactions_last_24_hours` included records according to event time, while the online service used records according to message-arrival time. Delayed events were therefore handled differently. The two systems also treated reversed transactions inconsistently.

Analysis

The problem was not simply model selection. It involved feature semantics, time handling, data freshness, and monitoring. The company mapped each feature to its source events, aggregation window, entity key, and availability timestamp. A point-in-time reconstruction showed that some historical training rows had used information unavailable when the original authorization decision would have been made. This leakage had inflated validation performance.

Approach and Solution

MeridianPay introduced a governed feature registry. Each feature definition specified event time, allowed lateness, treatment of reversals, null behavior, and ownership. Historical features were recomputed in an offline store using point-in-time joins. A streaming computation maintained short-window features such as the count of authorizations during the previous ten minutes, while batch processing maintained longer historical aggregates.

The organization added schema, freshness, duplicate-event, and feature-range tests. A sampled comparison process measured differences between online and offline values. The new model was first shadow-deployed, then released to a small traffic segment. Monitoring tracked latency, feature availability, score distributions, confirmed fraud outcomes, and false-decline rates. A rollback procedure preserved the previous model and feature configuration.

Outcome

The redesigned system improved the timeliness and interpretability of the fraud signal. More importantly, the team could identify whether a future incident originated in the event stream, feature computation, model artifact, or decision policy. The organization did not treat retraining as the only remedy; it established a lifecycle in which feature definitions, operational controls, and business costs were evaluated together.

Learning Points

The case illustrates four principles. First, offline performance is not evidence of production readiness. Second, time semantics must be explicit in both training and serving. Third, a feature store is valuable only when definitions and governance are trustworthy. Finally, monitoring should connect technical indicators with business outcomes such as fraud loss and legitimate-customer friction.

Organizational, Ethical, and Governance Considerations

MLOps is socio-technical. It requires cooperation among data engineers, data scientists, software engineers, product owners, security specialists, compliance professionals, and domain experts. Ownership should be explicit: someone must be accountable for each feature, pipeline, model, service-level objective, and approval decision.

Access control should follow least privilege. Sensitive attributes and identifiers require encryption, appropriate retention, masking or tokenization, and auditable access. Feature stores can increase risk because they centralize valuable and potentially sensitive derived information. Reusing a feature across applications may create an unauthorized secondary use, even if the original collection was legitimate.

Organizations should assess whether features act as proxies for protected characteristics, whether outcomes differ across relevant groups, and whether users can receive meaningful explanations when decisions affect them. Removing a protected attribute does not guarantee fairness if correlated variables remain. Fairness assessment must therefore be connected to the decision context, available legal obligations, and stakeholder impact.

Governance should address consent, purpose limitation, retention, deletion, data residency, auditability, human oversight, and incident response. Documentation such as model cards, data sheets, feature specifications, decision logs, and risk assessments supports accountability. Regulatory compliance cannot be achieved by documentation alone, but undocumented systems are difficult to evaluate or control.

Common Failure Modes and Practical Design Choices

A frequent failure is building a feature separately for training and serving. Even small differences in filtering, rounding, time zones, or missing-value treatment can create training-serving skew. Another failure is allowing unbounded ad hoc features into production without owners, tests, or retirement criteria. Feature sprawl increases storage costs and makes dependency analysis difficult.

Teams also confuse pipeline success with data correctness. A job may complete without errors while processing an empty partition or stale source. Silent defaults are dangerous: replacing a missing value with zero may change the meaning of a feature. Explicit quality checks and alerts are preferable.

Overly complex architectures can be as harmful as inadequate ones. Streaming should be adopted when decision latency justifies its operational complexity. A warehouse-based batch process may be the more reliable choice for a daily business decision. Similarly, automatic retraining can amplify a data defect or encode a temporary anomaly into a new model.

Useful practices include:

  • define features in business and technical language;
  • use immutable raw data and reproducible snapshots where feasible;
  • make transformations version-controlled and testable;
  • enforce point-in-time correctness for historical training data;
  • separate candidate, approved, deployed, and retired artifacts;
  • monitor freshness, quality, drift, performance, and business impact;
  • design rollback and incident procedures before release; and
  • retire unused features, models, and pipelines deliberately.

Current Developments and Emerging Directions

Modern data platforms increasingly combine warehouse and lake capabilities, enabling large-scale historical analysis with governed table formats and transactional guarantees. Declarative pipeline systems allow teams to describe desired datasets while the platform manages dependencies and incremental computation. Reusable transformation frameworks are reducing discrepancies between data engineering and model-serving code.

Metadata systems are becoming more active rather than merely descriptive. Automated lineage, data contracts, quality signals, and catalog search can help teams discover trustworthy features. Data contracts formalize expectations between producers and consumers, including schema, freshness, ownership, and change procedures.

Real-time machine learning is expanding, but its adoption raises operational and environmental costs. Efficient feature retrieval, approximate computation, model compression, and resource-aware scheduling are therefore important. Generative AI is also being incorporated into coding and monitoring workflows, but generated transformations require the same testing, review, security assessment, and accountability as manually written code.

The broader direction is toward continuously governed machine-learning platforms: systems in which reproducibility, observability, security, and responsible use are built into the infrastructure rather than added after deployment. The essential professional skill is not selecting a fashionable tool, but matching architectural complexity to decision requirements and organizational capability.

Chapter Summary

Scalable data-mining pipelines transform raw data into reliable, reusable, and operationally useful assets. They require explicit dependencies, orchestration, idempotence, partitioning, quality controls, and reproducible execution. Batch, streaming, and hybrid designs serve different latency and complexity requirements.

Feature stores connect feature definitions with historical values, online serving, metadata, lineage, and governance. Offline stores support point-in-time training and analysis, while online stores support low-latency inference. Preventing training-serving skew depends on shared semantics, versioning, and systematic comparison.

MLOps extends pipeline engineering across deployment, monitoring, governance, and retraining. Effective systems monitor operational behavior, data quality, drift, model performance, and business impact. Testing must cover schemas, transformations, features, labels, models, and services. Ethical and professional practice requires privacy protection, access control, fairness assessment, documentation, human oversight, and clear accountability.

Key Terms

Feature store: Infrastructure for defining, storing, discovering, serving, and governing machine-learning features.

Offline store: Historical feature storage used for training, analysis, and point-in-time retrieval.

Online store: Low-latency storage used to retrieve current features during live inference.

MLOps: Practices and systems for developing, deploying, operating, monitoring, and governing machine-learning applications.

Pipeline: An automated sequence of dependent data, feature, training, or inference tasks.

Orchestration: Coordination and scheduling of pipeline tasks and dependencies.

Idempotence: The property that repeated execution with the same inputs produces the same intended result without harmful duplication.

Data lineage: A record of how data moves and changes from sources through features, models, and decisions.

Point-in-time join: A historical join that uses only information available at the relevant prediction time.

Target leakage: Use of information unavailable at prediction time, causing unrealistically high evaluation results.

Training-serving skew: Difference between feature computation or values used during training and those used in production.

Data drift: Change in the distribution or characteristics of input data over time.

Concept drift: Change in the relationship between predictors and the target variable.

Data contract: An explicit agreement defining expectations for data schema, quality, freshness, ownership, and change management.

Model registry: A controlled repository for model artifacts, metadata, evaluation results, and lifecycle states.

Canary deployment: A release strategy that exposes a new version to a small portion of traffic before wider release.

Shadow deployment: Running a candidate system on production inputs without using its outputs for live decisions.

Feature lineage: The documented relationship between a feature, its sources, transformations, consumers, and versions.

Retraining trigger: A condition that initiates investigation or rebuilding of a model, such as sustained performance decline or material drift.

Observability: The ability to understand system behavior through logs, metrics, traces, quality signals, and outcome monitoring.

Review Questions

Short Answer Questions

1. Why is a notebook experiment not necessarily a production pipeline?

2. Distinguish an offline feature store from an online feature store.

3. What is point-in-time correctness, and why does it matter in model training?

4. Differentiate data drift from concept drift.

5. State two purposes of feature lineage.

Long Answer Questions

1. Explain the architecture of a scalable machine-learning pipeline, including data, processing, serving, control, and governance concerns.

2. Discuss how feature definitions, versioning, and metadata support feature reuse and organizational reliability.

3. Compare batch, streaming, and hybrid feature-computation architectures, including their appropriate applications and risks.

4. Describe a comprehensive testing strategy for data, features, models, and deployment services.

5. Explain how monitoring, retraining policies, and rollback procedures should be integrated into an MLOps lifecycle.

Analytical / Application Questions

1. A model’s offline accuracy is high, but its production predictions are unstable after a source-system migration. Design an investigation using schema, freshness, lineage, feature-consistency, and drift checks.

2. Design an MLOps architecture for a loan-risk model whose labels become available several months after prediction. Identify suitable features, monitoring signals, retraining triggers, and governance controls.

3. A company proposes automatic retraining whenever a statistical drift test generates an alert. Evaluate this proposal and recommend a safer decision framework.

22. Multiple Choice Questions with Answers

Question 1

Which feature-store capability most directly prevents future information from entering a historical training example?

A. Low-latency online lookup

B. Point-in-time feature retrieval

C. Feature name standardization

D. Model containerization

Correct Answer: B. Point-in-time feature retrieval

Question 2

A pipeline task is executed twice after a temporary infrastructure failure. Which property ensures that the second execution does not create harmful duplicate outputs?

A. Idempotence

B. Elasticity

C. Shadow deployment

D. Concept drift

Correct Answer: A. Idempotence

Question 3

A fraud feature uses event time during training but message-arrival time during online serving. What problem is most likely?

A. Underfitting caused by excessive regularization

B. Training-serving skew

C. Model registry failure

D. Horizontal scalability

Correct Answer: B. Training-serving skew

Question 4

Which design is most appropriate when a business decision requires a score every morning and does not require second-level updates?

A. A nightly batch feature and inference pipeline

B. A fully streaming architecture for every feature

C. A shadow deployment without scheduled computation

D. Manual feature calculation by analysts

Correct Answer: A. A nightly batch feature and inference pipeline

Question 5

Which observation is evidence of concept drift rather than merely data drift?

A. The proportion of missing values increases

B. A category becomes more frequent

C. The relationship between a feature and the target changes

D. The feature-store response time increases

Correct Answer: C. The relationship between a feature and the target changes

Question 6

What is the primary purpose of a canary deployment?

A. To remove the need for model validation

B. To expose a new version to limited traffic before full release

C. To calculate historical point-in-time features

D. To guarantee that drift will not occur

Correct Answer: B. To expose a new version to limited traffic before full release

Question 7

A model-training job completes successfully, but the resulting feature table contains no records because an upstream partition was late. Which control would most directly detect this problem?

A. A freshness and row-count quality gate

B. A model serialization test only

C. A feature naming convention

D. A larger online cache

Correct Answer: A. A freshness and row-count quality gate

Question 8

Why is automatic retraining on every drift alert unsafe?

A. Drift metrics cannot be calculated on numerical data

B. A drift alert may reflect a temporary event, a data defect, or an attack

C. Retraining always reduces model performance

D. Feature stores cannot store newly trained models

Correct Answer: B. A drift alert may reflect a temporary event, a data defect, or an attack

Question 9

Which artifact best records the sources, transformations, consumers, and versions associated with a feature?

A. Data lineage metadata

B. A latency dashboard

C. A deployment container

D. A class-balance chart

Correct Answer: A. Data lineage metadata

Question 10

A candidate model receives production inputs, but its predictions are not used in customer decisions. What deployment pattern is being used?

A. Blue-green deployment

B. Canary deployment

C. Shadow deployment

D. Rollback deployment

Correct Answer: C. Shadow deployment

Data Mining and Feature Engineering
Chapter 12 of 15