Learn, Find, Figure Out

STARTERGATE / 최호승

me@startergate.dev

백엔드 엔지니어

게임 개발자

Backend Engineer

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


서버에서 돌아가는 프로그램을 만듭니다. 직접 해야할 때는 모바일 앱이나 웹 앱도 직접 만듭니다.
컴퓨터에는 항상 관심이 많았습니다. 초등학교 때에는 컴퓨터 방과후를 다녔고, 중학교 때에 생활코딩으로 코딩을 시작했습니다.
코딩에 관심이 많아져서 고등학교는 소프트웨어마이스터고로 진학했습니다.
항상 변화하며 새로운 것을 시도합니다. 새로운 것은 항상 더 나은 것이라 생각합니다.
광주소프트웨어마이스터고등학교 소프트웨어개발과
HTTP, TCP 같은 웹 이론 및 HTML & CSS 학습
과목 산출물 프로젝트 진행
웹 개발 동아리 빈실 부장
Node.js
Node.js 8부터 시작, TypeScript와 함께 사용 중
Apollo + Koa로 GraphQL 개발 경험
다양한 종류와 규모의 프로젝트 개발
Python
Django와 챗봇 개발을 위해 사용
알고리즘 문제 해결을 위해 사용
파이썬 백엔드 개발 현장실습 경험, 배포된 코드 작성 경험
빈실
학교 내부에서 사용되는 서비스를 개발하는 동아리
TypeScript, Node.js, Koa.js 사용
테스팅, 문서화, 스프린트 개발 경험

Game Developer

인디 게임 개발자입니다. 경험을 만듭니다.


다양한 장르의 게임을 만듭니다. 플랫포머 게임을 출시해봤고, 여러 프로젝트를 준비하고 있습니다.
대부분의 10대 남학생이 그렇듯, 게임을 좋아합니다. 초등학생 때는 넥슨 게임을 해왔고, 중학교 이후로는 패키지 게임에 빠졌습니다.
여러 게임을 해보다 보니 직접 만들어보고 싶다는 생각이 들었습니다. 그래서 고등학교 1학년에 유니티 방과후를 들었습니다.
방과후에서 배운 지식을 바탕으로 고2 때에 Tiny Beluga라는 동아리를 만들고, 친구들과 함께 Lost라는 게임을 개발하고 출시했습니다.
여러 장르를 시도합니다. 처음으로 출시해본 게임은 2D 플랫포머였고, 좋은 아이디어만 있다면 다양하게 만들어보고 있습니다.
Unity
게임 개발 동아리 Tiny Beluga에서 사용 중
개발한 게임 Steam 출시 경험
Unity Teams 활용한 협업 경험
Unreal Engine
게임 프로토타입 개발에 사용 중
언리얼 엔진과 서버를 연결하여 통계 내주는 서비스 개발
열심히 공부 중...
Tiny Beluga
인디 게임 개발 동아리
Unity 사용한 2D 플랫포머 게임 개발 / 출시 경험
차기작 얼심히 구상 중...

Project Highlights

startergate
DOTORI
GSM 기숙사 관리 시스템
TypeScriptServer
DoNote V
TypeScript로 다시 만드는 DoNote
TypeScriptServer, Web Application
Eliverd
Deliver Your Life, Eliverd. 모두를 위한 배달 서비스
PythonServer
HIVE
영화 정보 크롤링 사이트
JavaScriptServer
See More...

Technologies

startergate

Using

Learned / Used

Learning / Interested

Résumé

Education

Experiences

FETCHING
서울특별시 서초구2020.12 ~
백엔드 엔지니어
피플펀드컴퍼니
서울특별시 강남구2020.01 ~ 2020.02
백엔드 엔지니어 (현장실습)
계정 인증 미들웨어 및 일부 기능 리팩토링

Activities

Conferences
글로벌 비즈쿨 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
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 빈실

DoNote V

TypeScript로 다시 만드는 DoNote
TypeScriptNode.jsKoa.jsMySQLAWS EC2
2019년 8월 9일개발 중
What is DoNote V?
DoNote V는 PHP로 만들어진 메모 웹 앱, DoNote를 React와 Koa.js로 새롭게 리팩토링하는 프로젝트이다. 데이터베이스는 기존의 모델을 그대로 사용하고 있다. 기존 기능을 모두 계승하고, 새롭게 개발된 React 코드를 바탕으로 데스크탑 앱도 만든다.
레거시와 함께하는 프로젝트
이 프로젝트는 기존의 데이터베이스를 유지하고, PHP로 구현됐던 프론트와 백엔드를 다시 구현하는걸 목표로 하고 있다. 기존의 DoNote의 데이터베이스 모델은 내가 코딩을 막 시작했을 때 만든거라서 굉장히 특이하고 이상한 구조로 되어 있는데, 각 유저마다 테이블을 하나씩 만들어 준다. ORM을 사용할 수 있는 상황에서는 굉장히 좋지 않은데, 데이터베이스를 자동으로 관리하기 어려워진다는 것이다. 때문에 장기적으로 데이터베이스 구조를 변경할 계획을 세우고, DB Sync는 유저가 로그인 할때마다 유저에 관련된 테이블에 수행하기로 했다.
TypeScript로 넘어가기
이 프로젝트는 학교 프로젝트나 협업 프로젝트들 때문에 미뤄서 진행했는데, 그 사이 내가 사용하는 언어들도 좀 바뀌었다. TypeScript를 사용하게 되었는데, 한 번 사용해보니까 다시 돌아가지 못할 만큼 편했다. 벡엔드가 다 완성되고 프론트가 개발 준비 중인 상태에서 이렇게 되어서 백엔드를 TypeScript로 변경하기로 했다. 변경 작업은 쉬운 편이었는데, 유일하게 Sequelize.js 로 짜여진 데이터베이스 모델이 바꾸는데 시간이 제일 오래 걸렸다. Sequelize를 TypeScript에서 사용하기 위해서는 모델 생성 코드와 함께 Static Type과 Interface를 생성해줘야 하는데, 이를 전부 수작업으로 해줘야해서 실수도 많이 있었고, 시간도 많이 걸렸다. 다음부터는 TypeORM을 사용하는게 더 적합할 것 같다는 결론에 도달했다.

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를 활용했다. 이 때 온라인으로 많은 부분을 정해둘 수 있었기에 등교 개학 후에도 빠르게 개발할 수 있었다.
영화 정보 크롤링 사이트
JavaScriptNode.jsExpress.jsMySQLAWS EC2
2019년 6월 25일15일2019년 7월 10일
What is HIVE?
HIVE는 영화 정보 통합 조회 서비스이다. 네이버, 왓차피디아, IMDB, 로튼토마토의 평점을 보여주고, 넷플릭스와 왓챠에서 시청할 수 있는지 알려준다.
Promise Hell
서비스 특성 상 수많은 웹 크롤링에 의존해야 했었는데, 이 과정 자체가 시간이 굉장히 많이 걸리는 일이었다. 특히나 한글 제목으로 영어 제목도 찾아서 같이 조회했어야 하는데, 이 때문에 실행 순서가 정해지게 되었다. 이를 효율적이고 좀 더 빠르게 해결하기 위해서 수많은 Promise를 사용한다. 프로젝트를 진행하며 JavaScript Promise, async/await에 대해 더 자세히 알 수 있었다.
© 2022 Ho Seung Choi a.k.a. startergate, Built with , Hosted on Pages