[CIMS] 2. 웹서버 구동하기(1)

CCTV 노드들의 상태와 실시간 영상 스트리밍을 위한 웹 인터페이스 구축

2.1 웹서비스 선택

CCTV 영상을 확인할 수 있는 웹 서비스는 반드시 필요했다. 기왕 만드는 웹, 실제로 사용할 서비스라고 생각하고 완성도 높게 구성하려고 한다. 필요한 기능들을 논의를 통해 정리했다.

  • 대시보드에서 CCTV 영상 송출
    • 실시간 송출 지원
    • 원하는 시간대 열람 가능해야 함
    • 원하는 CCTV를 선택할 수 있어야 함
    • 원하는 CCTV들을 그룹으로 저장할 수 있어야 함
  • CCTV 상태정보(배터리, 네트워크, 위치 등)
    • 목록 혹은 지도 상에서 확인 가능
    • 지정클릭 시 현 실시간 영상 송출 지원
  • 기본적인 로그인/회원가입 기능 필요
    • 열람 가능한 CCTV 권한 부여

우선적인 목표이고, 차후 진행상황 혹은 논의에 따라 더하거나 빼질 수 있다.

2.2 웹서버 선택

위의 목표를 제반으로 어떻게 웹서버를 구동할지 조사한다.

  1. AWS 가장 일반적인 스토리지를 지원하는 S3에 영상 데이터들을 저장하고, 데이터베이스를 지원하는 ()에 메타데이터들을 저장, 웹서비스는 ()에서 구동할 수 있다. 현업에서도 많이 쓰이는 만큼 AWS 경험을 쌓는 것도 좋은 선택지였다. 그러나 학생인만큼 아무래도 재정적인 한계가 있어, AWS에서 지원하는 예산 측정 서비스로 예측해보았다. S3 Budget database Budget sebservice Budget 예상되는 지출은 월 4~6만원 정도이다. 사실 한달 내내 구동할 것도 아니고, 실습부터 유지보수까지 잡아도 보름 정도일테니 납득할만한 지출이다. 괜찮은 후보로 생각된다.
  2. 이 선택지는 굉장히 많은 서비스를 지원해준다. 각 IoT 노드와 서버간의 통신과 저장, 웹 인터페이스까지 지원한다. 단점은 역시 매우 비싸다는 점이다. 이 지점에서 이미 탈락이었지만, 실제 사용할 수 있는 서비스를 우리 손으로 구축해보자! 라는 취지와 어긋나기 때문에 사용하지 말자고 최종 결정을 내렸다. 후에 알아본 바로는 웹인터페이스로 지원하는 것은 IoT 센서값들이었지, 우리가 원하는 영상 송출까지는 지원해주지 않았다.
  3. 라즈베리파이 마지막은 웹서버도 라즈베리파이로 구동하자는 것이다. 역시 컴공과 아니랄까봐 팀원들과 각출해보니 라즈베리파이5와 1TB짜리 SSD카드가 나왔다. 이들을 웹서버와 스토리지로 사용하기로 잠정적으로 결론 내렸다.

2.3 라즈베리파이 웹서버 구동

결정된대로 라즈베리파이에서 웹서버를 구동하기위해 초기세팅을 진행했다. raspi-config 서버는 IntelliJ에서 spring boot를 사용해 코딩을 한 후, jar 파일을 라즈베리파이로 옮겨 구동하겠다.

  1. 먼저 IntelliJ를 설치한다. IntelliJ 설치
  2. spring boot 프로젝트를 만든다.
  3. index.html를 만들어 localhost:8080에서 잘 구동되는지 확인한다.
  4. controller.class를 만들어 링크를 통해 maplist.html과 dashboard.html로 이동되는 것을 확인한다.
  5. maplist에서 kakao map api를 사용해 지도와 cctv 아이콘을 렌더링한다.
  6. jar 파일로 build하고 라즈베리파이에서 구동되는 것을 확인한다.

여기까지가 웹을 위한 기초공사이다. 앞으로의 목표는 다음과 같다.

  • cctv아이콘에서 상태 정보를 확인하는 event를 추가한다.
  • dashboard에서 선택된 cctv의 영상을 송출하도록 한다.