Search

안녕하세요, 민초로 입니다 👋

crmin@superclass.io
 github.com/crmin
 blog.superclass.io

Backend Web Developer

유저의 관점에서 서비스를 만들어가는 백엔드 웹 개발자입니다.
백엔드 위주의 경력을 가지고 있지만 백오피스 수준에서는 프론트엔드 개발도 가능합니다.
정해진 일을 해내는 안전한 회사보다 힘들더라도 책임감을 가지고 일할 수 있고 제 의견이 유의미하게 반영될 수 있는 회사를 선호합니다.
멈춰있지 않고 새로운 기술에 대해 동료들과 계속 토론하면서 배워나가는 것을 좋아합니다.
내가 하는 일에 항상 "왜?"를 고민하려고 노력합니다.

Tech Stacks

Python

파이썬을 이용한 많은 프로젝트 경험이 있습니다.
파이썬을 이용해서 원하는 기능을 개발할 수 있습니다.
Zen of Python을 따르려고 노력합니다.

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)
메일로 보낼 파일의 다운로드 링크를 관리하고 어떤 유저가 다운로드 했는지, 일간 다운로드 횟수가 어떻게 변하는지를 추적할 수 있습니다.
내부 서비스이고 민감한 정보가 포함되어있으므로 작업물 화면은 포함하지 않습니다.