웹 플랫폼을 이루는 기술

in tokenxt •  6 years ago 

안녕하세요! 초기 블록체인 후원 플랫폼, 토큰넥스트입니다.

저희 토큰넥스트는 지난 10월 30일 열린 ABF 2018행사에서 토큰넥스트를 공개하였습니다.
탈중앙화된 ICO 플랫폼으로서 어떤 기술로 만들어졌는지 공유하고자 합니다.
토큰넥스트에서는 처음부터 백엔드와 프론트엔드를 처음부터완전히 분리하여 설계하였습니다.
그래서 백엔드와 프론트엔드 구분지어서 말씀드리고자 합니다.

백엔드

백엔드는 아래와 같은 기술 스택이 사용되었습니다.  

  • Python3  
    • Go 언어와 고민하였지만, 생산성을 위하여 익숙한 Python을 채택하였습니다.
  • Django 
    • Flask와 고민하였지만 Django Admin을 주된 이유로 선택하였습니다. Admin을 나중에는 서비스로 빼야 하긴 하지만 당장은 그럴 필요가 없고 충분하여 좋은 선택이 되었습니다.
  • Django-Rest-Framework  
    • Django 프레임워크에서 REST API를 쉽게 제공하기 위하여 선택하였습니다.
  • Celery  
    • 이메일 발송 등 비동기 작업을 위하여 사용하고 있습니다. AWS Lambda 를 활용한 비동기 잡 구현을 고민하였지만 역시 생산성 문제로 탈락하였습니다.
  • Redis  
    • 위의 비동기 작업을 위한 브로커로 사용하고 있습니다. 그간 여러 프로덕션 경험을 가지고 있어 선택하였습니다.
  • AWS Aurora (MySQL)  
    • 대부분 서비스에서 장애나 병목은 주로 데이터베이스에서 발생합니다. 최고 성능의 Aurora 데이터베이스를 사용하므로 사전에 그리고 최우선으로 대비하고 있습니다. 또한,  익숙한 MySQL 을 사용함으로써 최고의 대응을 할 수 있습니다.
  • AWS ECS  
    • 저희 애플리케이션 서버는 도커라이징하여 ECS로 배포하고 있습니다.
  • AWS S3 & Cloudfront  
    • 정적 데이터를 서빙하기 위하여 사용하고 있습니다. Cloudfront는 재갱신 기간이 다소 소요될 수 있어, 빈번하게 바뀌는 것은 S3에서 직접 서빙하고 있습니다.

프론트엔드

프론트엔드에는 아래와 같은 기술로 구성되어있습니다. 저희 프론트엔드 스택의 특징으로는 SSR(Server Side Rendering)을 하고 있으며 스테이징 서버는 Serverless로 배포하고 있습니다.  

  • TypeScript  
    • 바닐라 JS에서 정적 타이핑을 위해서 사용하고 있습니다.
  • React  
    • Vue와 고민이 되었지만, 생산성을 위해 당장은 익숙한 React 스택을 선택하였습니다.
  • Redux  
    • React 애플리케이션의 전체적인 상태 관리를 위하여 사용하고 있습니다.
  • Nextjs  
    • SSR을 위하여 사용했습니다. SSR은 웹 엔진 검색 등 최근 들어 요구가 증대되고 이에따라 관심이 계속해서 늘어나고 있습니다.
  • react-i18next  
    • 국제화를 이용하여 사용하였습니다. 저희가 Nextjs를 사용하고 있어 해당 라이브러리를 이용하였습니다.
  • Claudia.js  
    • Serverless 배포를 위하여 사용하고 있습니다. 스테이징 서버에서 검증이 완료되면 프로덕션 서버에도 적용할 예정입니다.

현재까지의 토큰넥스트 플랫폼의 스택은 생산성을 최고 위주로 선택되어왔습니다. 그러나 그렇다고 성능을 놓치거나 소홀히 하지 않았습니다. 사용자 경험에 초점을 맞추어 우리가 최고로 잘할 수 있는 선택을 해왔습니다. 이는 현재도 그렇고 앞으로도 기술 선정의 중요한 사항이 될 것입니다.

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!