← Selected work

2022 / Solution Architect / Backend Developer / Database Admin

2022 Presidential Campaign App

Technical design and implementation of the infrastucture and backend of the official 2022 Philippine presidential campaign of Leni Robredo.

The Leni 2022 app is the official campaign app where you can get news, volunteer and donate for the presidential campaign efforts. A contracted work referred to by a former colleague, developed the entire infrastructure without knowing which side am I developing for.

Serverless Infrastructure

AWS Lambda

Scalability

Serverless Database

AWS DynamoDB

Low latency + High Throughput

Search Engine

AWS OpenSearch

High performance search

Output

Production

Served high volume traffic

Problem Statement

An AWS account was handed over to me and I needed to architect a solution that can handle potentially millions of users. The mobile app should be able to register and profile each user, allow them to post news, like posts, share posts, invite other users and do daily tasks. Users were also given the posibility to donate directly inside the application.

Key decisions

Serverless Infrastructure

The application needs to serve potentially millions of users and every moment of the campaign is critical. Availability, scalability and performance are my top priorities when deciding on how to implement a solution. Serverless infrastructure came to mind.

Highly Maintainable Code

NestJS is the Angular of serverless lambda backends. It allowed me to properly create modules of individual features of the application which made the source code more maintainable and manageable. It ran inside AWS Lambda setup specifically to avoid cold starts and maintain high latency response.

Performance at Scale

DynamoDB allowed highly performant responses at the cost of a paradigm shift on database model design. The models were designed for DynamoDB's single table design for maximum performance and cost efficiency. I decided to partner it with AWS OpenSearch by indexing some parts of the data that need more specialized queries.

AWSDynamoDBElasticSearchNestJSNode.js

Discuss this work →