박동혁님이 참여한 프로젝트를 공유했습니다.

Django , graphql , Vue.js , nuxt.js , Cloud: AWS EC2, RDS, CloudWatch , Serverless: AWS Lambda, Step Functions, API Gateway
공유 인지 기반의 ROOTs 학습시스템
스마트앤와이즈

2017년 11월 - 2019년 5월

프로젝트명 : 공유 인지 기반의 ROOTs 학습시스템
단체명(팀명) : 스마트앤와이즈
직책 : 개발자 (업무분담률 : 50% 이상)
프로젝트기간 : 2017. 11. 17 ~ 2019. 05. 31.

주요업무 및 역할
스마트앤와이즈의 주력 서비스로서 시스템 설계부터 기술환경 구성, UI/UX 디자인, 기능 구현 등 전반적인 개발을 주도하였습니다. 기존 PHP로 되어있던 서비스에 대한 리뉴얼 작업을 제안하여 2명의 개발자가 약 2개월의 기간에 걸쳐 초기버전을 개발했습니다. Front-end Framework로 Nuxt.js를, Back-end Framework로 Django를 사용하였고, GraphQL API를 통해 데이터를 처리하고 있습니다. 기획 초기 Google Drive, Firebase Auth, Firestore 등 구글의 서비스에 대한 의존도가 높았는데, 사용자가 늘어남에 따라 데이터 수집/가공의 문제로 Roots Workbook, Roots Chat 등 자체 서비스로 대체개발했습니다. 전국의 각지의 학생들이 시스템에서 동시에 라이브 방송을 통해 수업을 하는 서비스 특성상 일정시간에 트래픽이 몰리는 것을 대비하여 DB를 Amazon RDS로 분리하고, AWS Auto-Scaling과 Load Balancer를 적용했습니다. 현재 고려대학교 영재교육원과 삼성주니어소프트웨어아카데미의 교육 플랫폼으로 서비스 중입니다.

사용 기술(본인의 업무파트에서 사용한 기술 목록)
Front-end : Nuxt.js, Firebase Auth, WebSocket, Axios, Moment, JQuery, Sass, Spectre.css, XEIcon, ESLint
Back-end : AWS(EC2, RDB, Lambda, Step Functions, API Gateway), Django(GraphQL, Celery, Channels, Redis), Google Cloud(Drive API), RabbitMQ, Postgres, uWSGI, Nginx

컨텐츠 관련 내용
● 탐구공동체(학습생태계) 기반 공유인지 학습 모델 적용
● 고려대학교 영재교육원, 삼성주니어소프트웨어아카데미 미래교사단 등에 보급

시스템 관련 내용
● Front-end Framework로 Nuxt.js 사용
● Back-end Framework로 Django 사용 (GraphQL API 적용)
● AWS Auto-Scaling과 Load Balancer 적용
● Firebase Authentication으로 Google Oauth 연동
● Firebase의 Firebase을 사용하여 실시간 서비스 구현 => 데이터 가공 용이성 문제로 Django Channels로 대체 => delay 이슈로 Redis 적용
● 최소 비용으로 운영하기 위하여 사용자의 Google Drive를 통해 각자의 공간을 제공하고 이를 기반으로 전체 시스템을 운영 => 자체 Presentation 서비스 Roots Workbook을 개발
● Google Drive API를 통한 파일 생성/복사, 권한설정 간의 delay 이슈를 해결하고자 분산작업큐인 Celery를 이용한 비동기 처리 (메세지 브로커로 RabbitMQ 사용) => 리소스 부하가 큰 Celery를 대신하여 기존의 비동기 작업을 AWS Lambda로 대체 => Roots Workbook의 개발로 자연스레 delay 이슈 해결
● Database로 PostgreSQL용 Amazon RDS 연동
● Google Analytics와 Hotjar를 통해 웹로그 및 트래픽 분석

참여자

박동혁
대표 @플라이어즈