Tradehelper.pro (Cryptocurrency works)

Introduce

Tradehelper.pro 서비스는 암호화폐(가상화폐, 가상자산등으로 통용되지만 암호화폐라는 명칭으로 통일하겠습니다) 트레이딩과 관련된 서비스를 제공하기 위한 일종의 브랜드였습니다. 기존 암호화폐 거래소 트레이딩 경험이 있었으며, 프로그래밍 스킬로 충분히 활용이 가능하기에 기존의 불편한 암호화폐 거래소들의 사용성 개선에 집중하였습니다.
Tradehelper.pro는 확장도구를 지우지 않은 사용자들의 보안을 위해 도메인은 유지중이지만, 현재 운영이 중단된 상태입니다.

Works

Browser Extension

Github Repository : Exists(Private)
<스크린샷 첨부하세요>
SPA구조의 애플리케이션
웹소켓 분석을 통한 데이터 재가공
암호화폐 거래소들의 소스코드 확인을 위한 webpack 역공학 툴을 이용한 재분석

Usage Stacks

Frontend
Vue2
Webpack
SASS
Backend
Serverless Framework

Frontend

대략 1년에서 1년 반가량 개발 및 운영하였으며, 기존에는 단순히 단축키 숏컷을 추가/삭제하는 형태였지만, 공지사항 알림, 기존 거래소들이 제공하지 않던 브라우저 제목 변경 기능과 같은 사용자의 니즈가 필요했던 기능들에 대해 지속적으로 개발/관리하였습니다.
프론트엔드 툴로는 Vue2와 Webpack을 이용하였으며, CSS 프리프로세서로는 SASS(SCSS)를 이용하였습니다.
버의 리소스를 줄이기 위하여 tree shaking기법을 이용한 번들링 툴 이용시 용량 최적화를 진행해본 경험이 존재합니다.

Serverless

Node.js를 이용한 백엔드
Amazon Web Services의 Free Tier를 이용하여 서비스 비용 절감을 목적으로 Serverless 형태 채용
개발 러닝커브를 빠른시일내로 줄이고자 Serverless Framework 이용
해당 서비스는 차후 파일 유출이 발생할 경우 이를 확인하고 분석하기 위하여 일종의 라이센스 서버로써의 운영이 목적이였습니다.
브라우저 확장도구를 지속적으로 유지보수하며 V3이라는 버전을 준비하면서 라이센스와 관련된 기능 개발이 필요하여 Amazon Web Service의 Free Tier 제공과 저렴한 가격으로 서비스가 가능한 Serverless 형태의 앱 호스팅을 이용하였습니다.
자세한 내용은 당시의 개발 과정을 적었던 블로그 게시물을 참조해주시기 바랍니다.
AWS의 Lambda를 통해 리퀘스트 처리, S3을 이용한 파일 관리, DynamoDB를 이용한 데이터베이스 운영을 통해 서버리스로 월 최대 1~3달러 수준으로 70명 수준의 실 사용자들에게 매일 5000번 넘는 파일 리퀘스트에 맞추어 서비스를 배포/운영할 수 있었습니다.

Electron Application

Backend Application 없이 Electron과 Javascript Worker만을 이용한 모든 데이터의 비동기 수집/처리
Worker로 연산작업이 많은 기능별로 스레드 분리
사용자 환경에 따라 초당 최소 6개의 리퀘스트를 단일 어플리케이션으로 소화 가능
Svelte와 Bundler인 Rollup의 사용
해당 스택은 해당 어플리케이션 개발 뒤부터 더이상 사용하지 않아 포트폴리오에는 서술하지 않았습니다.
거래소의 모든 시세와 호가별 시세, 그리고 거래소의 입출금 현황등을 불러오고 정제하여 사용자에게 제공해주는 프로그램입니다.
개인 사용 용도로 제작 및 운영, 메모리 최적화 및 성능에 최우선 집중하여 개발을 진행했습니다. 개발기간은 약 1달정도가 걸렸으며, 처음 시도해보는 SvelteRollup으로 개발기간이 다소 지연되었지만, 메모리 누수 및 기타 문제없이 작동하는 애플리케이션을 보면 선택에 있어서 다행이라고 생각했습니다.
해당 애플리케이션의 경우 배포한적이 없으며, 외부 소스코드 공개의향도 없습니다.

Typescript Library

Class 형태로 되어있는 한국 암호화폐 거래소들의 API Wrapper
계정 잔고/입출금/주문/주문취소등 공통된 기능에 대한 통일화를 목표로 작업을 진행함
지속적으로 필요가 있을 때 수정중에 있음