미리보기
기본 정보

꾸준함을 최고의 가치로 생각하며 경험을 통해 성장하는 것을 즐깁니다.
기술 스택
Java, JavaScript, Spring Boot, MySQL, websockets, Kafka, Redis, React, React Native, AWS, Git
경력
(주)한국리서치
프리랜서 개발자 | TF
2022.10. ~ 2023.01. (4개월)
한국 저작권 보호원과 한국리서치에서 진행하는 해외 한류콘텐츠 침해 실태조사 프로젝트에 크롤링 개발자로 참여하였습니다.
약 30,000개의 해외 불법 콘텐츠 제공 사이트중 크롤링이 가능한 최소 1,000개 사이트에서 한국 콘텐츠 유출 빈도 데이터를 수집하는 프로젝트 입니다.
적은 시간내에 최대한 많은 사이트를 크롤링 해야했기 때문에 개발자 한명 당 크롤링 로직을 작성하는 시간을 최소화 하는것이 주 미션이었습니다.
기존 파이썬으로 한땀한땀 작성하는 로직을 javascript기반의 crawlee 프레임워크를 이용해 비즈니스 로직 계층을 추가 구현하여 css selector를 넣어주는 것만으로 크롤링 코드가 완성되도록 개발하였습니다. 이를 통해 한 시간에 한 개 사이트 크롤링 코드를 생산해내던것을 평균 20분에 한개 사이트 크롤링 로직을 생산하도록 개선하였습니다. 따라서 추가 인력이 투입되더라도 온보딩 하는데 하루면 충분하였습니다.
기존에 docker를 이용하여 크롤링 작업자의 컴퓨터에서 크롤링 프로그램을 돌리던것을 클라우드를 이용하여 동시에 30개 가량의 크롤링 로직을 처리할 수 있도록 설계 및 구성하였습니다. 이에 따라 하루에 5~7개 크롤링이 되던것이 자동화되어 15개 이상 사이트를 크롤링 할 수 있었습니다. 따라서 1인당 생산성이 약 3배 증가하였습니다.
크롤링 작업자들이 크롤링 완료 후 크롤링 소스코드를 클라우드 서버에 배포하고 서버에서는 배포된 작업을 대기열 형식으로 처리 할 수 있는 서버를 설계 및 개발하였습니다. 비용문제로 메시지 브로커를 사용하진 못했지만 여러 크롤링 작업 서버에서 안전하게 작업을 pull 할 수 있도록 PostgreSQL의 락을 이용한 크롤링 작업 Queue를 구현하였습니다.
주식회사코드스토리
팀원 | 개발/R&D
초기 스타트업에서 사업 방향성을 잡기 위한 데모 소프트웨어를 개발 및 연구하였습니다.
메타스쿨 - 가상 공간에서 수업을 진행할 수 있는 툴
- 1:N 영상 스트리밍 방식을 연구하고 데모 소프트웨어 개발 (https://bit.ly/sfuffff)
- 수업 공간에서 채팅할 수 있는 채팅 서버 개발
- Jenkins를 이용한 언리얼 데디케이트 서버 CI/CD 인프라를 구축하여, 개발자의 PC에서 패키징 이후 USB로 실행 파일을 옮기는 방식에서 중앙 빌드서버에서 빌드 후 다운로드 할 수 있는 방식으로 변경 해 생산성을 높였습니다.
프로젝트
마진킹
개인/기타
2024.01. ~ 진행 중
마진킹은 MAU 4,100명까지 성장하였고 가파른 성장세를 보이고 있는 프로젝트 입니다.
이해관계자와의 모든 소통을 담당하고 있습니다.
400만건+ 거래 내역을 0.5초 이내로 조회할 수 있도록 데이터베이스 쿼리 최적화
블록체인 상에서 일어나는 모든 트랜잭션 기록을 주기적 수집/가공
암호화폐 매매를 주 컨텐츠로 하는 유튜브 스트리머의 선물거래 포지션 정보를 추적하는 기능 구현
스트리머 화면을 캡쳐하고 Google Cloud Vision의 OCR을 통해 해당 스트리머의 포지션을 실시간으로 추적합니다.
초당 0 ~ 100+건 이상의 실시간 데이터를 웹사이트 화면에서 안정적으로 렌더링 합니다.
리액트의 렌더링 프레임보다 빠른 수신으로 인해 대기열 기반의 안정적인 렌더링 시스템을 설계하였습니다.
거래 체결 데이터는 데이터베이스에도 적재되며 400만건+ 데이터를 안정적으로 적재 및 조회하고 있습니다.
마시멜로우
(주)프롬디언노운
2024.03. ~ 진행 중
초기 서비스의 백엔드 담당
초기 서비스의 리소스 할당을 위한 QPS 산출
ECS를 통한 dev, staging, production 서버 분리
AWS 네트워크 설계
Github actions를 통한 CI/CD
로또투어
(주)프롬디언노운
2024.02. ~ 진행 중
주변 로또 판매점을 보여주는 앱 서비스 입니다.
초기 서비스부터 운영까지 맡고있으며
로또투어에서는 React Native를 주로 개발하였고 백엔드는 일부 파트만 담당하였습니다.
백엔드
주변 판매점을 조회하는 API의 성능을 개선하였습니다.
EC2와 nGrinder, Pinpoint를 이용하여 TPS를 확인하였고, 당시 유저들의 서비스 유입량과 MAU를 확인하여 적정 TPS에 못미치는 점을 확인하였습니다.
인스턴스 스펙이나 데이터베이스 스펙을 올리는 방법이 제일 쉬운 방법이었지만 비용 문제로 인해 배제하였습니다.
특정 좌표에서 SQL 함수 ST_Distance_Sphere를 이용하여 데이터베이스에 저장된 범위 내 판매점을 검색했었습니다. 이 경우 Table Fullscan이 발생했습니다.
MBRCONTAINS를 이용하여 가상 바운딩박스를 만들고 좌표를 검색하는 방식으로 변경하였고 이 경우 실행계획에서 index range scan으로 탐색하는 것을 확인했습니다.
결과적으로 해당 API에서 41.2 TPS -> 101.1 TPS로 6,000개 데이터 조회 쿼리 성능이 약 2.4배 개선되었습니다.
React Native
FlatList의 성능을 개선하였습니다.
네이버 지도 라이브러리를 수정하여 마커 이미지를 변경할 수 있도록 개선하였습니다.
애드몹 연동
블로그부스터
(주)그로우부스터
2022.11. ~ 2023.06.
네이버 블로거를 위한 SaaS 프로젝트를 네이버 블로거와 협업하여 개발한 프로그램 입니다.
현재는 담당하지 않으며 해당 프로그램의 개발 및 유지보수를 담당하였습니다.
- 레거시 서비스를 인계받아 레거시 시스템 개편
포트폴리오
교육
동탄고등학교
고등학교 | 이과
2016.03. ~ 2019.01. | 졸업
대외활동
비동기 서버 프레임워크 armeria contribute
LINE
2022
라인에서 관리하는 오픈소스 프레임워크인 armeria에 기여하였습니다.
- 전역 예외 처리를 사용하지 않는 경우 간단한 fallback을 이용할 수 있도록 기능 추가
- 다중 예외 발생 시 옵션값에 따라 스택 트레이스 출력 라인수를 조절 할 수 있는 기능 추가
Junction X Hackathon 2021 Microsoft Track 3등
Junction
2021
Microsoft에서 제공하는 툴을 이용해 미팅 기록 서비스를 만들었습니다.
PowerAutomate를 이용해 팀즈로 기록된 미팅 영상에서 회의 내용을 추출하여 Power BI로 시각화 할 수 있도록 개발하였습니다.