What is CoWIN
It's a website developed by the Indian goverment for booking the vaccine dose
https://www.cowin.gov.in/
Requirements
- Functional
- User should be able to book vaccine slots
- User Should be able to see his status and days remaining in next dose
- User Should be able download certificate from the site
- User Should be able to see all available slots in his/her city
- Non Functional
- System should be reliable (no data loss should happen)
- System has to be consistent
Schema

Capacity Estimation
- Assumptions
- There are around 1Billion + people eligible for vaccine doses
- Around 10 M people booked slots for vaccine daily
- There is only one type of vaccine
- It means there will be = 120 request/ s
- Total space needed for one row of User table = 6 B (User ID) + 32 B (name) + 10 B (Phone) + 12 B (SSN ) + 2 B (status) + 64 B(certificate link) = 126 B
- Total space needed by UserDose Table = 6 Byte + 6 Byte + 6 Byte + 2 Byte + 2Byte = 22 Byte
- Total space needed by Dose table = 6 Byte + 6 Byte + 8 Byte = 20 Byte
- Total storage needed by 1 record in vaccination centre table = 6 Byte + 32 Byte + 128 Byte + + 8 Byte + 8 Byte = 158 Byte
- Let's say we have 10 K vaccine centre, then storage needed in an year = 158 * 365 * 10 K = 580 MB
- Storage needed for User table =. 126 Byte * 1B = 126 GB
- Storage needed for UserDose = 22 * 1B = 22 GB
- Storage needed for Dose table = 20 * 2 * 1B (2 dose at least) = 40 GB
- We can safely assume total storage need will be around = 200 GB
- We can opt for RDMS as data size is not that huge or we can go with hybrid approach
- We know Vaccination table needs strong consistency so we can save it in RDMS and rest in NoSQL.
- We can have 120 hit on DB per sec , for Vaccination table (RDMS), it's bit concerning
- We can reduced it further by sharding the DB based on city , assuming we have almost 240 city in india , we can reduced it to 1 hit per 2 sec
Network Estimation
- There will be 120 req /s
- Considering all the able data to be fetched each time, we need bandwidth around = 128 + 22+20 + 158 = 350 Byte * 120 = 42 Mb/s
Architecture Diagram
