DEVTEAM @SOKU : 

일주일 안에 웹 서비스를 개발해야 할 일이 생긴다면?

Java라면 spring boot를, php라면 laravel이나 python의 flask를 생각해 볼 수 있을 것입니다.
그리고 nodejs의 Express도 하나의 선택지입니다.


2020년 봄, 코로나19 바이러스가 확산됨에 따라 국내 문화예술분야 지원을 위해 문화예술 코로나19 지원 웹 서비스(https://covid19.artnuri.or.kr/)를 개발해야 했는데, 주어진 시간이 길지 않았습니다. 코로나19로 어려움을 겪고 있는 문화예술 분야에 선제적으로 하루라도 빨리 지원정보를 제공하는 것이 무엇보다 중요했기 때문에, 개발 효율성을 높이고 작업기간을 최소화할 수 있는 최적의 방법을 찾아야 했습니다.
우리는 Micro Web Framework 중 nodejs 기반의 Express를 선택했습니다.


고수준 레벨의 DB 처리나 서비스 제어가 필요하지 않은 스케일이었기 때문에, 다른 기능들이 우선되었습니다.

  • 초기 세팅 시간을 줄일 것
  • 바로 서비스를 재시작할 수 있을 것
  • 웹 서버를 안정적으로 제공할 수 있을 것
  • 향후 서비스 스케일 조절을 할 수 있을 것
  • 공개 라이브러리가 풍부할 것

Express가 이에 해당하였고 javascript 문법이어서, 향후 다른 작업자에게 코드를 넘겨도 큰 문제가 없다는 것이 장점으로 작용했습니다.

DBMS는 Mariadb를 사용하고 template engine은 EJS를 사용하여 개발했습니다.
개발 시에는 supervisor를 설치하여 watcher로 사용하여 확인시간을 줄였습니다.
서버 세팅은 동시 접속이 몰릴 경우를 대비하여 Nginx에서 proxy pass를 설정하여, nodejs 쓰레드를 늘릴 수 있도록 처리하였고, PM2를 설치하여 downtime을 최소화하도록 설정했습니다.
관리자 페이지는 별도의 서비스로 분리하여 방화벽에서 접근을 제어할 수 있도록 설정했습니다.

Let’s Encrypt를 설치하여, SSL을 설치하였으며, crond에 3개월마다 자동갱신되도록 처리하고, Naver webmaster, google searchconsole, google analytics를 설정하여 사용자 로깅 및 웹 페이지 수집 확인을 할 수 있도록 처리했습니다.

  • Html5 기반의 모바일 대응 반응형 프론트 페이지
  • Express 기반의 서버사이드 처리
  • Maria DB로 게시판 및 지원 사업 처리
  • 관리자 서비스 개발
  • 웹 서버 세팅
  • 기타 세팅

디자인을 제외하고, 한 명의 개발자(現 대표이사)가 이 모든 작업을 하는데 약 7일의 시간이 소요되었습니다.

개발된 웹 페이지 성능 지표 확인 결과는 다음과 같습니다.

메뉴