Real-Time Equipment Monitoring Dashboard
설비 가동현황 모니터링 시스템
🗺️ Overview
IoT 센서에서 오는 설비 데이터를 시각화한 후 대시보드로 제공하며,
설비의 작동 상태 및 인사이트를 보여주는 서비스입니다.
두 번째 회사에 들어와서 진행한 첫 프로젝트였다.
기존에 있는 서비스의 유지보수가 힘들다는 문제점이 있었다.
고객사에 맞게 빠르고 쉽게 커스텀이 가능하는 것을 목표로 하여 새로 진행하는 프로젝트였다.
프로젝트는 PoC 구현, MVP 구현 이렇게 두 Phase로 나눠져 진행하였다.
빠르게(목표는 2~3주 였지만, 공휴일이 끼면서 실제 프레젠테이션은 4주 차에 진행하였다.) PoC 구현 후, MVP를 만드는 것이 목표였다.
해당 과정에서 내가 담당한 역할이다.
AWS QuickSight를 활용한 센서 데이터 시각화 진행 및 레포트 개발
QuickSight Dashboard 배포
구체적인 내용을 언급할 수 없지만 대시보드를 만들기 위해서는 도메인에 대한 이해가 필요했다.
구글링을 통해 유사한 서비스들을 참고하여 필요한 데이터 및 정보들을 시각화 하였고, 이후 팀원들과의 다양한 소통과 피드백을 통해 계속해서 대시보드를 개선해나갔다.
QuickSight에서는 다양한 데이터 소스에서 데이터들을 다양한 방법으로 가져올 수 있다.
데이터를 시각화 하는 과정에서 QuickSight에서 제공하는 다양한 차트, 필터링, 계산, AI 등의 서비스들을 활용하였다. BI 툴을 활용하니 확실히 빠르게 PoC를 검증할 수 있어 생산성이 좋았다.
하지만 기본적으로 한 시간에도 수십 건씩 쌓이는 센서데이터를 한 번에 가져오면서 초기 로딩 시간이 지연되는 문제가 생겼다. 이는 SQL 쿼리를 직접 작성하 데이터를 가져오도록 설정을 변경하고 필요한 데이터만 가져올 수 있도록 쿼리를 튜닝해주면서 해결하였다.
최종적으로 실시간 대시보드 페이지와, 레포트 페이지를 만들었다.
이를 웹에서 볼 수 있도록 대시보드를 배포하고 특정한 유저만 볼 수 있또록 권한을 설정한 다음 프론트엔드에 iframe으로 embedded 하여 사용자가 볼 수 있도록 하였다.
프레젠테이션을 마치고 다음 단계인 MVP 개발로 넘어갔다.
해당 단계에서는 센서 데이터를 가져오는 백엔드 API 서버를 개발하고, 프론트엔드에서 직접 차트 컴포넌트들을 활용해 대시보드로 만드는 작업을 진행했다.
MVP를 개발하던 도중에 DB도 기존에 Azure에서 AWS로 전부 이관하게 되었다. (다른 팀에서 진행했다.)
다음은 Phase 2에서 진행한 PoC의 아키텍쳐다.

다음은 내가 담당한 역할이다.
FastsAPI를 활용한 BackEnd API 서버 개발
React를 활용하여 Dashboard 화면 개발
더 구체적인 내용들은 아래 페이지에서 더 확인할 수 있다.
📒 Tech Blog
🛠️ 문제 해결 경험
[대시보드 초기 로딩 시간 단축 및 쿼리 성능 최적화]
문제: 대시보드 초기 로딩 시 센서 데이터 로딩이 1분 이상 걸리는 성능 저하
해결 방안
EXPLAIN로 쿼리 실행 계획을 분석하고, 성능 병목 구간을 식별한 후 BETWEEN과 WHERE 절 등을 사용해 쿼리 튜닝
자주 조회되는 컬럼에 인덱스 추가 및 INNER JOIN 최적화로 조회 성능 개선
날짜별 파티셔닝을 적용하여 조회 범위를 제한하고 풀 테이블 스캔을 방지
결과: 로딩 시간이 1분 → 1초로 줄어들어 사용자 경험 및 시스템 성능이 향상
[데이터 반환 형태 최적화 및 코드 유연성 개선]
문제: 차트와 설비별 데이터 반환 차이로 코드 중복 발생, 서비스 레이어 비즈니스 로직으로 유지보수성 및 확장성 한계
해결 방안
Pydantic을 사용해 다양한 데이터 포맷을 유연하게 처리할 수 있는 직렬화 함수 구현
SQL 쿼리로 비즈니스 로직을 이전해 성능을 최적화하고, 서비스 레이어의 복잡성 감소
BaseResponse 설계를 통해 데이터 구조 일관성 확보, 커스텀 응답 구조를 상속해 회사별 요구 사항 반영
결과: 코드 중복 감소 및 유연한 구조 확보, SQL 로직 이전으로 성능 최적화, 확장성과 유지보수성 개선
Last updated