KO
Back to Projects
Newsletter Service

Newsletter Service

An in-house newsletter delivery service designed to satisfy send-pipeline concurrency, online schema changes on a hot growing table, and forward-compatibility for identifiers already shipped in external in-flight mail

Sep 2024 - Present 1 year, 8 months Ongoing

Tech Stack

PythonDjangoCeleryRedisPostgreSQLNGINXDockerNCP

Overview

An in-house newsletter delivery service built to run marketing and customer-communication channels without depending on an external SaaS. Django + Celery + PostgreSQL + Redis + NGINX run as Docker Compose on Naver Cloud Platform, and the system’s performance and correctness are essentially decided by one high-cardinality table: EmailLog, which gains tens of thousands of rows per send.

Because schema changes have to land while the service is sending, the core challenge was satisfying three things at once: concurrency and correctness in the send pipeline, online schema changes on a hot growing table, and forward-compatibility for identifiers already embedded in external mail in flight. Every design decision rolls up to those three axes.

Tech Stack

My Role

Sole backend engineer on a team of PM 1 / FE 2 / BE 1. I own the Django WAS design, data modeling, send pipeline, tracking and statistics, and migration design — the full server side — and have been carrying both new feature work and operational hardening since September 2024.

Key Contributions

Troubleshooting

Impact

A system that streams hundreds of thousands of emails without two workers ever grabbing the same row, lets indexes be added without pausing sends, and can normalize internal tracking schemas without breaking URLs already living in shipped mail. The most satisfying part is that “send concurrency” and “operational-change concurrency” are addressed with the same toolbox — outbox, online DDL, and an explicit legacy-mapping layer — applied consistently rather than as one-off fixes.

View All Projects
Close