상세 컨텐츠

본문 제목

Project M-TOD

카테고리 없음

by Martin52 2019. 12. 12. 22:24

본문

프로젝트 노션 링크 : https://www.notion.so/martin52dev/M-TOD

 

M-TOD(Mobile-Tickets On Demand) / T3 (Team Token Ticket )

1. About

www.notion.so

 

M-TOD Project mobile rendering 화면

 M-TOD (Mobile-Tickets On Demand) 프로젝트는 승진님, 태중님, 호준님 그리고 MetaSchema 기업과 협업 프로젝트로 진행했다. M-TOD 프로젝트는 블록체인, 스마트 컨트랙트를 이용한 K-POP 콘서트 스마트티켓 모바일 앱 개발 프로젝트다. 인터넷으로 콘서트 티켓을 구입하면 고객이 종이티켓으로 받는 대신 핸드폰 어플리케이션을 통해 받게 해주는 전자 시스템을 구현하는 프로젝트이다. 콘서트 티켓을 종이티켓으로 받는 경우 배송 및 구매자가 콘서트에 가기 전 과정에서 분실 및 훼손이 있을 수 있고 종이로 만들어지기 때문에 암표의 발생위험이 있다. 스마트 티켓을 이용해 발급을 해주면 분실 및 훼손을 방지할 수가 있고 핸드폰 인증을 통해 티켓을 제공하기 때문에 구매자만 사용할 수 있도록 설정을 할 수가 있다. 또한 티켓을 발행하고 배송하는 과정, 환불하는 과정에서 드는 비용을 줄일 수 있다는 아이디어를 기업측에서 제시, 프로젝트를 진행하였다. 

 

 나와 승진님이 백엔드를 맡아 진행을 하였고, 태중님, 호준님이 프론트를 맡아 진행을 해주셨다. MetaSchema 우제근 대표님께서 Product Manager를 맡아 프로젝트를 관리 해주셨다. 프로젝트 특성상 프론트엔드는 React-Native를 이용해 어플리케이션 개발을 진행했고 백엔드는 이전에 사용하지 않은 프레임워크인 Koa와 MongoDB, Mongoose(ODM)를 이용해 서버, 데이터베이스를 구축했다. Koa는 ES6를 도입해 ES6 generater를 사용할 수 있다는 특징이 있고  Koa는 Koa만의 모듈을 사용한다는 특징을 가지고 있다. MongoDB는 NoSQL Database로 문서지향적인 데이터베이스다. 스키마가 없어 잘못된 정보를 입력해도 다 들어간다는 문제를 방지하고자 ODM(Object Document Mapping)인 Mongoose도 같이 사용을 하기로 결정해 진행했다. 프로젝트 특성상 사용자의 정보를 다른 사람이 사용하지 못하는 방법이 중요했기 때문에 메일인증과 JWT, Node.js 내장 모듈인 Crypto를 이용해서 사용자 정보를 보호, 관리했다.

 

 개인적으로 팀장을 맡아 애정과 책임감을 많이 가지는 프로젝트였다. 새로운 스택을 배우고 적용하는 스킬을 향상시키고 여러 가지 문제들을 생각해 볼 수 있는 프로젝트였다. 리액트 네이티브를 빌드하는 과정에서 시간이 오래걸리는 이슈가 있었고 필요하지 않는 모듈들을 지우고 프로그램 자체를 가볍게 만들어 이를 개선해보았다. 모바일 어플리케이션은 테스트를 위해 안드로이드 스튜디오를 사용하게 되었는데 스튜디오 프로그램 자체가 무게가 있는 프로그램이라 테스트하는데 어려움이 있었고, 스튜디오 베이스 언어가 Low-Level의 언어로 이루어져 있어 초기 세팅 단계에서 시간이 많이 소모되었다. 백엔드의 경우엔 새로운 스택을 사용하는 어려움이 있었지만 여러 Reference들을 찾아 참고하면서 진행을 했고, 문제들을 해결해 나갈 수 있었다. 기본적으로 Koa 자체가 이전에 사용한 프레임워크인 Express와 크게 다르지 않아 처음 사용을 하는 과정 이후에는 빠르게 스택을 사용하고 적용할 수가 있었다. 백엔드에서 이전 프로젝트와 달리 view적으로 개선을 하는 방향을 많이 시도해 볼 수 있었다. 이전 프로젝트의 경우 서버에서 view적으로 값을 보기가 어려웠지만 이번 프로젝트에서는 메인페이지에서 티켓을 발행하는 콘서트들을 보여줄 수 있도록 시도해 보았고, 핸드폰 액정이 깨지거나 고장이 났을경우 고유번호를 구매자가 알고 있으면 바코드를 서버에서 rendering해 콘서트장 staff가 체크할 수 있도록 하는 방안을 추가적으로 시도해 보았다. 

 

M-TOD Deploy Server Url: http://54.180.100.59:5000/

 

Meta T3

 

54.180.100.59:5000

Project 사용 스택 

Front-end: React-Native, React Navigation, Native-Base

Back-end: Node.js, Koa, Mongoose(ODM), MongoDB, TypeScript, JWT