개발
home

성장을 즐기는 개발자, 이영훈입니다

About Me

Introduction

안녕하세요! 7년 차 백엔드 개발자 이영훈입니다.
어제보다 더 성장한 오늘의 저를 발견하는 즐거움을 알기에 성장을 위해 꾸준히 노력하고 있습니다.
최근에는 성장의 기쁨을 함께 나누고 싶어 기술 블로그를 운영하고 있습니다. 일주일에 1개 정도의 글을 올리려고 노력하고 있습니다.
회사와 팀의 성장에 기여하는 것을 중요하게 생각합니다.
하루를 마무리 하면서 따뜻한 허브차를 마시며 다이어리를 작성하는 것을 좋아합니다. 식물 키우는 것을 좋아합니다.

Contacts & Blog

Email | nobel6018@gmail.com

Skills

Backend

Java, Kotlin, Python, TypeScript, ES6
Spring Boot, Spring MVC, Spring Data JPA
MySQL, PostgreSQL, AuroraDB, Kafka, Redis, DynamoDB
Exposed, JPA, Querydsl
Junit5, Kotest, Mockk, Mockito
Gradle (Kotlin DSL, groovy DSL)
NestJS
TypeORM
Jest

DevOps

AWS EC2, Elastic Beanstalk, S3, RDS(Aurora, mysql, postgres), DynamoDB, CloudFront, Route53
EKS(Kubernetes), ECR, ECS, CodeBuild, CodeDeploy, CodePipeline, SQS, SES, WAF, Athena
Kubernetes, Docker, Helm, Prometheus, Grafana, Loki
Jenkins, Github Action, Bitbucket Pipelines
Nginx

Frontend

React, React Native
TypeScript, ES6, yarn, npm
Redux(React-redux), Styled Components, React Query

Collaboration & Tool

Slack, Notion
Figma
IntelliJ, WebStorm, PyCharm, DataGrip
Git, GitKraken

Work Experience & Projects

카카오뱅크 - 백엔드 개발

2024.11 ~ (성장중)
담보여신개발팀에서 여신 서비스의 개발 및 운영 업무를 수행하고 있습니다.
챗봇 시나리오 개발 업무를 담당하고 있습니다.
서버의 기존 모놀리식(monolithic) 아키텍처를 마이크로서비스 아키텍처(MSA)로 전환하는 업무를 했습니다.
카카오뱅크 기술 블로그에 Reviewer로 기여했습니다.
 Exposed에서 도망 간 Escape를 찾습니다 (feat. MySQL)
Exposed(Kotlin ORM)에서 발생한 Escape 문자열 처리 오류를 해결한 과정을 다루고 있습니다.
기술적인 내용을 보다 쉽게 이해할 수 있도록 다듬었고, 글쓴이와 테크니컬 라이터와의 원활한 소통을 통해 글의 완성도를 높이는 Reviewer 역할을 수행했습니다.
Kotlin, Java, Spring Boot, Mockk, Kotest, RDBMS(Mysql), Redis

플로틱 - 백엔드 개발

2022.01 ~ 2024.10 (IT개발팀 리더)
로봇 IoT와의 통합 및 외부 시스템과 통신하는 서버를 개발, AWS 기반의 Devops 인프라 구축 및 운영 업무를 하고 있습니다. (Floatic)
기획자, 개발자, 디자이너로 조직된 12명의 팀을 리딩하였습니다
첫 개발자로 입사해서 첫 시스템 구축부터 MSA 시스템의 아키텍처 설계 및 기술스택과 더불어 개발 문화 확립 업무를 했습니다.
Kotlin, Spring boot, Junit5, Mockk, Kotest, RDBMS(Mysql), JPA, Querydsl
Kubernetes, Helm, Prometheus + Grafana + Loki
Agile하게 일하고, 2주 단위의 스프린트와 매일 데일리 스크럼을 진행하고 있습니다.
테스트 커버리지는 80% 이상을 유지하고 있습니다.
로봇 IoT와 통합하기 위해 Kafka를 사용했습니다.
불안정한 네트워크 환경에서도 IoT와의 통신을 위해 카프카를 사용했습니다.
AWS IoT Core를 사용했으나 On-Premise 환경을 고려하여 카프카로 이관하였습니다.
(히스토리) 로봇 IoT와 통합하기 위해 AWS IoT Core를 사용했었습니다.
Kotlin 기반의 Spring Boot를 사용한 API 서버 개발을 통해 외부 시스템과 통합하였습니다. 자체 개발한 알고리즘을 통해 최적화된 명령을 로봇 IoT에 내리는 서버를 개발하였습니다.
컨테이너 기반의 어플리케이션을 관리하고 있으며, 빠른 배포와 확장을 위해 Kubernetes로 컨테이너를 관리하고 있습니다.
내용이 많아서 가독성을 위해서 Toggle로 작성했습니다. 펼쳐서 내용을 확인해주세요.
물류센터 내 로봇 운영 프로세스를 유연하게 대응하기 위해 MSA 아키텍처를 도입했습니다.
MSA 아키텍처로 전환하기 - 필요성과 도메인 분리 기준, 성취 효과
MSA 아키텍처에서 기술적 고려사항
추가 기술적 고려사항
물류센터의 망분리 환경을 대응하기

글림미디어 - StarPlay 백엔드 개발

2021.10 ~ 2022.01
총 유저 650만 명, MAU 30만명 이상의 글로벌 팬덤 서비스 StarPlay 백엔드 개발 (App Store)
트래픽의 80% 이상이 해외 (동남아시아, 북미, 오스트레일리아 등)에서 발생하고 있습니다
NestJS, TypeScript, TypeORM, Open API 3 (swagger), JWT, Jest (테스트코드), Passport (Google, Kakao, Apple Local Strategy 구현)
AWS ECR, ECS(ARM64 architecture), RDS(Aurora DB), S3, CloudFront, CodeBuild, CodePipeline, SQS, SES, Lambda, WAF, Athena
레거시 PHP 코드를 NestJS로 변경하였습니다. JWT로 회원 인증을 구현하였고 Google, Kakao, Apple 로그인을 구현하였습니다. 모든 코드에 대해 테스트코드를 작성하여 커버리지 80% 유지하였습니다
AWS SQS + Lambda를 사용하여 이벤트 발생시 (회원가입, 결제 등) 이메일을 보내는 로직을 구현하였습니다
AWS Cloudwatch event + AWS Lambda를 이용하여 정기적인 작업 (정기 구독 유저에게 포인트 지급 등)을 구현하였습니다.
정기적으로 대용량 트래픽이 발생할 때 서버 관제를 통해 안정적으로 서버를 운영하였습니다. AWS Cloudwatch로 관제하였습니다.
2021년 12월: 동접자 1만 2천명, 5분간 최대 요청수: 126k

보이스루 - VWS 백엔드 개발

2020.09 ~ 2020.12
AI 기반 영상 편집 서비스 VWS 백엔드 개발 (JTBC, National Geographic 방송사가 초기 유저로 사용)
Kotlin, Spring Boot, JPA, QueryDSL, Junit5, Kubernetes
AWS DynamoDB (글로벌 서비스를 고려했고 빠른 응답속도를 보장하기 위해 사용하였습니다)
JWT, Spring Security, Open API 3 (swagger)
백엔드 개발/운영/배포 전 과정을 혼자 맡아서 진행하였습니다

보이스루 - Kubernetes 도입

2020.04 ~ 2020.09
Worker와 서버가 많아져 Kubernetes 도입을 결정
Kubernetes 도입을 위해 개발팀 전사적으로 학습과 스터디 진행
책 "Kubernets In Action", k8s 공식 문서 스터디
AWS EKS, ECR, EC2, S3, CodeBuild를 사용하여 Kubernetes 시스템 구축
기존 Server, Worker를 Kubernetes로 마이그레이션 작업

보이스루 - JAMAKE 백엔드 개발

2020.01 ~ 2020.09
AI 기반 동영상 자막 제작 플랫폼 JAMAKE(https://jamake.io) 백엔드를 개발하였습니다
Kotlin, Spring Boot, JPA, Querydsl, Junit4, AWS Elastic Beanstalk, SQS, S3, Lambda, Kubernetes
JWT, Spring Security, Open API 3 (swagger)
백엔드 개발/운영/배포 전 과정을 혼자 맡아서 메이저 업데이트를 두 번 진행하였습니다
프리미엄 자막 제작 서비스 'JAMAKE BLACK' 오픈
성장 가능성이 높은 영상 추천 기능 연동 개발
Youtube API 쿼터 최적화
유튜브 영상 다운로드 프로세스를 개발하였습니다
AWS SQS, EC2(Spot Instance), youtube-dl을 이용

보이스루 - ETL 작업

2019.11 ~ 2020.01
AI 학습에 필요한 자막 데이터를 AI 학습 전용 데이터베이스에 추출, 가공, 적재하였습니다
Airflow 도입하여 워크플로우를 관리하였습니다
Docker, AWS EC2, ECR, RDS(postgreSQL)

뮤팟 - 뮤팟 서비스 개발

2018.04 ~ 2019.11
배경음악 서비스 뮤팟 프론트, 백엔드 개발을 담당하였습니다(https://mewpot.com)
Ruby on Rails, HTML, CSS(SASS), JavaScript(ES6), jQuery
Python Librosa, Keras(Tensorflow), CNN, DSP
서비스 매출 증가(200% 이상)를 위한 서비스 개발 경험하였습니다
AI를 이용하여 유튜브 배경음악으로 적합한 음원 추천 기능 개발
원하는 음악 특성을 멀티 셀렉트 가능한 태그 기능 개발
유튜브 영상을 보면서 추천 배경음악을 실시간으로 들어보는 'Pick' 기능 개발

 Open Source Contribution

Telegraf (kafka input plugin)

telegraf
influxdata
Telegraf는 다양한 데이터 소스를 수집하고 이를 InfluxDB 데이터베이스로 전송하는 역할을 하는 오픈소스입니다
Kafka 메시지를 입력값으로 사용하는 공식 플러그인에 버그가 있어서 수정하여 기여하였습니다

Inflearn Enhancer (크롬 확장프로그램)

인프런의 미디어 플레이어를 유튜브처럼 만들어주는 크롬 확장프로그램을 개발하여 크롬 웹 스토어에 배포하였습니다
인프런 미디어 플레이어에 단축키로 일시정지/재개, 10초 앞/뒤로 이동, 배속 시 유튜브와 동일하게 알려주는 기능을 개발하였습니다
Github 링크: inflearn-enhancer

한영 타이핑 변환

한글 타이핑 → 영어 타이핑, 영어 타이핑 → 한글 타이핑 변환 오픈소스입니다
한글 유니코드를 공부하여 모든 과정을 직접 개발하였습니다
타입스크립트로 개발했고, Jest로 테스트코드를 작성하였습니다
npm에 배포하였습니다
오늘의 개발에서 테스트해볼 수 있습니다

NestJS 공식문서 (KR)

NestJS의 한글 공식 문서입니다
NestJS 공식문서가 잘못 기술된 부분을 수정하여 더 좋은 문서가 될 수 있게 기여하였습니다
현재까지 총 4번의 Pull Request가 merged 되었습니다

React Kakao Login

React로 카카오 로그인 구현할 수 있는 라이브러리입니다
React(TypeScript)로 구현하다가 타입 오류를 발견하여 기여하였습니다

React Kakao Map SDK

React로 카카오 지도를 구현할 수 있는 SDK입니다
공식문서 버그를 수정하여 기여하였습니다

Education & Awards

한양대학교 벤처창업경진대회 혁신상

한양대학교 벤처창업경진대회 혁신상 (최우수 총장상)
2019년 10월 수상
인공지능 기반 TTS (Text To Speech) 서비스에서 서버 개발을 담당하였습니다
'라이언로켓'에서 서비스 중입니다 (https://lionrocket.ai)

한양대학교 정보시스템학과 & 자원환경공학과

2014.03 ~ 2021.08
정보시스템학과, 자원환경공학과
졸업학점 : 4.02 / 4.5
한양학업 최우수상(상위1%) 2회 수상 (2020년 2학기, 2021년 1학기)