Skip to main content

AWS DVA-C02 Drill: Stateful Lambda - Managing Rolling Averages in VPC-Connected Functions

Jeff Taakey
Author
Jeff Taakey
21+ Year Enterprise Architect | AWS SAA/SAP & Multi-Cloud Expert.

Jeff’s Note
#

Unlike generic exam dumps, ADH analyzes this scenario through the lens of a Real-World Lead Developer.

For DVA-C02 candidates, the confusion often lies in how Lambda’s ephemeral, stateless nature affects stateful computations like rolling averages. In production, this is about knowing exactly how to reliably persist and retrieve state across Lambda invocations when running inside a VPC. Let’s drill down.

The Certification Drill (Simulated Question)
#

Scenario
#

FinTech Innovate Inc., a startup specializing in real-time transaction analytics, has a Lambda function deployed inside a VPC that polls an Amazon SQS queue via a VPC endpoint for incoming transaction amounts. The Lambda function calculates a rolling average of the numeric values contained in the messages. Initial tests indicate the rolling average output is inaccurate and inconsistent.

The Requirement:
#

Ensure that the Lambda function calculates an accurate, consistent rolling average despite multiple concurrent executions and the stateless execution environment.

The Options
#

  • A) Set the function’s reserved concurrency to 1. Calculate the rolling average inside the Lambda function and store the running average in Amazon ElastiCache.
  • B) Modify the function to store all numeric values in Amazon ElastiCache during execution. On cold start, initialize the rolling average calculation using the previous values fetched from the cache.
  • C) Set the function’s provisioned concurrency to 1. Calculate the rolling average inside the Lambda function and store the running average in Amazon ElastiCache.
  • D) Modify the function to store the numeric values in the Lambda function’s layers. On initialization, use these previously stored values to continue calculating the rolling average.

Google adsense
#

leave a comment:

Correct Answer
#

B

Quick Insight: The Developer’s State Management Imperative
#

Lambda containers are stateless by design. When you have multiple concurrent executions, local variables and in-memory states are isolated per container. To maintain accurate rolling averages, you need an external, shared state store. Amazon ElastiCache (Redis/Memcached) serves as a low-latency shared cache that can hold numeric values. By fetching historical values from ElastiCache on cold start, the function continues calculations correctly and avoids concurrency conflicts or inaccurate results.

Content Locked: The Expert Analysis
#

You’ve identified the answer. But do you know the implementation details that separate a Junior from a Senior?


The Expert’s Analysis
#

Correct Answer
#

Option B

The Winning Logic
#

Calculating a rolling average requires consistent state to be maintained and accessed across possibly multiple Lambda executions. Since Lambda runs inside a VPC here and polls SQS via a VPC endpoint, networking isn’t an issue. The real challenge is managing state:

  • Storing values directly inside the Lambda function (memory or layers) doesn’t persist data across invocations or containers — making options D invalid.
  • Reserved concurrency set to 1, or provisioned concurrency set to 1 (options A and C) might limit concurrency but do not solve the core statelessness problem fully, and also carry performance and cost downsides.
  • Option B externalizes state management to Amazon ElastiCache, a fast in-memory datastore accessible from within the VPC. On cold start, the function fetches prior values to continue rolling average calculation reliably.

This pattern aligns well with best practices for stateful workloads inside ephemeral serverless containers, especially connected to VPC resources.

The Trap (Distractor Analysis):
#

  • Why not A? Reserved concurrency at 1 does serialize execution but leads to throttling under load and can increase latency unnecessarily. Furthermore, storing just the rolling average (not the full data) risks inaccuracy if functions restart.
  • Why not C? Provisioned concurrency keeps execution environments “warm” but doesn’t inherently solve the problem of state persistence — plus it increases costs since you pay for provisioned environments even when idle.
  • Why not D? Lambda layers are static artifacts deployed alongside functions, not designed as dynamic storage. They cannot maintain runtime state between invocations.

The Technical Blueprint
#

# Example Python snippet to access and update rolling values in ElastiCache (Redis):
import redis
import os

redis_client = redis.Redis(host=os.environ['REDIS_HOST'], port=6379)

def lambda_handler(event, context):
    # Fetch previous values
    prev_values = redis_client.lrange('rolling_values', 0, -1)
    prev_values = [float(v) for v in prev_values] if prev_values else []
    
    # Append new value from event (assume one message per invocation)
    new_value = float(event['Records'][0]['body'])
    prev_values.append(new_value)
    
    # Trim list to last N values for rolling average (e.g., 10)
    prev_values = prev_values[-10:]
    
    # Store updated list back in cache
    redis_client.delete('rolling_values')
    for val in prev_values:
        redis_client.rpush('rolling_values', val)
    
    rolling_avg = sum(prev_values) / len(prev_values)
    return {'rollingAverage': rolling_avg}

The Comparative Analysis
#

Option API Complexity Performance Impact Use Case
A Low (basic ElastiCache calls) Limited concurrency reduces throughput Serial processing but throttles under load
B Moderate (manage cache state list) High throughput, consistent rolling average Best for scalable stateful Lambda
C Low (provisioned concurrency setup) Increased cost, warm containers Faster cold starts but no state persistence
D Incorrect approach N/A Lambda layers cannot hold dynamic state

Real-World Application (Practitioner Insight)
#

Exam Rule
#

For the exam, always pick external state stores like ElastiCache or DynamoDB when you see Lambda needs to share or persist state across invocations in a VPC environment.

Real World
#

In production, you might also consider DynamoDB with conditional writes for durability and eventual consistency. ElastiCache is suitable for low-latency, ephemeral state but not durable storage.


(CTA) Stop Guessing, Start Mastering
#


Disclaimer

This is a study note based on simulated scenarios for the DVA-C02 exam.

The DevPro Network: Mission and Founder

A 21-Year Tech Leadership Journey

Jeff Taakey has driven complex systems for over two decades, serving in pivotal roles as an Architect, Technical Director, and startup Co-founder/CTO.

He holds both an MBA degree and a Computer Science Master's degree from an English-speaking university in Hong Kong. His expertise is further backed by multiple international certifications including TOGAF, PMP, ITIL, and AWS SAA.

His experience spans diverse sectors and includes leading large, multidisciplinary teams (up to 86 people). He has also served as a Development Team Lead while cooperating with global teams spanning North America, Europe, and Asia-Pacific. He has spearheaded the design of an industry cloud platform. This work was often conducted within global Fortune 500 environments like IBM, Citi and Panasonic.

Following a recent Master’s degree from an English-speaking university in Hong Kong, he launched this platform to share advanced, practical technical knowledge with the global developer community.


About This Site: AWS.CertDevPro.com


AWS.CertDevPro.com focuses exclusively on mastering the Amazon Web Services ecosystem. We transform raw practice questions into strategic Decision Matrices. Led by Jeff Taakey (MBA & 21-year veteran of IBM/Citi), we provide the exclusive SAA and SAP Master Packs designed to move your cloud expertise from certification-ready to project-ready.