소개

류두영 / Dooyeoung Ryu
010-5061-2576 dooyeoung.ryu@gmail.com
레몬베이스에서 백엔드 엔지니어로, 인사평가, 목표 관리, 리뷰 분석 SaaS 제품 개발에 기여하며 확장 가능한 고품질 제품 개발과 사용자 경험 개선에 집중하고 있습니다.
다양한 스타트업에서 백엔드, 데이터 엔지니어, 업무 자동화 및 SaaS 제품 개발 등 폭넓은 경험을 쌓았습니다.
현재는 AWS ECS 환경에서 Python Django 기반 서비스를 운영하며, Github Actions 기반 CI/CD 및 Terraform으로 인프라를 관리합니다.
최대 30,000개 목표 조회 속도를 30초에서 0.5초로 단축하며 83% 이상의 성능 향상을 달성했습니다. 또한, AWS 인프라 구조 개선을 통해 연간 약 5,600만 원의 비용 절감에 기여했습니다. 사용자 불편함 해소 및 운영 효율 증대를 위해 목표 현황 대시보드, 구성원 대량 생성 도구, 리뷰 분석 검증 툴 등 다양한 내부 도구와 POC를 기획 및 구현하여, 고객 및 동료의 생산성 향상에 기여하고 있습니다. 긍정적인 사고와 과감한 실행력을 바탕으로 문제를 끈질기게 파고들어 해결하고자 합니다.
고객의 불편함에 깊이 공감하고, 문제 해결을 위한 더 나은 아이디어를 적극적으로 제안하며, PoC를 통해 실행 가능성과 영향력을 빠르게 검증합니다. 이러한 시도는 다양한 기술 학습과 새로운 기능 도입으로 이어지며, 제품 개선에 실질적인 기여로 이어졌습니다. 나아가 동료들이 핵심 업무에 집중할 수 있도록 반복 업무 자동화나 필요한 도구 개발을 고민합니다.
모든 문제를 기술로 해결하기보다 외부 서비스 도입과 운영 정책을 개선을 동료들과 적극적으로 논의하여 문제 해결에 합리적인 방법을 찾으려 합니다. 투명하고 따뜻한 소통을 통해 동료들과 함께 시너지를 내는 것을 중요하게 생각합니다. 함께 일하기 좋은 동료이자, 문제 해결에 기여하는 개발자가 되기 위해 끊임없이 배우고 실행하고 있습니다.
최대 30,000개 목표 조회 속도를 30초에서 0.5초로 단축하며 83% 이상의 성능 향상을 달성했습니다. 또한, AWS 인프라 구조 개선을 통해 연간 약 5,600만 원의 비용 절감에 기여했습니다. 사용자 불편함 해소 및 운영 효율 증대를 위해 목표 현황 대시보드, 구성원 대량 생성 도구, 리뷰 분석 검증 툴 등 다양한 내부 도구와 POC를 기획 및 구현하여, 고객 및 동료의 생산성 향상에 기여하고 있습니다. 긍정적인 사고와 과감한 실행력을 바탕으로 문제를 끈질기게 파고들어 해결하고자 합니다.
고객의 불편함에 깊이 공감하고, 문제 해결을 위한 더 나은 아이디어를 적극적으로 제안하며, PoC를 통해 실행 가능성과 영향력을 빠르게 검증합니다. 이러한 시도는 다양한 기술 학습과 새로운 기능 도입으로 이어지며, 제품 개선에 실질적인 기여로 이어졌습니다. 나아가 동료들이 핵심 업무에 집중할 수 있도록 반복 업무 자동화나 필요한 도구 개발을 고민합니다.
모든 문제를 기술로 해결하기보다 외부 서비스 도입과 운영 정책을 개선을 동료들과 적극적으로 논의하여 문제 해결에 합리적인 방법을 찾으려 합니다. 투명하고 따뜻한 소통을 통해 동료들과 함께 시너지를 내는 것을 중요하게 생각합니다. 함께 일하기 좋은 동료이자, 문제 해결에 기여하는 개발자가 되기 위해 끊임없이 배우고 실행하고 있습니다.
프로젝트
레몬베이스
레몬베이스 백엔드 개발자
2022.11 - 2025.05
목표 제품 관리
- 목표 승인 기능을 개발하고, QA에 사용할 승인권자 미리보기 내부 툴 페이지를 구현하여 정책 논의와 테스트 효율을 높임
- 목표 관리 엑셀 업로드 기능의 성능을 대폭 개선하고, n+1 쿼리 실행을 제거하여 대규모 데이터 처리 속도를 획기적으로 향상
- 목표 조회 기능 최적화를 통해 처리량과 처리 속도를 크게 개선, 30초 → 0.5초(83% 개선)로 단축. 위계/세부 정보 조회방식을 전면 개편하고 속도 저하 원인 중 하나인 라이브러리 사용을 제거하여 확장성과 유지보수성을 높임.
- 목표 이벤트 알림 기능을 추가하고, 목표 체크인을 슬랙에서 바로 할 수 있도록 부가기능을 구현하여 접근성과 편의성을 강화.
- sqs와 celery beat를 도입하여 스케쥴 처리에 대한 인프라 구성
- 모바일 환경 개선작업으로 목표 간편 체크인 기능 구현하여 목표 제품 접근성을 높이는데 기여
AWS 인프라 비용 절감 TF 참여
- 파편화 되어 운영되던 ECS 서비스를 도메인 단위로 묶어 하나의 서비스로 구성하여 비용 절감
- celery 워커를 구성하고 비동기 서비스를 통폐합 하여 인프라 리소스를 정리
- 작업 시점 기준 월 3,445달러(약 473만 원), 연간 약 41,340달러(약 5,642만 원) 절감
다양한 PoC 작성 및 공유
- 목표 생성 시 조직도 기반으로 담당자/조직을 선택할 수 있도록 PoC를 React로 구현하여 공유하였으며 제품 반영 진행됨
- 삭제된 목표 복구, 목표 이동 등 반복 VOC를 반영한 기능을 PoC로 구현하여 제안하였으며 제품 반영까지 진행됨
- 목표 임시저장, 체크인 시 파일 첨부 등 실사용자 니즈를 반영한 기능을 PoC로 구현하고 제안하였으며 제품 반영까지 진행됨
- 전체 목표를 한눈에 볼 수 있는 Tree view를 React flow를 사용하여 PoC로 구현하여 제안하였으며, 로드맵에 추가되어 이후 제품에 반영됨
개인별 리포트 분석 기능 개발
- 데이터팀이 작성했던 기존 R 코드를 분석하고 Python으로 변환하여 개인별 리포트 기능을 구현
- 제출 완료된 리뷰 데이터를 활용하여 개개인의 질문별 강약점, 자기객관화, 장단점 분석이 가능한 기능 개발
- RDS 기반의 분석 대기열 구조를 설계하여 개인별 리포트 생성시 리소스 부담이 최소화 될 수 있도록 개선
- 분석 결과를 정적파일로 생성하는 발행기능을 개발하였으며 제품 변경과 무관하게 결과의 일관성을 보장하였음
야놀자 FNB Solution, 스포카
도도포인트 백엔드 개발자
2021.03 - 2022.10
도도포인트 전체 서비스 도메인 교체
- 안정적인 도메인 교체를 위해 ELB를 추가하여 도메인 이중화 구성
- Route53, ACM, LoadBalancer, k8s secret, DB에서 도메인 사용 현황 전수 조사
- 서비스에서 사용중인 도메인 전체 변경
개인정보 제 3자 동의 정책 반영
- 개인정보 제3자 동의 여부 갱신 기능 구현
- 백오피스에서 동의 여부 수정 가능 및 수정 후 사용자에게 알림 기능 구현
- 매장의 광고 메시지 발신시 동의 사용자에게만 발신되도록 메시지 발신 로직 수정
도도포인트 앱 서버 푸시 기능 구현
- 도도포인트 서버에서 포인트 활동 이벤트 생성 시 메세지 발신되도록 설계
- PyFCM 패키지를 사용하여 푸시 기능 구현
- DocumentDB를 사용하여 푸시 메시지 보관
QA 테스트 백오피스 개발
- 가상의 사용자 포인트 활동 생성
- 운영 환경의 매장 데이터 추출하여 개발 환경 매장 데이터로 구성
- Flask Jinja2를 사용하여 백오피스 페이지 구성
- 구글 OAuth 적용 하여 접근 제한 구현
도도포인트 앱 API 서버 개발
- Python 패키지 관리 방식 Poetry로 변경
- Marshmallow 적용하여 오브젝트의 직렬화, 역직렬화, 데이터 검증
- 레포지토리 패턴 적용하여 데이터 관리 로직 분리
시티스푸너스
IT 엔지니어
2020.01 - 2021.03
페이스북 광고 비용과 cafe24 매출 데이터 분석을 위한 대시보드 구현
- Python selenium 패키지를 사용하여 Cafe24 매출 데이터 수집 자동화 기능 구현
- Google Datastudio를 사용하여 GA 리포트 구성
- Facebook API로 광고 데이터 수집 자동화 구현 D3.js 사용한 대시보드 구축
사내 ERP 개발
- AWS EC2 환경에서 Flask와 Nuxt.js를 사용하여 개발
- Shopify API를 사용하여 주문 수집 자동화
- Cafe24 API를 사용하여 제품 커스텀 기능 개발 및 주문 수집 자동화
- 여러 커머스에서 수집된 주문내역을 협력사에 전달 하기 위해 SKU 별 주문수량을 Google API를 사용하여 Gsheet 입력 자동화
마이셀럽스
Data 엔지니어
2018.11 ~ 2020.01
사용자의 얼굴 부위별 색상 추출 모듈 개발
- Face-alignment, opencv를 사용하여 얼굴 인식 모듈 개발
- k-means를 사용하여 얼굴 부위별 색상 추출
영화 포스터와 트레일러 영상 전처리
- k-means를 사용하여 대표 색상 추출 후 색상 검색 모듈 구현
- yolov3 사용하여 영상의 주요 장면 편집 모듈 개발
이미지 색상을 기반으로한 검색 모듈 개발
- k-means를 활용한 이미지 색상 추출 모듈 개발
- 색상 추출 모듈을 사용하여 이미지 색상 추출 후 결과 DB에 저장
- 색상 검색 결과 최적화를 위해 HSL color space를 활용하여 색상의 계열 구분
- 색상 계열 구분과 색상 검색 결과를 사용하여 색상 검색 모듈 개발
아라엔지니어링
IT 엔지니어
2015.02 - 2017.12
UnisimDesign, OLGA 제어 프로그램 개발
- Unisim, Olga, Synergi 프로그램을 제어 할 수 있는 TCP/IP 기반의 프로그램 개발
- OPC 서버와 통신 하도록 Client 기능 구현
Aveva E3D *.rvm 파일을 *.fbx파일로 변환하는 모듈 개발
- *.rvm 파일 구조 파악 후 범용 3d 프로그램에서 사용할 수 잇도록 *.fbx로 변환
OTS 제어 프로그램 개발
- 코드 리펙토링과 메모리 사용 최적화 작업 진행
- MariaDB를 사용하여 제어 프로그램 현재 상태값 관리
Chart Component 기획 및 개발
- GDI+를 사용하여 개발 진행 하였으며 Multiple Axis, 드래그를 이용한 Zoom, Mouse tracking 기능 구현
문제 해결 및 개선 경험
개인별 리포트 분석 결과 정적 파일 생성
문제
분석 결과 생성 후에도 제품의 변경이 분석 결과에 영향을 주지 않도록 분석 결과를 정적파일로 다룰 필요성이 있었음
고객은 분석 결과를 분리되고 독립된 내용이라 이해하였음
분석이 추가되거나 분석 방법이 변경되었을대 분석 결과 조회 페이지에 즉시 반영되는 구조였기에 개선이 필요했음
분석이 완료된 결과는 제품 변경에 영향을 받지 않아야 한다는 요구사항을 만족시켜야 했음
해결 과정
정적파일 생서 서버를 추가하려는 방향을 생각하다 팀원들과 여러 논의를 거쳐
FE의 vike 패키지를 활용하여 기존 코드 기반에서 정적 빌드가 가능한것을 확인하였음
새로운 서버를 구성하지 않고 비동기 worker를 추가하여 빌드만 담당하도록 코드를 추가하였음
서브프로세스를 호출하여 정적파일 생성하고 s3에 업로드 하는 방향으로 정적 파일 생성 작업을 진행하였음
정적파일 생성 결과를 한번에 업로드 하기 위해 aws s3 cli를 사용하였음, 이또한 서브프로세스를 호출하는 방식으로 진행했음
s3는 민감정보를 보관하는 비공개 버킷과 assets을 보관하는 공개 버킷을 구분하였고
공개 버킷에 cloudfront와 route 53 레코드를 추가로 설정하여 외부 접근에 대한 캐시를 구성하였음
평가
부득이하게 ECS에 공통으로 사용되는 백엔드 도커 이미지 파일이 커졌으며
배포 시간도 길어졌음, 이는 이후 도커 이미지를 분리하는 방향으로 개선 하려함
분석 요청 트래픽이 많지 않아 빌드 서버를 분리하지 않는 판단을 내렸음, 오버스펙을 우려하였음
제품 사용 규모에 맞는 구조로 설계하여 요구사항을 만족하였으며
제품 개선이 전보다 자유로워 졌음
레몬베이스 목표 제품 최적화
문제
대규모 고객 (약 3,000명 규모)사용이 예정 되어 있었음 관리하게 될 목표 수가 최대 30,000개로 예상되어 현황 점검이 필요했음
테스트 해보니 최적화가 필요 했으며 30,000개 목표 관리가 가능하도록 최적화를 반드시 진행해야 했음
해결 과정
대규모 고객의 사용 환경과 유사한 상황이 필요했음 QA에 사용할 내부 툴을 만들었음
조직, 구성원을 한번에 쉽게 만들수 있는 툴을 먼저 개발
약 3,000명, 30,000개 목표를 생성하고 속도 저하 구간을 파악하고 문제점 정리하였음
목표 조회 요청부터 DB 조회 응답 반환까지 조회 과정의 전 구간을 나누어 속도를 파악하였음
데이터 독, 프로파일링 사용하여 가장 문제되는 구간을 찾아 작업 우선순위를 정하였음
간단하게 print와 자체 구현한 속도 측정 스크립트도 간단히 사용함
위계 데이터 처리 부분이 anytree라는 오픈소스 패키지를 사용하고 있었음
django orm에서 anytree로 변환시 인스턴스를 생성하는 과정이 시간이 오래 걸리는것을 파악, 개수가 워낙 많아 30,000개 변환에 시간이 꽤나 걸렸음
해당 구간만 c, rust 로 변경하여 시도해보았으나 큰 이점이 없었음
anytree 패키지 사용을 제거하고 필요한 내용만 사용할 수 있도록 유틸 코드를 새로 작성하였음
개선 프로젝트 시작전 30초 성능을 2초 대로 개선하였음
평가
페이지네이션을 적용하고 싶었으나 위계정보를 담고 있기에 페이지네이션 기준이 모호했음
이 기준을 정하는 논의 시간을 길게 가질수 없음이 아쉬움
시간을 투자할지 눈 앞의 문제를 해결할지 트레이드 오프를 고민하였음
일을 두번 하더라도 눈앞에 보이는 문제를 못본척 할 수 없기에 현재 상황에서 구조의 큰 변경없이 할수 잇는 최적화를 하기로 진행하였음
도도포인트 앱 프로젝트 구조 리펙토링
문제
기존 API 서버의 코드는 HTTP 처리와 비즈니스 로직, 데이터 조회 및 처리 코드가 한곳에서 처리되는 상태였습니다.
PostgreSQL을 사용하여 데이터를 관리하였으며 새로운 기능이 추가되면서 DocumentDB가 추가되어야 했습니다.
코드가 더 복잡해지기 전에 리팩토링이 필요한 상태였습니다.
해결 과정
개발 리소스 부족으로 전체 서비스 코드를 레이어드 아키텍처로 리팩토링할 수 있는 상황은 아니었습니다.
우선 레포지토리 패턴만 적용하여 데이터 관리 코드를 분리하기로 하였습니다.
데이터 조회 부분을 모두 파악하여 레포지토리 패턴으로 정리하였습니다.
앱 API 서버 기본정보를 다루는 레포지토리 선언부를 추가하고 PostgreSQL이 연결되는 구현체를 작성하였고
푸시메시지 보관 목적을 지닌 레포지토리 선언부를 추가하고 DocuemntDB가 연결되는 구현체를 작성하였습니다
평가
각 API에서 사용하는 쿼리를 파악하여 중복 코드를 줄일 수 있었으며 API 테스트 코드에서 데이터 검증 과정이 제거되면서 테스트 코드가 간결해졌습니다.
비즈니스 로직을 분리하여 서비스 레이어로 구현하지 못한 점이 아쉬움으로 남습니다. 레이어드 아키텍처의 일부분을 적용해 볼 수 있는 좋은 시간이었으며 도메인 주도개발, 레이어드 아키텍처 패턴의 중요성에 대해 다시 한번 깨달았습니다. 서비스 구조에 대해 다시 학습을 시작하게 된 계기가 되었습니다.
비즈니스 로직을 분리하여 서비스 레이어로 구현하지 못한 점이 아쉬움으로 남습니다. 레이어드 아키텍처의 일부분을 적용해 볼 수 있는 좋은 시간이었으며 도메인 주도개발, 레이어드 아키텍처 패턴의 중요성에 대해 다시 한번 깨달았습니다. 서비스 구조에 대해 다시 학습을 시작하게 된 계기가 되었습니다.
도도포인트 앱 매장 목록 조회 속도 개선
문제
현재 사용자의 위치정보를 사용하여 사용자와 가까운 매장목록을 조회하여
매장 썸네일 이미지, 매장명, 매장과의 사용자사이 거리를 보여주는 화면에서
로딩 속도가 3초 이상 지연되었습니다.
해결 과정
매장 목록 조회시 구간을 나누어 속도 검사를 하였습니다.
API 요청 후 DB에서 매장 목록을 가져오는 구간, 매장 목록 조회 후 직렬화 하는 과정으로 나누어 수행 속도를 확인하였습니다.
매장 목록 조회 후 직렬화 하는 과정에서 속도가 많이 소비되었으며 다시 구간을 나누어 수행 속도를 확인해보니
매장 썸네일 이미지 URL 조회 단계에 시간이 많이 소비되는 문제였습니다.
SQLAlchemy-ImageAttach 패키지를 사용하여 매장 이미지를 S3에서 관리하고 있었으며 s3의 업로드된 url을 db에 저장하는 방식이 아닌 이미지 파일의 메타정보만 db에 저장하고 이미지 url 접근시 메타정보를 s3에 전달하여 url을 확인하여 전달하는 방식이였습니다.
도도포인트 앱에서 사용할 전체 매장의 썸네일 이미지 URL을 미리 확인하여 Redis에 저장하여 빠른 조회가 가능하도록 구조를 수정하였습니다. 이미지 수정보다는 조회 작업 비율이 월등히 많다는 것을 파악하여 캐시에 저장하여 사용하기로 하였습니다. 약 9,000개 매장의 썸네일 이미지 URL을 매일 새벽에 갱신하도록 celery cronjob을 추가하였습니다.
SQLAlchemy-ImageAttach 패키지를 사용하여 매장 이미지를 S3에서 관리하고 있었으며 s3의 업로드된 url을 db에 저장하는 방식이 아닌 이미지 파일의 메타정보만 db에 저장하고 이미지 url 접근시 메타정보를 s3에 전달하여 url을 확인하여 전달하는 방식이였습니다.
도도포인트 앱에서 사용할 전체 매장의 썸네일 이미지 URL을 미리 확인하여 Redis에 저장하여 빠른 조회가 가능하도록 구조를 수정하였습니다. 이미지 수정보다는 조회 작업 비율이 월등히 많다는 것을 파악하여 캐시에 저장하여 사용하기로 하였습니다. 약 9,000개 매장의 썸네일 이미지 URL을 매일 새벽에 갱신하도록 celery cronjob을 추가하였습니다.
평가
이미지 로딩 속도를 200ms 이하로 단축할 수 있었습니다.
SQLAlchemy-ImageAttach 사용 장점을 유지하고 URL 조회의 단점을 구조 변경 없이 해결하였습니다.
도도포인트 QA 테스트를 위한 백오피스 개발
문제
도도포인트 앱 QA에 사용할 더미 데이터를 수동으로 구성해야 하는 문제였습니다.
QA 담당자, PM, 디자이너 각각 맡은 QA를 진행하기 위해 가상의 사용자를 수동으로 만들어야 했습니다.
포인트 적립, 사용 등 포인트 활동을 직접 생성해야 했으며 수동으로 생성하기 힘든 포인트 활동도 있었기에 개선이 필요했습니다.
해결 과정
초기 작업으로 약 70,000명의 가상 사용자를 대량으로 미리 생성하였습니다.
QA 대상 기능 중 포인트 적립 형태가 비슷한 사용자들이 방문한 매장을 추천해주는 기능이 있었으며 QA를 위해
대량의 포인트 활동 생성 기능 필요했기에
백오피스에서 포인트 활동 내역이 있는 사용자가 몇 명 필요한지, 날짜 기간 범위는 언제로 할지, 활동 지역은 어디인지 선택할 수 있게 하였습니다.
쿠폰 발급 기능도 추가하여 쿠폰 QA도 가능하도록 기능을 추가하였습니다.
평가
백엔드 개발자의 리소스를 사용하지 않고 QA에 필요한 데이터를 준비할 수 있게 되었습니다.
QA 팀에게는 QA 준비 시간을 줄이는 데 큰 도움이 되었으며
PM, 디자이너분들께는 간단한 기능 확인 시 여러 상황을 직접 준비할 수 있게 되어 기능의 만족도가 높았습니다.