Backend Web Developer
유저의 관점에서 서비스를 만들어가는 백엔드 웹 개발자입니다.
백엔드 위주의 경력을 가지고 있지만 백오피스 수준에서는 프론트엔드 개발도 가능합니다.
정해진 일을 해내는 안전한 회사보다 힘들더라도 책임감을 가지고 일할 수 있고 제 의견이 유의미하게 반영될 수 있는 회사를 선호합니다.
멈춰있지 않고 새로운 기술에 대해 동료들과 계속 토론하면서 배워나가는 것을 좋아합니다.
내가 하는 일에 항상 "왜?"를 고민하려고 노력합니다.
Tech Stacks
Django + Django Rest Framework
개발 문서를 참고해서 원하는 기능을 개발할 수 있습니다.
JS, Svelte, React
JS를 이용한 프로젝트 경험이 있습니다.
Svelte, React를 이용한 프로젝트 경험이 있으며, Back office 수준의 웹은 개발 문서를 참고하면서 개발할 수 있습니다.
Git
대부분의 프로젝트에서 Git을 이용한 버전 관리를 사용합니다.
Git을 이용한 Open source contribution 경험이 있습니다.
Github Actions를 통한 CI/CD 파이프라인 구축 경험이 있습니다.
Docker & k8s
대부분의 웹 서비스 프로젝트에서 Docker를 사용합니다.
Kubernetes 환경에서 애플리케이션을 배포, 관리할 수 있습니다.
Projects
Educations
울산과학기술원(UNIST) 컴퓨터공학과 학사 (2015.03. ~ 2022.08.)
Career
(주) 커널로그 (2022.09. ~)
Backend Engineer
•
Backoffice 웹 풀스택 개발 (Fastapi, React)
◦
태양광 패널에 장착된 장치의 상태를 display하는 기능 개발 (React, Fastapi, Redis, MongoDB, Websocket)
◦
작업 시간 동안 발생하는 전력 차단에 대해 유저에게 발송되는 alert가 발행되지 않도록 하는 기능 개발
◦
패널에 장치 설치 이후 데이터 수신율, 전압, 전류, 온도를 확인할 수 있는 기능 개발
▪
수신 보드를 통해 받던 raw data를 패널 위치와 함께 시각화해서 보여줌으로 위치에 따른 문제 원인 파악에 도움을 줌
•
장치 설치를 위한 안드로이드 앱 개발 (Kotlin)
◦
패널의 위치와 장치 ID(장치에 붙어있는 QR code를 scan해서 가져올 수 있음)의 매핑을 위해 이전까지 google sheet를 이용해서 관리를 했었음.
◦
Android 애플리케이션을 개발해서 QR code scan과 db update를 자동화함
•
발전 상황 경보 시스템 개발 (Python)
◦
패널, 인버터, 발전소 등 발전 구성 요소에서 이상 징후가 발견되면 alert를 발생하는 경보 시스템 개발
•
발전 상황 대시보드 개발 (Go, Prometheus, Kubernetes)
◦
각 유저에게 본인 소유의 발전소의 발전 상황을 보여줄 수 있도록 기존의 Web app을 대체하는 Grafana dashboard를 구성
◦
해당 과정 중 태양광 패널별 전압, 전류 등의 metric 수집을 위해 Prometheus exporter를 Go를 이용해 개발했고, k8s 환경에 배포되어 동작 중
(주)퓨리메디 (2021.08. ~ 2022.09.)
Software Engineer
•
직무 구분은 없었으나 주로 백엔드를 담당.
•
대사체 기반 암 진단 소프트웨어 Canaria 개발 참여
◦
암 진단 모델 서빙을 위한 API 서버 구축 (Django Rest Framework)
◦
대사체 기반 암 진단 및 분류 머신러닝 모델 개발
•
사내 인프라 구축
◦
사내 개발 Infrastructure 세팅 (AWS, Github Actions, VPN, 물리 서버 구축 및 docker 서비스 관리)
◦
Unit test 도입, CI/CD를 통해 테스트 및 배포 자동화
◦
사내 커뮤니케이션 서비스 정착 (Slack, Google Workspace)
(주)버즈니 (2018.08. ~ 2020.11.)
Data Engineer
•
홈쇼핑 매출 데이터의 ETL을 담당.
◦
여러 홈쇼핑사의 admin service 또는 API에서 데이터를 추출
◦
쇼핑사에 관계 없이 동일한 포맷으로 조회할 수 있도록 데이터 변환 및 저장
◦
해당 데이터는 수수료 정산 및 자주 구매되는 상품 통계 추출에 사용됨
◦
기존 수집 서비스 개선
▪
수집 실패시 failover 기능 추가
•
기존 서비스는 수집 실패시 해당 기간의 매출 데이터를 수집하지 못해서 제휴팀의 요청을 받아 개발자가 직접 실행하는 방식으로 데이터를 보충해주어야 했음.
•
수집 실패 원인에 따라 일정 시간 delay 후 재시도 하도록 함
◦
제휴팀을 거치지 않고 자동으로 재시도하기 때문에 운영 비용이 감소함.
◦
이후에도 실패할 경우 slack webhook으로 에러 발신하고 관리자 페이지에서 바로 확인할 수 있도록 함으로 문제 원인을 더 빠르게 찾을 수 있도록 함
▪
관리자 페이지 추가
•
이전에는 홈쇼핑사의 admin 페이지 계정 정보가 변경되면 개발자에게 문의해서 하드코딩 되어있는 계정 정보를 수정 했어야 했음. 제휴팀 담당자 → 개발자로의 커뮤니케이션 비용 발생
•
담당자가 바뀐 계정 정보를 바로 수정할 수 있도록 DB와 웹서비스로 관리 → 담당자가 바로 수정할 수 있어서 잘못된 계정 인증 정보로 인한 수집 중단이 없어졌고, 커뮤니케이션 비용도 감소함
•
사내 통계 서비스의 유지 보수 담당.
•
로그 수집 서비스 개발
◦
기존 로그 서버에서 user action group별로 묶어서 더 추상화된 유저 동작 로그 생성
◦
예를 들어 여러개로 나누어져있는 제품 detail page 접속 로그를 /click/viewitem 로그로 묶어서 기간별로 aggregation 및 저장
•
홈쇼핑 트렌드를 보여주는 서비스를 개발하는 모아리포트팀에서 풀스택 개발함.
◦
서비스 API 개발 (Django Rest Framework), 초기 프론트엔드 개발 (React)
작업물
◦
메일링 서비스에 사용되는 모아 차트 (월간 홈쇼핑 구매 트렌드 차트) 생성 자동화
▪
기존에는 디자인 툴(Sketch)을 이용해서 매 월 직접 만들어야했지만 로그 데이터를 월 단위로 aggregation해서 생성된 API를 이용해서 자동 생성하도록 만들었습니다. (React)
작업물
◦
메일링 서비스(zazu)를 위한 관리 서비스 개발 (백오피스, Django, Dockerized)
▪
메일로 보낼 파일의 다운로드 링크를 관리하고 어떤 유저가 다운로드 했는지, 일간 다운로드 횟수가 어떻게 변하는지를 추적할 수 있습니다.
▪
내부 서비스이고 민감한 정보가 포함되어있으므로 작업물 화면은 포함하지 않습니다.