Naver ClovaAI, 2018. 11. ~ 2019. 2.
Project Summary
This project was conducted during the Naver ClovaAI internship period. Vincent is a project that generates advertisement images based on templates and predicts CTR using AI. I developed the job manager module of it which receives user requests, calculates combinations of possible images and manages the statuses of jobs.
The most complicated thing was implementing the combination calculation part. I can’t tell every details but it consists of lots of steps. And sometimes there were more than millions of possible combinations. Since igh performance was required to ensure system reliability, I designed a pipeline using golang concurrency pattern.
First, I split the overall combination calculation process into two stage. Steps that require many computations were processed concurrently by multiple goroutines. All steps were connected into a pipeline. In this way, I could achieve performance requirments. (1 million combinations within 1 minute)
Role
- Developed backend application based on golang
- Implemented concurrent pipeline using golang design pattern
- Deployed and operated the application on Naver in-house cloud infrastructures
Tech Stack
- Container Orchestration: Docker Swarm
- Language: go
- CI/CD: jenkins
- DB: mongodb, redis
Results
- Optimized combination calculation time from over 10 min to under 1 min.