안녕하세요, 재미있고 행복한 일을 만드는 개발자 라스톤입니다!

오늘은 설문조사 현황을 항상 볼 수 있는 사이트를 만들어보았는데요, URL 주소 하나로 300개가 넘는 설문조사 현황을 계속 추적할 수 있는 사이트입니다. 이 과정은 웹 사이트, 서버, 배치 프로그램을 활용해서 만들었습니다! 그리고 제작 과정이 프론트+서버 개발을 궁금해하시는 다른 분들께 도움이 될 것 같아 글로 남겨볼까 해요!

(코드가 궁금하시면 Github에 들어오시면 됩니다)

 

 

어쩌다가 만들게 되었는지?

설문조사 예시

설문조사를 하면 위에 사진처럼 답변 건수 및 결과 확인 등을 통해서 자세한 설문조사 결과를 확인할 수 있는데,

갑자기 300개가 넘는 설문조사마다 몇 명이 응답했는지 체크해야 할 일이 생겼습니다. 그리고 혼자만 해당 설문조사를 보는 게 아니라,

300개가 넘는 지점에서 각 지점별 설문조사를 확인했어야 했어요.

그리고 해당 계정은 관리자 계정이기 때문에 지점에 계신 분이 자신의 지점에 대한 설문조사를 확인할 수 없었던 구조였습니다.

설문조사의 기간은 2주가 넘었고, 설문조사 기간동안 지점 별로 굉장히 많은 요청을 받을 게 눈에 보였습니다!

예를 들어, 다음과 같이 요청이 들어올 수도 있었어요.


하루 동안의 요청(예상 수치는 하루에 약 100~200번 정도 였습니다)

01:34 - 16번 설문조사를 몇 명이 참여했는지 알려줘

02:28 - 19번~20번 설문조사를 몇 명이 참여했는지 알려줘

05:50 - 68번 설문조사 현황을 알려줘

10:30 - 8번 설문조사 현황을 알려줘

.

.

.

22:30 - 오늘 설문조사 현황을 다 정리해줘


현재의 상황에서는 해당 요청들을 전부 다 사람이 확인해야 했습니다.

그래서 설문조사 정보를 웹 사이트로 나타내면 훨씬 효율적이고 시간을 절약할 수 있을 것이라 생각했어요.

(이러한 요청들을 제 지인이 전화 받고 처리했어야 했고,

하루에 100~200통의 전화를 받는다는 건 업무를 하면서 정말 쉽지 않죠..ㅠㅠ 어떻게든 해결하고 싶었습니다)

그렇게, 궁금한 설문조사가 있다면 직접 찾아볼 수 있는 설문조사 현황 사이트를 만들게 되었어요.

 

 

어떻게 만드는가?

간략한 프로그램 구성도

처음에 구상했던 프로그램 동작 방식입니다! 간단하게 정리하면 HTML로 이루어진 웹 사이트가 있고,

데이터를 만드는 배치 프로그램이 데이터를 10분마다 업데이트한 뒤, 서버가 데이터를 모아서 웹 사이트로 넘겨주는 방식입니다.

이렇게 되면, 사용자들은 실시간 까지는 아니지만 10분마다 업데이트 되는 데이터를 URL를 통해 계속 볼 수 있습니다.

 


용어 정리!

서버(server) : 사용자들의 요청들을 받고 처리하는 역할을 하는 컴퓨터

배치 프로그램(batch) : 특정 시간마다 실행되는 프로그램. 데이터 수집을 배치 프로그램으로 만들었습니다.

HTML : 기본적인 웹 사이트를 이루는 언어.

URL : 특정 웹사이트를 들어가기 위한 인터넷 주소. (ex, https://google.co.kr)

Vue : 웹 사이트를 좀 더 생동감 있고, 효율적으로 만들 수 있는 프레임워크.

Flask : 서버를 쉽게 만들 수 있는 Python 기반 프레임워크.

Nginx : 외부에서 들어온 요청을 내부의 프로그램이 받을 수 있도록 네트워크 처리를 해주는 도구

Python : 다양한 기능들을 내장하고 있는 인터프리터 방식 프로그래밍 언어. (한 줄씩 코드를 해석하고 실행해주는 방식으로 동작합니다.)

Amazon-web-services(aws) : 클라우드 방식으로 컴퓨터 자원 및 기능들을 제공하는 서비스.

aws-ec2 : 컴퓨터를 쉽게 만들어주는 서비스입니다. Linux 운영체제 기반으로 사용했습니다.

aws-rds : 데이터베이스를 쉽게 만들어주는 서비스입니다. Postgresql를 사용했습니다.

프레임워크(Framework) : 여러 기능들을 많이 가지고 있어, 쉽게 개발할 수 있도록 만들어진 도구 모음.


여기서 개발을 좋아하시는 분이라면 전반적인 이해가 되셨을 것이라 생각이 드는데요,

이번 포스트에선 데이터 흐름과 결과 페이지를 보여드릴게요!

그리고 각 구성요소들 별로 어떻게 개발을 진행했는지는 다음 포스트에서 말씀드리겠습니다.

 

 

데이터 흐름

데이터가 어떻게 흐르고 사용자들에게 보이는 지 흐름을 적어본 거에요.

제가 만든 설문조사 사이트는 총 7개 단계로 데이터가 흐릅니다! 사용자들은 이 과정을 통해서 설문조사 데이터를 보게 돼요.

  1. 사용자(User)가 웹 사이트에 들어온다.
  2. 웹 사이트에서 서버에게 설문조사 데이터를 달라고 요청한다.
  3. 서버는 데이터베이스에 적재되어 있는 설문조사 데이터를 가져온다.
  4. 가져온 데이터를 가공하여 웹 사이트로 설문조사 데이터를 전달한다.
  5. 웹 사이트는 받은 데이터를 지정된 스타일에 맞게 나타내준다.
  6. 사용자는 보기 좋게 만들어진 데이터를 보면서 원하는 정보를 찾게 된다.
  7. 배치 프로그램은 10분마다 설문조사 사이트에서 정보를 얻어와 데이터베이스에 데이터를 적재한다.

 

 

결과 페이지

결과 페이지

 

어떻게 보면 간단한 형태의 표인데요, 각 설문조사들마다 몇 명이 설문조사를 진행했는지 바로 알 수 있는 페이지입니다!

간단한 검색 기능도 구현을 해서 사용자들은 자신이 원하는 설문조사 결과를 볼 수 있어요.

(총 300개 가까이 설문조사 데이터가 한 눈에 보입니다)

단순한 웹 사이트에 얼마나 많은 요청이 있는지 확인해보니, 평균적으로 하루 150번 정도 웹 사이트 요청이 있었고,

설문조사 마지막 날에는 330건 정도의 요청이 발생했습니다! 만약 이 사이트가 없었더라면, 제 지인이 하루에 150번 정도

전화를 받았을 것이고, 마지막 날에는 330건 정도 전화를 받았을 거에요.

이 사이트 덕분에 전화 요청을 했을 사람도, 지인도 시간을 절약할 수 있었습니다!

 

 

느낀 점

지금까지 여러 개발을 해봤었는데, 사람들이 사용하는 서비스를 만드는 게 흥미도 있고 재밌다는 것을 배웠어요.

역시 기술은 사람들이 써야 조금 더 빛을 발할 수 있는 듯 해요. 그리고 사람들의 시간을 세이브할 수 있는 사이트를 만들었던 것이 매우 뿌듯했습니다.

왜냐하면, 시간은 항상 소중하다고 생각하기 때문이에요. 효율을 추구하기 때문에 반복작업을 없앴다는 거에 큰 의의를 두었고, 목표를 이루어서 좋았습니다.

또한, 개발 한 것 중에 이 간단한 사이트 만큼 트래픽이 나왔던 적은 없었던 것 같아요.

개발 기간도 짧았고, 큰 기술이 들어간 것도 아닌데 말이죠.

어떻게 보면, 사람들이 필요한 것을 개발하는 것이 더 중요한 것이라고 생각하게 되었습니다. 앞으로는 더 많은 사람들이 쓸 수 있는 것들을 개발하고 싶네요.

 

 

긴 글 읽어주셔서 감사드리고, 자세한 개발 과정은 다음 포스트에 적어볼게요!

 

 

 

+ Recent posts