Nodejs 기반으로 blockchain 서비스 개발기

1. Intro

.NET 과 JAVA만 주구장창 10년 넘게 개발을 하다
우연한 계기로 암호화화폐 시장으로 넘어오게 된다.

첫 회사는 흐지부지 끝나고 2번째 회사는 우리나에서 메이저 가상화폐 거래소를 운영하는 회사. 그러나 해당 서비스 개발팀이 아닌 신규 거래소 개발.

일단 모 회사의 솔루션을 사와 커스텀을 하게 된다.

코딩안한지 오래된 PHP기반으로

그러나 blockchain node (eth의 geth 라던가 bitcoin full node..같은)를 다루는건 nodejs.
그리고 가장 중요한 exchange도 nodejs.

전 회사에서 우연찮게 접하게 된 nodejs를 다시 하번 쓰면서 다행이다 라는 생각과 동시에
소스를 까보니 callback 지옥에 빠져 있는 소스..

너무나 모듈화를 싫어하시는 분이 만들었나보다.

그리고 중구난방인 라인들과 하나도 없는 주석...

거진 안정화를 약 1년가까이 주말도 없이 뜯어 고치니 퇴사를 하게 된다.

그 후 현재의 회사에 CTO로 오게되어 현재 시스템을 구축하게 되는데....

일단 Blockchain을 만들 수 있는 머리는 없는지라

이미 천재들이만든 코인기반의 블럭체인을 만져서 응용 서비스를 생각하게 된다.

거래소 보다 현재 제일 핫한 시장인 Wallet 시장.

아키텍처는 이렇다.

앱 -> Rest Api -> Daemon -> blockchain node

조그만한 벤처 회사가 그렇듯이 aws 부터 다 해야 했다.

그리하여 vpc 생성 부터 시작하여 aws 시스템 아키텍처를 그리고
(이 과정에서 최소한 비용때문에 초창기에 그린 그림은 포기. 그나마 보안유지를 하며 최소한의 금액 달에 약 100만원선에서 설계하여 만듬.)

프로그램 시스템 아키테처를 그렸다.

앱은 리액트 네이티브로 외주를 맏기고

Rest Api 는 ES6, KOA2, Babel 7.X 기반으로 만들었고,
Daemon은 ES6, KOA, Babel 7.X, Web3js 등등 으로 만들었다.

첫번째로 다뤄야할 코인은 ETH와 ERC20 코인들 ..
첫 개발시에는 geth를 설치하여 사용을 했지만 ec2 절감과 서버 유지보수를 신경쓰지 않고자 infura 를 이용하여 운영중에 있다.

Database는 AWS에서 가장 많은 비용이 차지하는 RDS의 mysql 8버전을 이용한다.

시스템을 만들면서 겪은 시행착오를 앞으로 기술하고자한다.
나같이 오류를 겪는 사람이 없길 바라면서 개발자들은 구글링을 할테니
내글이 조금이나마 도움이되길 바라며 시간나는 대로 글을 올리고자한다.


댓글

가장 많이 본 글