Skip to content
OnlyProjects
MCA · Cloud ComputingFor educational purposes only
Code included

Cost-Aware Auto-Scaling of an Assignment Portal on Kubernetes: An Experimental Study

Fixed pods vs Horizontal Pod Autoscaler: measured p95 latency and rupee cost per 1,000 requests on a real study-centre portal

Mapped to your syllabusIGNOU MCA_NEW — MCSP-232 guidelines (2025) · MCSP-232 Project · Semester 4

Overview

1 min read

Assignment submission at a distance-education study centre is feast-or-famine: quiet weeks, then a deadline night when thousands of learners upload at once. This project builds Sarthak Portal — an assignment-submission and results portal (Node.js, Express, MySQL, React) for a fictional Pune study centre with 3,200 active learners — and then uses it as a carefully instrumented testbed for the question every small deployment eventually asks: is it cheaper to run fixed replicas that are mostly idle, or to auto-scale?

Three deployment strategies are compared on a Minikube cluster under identical load: fixed 2 replicas, fixed 6 replicas, and the Horizontal Pod Autoscaler (CPU target 60%, min 2, max 8, backed by metrics-server). A Locust (Python) harness replays two profiles — a steady 50-user load and a deadline-night spike ramping to 300 virtual users — five runs per configuration, reporting medians for throughput, p95/p99 latency and error rate. Every strategy's pod-seconds are accounted from Prometheus data and converted into a rupee cost per 1,000 successful requests through a transparent, re-runnable worksheet, so the final comparison is an argument the examiner can recompute, not a claim.

The bundle follows the IGNOU MCSP-232 pattern: an approved proposal with DFD, ER diagram, PERT chart, schema and security section, then a development diary and full experimental report. All components are free and open source; the whole study runs on one 8 GB laptop. It is an individually defensible project that treats cloud cost as a measurable engineering outcome.

Relevant for
All India
Level
Advanced · 16 weeks · solo
Common at
IGNOU, JNTUH, Osmania University
Updated
Nov 2026

Syllabus alignment

IGNOU · MCA_NEW — MCSP-232 guidelines (2025)

MCSP-232 · Project · Semester 4 · 12 credits · 200 = report 150 + viva 50 (≥40% each)

Subjects this project applies
  • Node.js & Express (server-side JavaScript)
  • MySQL (database)
  • JavaScript / React (client side)
  • Python (load generation and analysis)
How it is evaluated

Team: 1 (2 only with prior written approval for ≥ 1 person-year effort)

15–20-page proposal (DFD, ER, PERT/Gantt, schema, security); 100–125-page report excluding code; must include software development. Prohibited: dBASE/FoxPro/MS-Access, VB + Access, C/C++ for information systems

Also fits: JNTUH MCA R22, Osmania University 2-year MCA 2022-23.

What's in the box

11 parts · 5 free · 2 previewed · 4 unlock for ₹2,000

Problem & synopsis

6 min read

Problem statement

A distance-education study centre with 3,200 active learners collects assignment submissions online. Traffic is negligible most of the semester and explodes on assignment-deadline nights, when hundreds of learners submit within the same hours. The centre cannot afford — and does not need — peak-sized infrastructure all year, but its current single-instance deployment fails exactly when learners most need it: uploads time out, receipts are lost, and staff spend the night restarting the application.

The institution's decision-makers face a trade-off they can currently only guess at. Fixed capacity is either too small (failed deadline nights) or oversized (money wasted for months). Auto-scaling promises to pay only for what is used, but nobody at the centre knows how it behaves under their specific traffic shape, what it actually costs, or whether the database — not the application tier — is the real ceiling.

There is a need for a measured answer: build the portal properly, deploy it under Kubernetes with the Horizontal Pod Autoscaler, and compare fixed and auto-scaled deployments under the centre's own load profile — recording latency, errors and pod-seconds — so that the choice of deployment strategy becomes a costed engineering decision instead of a hope.

Synopsis

Abstract

Distance-education study centres collect assignments online, and their traffic arrives in cliffs: the evening a deadline falls, submission traffic multiplies roughly tenfold. Small institutions respond in one of two expensive ways — a fixed server that crashes on deadline night, or an oversized one that idles all year. This project builds Sarthak Portal for a Pune study centre and measures the third option: Kubernetes auto-scaling, judged on performance and on cost per request.

Introduction

Auto-scaling is easy to switch on and hard to reason about. The Horizontal Pod Autoscaler promises elasticity, but every replica has a price and a warm-up delay, and at study-centre scale the database, not the API, saturates first. The project therefore treats scaling as a protocol-driven experiment: a real application, controlled load, repeated trials and an honest cost model — guidance a committee could act on.

Existing system

  • The scenario models common practice at small study centres: a submission form on shared hosting, or a single VM running one instance all year.
  • On deadline nights the shared host throttles or the VM runs out of connections; learners retry for hours and the centre's phone does not stop ringing.
  • A bigger VM "to be safe" costs 3–4× more every month and is idle 95% of the time.
  • Limitations: no elasticity, no capacity metrics, manual restarts, no audit trail of upload attempts, and no way to compare spending against user experience.

Proposed system

  • The application: role-based portal (LEARNER, FACULTY, ADMIN) with enrolment, briefs and deadlines, validated and receipted PDF uploads on a shared volume, faculty grading and result publishing — Node.js/Express and MySQL behind a React front end.
  • The platform: Docker images on Minikube with Ingress, persistent MySQL, readiness/liveness probes, metrics-server and Prometheus.
  • The experiment: two Locust profiles (steady 50 virtual users; deadline spike ramping 50 → 300) against three strategies — fixed 2, fixed 6, HPA (CPU 60%, min 2, max 8) — five runs each on a freshly reset cluster, with medians reported.
  • The accounting: pod-seconds per strategy read from Prometheus, converted to rupees via a worksheet that takes the node price as an explicit parameter; the headline metric is cost per 1,000 successful requests.
  • The finding (author's runs): HPA matched fixed-6 p95 within 8% during the spike while consuming ~37% fewer pod-seconds; fixed-2 met the steady profile but breached 800 ms p95 and errored under the spike; the database pool saturated before API CPU — reported with charts and raw CSVs.

Feasibility study

  • Technical: every tool is free; the entire study runs on one laptop (Minikube, 4 CPUs, 8 GB). The protocol is scripted end to end, so results are reproducible by any examiner.
  • Economic: ₹0 to run locally; the worksheet maps pod-seconds to any provider's list node price, with a worked example and a sensitivity row.
  • Operational: protocol scripts, worksheets and a findings memo are directly usable by the centre's management committee.

Objectives

  1. 01Build Sarthak Portal — an assignment-submission and results system (Node.js/Express, MySQL, React) with role-based access for learners, faculty and the administrator.
  2. 02Containerise the application and deploy it on Minikube with Ingress, persistent MySQL, readiness/liveness probes, metrics-server and Prometheus.
  3. 03Define a repeatable experiment protocol: three scaling strategies, two load profiles, five runs each on a reset cluster, with medians reported.
  4. 04Measure throughput, p95/p99 latency and error rate under steady (50 virtual users) and deadline-spike (ramp to 300) Locust profiles.
  5. 05Account pod-seconds per strategy from Prometheus data and convert them to rupee cost per 1,000 successful requests using a transparent, parameterised worksheet.
  6. 06Document the project to MCSP-232 requirements: level-0/1/2 DFDs, ER diagram, PERT chart, database schema and an OWASP-aligned security section.
  7. 07Derive practical deployment guidance — when fixed sizing beats auto-scaling at study-centre scale — backed by the recorded numbers.

Scope

In scope

  • One study centre, one academic year of synthetic data: 3,200 learners, 40 courses, assignment briefs with deadlines, submissions, grades and results.
  • Portal features: enrolment, deadline-aware submissions with receipts, grading, result publication, admin dashboards of pending work.
  • The scaling experiment: fixed 2, fixed 6 and HPA (CPU 60%, min 2, max 8) on a single-node Minikube cluster, driven by scripted Locust profiles and measured via Prometheus and Locust CSVs.
  • Cost modelling: pod-seconds accounting and a rupee-per-1,000-requests worksheet with a configurable node price.
  • MCSP-232 documentation artefacts: proposal, DFD/ER/PERT, schema, security section, development diary, final report skeleton.

Out of scope (v1)

  • Scaling the database tier: MySQL runs as a single persistent deployment; the experiment explicitly scales only the stateless API tier, and the report analyses why (connection-pool saturation) with evidence.
  • Multi-node clusters, cluster autoscaler or managed-cloud deployment — the manifests are written portably, but all runs are on Minikube.
  • Real payment or SMS integrations, anti-plagiarism checking of uploaded assignments, and a mobile app.

Methodology

The project combines an iterative build of the application with a controlled experiment for the research question. As an individual MCSP-232 project it is planned with a PERT chart (required in the proposal); the 16-week plan below is the PERT critical path.

StageWeeksActivitiesDeliverable
Proposal1–3Problem analysis, level-0/1/2 DFDs, ER diagram, schema, security section, PERT/Gantt; submit through the study centre for approvalApproved MCSP-232 proposal
Build v14–7Auth and roles, enrolment, briefs and deadlines, upload pipeline, grading, results; unit and API testsWorking portal
Platform8–9Dockerfiles, Minikube manifests, metrics-server, Prometheus, seed data jobInstrumented cluster
Protocol10Record Locust profiles, dry runs, decide run count and warm-up handling, pilot HPA behaviourExperiment protocol v1
Experiments11–133 strategies × 2 profiles × 5 runs on a reset cluster; collect latency, throughput, errors, pod-secondsRaw CSVs + run log
Analysis14Pod-seconds → rupee worksheet, charts, database-ceiling analysisResults chapter
Report & viva15–16Write the 100–125-page report, plagiarism-check own text, submit, rehearse vivaFinal submission

Experiment controls: identical seed data before every run; cluster reset and 2-minute warm-up discarded before measurement; five runs per cell with medians (single runs hide HPA scale-up latency); Locust wait times modelled from the centre's real usage pattern. Testing: Mocha/Chai unit tests on business rules (deadline enforcement, receipt generation), Supertest API suites, and the load runs double as stress tests. All raw data and scripts ship with the bundle so any figure can be regenerated.

Architecture & tech stack

3 diagrams · 10 technologies · 2 min read

  • Node.js 20
  • Express
  • React
  • MySQL
  • Docker
  • Kubernetes (Minikube)
  • metrics-server
  • Horizontal Pod Autoscaler
  • Prometheus
  • Python (Locust)

Sarthak Portal is a three-tier web application whose API tier is deliberately stateless, so that replicas can be added and removed by a controller — that property is what the entire experiment depends on.

  1. Client: a React single-page app (login, submissions, grading screens) served as static files behind the same Ingress.
  2. API: an Express application in a Docker image; JWT sessions (bcrypt-hashed passwords), input validation on every route, and uploads written to a shared persistent volume with randomised names. On a single-node Minikube all replicas mount the same ReadWriteOnce PVC — correct here, and the report discusses why a multi-node deployment would instead need object storage.
  3. Data: MySQL as a persistent single-replica deployment with a PVC; the API pool is capped (10 connections per pod), which becomes the experiment's key finding — the database saturates before API CPU.
  4. Scaling: metrics-server feeds CPU usage to the Horizontal Pod Autoscaler; fixed-size variants simply replace the HPA with a fixed replica count.
  5. Measurement: Prometheus scrapes the API and kube-state-metrics; pod-seconds are integrated from replica-count-over-time; Locust emits per-request CSVs.
flowchart LR
  L["Locust load generator"] -->|HTTP| ING["Ingress"]
  ING --> SVC["Service - portal-api"]
  SVC --> DEP["Deployment - portal-api"]
  DEP --> PODS["Pods 2 to 8"]
  HPA["Horizontal Pod Autoscaler"] -->|scales| DEP
  MS["metrics-server"] -->|CPU metrics| HPA
  PODS --> DB[("MySQL - persistent")]
  PODS --> VOL[("PVC - uploads")]
  PR["Prometheus"] -->|scrapes| PODS
flowchart TD
  MS["metrics-server reports pod CPU"] --> CALC["HPA computes desired replicas"]
  CALC --> CMP{"desired vs current"}
  CMP -->|more needed| UP["scale up, capped at maxReplicas"]
  CMP -->|less needed| DOWN["scale down after stabilisation window"]
  CMP -->|equal| HOLD["hold current size"]
erDiagram
  USER ||--o{ ENROLMENT : holds
  COURSE ||--o{ ENROLMENT : "is enrolled via"
  COURSE ||--o{ ASSIGNMENT : "sets"
  USER ||--o{ SUBMISSION : makes
  ASSIGNMENT ||--o{ SUBMISSION : receives
  SUBMISSION ||--o| GRADE : "is awarded"
  USER {
    int user_id PK
    string name
    string email UK
    string password_hash
    string role
  }
  ASSIGNMENT {
    int assignment_id PK
    int course_id FK
    string title
    datetime deadline
    int max_size_kb
  }
  SUBMISSION {
    int submission_id PK
    int assignment_id FK
    int user_id FK
    string stored_name
    datetime uploaded_at
    string receipt_no UK
  }
  GRADE {
    int grade_id PK
    int submission_id FK
    int grader_id FK
    decimal marks
    string feedback
  }

The receipt number (SRC/2026/000123) is generated in a transaction against a counter table so that every upload has an auditable acknowledgement — the artefact the centre most needed when receipts were previously lost.

Modules

7 modules

  1. Module 01

    Authentication & Roles

    Email/password login with bcrypt hashes and signed JWTs; three roles (LEARNER, FACULTY, ADMIN) checked by Express middleware on every route. Login is rate-limited, and all failures are logged, satisfying the security section of the MCSP-232 proposal.

  2. Module 02

    Courses & Enrolment

    The administrator defines programmes and courses; learners enrol within the declared window; faculty are mapped to their courses. Enrolment state drives every later permission, so a learner can only see briefs and results for enrolled courses.

  3. Module 03

    Assignments & Deadlines

    Faculty create briefs (title, instructions, deadline, maximum file size). Deadline enforcement is a business rule implemented server-side: late uploads are rejected with a clear reason and logged, rather than silently accepted or hidden in the UI.

  4. Module 04

    Submission Pipeline

    Uploads are validated (extension, content-type sniff, size cap), stored on the shared volume under randomised names, and acknowledged with a transaction-generated receipt number. Re-uploads replace the file but keep a history row, so a lost-receipt dispute has an audit trail.

  5. Module 05

    Grading & Results

    Faculty open a submission queue for their courses, award marks with feedback, and publish results on the admin's trigger; learners then see grades and downloadable feedback. All grading actions are attributable (grader id) and timestamped.

  6. Module 06

    Kubernetes Deployment & HPA

    Dockerfiles for API and client; manifests for namespace, ConfigMap, Secret, MySQL deployment with PVC, API deployment, Service, Ingress and the HPA; readiness and liveness probes wired to health endpoints. Fixed-size variants ship as alternate manifests so strategies switch with one kubectl apply.

  7. Module 07

    Measurement & Costing Harness

    Locust profiles (steady and deadline spike), a reset-and-warm-up driver, Prometheus scrape config, a pod-seconds collector that integrates replica count over time, and a Python worksheet that converts pod-seconds into rupee cost per 1,000 successful requests with the node price as a parameter.

Slides

12 slides · titles free · bullets, notes and the .pptx unlock

  1. Slide 1

    Cost-Aware Auto-Scaling of an Assignment Portal on Kubernetes

  2. Slide 2

    The Institution Context

  3. Slide 3

    Problem Statement

  4. Slide 4

    Proposed Work

  5. Slide 5

    Objectives & Scope

  6. Slide 6

    System Architecture

  7. Slide 7

    Data Design (MCSP-232 artefacts)

  8. Slide 8

    Experiment Protocol

  9. Slide 9

    Results — Performance

  10. Slide 10

    Results — Cost

  11. Slide 11

    Key Finding: the Database Ceiling

  12. Slide 12

    Security, Testing & Conclusion

Bullets, speaker notes and the .pptx · ₹2,000

The titles above are the real outline. The rest is what you present from.

Unlock for ₹2,000

Viva questions & answers

3 of 15 answered free · 12 unlock

Read each answer, close it, and say it in your own words. Your viva will ask. Now you'll know.

  1. 01Concept

    Explain how the Horizontal Pod Autoscaler decides to add or remove replicas.

    Every metrics period the HPA reads the average CPU utilisation of the pods from metrics-server, computes the ratio of current usage to the requested target — 60% in this project — and scales the desired replica count proportionally, capped between minReplicas and maxReplicas. Scale-down is deliberately slowed by a stabilisation window so a momentary traffic dip does not cause thrashing, which I observed as oscillation before tuning the window.

  2. 02Concept

    Why is this a cloud computing project if the cluster is a laptop-based Minikube?

    The project studies the cloud's core economic mechanism — elasticity traded against cost — with the same components a cloud uses: container images, Kubernetes controllers, autoscaling and metrics pipelines. Minikube is the free, reproducible stand-in for a managed cluster, and the cost worksheet deliberately takes the node price as a parameter, so the same pod-second numbers price the study on any provider's list rate.

  3. 03Concept

    What is a pod-second and why is it a fair basis for comparing strategies?

    A pod-second is one running replica for one second — the raw unit of compute consumption. Fixed strategies spend replicas whether or not requests arrive, while HPA spends them roughly in proportion to load, so integrating replica count over time from Prometheus measures what each strategy actually consumed for the identical workload. Multiplying pod-seconds by the per-replica share of a node's hourly price converts that consumption into rupees.

+12 more questions, with answers

Try the free ones out loud first. Your examiner will not accept “it's in the PPT”.

Source code & how to run

7 steps · complete source code · unlocks with the project

Unlocks with the project · ₹2,000

7 steps · source code zip

Prerequisites, install, seed data and tests, written for demo day. Plus the complete source.

Unlock for ₹2,000

READMEFIRST

222 words · unlocks with the project

What to change before it goes anywhere near a submission. Skipping it is how the demo fails live.

Unlocks with the project · ₹2,000

222 words · ~1 min read

The checklist of things to rename, re-seed and re-think so the project reads as yours.

Unlock for ₹2,000

Instructions

379 words · unlocks with the project

How to study it, adapt it and walk your examiner through it, step by step.

Unlocks with the project · ₹2,000

379 words · ~2 min read

Report structure, formatting rules and the submission checklist your department will grade.

Unlock for ₹2,000

References

10 sources

  1. Kubernetes Documentation — Horizontal Pod Autoscaling
  2. metrics-server — Scalable container resource metrics for Kubernetes
  3. Minikube Documentation
  4. Express — Node.js Web Application Framework
  5. Node.js API Documentation
  6. MySQL Documentation
  7. Locust Documentation — Load Testing Framework
  8. OWASP Top 10 — Web Application Security Risks
  9. IGNOU — MCSP-232 Project Guidelines (MCA_NEW)
  10. Betsy Beyer et al., Site Reliability Engineering: How Google Runs Production Systems, O'Reilly (free online edition)

Cite this bundle

OnlyProjects. (2026). Cost-Aware Auto-Scaling of an Assignment Portal on Kubernetes: An Experimental Study: MCA Cloud Computing project bundle [Educational resource]. https://onlyprojects.online/projects/mca-cloud-autoscaling-cost-experiment

Future scope

1 min read

  • KEDA queue-based scaling on upload-pending depth, compared against CPU-based HPA under the same protocol.
  • Database-tier experiments: connection pooling with PgBouncer-style proxies for MySQL and a read-replica path for result queries.
  • Multi-node clusters (k3s on two Raspberry Pi boards or a small managed cluster) with object storage for uploads.
  • Managed-cloud cost validation: rerun the worksheet against live provider pricing and reconcile predicted vs billed cost.
  • Deadline-aware pre-scaling: a scheduled scale-up before announced deadline windows, measured against reactive HPA.
  • A decision card for institution committees: traffic shape → recommended strategy → expected monthly cost.

Keep browsing

Same degree, same syllabus slot, different idea. Pick the one your guide will actually approve.