미리보기
기본 정보
미래 지향적인 코딩을 좋아하는 개발자입니다. (산업기능요원으로 복무중입니다)
기술 스택
Java, Kotlin, Spring Boot, Elasticsearch, python3
경력
(주)라이언로켓
팀원 | 백엔드 개발팀 | 재직 중
2022.12. ~ 재직 중 (2년 3개월)
사내 인프라를 구축하거나, 백엔드 서비스를 주도 및 담당하고 있습니다.
(주)스윗코리아
팀원 | 백엔드 개발팀
2022.01. ~ 2022.12. (1년)
3RD 파티 연동과 전자결제 관련 백엔드 서비스를 담당하였습니다.
프로젝트
Genvas
(주)라이언로켓
2023.10. ~ 진행 중
웹툰 하나하나의 장면마다 선화, 얼굴보정, 채색 등을 AI로 도와주며, 단계별 태스크를 프로젝트 단위로 관리할 수 있도록 하는 서비스를 개발하였습니다. 현재 국내 여러 웹툰사와 협업중이며, 일본 시장까지 진출중입니다.
- Python FastAPI를 Kotlin Spring Boot 프래임워크 마이그레이션을 진행하였습니다.
- 변경 이유중 하나는, 파이썬 서버의 고질적인 메모리 누수로 인한 일부 요청 누락이 가장 큰 문제가 되었습니다.
- 다른 이유들로는 프로젝트의 규모가 커지면서 유지보수의 어려움을 느끼던중 의존성 주입, 정적타입의 언어, 개발자 커뮤니티풀이 가장 활발한 프래임워크인 Spring Boot를 선택하게 되었습니다.
- 이미지 생성 요청을 SSE(ServerSent-Event)를 사용한 실시간 스트림 처리를 사용하여 이미지 생성 진행률을 실시간으로 제공하는 기능을 개발하였습니다.
- Spring Framework에서 제공하는 Application Publisher를 사용하여 서버 내부적으로 이벤트 수신및 발신 기능을 관리하였습니다.
- Redis를 사용하여 큐를 구현하여 이미지 생성 워커로부터 실시간 정보를 받을 수 있도록 구성하였습니다.
기술 키워드: Kotlin, Spring Boot, Redis, postgresql, (Python ,FastAPI)
LDS(Lionrocket Distridution System)
(주)라이언로켓
2023.07. ~ 2023.07.
AI 모델을 서빙하기 위한 분산처리 시스템입니다.
- 이미지 합성 소요 시간을 8초에서 4초로 이전 대비 50% 단축하여 성능을 개선했습니다.
- 기존 멀티 프로세싱 기반 워커(GPU 당 1개의 워커)의 문제 해결을 위해 멀티 쓰레딩을 도입했습니다.
- 여러 요청이 동시에 들어올 때, 다른 프로세스로 들어가면 AI 모델을 다시 로드해야 하는 대량의 시간 소요되는 문제를 해결했습니다.
- 워커용 프래임워크와 클라이언트용 라이브러리까지 만들어, 개발자가 쉽게 분산처리 작업을 비동기로 할 수 있도록 개발하였습니다.
기술 키워드: Python, Redis
Pokeit
(주)라이언로켓
2023.03. ~ 2023.10.
AI 사용법을 모르는 유저들도 쉽게 AI로 이미지 생성을 도와주고 유저들끼리 커뮤니케이션 하는 서비스입니다.
- MAU 10만 이상의 서비스를 개발&유지보수하고 있습니다.
- AI를 처음 접하는 사용자도 쉽게 AI를 사용하여 원하는 이미지를 만들 수 있는 서비스를 개발했습니다.
- 서비스내 모든 커뮤니티 서비스와 이미지 생성, 실시간 처리에 관련된 부분을 개발했습니다.
- 이미지 검색 속도를 8~60초에서 0.1~2초로 기존대비 95% 이상 단축하여 성능을 개선하였습니다.
- 기존에는 이미지 검색시 RDB의 LIKE문을 사용하여 검색하였지만, 검색 프롬포트가 3000만이 넘어가면서부터 지연이 발생했습니다.
- Elasticsearch를 사용하여 검색할 단어들을 인덱싱하여 속도를 단축했습니다.
- 이후에도 데이터가 늘어나면서 성능이 저하되자, 클러스터링을 통해 3개의 분산서버로 나눠 저장하여 평균 검색 속도를 0.6초까지 단축 시켰습니다.
- CLIP 모델을 사용하여 이미지와 사용자 활동 추이를 벡터화 시켜 맞춤형 추천 시스템을 개발했습니다.
- 벡터 데이터를 Elasticsearch에 저장후 코사인 유사도를 통해 추천을 해주는 방식을 사용했습니다.
기술 키워드: Python, Elasticsearch, Redis, socket.io, postgresql, docker
Swit for MS Teams
(주)스윗코리아
2022.06. ~ 2022.10.
챗봇을 활용하여 Swit 서비스와의 연동을 구현하고, MS Teams 챗봇에서 Swit의 모든 기능을 이용 가능하도록 개발했습니다.
- Swit의 유저 Active 상태값을 Hook을 활용하여 MS Teams의 유저 상태값과 동기화하고, 유효 기간이 1일인 MS Teams의 API 키를 관리할 수 있도록 개발했습니다.
- 스케쥴러를 활용하여 최근 사용 내역이 있는 유저를 기준으로 토큰을 재발급하여 Swit에서 존재하는 모든 프로젝트나 업무 카드들을 MS Teams와 완벽한 Sync를 이루도록 개발했습니다.
- 챗봇 응답 속도를 5~10초에서 2~4초로 이전 대비 60% 단축하여 성능을 개선 했습니다.
- 중복적인 쿼리 요청과 Swit 내부 서버와의 통신을 최적화하기 위해 챗봇 응답 서버 프래임워크를 커스터마이징 했습니다.
- 개선된 프래임워크에서는 하나의 요청이 들어올 때 Context 개념을 사용하여 user 조회 빈도수를 줄이고, 불필요한 중복 통신을 최소화 했습니다.
시행 착오
MS 독스의 부족한 기능 설명과 업데이트 어려움으로 개발 진행에 어려움이 있었습니다.
그로인해, 챗봇 프래임워크의 동작 원리를 이해하기 위해 MS 기술팀과 화상 통화를 시도하였으나 해결되지 않았습니다.
다양한 시행 착오를 통해 MS 독스의 한계를 극복하고, 직접 프래임워크를 분석하여 동작 원리를 이해하고 개발하는 도전을 해봤습니다.
기술 키워드: Express, MySQL, Golang
자격증
정보 처리 기능사
한국산업인력공단
2019.07.
대외활동
SW 마이스터고등학교 연합 해커톤
카카오 대표이사상
2019 공개 SW 미니 해커톤 우수상
정보통신산업진흥원
제 6회 SW 융합 해커톤 대상
과학기술정보통신부 장관상
자바 개발자 심화 교육 해커톤 우수상
제주경제혁신센터