Construct [ᅠᅠᅠᅠᅠᅠᅠᅠ]

STARTERGATE / 최호승

백엔드 엔지니어

me@startergate.dev

Backend Engineer

백엔드 엔지니어입니다. 눈에 보이지 않는 걸 만듭니다.


서버에서 돌아가는 프로그램과 그와 연결되는 프로그램을 만듭니다.
경험
MAU 75만명을 처리하는 백엔드 서버부터 일 500만건 규모의 크롤링 시스템, 4대 규모의 데이터베이스 클러스터 운영, 이를 운영하는 클라우드와 온프레미스 여러곳에 분포된 인프라와 사내 네트워크 구축 및 관리까지 다양한 업무를 경험했습니다.

학생 시절부터 개발 공부를 시작하여 약 9년의 개발 경험, 5년 3개월의 현업 경력이 있습니다. 백엔드 개발부터 그와 연관된 프론트, 인프라, CI/CD도 개발한 경험이 있고, 프로젝트의 전체적인 아키텍처를 설계한 경험도 여럿 있습니다.

서비스를 운영하며 비용 절감, 크레딧 활용, 특정 서비스의 필요 등의 목적을 충족시키기 위해 아마존 웹 서비스, Google Cloud Platform, 네이버 클라우드 플랫폼 등의 다양한 클라우드 서비스를 혼합하여 서비스 구현 및 운영하였으며, 이로 인해 발생하는 비용이나 제한 사항들을 경험했습니다.

페칭에서 서비스를 개발 및 운영하며 동료들은 물론, 베스핀글로벌과 같은 MSP사부터, 스마트로, 포트원, 네이버 쇼핑과 같은 파트너사, 페칭 파트너센터에 입접한 고객사, 과제 진행을 위한 공공기관까지 여러 종류의 외부 기관과 소통 및 서비스 도입, API 연동 등의 다양한 외부 협업을 경험했습니다.
기술 스택
TypeScript 기반으로 Node.js를 사용해서 개발하고 있습니다. 현업에서는 5년 3개월간 근무한 페칭에서 백엔드부터 프론트, 크롤러, 배치 프로그램 등 다양한 부분에 사용했습니다. 서버 프레임워크로는 Nest.js를 사용했으며, 이외에도 Express.js와 Koa.js로 프로젝트를 진행한 경험이 있습니다. 이전에는 피플펀드컴퍼니에서 1개월간 근무하며 실무에서 Python을 사용한 경험이 있으며, Django 웹서버를 개발했습니다.

데이터베이스는 MySQL 기반의 것을 주로 사용하고 있습니다. SQL 쿼리를 직접 짜는 것은 물론 TypeORM을 통해서 사용한 프로젝트도 있습니다. AWS 상에서 읽기 레플리카를 추가한 클러스터를 현업에서 운영해본 경험이 있으며, 이를 AWS Aurora MySQL로 마이그레이션한 후 운영한 경험이 있습니다. 이외에도 DynamoDB, Redis를 현업에서 캐싱 등의 용도로 사용했습니다. 또한 RabbitMQ를 안정적인 시스템 운영 및 태스크 분산 등의 목적으로 직접 서버를 구축하여 AWS SQS와 조합하여 프로덕션 환경에서 운영했습니다.

AWS를 주력으로 사용하고 있으며, GCP, 네이버 클라우드 플랫폼도 현업에서 사용했습니다. Elastic Cloud와 Grafana Cloud 와 같은 클라우드 기반의 외부 서비스와도 AWS VPC Endpoint와 같은 서비스를 통해 비용 효율적으로 연동하여 운영했습니다.

GitHub Action을 통한 CI/CD를 구축하여 프로덕션 환경에서 사용하였으며, AWS SDK를 통한 배포 로직을 구현 및 운영했습니다. 배포된 서비스의 안정적인 운영을 위해서 Sentry, Grafana와 자체 구현 서비스를 통한 클라우드와 온프레미스 모니터링 시스템을 구현하여 Slack과 연동하여 운영했습니다.
FETCHING Admin
페칭 서비스 어드민
TypeScriptFront-end, Back-end
FETCHING Commerce
페칭 커머스 서비스
TypeScriptBack-end, Front-end
DOTORI
GSM 기숙사 관리 시스템
TypeScriptBack-end
Eliverd
Deliver Your Life, Eliverd. 모두를 위한 배달 서비스
PythonBack-end
See More...

Using

TypeScript
JavaScript
Node.js
NestJS
MySQL
MariaDB
AuroraDB
Redis
RabbitMQ
Docker

Learned / Used

Python
C
C++
C#
Java
PHP
Express.js
Koa.js
Django
Django REST Framework
Qt
jQuery
React
MongoDB
Jest

Learning / Interested

Go
Gatsby
Spring

Résumé

Experiences

FETCHINGFETCHING
서울특별시 성동구서울특별시 강남구경기도 성남시
2020.12 ~ 2026.03 (5년 3개월)
백엔드 엔지니어

MAU 75만명을 처리하는 백엔드 서버, 일 500만건 규모의 크롤링 시스템, 주문 및 커머스 컨텐츠 관리부터 회계 시스템을 포함한 다양한 기능의 어드민과 이를 운영하는 인프라와 사내 네트워크 관리까지 다양한 업무를 경험했습니다.사내 어드민, 커머스, 상품 수집 시스템 등 회사의 모든 프로덕트 개발에 참여하였고, 몇몇 프로젝트는 초기부터 담당하여 전체적인 아키텍처까지 직접 설계하고 구축했습니다.

개발한 프로덕트의 운영에도 모두 참여했으며, 비용이 제한된 환경에서 효율적이고 안정적으로 데이터베이스를 운영하고, 자동 빌드 및 AWS 클라우드 환경과 온프레미스 환경에 자동 배포하는 등의 CI/CD를 직접 구축했습니다.
피플펀드컴퍼니(현. 피에프씨테크놀로지스)
서울특별시 강남구
2020.01 ~ 2020.02 (1개월)
백엔드 엔지니어 (현장실습)

고등학교 2학년 겨울방학에 현장실습으로 1개월간 근무했습니다. 계정 인증 미들웨어를 개선했고 및 일부 기능 리팩토링을 진행했습니다.

Education

광주소프트웨어마이스터고등학교
광주광역시2018.03 ~ 2021.01
소프트웨어개발과
글로벌 비즈쿨 CO-TDM 창업경진대회
2018.6최우수상
E-Faucet: 스마트 수도꼭지
GSM 창의알고리즘 콘테스트
2018.4장려상
M2C: Modular Multi Camera
GSM 소프트웨어 개발 경진 콘테스트
2019장려상
The Intersection
GSM 팀프로젝트발표회
2020.9장려상
Eliverd
GSM 전공 동아리 해커톤 대회
2020.9장려상
GSM Pay
정보처리기능사
2019.3한국산업인력공단
TOEIC
2018.8865점

Group Activities

빈실
광주소프트웨어마이스터고등학교웹 개발 동아리
동아리원2018.3 ~ 2020.8
부장2020.1 ~ 2020.8
프로젝트: DOTORI, GSM Pay
Tiny Beluga
광주소프트웨어마이스터고등학교게임 개발 동아리
동아리원2019.3 ~
부장2019.3 ~
프로젝트: Lost
Download CV as PDF
개요
페칭에 근무하며 개발한 어드민 시스템입니다. 이전 어드민부터 시작해서 현재 사용되고 있는 어드민을 새로 개발하는 것에도 참여했으며, 주로 백엔드 작업을 진행했고 프로젝트가 어느 정도 완성되고 난 뒤로는 프론트엔드 작업도 직접 진행했습니다.
커머스 관리
사내에서 구현한 커머스에서 발생한 주문, 취소, 외부 PG사 연동과 같은 결제 시스템과 기획전, 이벤트과 같은 컨텐츠 시스템을 개발하고 운영했습니다. 최초 개발 시점부터 참여했으며 배포 파이프라인 구축과 같은 배포 과정에도 깊이 참여했습니다.
상품 수집 시스템 관리
페칭에서 상품을 수집하는데 사용하는 크롤러, 피드 수집기의 실행 상황을 모니터링하고 크롤링 대상 우선순위 조정 등의 통제를 어드민 상에서 비개발자도 할 수 있도록 하는 시스템을 백엔드와 프론트엔드를 모두 개발하고 운영했습니다. AWS API와 연동하거나, 로컬 서버와 통신하는 등의 과정을 통해서 높은 수준의 관리가 가능한 시스템으로 만들 수 있었습니다.
권한 시스템
어드민에서 수행 가능한 행동을 기반으로 한 권한을 사용자에게 부여/박탈하고, 사용자에게 부여된 권한을 검사하는 시스템을 개발했습니다
DOTORI
GSM 기숙사 관리 시스템
최호승
팀장, 서버 개발 리드
박준영
서버 개발
최연진
서버 개발
정현문
서버 개발
권희준
프론트 개발 리드
김아련
프론트 개발
안채웅
프론트 개발
이진혁
프론트 개발
TypeScriptNode.jsKoa.jsMariaDBAWS EC2
2020년 2월 14일194일2020년 8월 26일
DOTORI 메인 화면
What is DOTORI?

DOTORI는 광주소프트웨어마이스터고등학교 기숙사 관리 및 교내 커뮤니티 역할를 위한 소프트웨어이다. 노트북 예약, 기상음악 신청, 호실 변경 신청 층의 기능을 제공했다. 동아리 빈실의 프로젝트이다.

처음 해보는 것 투성이
DOTORI는 새롭게 시도해보는 것이 정말 많은 프로젝트였다. 유닛 테스트, 문서화, GitHub Action 등 여러 DevOps 들을 도입해봤고, redis, prettier같은 기술을 사용했다. 백엔드 5명, 프론트엔드 6명과 함께하는 프로젝트였고, 많은 협업 인원을 관리하기 위해 스프린트와 git flow를 사용했다. 비록 학교의 동아리 제도 변경으로 인해 프로젝트가 미완성으로 끝나긴 했지만, 지금까지 했던 프로젝트들 중에서 가장 많은걸 배운 프로젝트였다.
Write and Go
DOTORI는 내가 문서화와 테스팅을 처음으로 시도해본 프로젝트이다. 문서화는 OpenAPI 3.0을 따랐고, 테스팅 라이브러리로는 Jest를 사용했다. 둘을 사용하면서 느낀 가장 큰 장점은 일단 개발 기간을 엄청나게 줄여주고, 혼동을 방지한다는 점에 있다고 생각한다. 문서화를 통해서 프론트의 질문을 훨씬 덜 받게 되었고, 테스팅을 통해서 평소라면 찾지 못했을 버그를 찾아내거나 엔드포인트의 개발 효율을 향상시킬수 있었다. 프로젝트의 백엔드 개발이 후반부로 들어간 시점부터는 테스팅을 의무화하여 커버리지를 100%로 향상시킬 수 있었다.
Project Courtesy of 빈실
Eliverd

Eliverd

Deliver Your Life, Eliverd. 모두를 위한 배달 서비스
최호승
팀장, 기획, 서버 개발
박준영
디자인, 모바일 앱 개발
박종효
데스크탑 앱 개발
PythonDjangoMySQLDockerAWS EC2AWS S3
2020년 4월 24일177일2020년 10월 18일
소비자 앱 상품 조회소비자 앱 주문소비자 앱 결제소비자 앱 주문 내역 조회소비자 앱 상품 추천소비자 앱 검색소비자 앱 카테고리 분류소비자 앱 마이페이지상점 앱 상품 조회상점 앱 주문상점 앱 결제상점 앱 주문 내역 조회상점 앱 상품 추천상점 앱 검색
What is Eliverd?

Eliverd는 상점 관리 & 배달 서비스다. 상품 재고 관리, 온라인 몰 운영, 주문, 배달까지 모두 처리해준다.
온라인 판매나 배달 서비스를 모든 소상공인이 사용할 수 있게 하는 것을 목표로 개발했다. 2020년 GSM 졸업 프로젝트였고, 장려상을 수상했다.

구상
Eliverd는 소상공인 드론 배달 서비스라는 아이디어로 시작했다. 2018년 E-Faucet 프로젝트를 마치고 다른 대회에서 해볼만한 아이디어를 구상하던 과정의 일환이었다. 구상을 계속 할수록 규모가 계속 커져갔고, 다른 중요한 프로젝트들도 있었기에 다른 사람과 같이 팀 프로젝트로 진행하기로 구상했다.
처음 해보는 규모
Eliverd는 클라이언트 3개로 구성된 프로젝트다. 각 클라이언트는 개별의 기능을 가지고, API 서버는 하나를 사용한다. 또 기능도 재고 관리, 쇼핑몰, 추천, 주문, 결제, 배송 등을 모두 다뤄야했기에 규모가 크고 복잡해졌다. 이를 잘 해결하기 위해서 무엇이 필수적인지, 무엇을 먼저 해야하는지, 무엇을 없앨수 있는지를 생각했다. 기능이 추가로 생기거나 다른 엔드포인트가 필요해지더라도 기존 리소스를 사용할수 있도록 구상했다. 또한 문서화를 통해서 소통이 늦어지는 문제를 방지할 수 있었다. 이를 통해 프로젝트를 시작할 때 구상했던 기능을 거의 대부분 구현할 수 있었다.
실무적 설계
Eliverd는 졸업 팀 프로젝트로 진행하는 거 였지만 시스템 설계나 기능은 실제 서비스를 목적으로 만들었다. 물론 실무의 수준에는 미치지 못하지만 컨테이너화나 문서화, 그리고 확장성을 어느 정도 고려해서 설계했다. 데이터베이스는 각 상점마다 주문을 따로 전달해주는 비즈니스 로직에 맞춰서 설계되었으며, 카카오페이와 연동하여 실제 사용자의 경험에 가깝게 구현할 수 있도록 노력했다.
'그' 바이러스
원래라면 학교에서 만나서 회의하며 진행했어야 하는 프로젝트였지만, 코로나 19 때문에 온라인으로만 협업을 진행해야 했다. 회의와 의사 소통은 Discord로 진행하고, 코드 협업은 GitHub Issue를 활용했다. 이 때 온라인으로 많은 부분을 정해둘 수 있었기에 등교 개학 후에도 빠르게 개발할 수 있었다.
Lost

Lost

2D 플랫포머 게임
최호승
팀장, 기획, 게임 개발
박종효
게임 개발
정상현
게임 개발
박재홍
QA
오영빈
작곡
C#UnitySteamworks
2019년 3월 8일517일2020년 8월 6일
Project Courtesy of Tiny Beluga

Basterds: Hair Naked

타워 디펜스 게임
최호승
팀장, 기획, 서버 개발, 게임 네트워킹
정민우
디자인, 프론트 개발
최준혁
게임 개발
PythonTypeScriptC++Node.jsDjangoKoa.jsUnreal EngineMySQLAWS EC2
2019년 12월 18일21일2020년 1월 8일
Don't Afraid

Don't Afraid

트라우마 치료 게임
최호승
게임 개발, 게임 런처 개발
김건
개발
김혜연
개발
nightgrow
개발
C#JavaScriptNode.jsUnityElectron
2018년 8월 7일1일2018년 8월 8일