← Back to Resume
Download

Career Description — Hyeonjun Kil

GameDuo

DEV Team Server Developer

2025.01 — Present

Mobile game development and publishing company. Shared backend platform design for 12 live services, data pipeline engineering, and common package system operations

Highlights

Projects

Glider Sheet Audit Log System

2025.01 ~ 2025.04

Resolved delayed balance issue response caused by inability to track data change history during game operations

  • Inability to track data change history across environments and projects — Designed Git-like version control system with UUID-based cross-environment/project entity tracking, Ensured data consistency across 6 games
  • Manual entity change recording prone to omission — Applied Event Sourcing-based change tracking with Auditable decorator + TypeORM Subscriber pattern, Automated entity change recording pipeline
  • Multi-environment version conflicts during data merge — Developed 3-Way Merge Engine with parent/child entity conflict detection and unique constraint handling, Enabled reliable version merging across 6 games
  • Expensive full-snapshot comparison for every version diff — Designed Version Diff Engine with dual strategy: incremental comparison and snapshot comparison based on Base Audit availability, Established cost-efficient version diffing
  • Entity tracking failures due to PK dependency during migration and merge — Introduced shared identifier-based entity tracking decoupled from PK dependency, Ensured accurate entity tracking during migration, comparison, and merge

Tech Rationale

Adopted TypeORM EntitySubscriberInterface after dedicated analysis of subscriber behavior and constraints. Designed AOP-based approach combining Auditable decorator + Subscriber to automatically collect entity changes into a standardized audit pipeline.

TypeScriptNestJSTypeORMMySQL

Marketing Integrated Platform

2025.02 ~ Present

Unified marketing platform managing Google Ads/Meta/TikTok campaigns, creatives, and metrics in a single system, built on dedicated marketing DB separation

  • Fragmented ad platform management across Google Ads/Meta/TikTok — Delivered unified campaign automation API for creation, deployment, modification, and retention metrics in a single platform, Consolidated multi-platform campaign management into one system
  • NAS-S3 sync reliability and restore failures — Separated SQS server-worker flow, automated outbox events, tracked asset_nas_sync state, Secured restore reliability with state-tracked sync pipeline
  • Meta asset sync performance bottleneck — Converted ORM single-row saves to bulk processing, Image sync reduced 72% (25.7s→7.1s), DB transactions reduced 95% (10~16s→0.3~0.5s)
  • High creative processing Lambda costs on x86 architecture — Migrated Lambda to ARM64 Graviton2 architecture, Reduced creative processing Lambda costs by 20%
  • High BigQuery query costs for marketing data reads — Adopted BigQuery Storage Read API with gRPC streaming-based high-performance data reading, Reduced BigQuery costs by 82% ($6.25→$1.1 per TB)
  • Marketing query latency (18s) from 100+ column denormalized table — Normalized table into main/time-series/prediction, tuned indexes + cursor pagination, Performance improved 97% (18s→0.5s)

Tech Rationale

Reduced BigQuery costs 82% via Storage Read API migration. Designed hybrid GCP Pub/Sub → AWS Lambda/SQS pipeline for event-driven processing with Outbox pattern for non-blocking async event publishing.

AWS LambdaApache ArrowBigQueryGCP Pub/SubGoogle Ads APIMeta APIMySQLNestJSS3SQSBigQuery (Storage Read API)TikTok APITypeORMTypeScriptgRPC

AWS Lambda Migration & Event-Driven Architecture

2025.06 ~ 2025.08

Resolved batch job limitations from marketing metrics 60-day → 360-day expansion and serverless transition for batch processing

  • Full serverless migration risked operational stability — Designed hybrid architecture keeping API server on EC2 while separating batch/job processing to Lambda, Attained workload-optimized resource usage without disrupting live services
  • Batch processing limited to 60-day collection range with 2-hour runtime — Established Event-Driven flow with SQS+Lambda+EventBridge, Reduced batch time 2h→5min, expanded collection 6x (60→360 days)
  • Data consistency risk during event publishing — Adopted Transactional Outbox Pattern for scheduled and delayed event publishing, Ensured data consistency across distributed event processing
  • Lambda throttling, high log costs, and build OOM issues — Applied Batch Size bulk processing, CloudWatch log optimization, and build OOM remediation, Stabilized Lambda operations and reduced operational costs
  • DB connection exhaustion during massive Lambda execution — Introduced RDS Proxy connection pooling, Resolved connection exhaustion and stabilized database access

Tech Rationale

Chose Lambda to decouple batch/event workloads bound to the monolith server, enabling independent deployment. Adopted SQS for async processing to resolve scaling limitations under traffic fluctuation.

TypeScriptNestJSAWS LambdaSQSSNSEventBridgeRDS ProxyAWS CDK

Cloud Data Sync System

2025.08 ~ Present

Built S3-based sync and automated DDL management system to resolve dynamic game data inconsistency across environments

  • Dynamic game data inconsistency across environments — Built S3-based cross-environment data synchronization across development/staging/production, Unified game data state across all environments
  • Manual DDL schema management causing sync failures — Created automated DDL management engine with dynamic PK column type resolution, column type mismatch detection with MODIFY, and automatic index creation/RENAME, Automated schema sync across environments
  • Large-scale Cloud Data ingestion and S3 upload bottlenecks — Analyzed and optimized ingestion and upload pipeline, Resolved large-scale processing delays
  • Sync job instability causing operational issues — Implemented job separation, transitioned scheduling approach, tuned timeouts, and introduced non-blocking processing, Secured operational reliability for sync pipeline
  • Four CloudData bugs: Redis cache invalidation, DDL SKIP metadata, copy key deletion, excludeCloudData propagation — Diagnosed and fixed all four issues systematically, Stabilized CloudData operations
  • Unintended full Cloud Data deletion risk from missing option forwarding — Added excludeCloudData option forwarding to four POST migration paths, Blocked unintended data deletion risk

Tech Rationale

Applied S3 Lifecycle policies (30d Glacier IR, 90d expiry) for cost optimization. Switched from event-triggered to scheduled execution to reduce sync miss risk.

TypeScriptNestJSTypeORMMySQLS3

Internal Common Library System

2025.07 ~ Present

Development and operation of NestJS utility (10 modules) + Game Server Kit (2 packages) for multi-project code consistency

  • Common code duplication across services increasing maintenance cost — Designed 10-module library system: core, repository, cache, lock, slack, crypto, smb, hash, type, iac, Unified shared code across 7 projects with standardized dependency management
  • Repository module lacking bulk operations and audit logging capabilities — Enhanced Repository module with Bulk/Audit Log/TypeORM narrowing using overloading + TypeScript generics; refactored 2000+ lines by SRP, Improved module extensibility and maintainability
  • Concurrency conflicts in multi-instance environments — Engineered distributed lock module with ElastiCache (Redis)-based distributed lock decorator, Enabled safe concurrency control across multi-instance deployments
  • Manual library upgrades taking 3 hours across 7 projects — Added workflow_dispatch+matrix and changed-package CI tests on GitHub Packages, Reduced 7-project upgrade runtime 3h→15min
  • Game server shared code tightly coupled in monolithic package — Extracted game-server Kit: moved Sheet+5 submodules to @gameduo/glider-sheet, resolved conflicts via 5-branch divergence analysis, Realized independent package versioning and deployment
  • Slow CI pipeline (15m47s) due to test infrastructure inefficiency — Switched ts-jest isolatedModules and explicit Entity types, Cut CI time 61% (15m47s→6m06s); passed 81 suites/978 tests

Tech Rationale

Implemented ElastiCache (Redis) distributed lock as AOP decorator to separate lock logic from business code. Evaluated 5 options for Jest 30 VM isolation and adopted poolSize=2.

ElastiCache (Redis)GitHub NPMNestJSSlack APITypeORMTypeScript

Probability Calculation & Audit Log Analytics Pipeline (Glider Probability)

2026.02 ~ Present

Built probability calculation package and CDK-based audit log analytics infrastructure to address regulatory risk from lack of game probability verification

  • No reusable probability calculation module across game projects — Packaged NestJS DynamicModule with 5 functions + Kinesis logging as @gameduo/glider-probability, Integrated into 12 games with standardized probability calculation
  • No audit log analytics infrastructure for probability verification — Codified CDK analytics pipeline: Kinesis→Firehose (Dynamic Partitioning+Parquet)→S3→Glue→Athena, Unlocked end-to-end probability audit log querying
  • Mock-based tests lacking regression confidence for infrastructure code — Replaced mocks with LocalStack + Testcontainers integration tests, Secured 94%+ coverage (12 suites/115 tests)

Tech Rationale

Codified Kinesis → Firehose (Dynamic Partitioning + Parquet) → S3 → Glue → Athena pipeline with CDK. Chose Parquet columnar format for Athena SQL cost optimization. Replaced mock-based tests with LocalStack Testcontainers for integration testing.

Contribution: Restructured changmin's initial implementation into a package. Independently handled P0 bug fixes, test stabilization (94%+ coverage), CDK infrastructure, and deployment across 12 projects.

TypeScriptNestJSAWS CDKKinesisFirehoseS3AthenaGlueParquetLocalStackTestcontainers

Activities

Boosting Developer Productivity with Amazon Q Developer Conference Talk 2025.10

Games on AWS 2025 Customer Session

Shared a case study of a single engineer scaling data pipeline capacity 270x in 10 days, measured by hourly concurrent job throughput

JNPMedi

Dev2 Team Docs Squad Backend Engineer

2023.06 — 2024.08

Clinical trial data management solution startup with KRW 16B cumulative investment (MSA-based)

Highlights

Projects

Maven Docs Electronic Consent System

2023.07 ~ 2023.09

Resolved inefficiency in collecting participant consent and e-signature regulatory compliance using Cyan (in-house Node.js framework)

  • Inefficient individual consent dispatch for clinical trial participants — Created batch dispatch system for participant group management and batch consent dispatch, Streamlined consent collection per clinical trial
  • Opaque event flow from batch + S3 event-based processing — Migrated to EDA + Outbox pattern, Enabled event flow visualization and local test environment setup

Tech Rationale

Adopted EDA + Outbox pattern to eliminate synchronous service coupling. Designed plugin architecture for extensible input methods (text, checkbox, signature).

Contribution: Designed EDA transition, implemented plugin architecture, built batch participant registration with Signer table migration. 2-person BE team.

TypeScriptExpress.jsCyanAurora Serverless v2Knex.js

Maven Docs System Reliability Improvement

2023.08 ~ 2023.12

Resolved critical notification failures due to database Deadlocks in clinical trial e-signature notifications

  • Production Deadlock incidents in clinical trial e-signature notifications — Analyzed shared-to-exclusive lock timing during foreign key constraint enforcement, Identified root cause and prevented Deadlock recurrence
  • Synchronous notification processing causing cascading failures — Designed and implemented AWS SNS → SQS → Lambda Event-Driven pipeline, Decoupled notification delivery from main transaction flow

Tech Rationale

Identified FK child INSERT S-Lock → X-Lock escalation as deadlock root cause. Applied SELECT FOR UPDATE to pre-acquire X-Lock before INSERT, eliminating the deadlock ordering entirely.

Contribution: Independently performed deadlock reproduction, analysis, and resolution. Reproduced deadlock scenario with SQL in DBeaver and verified via INNODB lock tables.

TypeScriptExpress.jsCyanSlate.jsSNSSQSLambdaReact

Maven Mailing System Enhancement

2023.12 ~ 2024.02

Resolved lack of delivery status tracking and data consistency issues in email system

  • No email delivery status tracking — failures detected hours later — Configured SES Configuration Set → SNS → event processing pipeline with Datadog logging + Slack real-time alerts, Bounce/complaint detection cut to seconds with instant Slack alerting

Tech Rationale

AWS SES cannot synchronously confirm delivery status due to its async nature. Added SNS event destination to SES Configuration Set for async delivery/bounce/complaint event subscription.

Contribution: Designed and implemented SES Configuration Set → SNS → event processing pipeline. Led tech blog publication and internal seminar presentation.

TypeScriptExpress.jsAWS SESNodemailer

Maven Auth System Enhancement

2024.01 ~ 2024.02

Resolved user inconvenience and system scalability limitations from 1:1 user-organization structure

  • 1:1 user-organization structure limiting multi-organization management — Expanded user-organization relationship from 1:1 to 1:N structure, Enabled multi-organization management per user
  • API migration risking service downtime — Ensured backward compatibility throughout migration process, Achieved zero-downtime API migration with service continuity

Tech Rationale

Redesigned account-organization from 1:1 to 1:N to support clinical trial researchers participating in multiple organizations simultaneously. Added post-login organization selection flow for context switching.

Contribution: Full-stack change: schema migration, auth flow modification, and batch update of downstream service (Docs/Billing/Mailing) account-organization reference logic.

TypeScriptExpress.jsCyanAurora Serverless v2

Maven TMF New Project Development (Frontend)

2023.06 ~ 2024.08

Frontend development for clinical Trial Master File (TMF) management system

  • No document management interface for clinical Trial Master File system — Implemented document upload, classification, version management, and Audit Trail functionality for Admin/Dashboard, Delivered complete TMF management frontend

Tech Rationale

Defined MVP scope focusing on core features (document upload, classification, version control, audit trail) under 3-month delivery constraint.

Contribution: FE developer in 1 BE + 2 FE team. Implemented Admin/Dashboard document upload, classification, and audit trail features.

ReactTypeScriptJotai

Maven VDR MVP Development

2024.06 ~ 2024.07 (3 weeks)

Emergency deployment for delayed VDR project under MVP launch pressure

  • Synchronous PDF conversion blocking document upload flow — Designed Event-Driven PDF conversion triggered by S3 upload → Lambda lightweight conversion → SNS/SQS notification, Delivered non-blocking document processing pipeline
  • No role-based document access control for medical workflows — Engineered permission-based workflow managing document access and approval by medical role, Secured compliant document access control
  • VDR project schedule delay under MVP launch pressure — Executed 3-week emergency sprint prioritizing core features, Delivered MVP on schedule meeting launch deadline

Tech Rationale

Designed EDA-based async conversion pipeline (S3 trigger → Lambda conversion → SNS/SQS notification) to structurally resolve synchronous PDF conversion timeout issues.

Contribution: 1 of 2 BE developers. Designed and implemented EDA document processing pipeline and large-scale async PDF conversion worker. Delivered MVP within 3-week emergency sprint.

TypeScriptLambdaS3SNSSQS

Maven Billing Subscription Management System

2023.06 ~ 2024.08

Subscription, plan, and license management system for all Maven services

  • No support for organization-specific subscription plans — Shipped org-specific custom plan Internal API, Facilitated tailored subscription offerings per organization
  • Non-renewable plans could be incorrectly renewed or re-subscribed — Added renewal/re-subscription blocking logic for non-renewable plans, Ensured business policy consistency for subscription lifecycle

Tech Rationale

Introduced event queue for async cleanup processing after subscription expiry. Enforced non-renewable plan re-subscription blocking via bundles.is_renewable schema attribute at the data level.

Contribution: Implemented org-specific custom plans, event queue-based inventory auto-deletion, and renewal eligibility logic. Multiple PRs directly contributed.

TypeScriptExpress.jsCyanAurora Serverless v2Knex.js

Activities

Email Delivery Monitoring through AWS SES Event Logs Tech Blog 2024.03

Published technical article on building email delivery monitoring system using AWS SES event logs

Mailing System Email Delivery Result Tracking Feature Internal Seminar 2024.02

Presented mailing system email delivery result tracking feature implementation and architecture

AWS SAA Study Group Study Group 2023.09 ~ 2023.12

Internal study group for cloud architecture deep dive

Medgo

Dev Team Backend Engineer

2022.04 — 2023.05

Telemedicine and medication delivery platform startup with 300K cumulative downloads

Highlights

Projects

Auth Server Development

2022.04 (3 weeks)

Built JWT-based unified authentication system to resolve subdomain session conflicts

  • No unified authentication system for multi-subdomain architecture — Designed and implemented NestJS + JWT token authentication system, Established centralized auth infrastructure
  • Session-based auth causing subdomain transition failures — Migrated from session-based to token-based authentication, Enabled reliable user transitions across subdomains

Tech Rationale

Structurally resolved subdomain cookie-based session conflicts with stateless JWT tokens. Chose MySQL over Redis for key management — Redis deemed over-engineering given traffic volume, prioritizing infrastructure simplicity.

Contribution: Independently designed and implemented over 3 weeks. Covered entire auth system for web (doctor/pharmacist/admin portals) + mobile app.

NestJSTypeScriptJWTMySQL

Common Module Development

2022.05 ~ 2022.06

Resolved code duplication and inconsistency from independent service management by consolidating shared modules

  • No centralized permission verification across services — Implemented user permission verification middleware, Enhanced security with unified access control
NestJSTypeScript

Doctor/Pharmacist Web Service Enhancement

2022.04 ~ 2023.05

Resolved lack of real-time status updates and manual notification workflows in doctor/pharmacist back-office systems by introducing Socket.io and Web Push

  • Duplicate appointment bookings causing scheduling conflicts — Implemented Doctor ID + time slot composite unique key constraint, Prevented duplicate appointments at the database level
  • Status reflection delay (tens of seconds) in consultation/dispensing/delivery — Deployed Socket.IO Room-based real-time status sync reflecting events to relevant users instantly, Reduced delay to under 1 second, eliminated patient wait complaints
  • External service failures (delivery, payment) cascading to main application — Architected internal API gateway integrating delivery (Hoodadak) and payment services with Circuit Breaker pattern, Achieved fault isolation preventing cascading failures

Tech Rationale

Used Socket.IO Room-based event isolation for real-time consultation/dispensing/delivery status sync. Integrated API gateway + Circuit Breaker to prevent external service failure propagation. Enforced duplicate reservation prevention via DB composite unique key.

Contribution: Directly implemented Socket.IO real-time sync, Web Push notifications, API gateway, and reservation dedup in 2-person BE team.

Express.jsNestJSTypeScriptEJSMySQLSocket.ioWeb Push

Prescription OCR & Medication Guide System

2022.11 ~ 2022.12

Automated pharmacist's manual prescription entry process using OCR

  • Manual prescription text entry from images (3-5 min per case) — Integrated Naver Clova OCR API for automatic text extraction from prescription images, Automated prescription data entry
  • Manual medication guide creation inefficiency — Developed automated medication guide generation using MFDS (Korea FDA) drug information API, Reduced pharmacist processing time 90% (3-5min→30sec per prescription)

Tech Rationale

Selected Naver Clova OCR for Korean pharmaceutical terminology recognition. Leveraged MFDS public data API instead of building proprietary drug database to minimize maintenance overhead.

Contribution: Independently implemented over 2 months. Built entire pipeline: image intake → OCR extraction → MFDS API matching → medication guide generation.

NestJSTypeScriptNaver Clova OCRMySQL

Backend Architecture Migration

2023.03 ~ 2023.05

Migrated from Express.js single-file (app.js) structure to NestJS modular architecture

  • Express.js single-file (app.js) 10,000-line codebase unmaintainable — Executed 3-phase incremental migration: app.js single file → Layered Architecture (Controller/Service/Repository) → NestJS framework adoption, Achieved modular architecture with clear separation of concerns
  • JavaScript lacking type safety causing runtime errors — Migrated JavaScript → TypeScript across the codebase, Established type safety and improved developer experience
  • No automated testing culture or regression safety net — Introduced TDD practices with comprehensive unit tests, Achieved 80% unit test coverage, zero incidents during major releases

Tech Rationale

Adopted NestJS DI/module system to resolve maintainability limits of 10,000-line Express single-file legacy. Minimized risk via 3-phase gradual migration (single file → layered → NestJS). Introduced TDD to prevent regression during migration.

Contribution: Led independently. Performed all 3 migration phases, JS→TS migration, TDD adoption, and team coding convention establishment.

NestJSTypeScriptTypeORMJestMySQL

SimpleHAN

Dev Team Backend Engineer

2021.07 — 2022.03

Custom software consulting firm

Highlights

Projects

Learning Management System (LMS) Development

2021.07 ~ 2022.03

Resolved manual learning management (attendance, completion, progress) causing low operational efficiency and frequent errors at educational institutions

  • Manual attendance tracking prone to duplicates and errors — Built QR attendance API with date+userID composite unique key preventing duplicate check-ins, Digitized real-time attendance for 300+ students per semester
  • Manual member registration causing data inconsistency — Built Apache POI-based Excel bulk registration with row-by-row sequential processing, Ensured data consistency for batch member registration
  • Manual certificate generation workflow — Built JasperReports-based PDF auto-generation API, Automated dynamic certificate creation

Tech Rationale

Selected Java/Spring Boot as enterprise standard for educational institution delivery. Enforced QR attendance dedup via DB composite unique key (date+userID). Used JasperReports for template-based bulk PDF certificate generation.

Contribution: Directly implemented core features over 10 months: QR attendance, Excel batch registration, PDF certificates, progress tracking. Backend lead in 6-person full-stack team.

JavaSpring BootMyBatisMySQLApache POIJasperReports

Incheon Smart Green Industrial Complex Control Center

2022.01 ~ 2022.03

Resolved fragmented reservation, monitoring, and SMS systems preventing unified management at industrial complex control center

  • Scheduling conflicts from concurrent facility reservations — Built real-time booking API with time+location composite unique key, Prevented scheduling conflicts at the database level
  • Synchronous SMS sending blocking reservation confirmation flow — Implemented Bizppurio SMS API + @Async non-blocking notification, Achieved non-blocking reservation confirmation notifications

Tech Rationale

Enforced meeting room booking conflict prevention via DB composite unique key (time+location). Used @Async for SMS to resolve API response delay — separate message queue deemed over-engineering for the traffic scale.

Contribution: Backend lead over 4 months. Directly implemented reservation API, dashboard monitoring API, and async SMS integration.

JavaSpring BootMySQLBizppurio SMS API

Future Service JOB Agent Development

2021.07 ~ 2022.03

Resolved legacy PHP system's extensibility limitations and lack of structured scoring and counseling management

  • Legacy PHP system could not be extended for new features — Embedded Spring Boot independent app via iframe integration, minimizing legacy impact, Launched JOB Agent service without disrupting existing system
  • No structured scoring system for multi-dimensional assessments — Implemented weighted average-based composite scoring algorithm, Delivered standardized multi-dimensional assessment scoring

Tech Rationale

Embedded independent Spring Boot app via iframe for non-invasive legacy PHP system extension. Used postMessage API for cross-frame communication. Implemented weighted average algorithm for multi-dimensional evaluation scoring.

Contribution: Backend lead over 10 months. Designed iframe integration, implemented weighted scoring algorithm, postMessage state sync, and counselor back-office.

JavaSpring BootMySQL

kfriends Member Management System

2021.09 (3 weeks)

Resolved lack of unified authentication requiring separate logins across 5 country-specific distributed websites

  • Separate logins required across 5 country-specific websites — Built unified auth server with Spring Security + JWT-based centralized authentication, Enabled single sign-on across all 5 country sites

Tech Rationale

Resolved fragmented login across 5-country websites with centralized JWT-based unified auth server. Configured CORS multi-domain handling for cross-origin authentication.

Contribution: Independently implemented over 3 weeks. Built entire unified auth server.

JavaSpring BootSpring SecurityJWTMySQL

Internal Tech Blog Renewal

2021.09 (3 weeks)

Resolved hosting cost burden and manual deployment workflow of WordPress-based blog

  • WordPress hosting cost burden and manual deployment workflow — Migrated WordPress → Jekyll with static site generation, Eliminated 100% hosting costs with automated deployment
JekyllLiquidTravis CIGitHub Pages