# 지역별 데이터 예시 (실제 사용시에는 실제 데이터로 대체)
map_data <- data.frame(
lat = c(37.5665, 35.1796, 35.8722, 36.4203),
lng = c(126.9780, 128.8706, 127.3831, 127.3845),
confirmed = c(1500, 800, 600, 400),
region = c("서울", "부산", "대구", "세종")
)
leaflet(map_data) %>%
addTiles() %>%
addCircleMarkers(~lng, ~lat, radius = ~sqrt(confirmed/100),
popup = ~paste(region, ":", confirmed, "명"))
13 대시보드: 첫 번째 경계 붕괴
2020년 3월, 코로나19가 전 세계를 강타했을 때 존스 홉킨스 대학교의 한 학부생이 만든 웹사이트가 전 세계의 관심을 끌었다. 실시간으로 업데이트되는 코로나19 확진자 수, 사망자 수, 회복자 수를 한 눈에 보여주는 대시보드였다.
이 대시보드는 단순해 보였다. 지도 위에 동그라미가 그려져 있고, 숫자가 실시간으로 바뀌는 것이 전부였다. 하지만 이 “단순한” 웹페이지가 전 세계 정부와 언론이 참고하는 표준 정보원이 되었다. 문서와 애플리케이션의 경계가 흐려지는 첫 번째 신호탄이었다.
13.1 대시보드는 문서인가, 애플리케이션인가?
13.1.1 전통적 분류의 한계
과거 우리의 디지털 분류 체계는 명확했다:
문서(Documents) - HWP, 워드 파일 - PDF, 파워포인트 - 읽기 전용 - 정적 콘텐츠
애플리케이션(Applications) - 웹사이트, 모바일 앱 - 설치 필요한 소프트웨어 - 상호작용 가능 - 동적 기능
그런데 대시보드는 어디에 속할까? - 웹 브라우저에서 열린다 → 애플리케이션? - 정보를 전달한다 → 문서? - 실시간 업데이트된다 → 애플리케이션? - 클릭하면 반응한다 → 애플리케이션?
13.1.2 마이크로소프트 엑셀의 진화로 보는 경계 붕괴
엑셀의 40년 진화사를 통해 이 혼란을 이해할 수 있다:
1985년 엑셀 1.0: 단순한 스프레드시트
| A1: 이름 | B1: 나이 | C1: 점수 |
| 김철수 | 25 | 85 |
| 이영희 | 23 | 92 |
명확히 “문서”였다. 종이 장부의 디지털 버전에 불과했다.
1993년 엑셀 5.0: VBA 매크로 추가
Sub 자동계산()
"D1").Value = "평균: " & Application.Average(Range("C:C"))
Range(End Sub
갑자기 “프로그래밍”이 가능해졌다. 문서가 코드를 실행한다?
2010년 엑셀 2010: 파워피벗과 차트 혁신
=SUMPRODUCT((월별매출[연도]=2010)*월별매출[금액])
이제 대용량 데이터를 처리하고 동적 차트를 만든다. 이건 데이터베이스 애플리케이션인가?
2023년 엑셀 365: Python 통합
# 엑셀 셀 안에서 Python 코드 실행
import pandas as pd
= xl("A1:C100", headers=True) # 엑셀 데이터를 pandas로
df = df.groupby('카테고리')['매출'].sum() result
이제 엑셀에서 머신러닝, 웹 크롤링, API 호출까지 가능하다. 이건 완전한 개발 환경이다.
질문: 2023년의 엑셀은 여전히 “문서”인가?
13.1.3 구글 스프레드시트의 실시간 협업
구글은 한발 더 나아갔다. 스프레드시트에 실시간 협업을 도입했다:
// 구글 앱스 스크립트로 스프레드시트가 웹 애플리케이션이 됨
function onEdit(e) {
var sheet = e.source.getActiveSheet();
var range = e.range;
// 데이터가 바뀌면 자동으로 Slack에 알림
sendSlackNotification("데이터가 업데이트되었습니다: " + range.getValue());
// 동시에 웹 대시보드도 업데이트
updateDashboard(sheet.getDataRange().getValues());
}
이제 스프레드시트는: - 여러 사람이 동시에 편집 - 데이터 변경 시 자동으로 외부 시스템 연동 - 실시간 차트 업데이트 - 웹 API 역할까지 수행
이건 문서인가, 애플리케이션인가?
13.2 대시보드의 탄생: flexdashboard에서 Quarto까지
13.2.1 R 생태계의 혁신
R 커뮤니티에서 놀라운 일이 일어났다. 2016년 RStudio에서 발표한 flexdashboard
패키지는 R 마크다운으로 대시보드를 만들 수 있게 해주었다.
---
title: "코로나19 현황"
output: flexdashboard::flex_dashboard
---
Column {data-width=650}
-----------------------------------------------------------------------
### 확진자 현황
::: {.cell}
```{.r .cell-code}
library(plotly)
# 실제 데이터가 있을 때 사용하는 예시 코드
# p <- plot_ly(data, x = ~date, y = ~confirmed, type = 'scatter', mode = 'lines')
# ggplotly(p)
# 데모용 간단한 차트
<- data.frame(
demo_data date = seq.Date(from = as.Date("2024-01-01"), to = as.Date("2024-12-31"), by = "month"),
confirmed = c(100, 150, 200, 180, 220, 250, 300, 280, 350, 400, 380, 420)
)
<- plot_ly(demo_data, x = ~date, y = ~confirmed, type = 'scatter', mode = 'lines+markers')
p p
:::
13.2.2 지역별 분포
저자가 이 패키지를 처음 접했을 때의 충격은 이루 말할 수 없었다. “웹 개발자가 아닌데 대시보드를 만들 수 있다고?”
HTML, CSS, JavaScript를 전혀 몰라도 마크다운 문서를 작성하는 것만으로 전문적인 대시보드가 완성되었다. 문서 작성 방법으로 애플리케이션을 만드는 첫 번째 성공 사례였다.
13.2.3 Quarto 대시보드의 진화
2022년 Posit(구 RStudio)에서 Quarto를 발표했을 때, 대시보드 기능은 아직 없었다. 하지만 2024년 Quarto 1.4에서 대시보드 기능이 추가되면서 새로운 차원이 열렸다:
---
title: "실시간 매출 대시보드"
format: dashboard
server: shiny # 여기가 핵심!
---
이제 Quarto 문서가: - 정적 HTML (전통적 문서) - 인터랙티브 위젯 (애플리케이션 기능)
- 실시간 서버 연동 (웹 애플리케이션) - 반응형 레이아웃 (모바일 앱)
모든 것을 동시에 지원한다. 경계가 완전히 무너진 것이다.
13.3 실전 사례: 코로나19 대시보드 만들기
archive 폴더에서 발견한 기존 코로나19 대시보드를 현대적 관점에서 재해석해보자.
13.3.1 데이터 준비
library(tidyverse)
library(coronavirus)
library(plotly)
library(DT)
library(gt)
# 코로나19 데이터 로드
data(coronavirus)
coronavirus_tbl <- coronavirus %>%
as_tibble() %>%
janitor::clean_names()
# 전 세계 통계
world_summary <- coronavirus_tbl %>%
group_by(type) %>%
summarise(total = sum(cases), .groups = 'drop')
# 한국 통계
korea_summary <- coronavirus_tbl %>%
filter(str_detect(country, "Korea")) %>%
group_by(type) %>%
summarise(total = sum(cases), .groups = 'drop')
13.3.2 ValueBox: 숫자가 살아 움직이다
기존 문서에서는 숫자가 죽어있다. “확진자: 500,000명”이라고 적으면 그게 끝이다. 하지만 대시보드에서는 숫자가 살아 있다:
이 ValueBox는: - 아이콘으로 시각적 임팩트 제공 - 색상으로 감정적 반응 유도
- 실시간 데이터 업데이트 (서버 연결 시) - 클릭하면 상세 정보 표시 (인터랙션)
단순한 “숫자 표시”를 넘어 사용자 경험을 설계하고 있다.
13.3.3 지도 시각화: 정보가 공간과 만나다
library(leaflet)
coronavirus_tbl %>%
filter(type == "confirmed", date == max(date)) %>%
group_by(country, lat, long) %>%
summarise(total_cases = sum(cases), .groups = 'drop') %>%
leaflet() %>%
addTiles() %>%
addCircleMarkers(
lng = ~long, lat = ~lat,
radius = ~sqrt(total_cases/10000),
popup = ~paste0("<b>", country, "</b><br>",
"확진자: ", scales::comma(total_cases)),
fillOpacity = 0.7,
color = "red"
)
이 지도는 문서인가, 애플리케이션인가? - 확대/축소/이동 가능 → 애플리케이션 - 정보를 전달 → 문서
- 마커 클릭 시 팝업 → 애플리케이션 - 브라우저에서 실행 → 애플리케이션 - 마크다운으로 작성 → 문서
답: 더 이상 구분이 무의미하다.
13.4 한국 사례: 정부 대시보드의 진화
13.4.1 질병관리청의 변신
2020년 초 질병관리청의 코로나19 브리핑을 기억하는가? 담당자가 PPT 슬라이드를 넘겨가며 어제 확진자 수, 지역별 분포를 발표했다. 전형적인 “발표용 문서”였다.
하지만 몇 달 후 질병관리청 웹사이트에는 실시간 업데이트되는 대시보드가 나타났다: - 실시간 확진자 수 업데이트 - 지역별 인터랙티브 지도 - 연령대별 현황 차트 - 백신 접종 현황 추적
같은 정보를 전달하지만, 사용자 경험은 하늘과 땅 차이였다.
13.4.2 선거관리위원회의 개표 시스템
대한민국 선거관리위원회의 개표 시스템은 세계적 수준이다: - 실시간 개표 결과 업데이트 - 시/도/구/동 단위 드릴다운 - 모바일 최적화된 반응형 디자인 - API로 언론사에 데이터 제공
이 시스템이 “문서”인가 “애플리케이션”인가를 묻는 것은 이제 의미가 없다. 중요한 것은 정보를 얼마나 효과적으로 전달하느냐이다.
13.5 기업에서의 활용: 보고서의 종말?
13.5.1 전통적 보고서 vs 대시보드
전통적 월간 매출 보고서:
제목: 2024년 10월 매출 현황
작성자: 김분석
작성일: 2024.11.05
요약:
- 총 매출: 1,250,000,000원
- 전월 대비: +15.2%
- 주요 성장 동력: 모바일 앱 매출 증가
[그래프 이미지 첨부]
대시보드 버전:
# 실시간 데이터 연결
sales_data <- read_db("SELECT * FROM sales WHERE date >= '2024-10-01'")
# ValueBox: 핵심 지표
list(
value = scales::comma(sum(sales_data$amount)),
title = "이번 달 매출",
icon = "currency-dollar",
color = if_else(growth_rate > 0, "success", "danger")
)
# 인터랙티브 차트
plot_ly(sales_data, x = ~date, y = ~amount, type = 'scatter', mode = 'lines') %>%
layout(title = "일별 매출 추이")
# 필터링 가능한 표
DT::datatable(sales_data, filter = 'top', options = list(pageLength = 25))
차이점: - 정적 vs 동적 - 월 1회 vs 실시간 - 읽기 전용 vs 탐색 가능 - 파일 첨부 vs URL 공유
13.5.2 결정자의 관점 변화
CEO의 하루 일과를 상상해보자.
2020년: 1. 비서가 준비한 종이 보고서 검토 (30분) 2. 궁금한 점이 생기면 담당자에게 추가 자료 요청 3. 답변 받기까지 2-3일 대기 4. 다시 종이로 받아서 검토
2024년: 1. 태블릿으로 실시간 대시보드 접속 (3분) 2. 궁금한 부분을 직접 클릭해서 드릴다운 3. 즉석에서 다양한 각도로 데이터 분석 4. 인사이트 발견 시 팀과 즉시 공유
어느 쪽이 더 효율적인가? 답은 명확하다.
13.6 기술적 진화: 노코드/로우코드의 부상
13.6.1 Notion의 혁신
Notion은 “문서 작성 도구”로 시작했다. 하지만 지금은: - 데이터베이스 기능 - 칸반 보드 (프로젝트 관리) - 갠트 차트 (일정 관리) - API 연동 (외부 시스템과 통합) - AI 어시스턴트 (자동 콘텐츠 생성)
사용자들은 Notion 페이지를 “문서”라고 부르지만, 실제로는 멀티 기능 애플리케이션을 만들고 있다.
13.6.2 Airtable의 스프레드시트 재정의
Airtable은 “스프레드시트”와 “데이터베이스”의 경계를 흐렸다: - 엑셀처럼 직관적인 인터페이스 - 데이터베이스급 관계형 데이터 처리 - 자동화 워크플로우 (Zapier 통합) - API 제공 (다른 앱에서 데이터 활용)
Airtable 시트는 문서인가, 데이터베이스인가?
13.6.3 Streamlit의 게임 체인저
Python 개발자들에게 Streamlit은 혁명이었다:
import streamlit as st
import pandas as pd
import plotly.express as px
# 이게 전부다!
"매출 분석 대시보드")
st.title(
= pd.read_csv("sales.csv")
data = st.selectbox("월 선택", data['month'].unique())
selected_month
= data[data['month'] == selected_month]
filtered_data = px.bar(filtered_data, x='product', y='sales')
fig st.plotly_chart(fig)
30줄의 Python 코드로 완전한 웹 애플리케이션이 만들어진다. 더 이상 HTML, CSS, JavaScript를 배울 필요가 없다.
13.7 미래 전망: 대시보드를 넘어서
13.7.1 AI 대시보드의 등장
2024년 현재 실험 중인 기술들:
자연어 쿼리:
사용자: "작년 대비 매출이 가장 많이 증가한 제품은?"
AI 대시보드: [자동으로 데이터 분석 후 차트 생성]
"모바일 액세서리가 147% 증가했습니다.
주요 요인은 신제품 출시와 마케팅 캠페인 효과입니다."
자동 인사이트 생성:
AI: "이번 주 데이터에서 비정상적인 패턴을 발견했습니다.
화요일 오후 2시에 특정 지역에서 주문이 급증했는데,
이는 현지 방송 프로그램 영향으로 보입니다."
13.7.2 대화형 문서의 시대
Google의 NotebookLM, Anthropic의 Claude Artifacts가 보여주는 미래:
# 2025년 분기 보고서
AI 어시스턴트가 이 보고서와 대화할 수 있습니다.
질문: "경쟁사 대비 우리 성과는?"[실시간 데이터 분석] "시장 점유율이 2.3% 상승했습니다..."
AI:
질문: "다음 분기 전략은?" [예측 모델 실행] "현재 트렌드를 보면..." AI:
문서가 사용자와 대화하기 시작했다.
13.8 결론: 경계 붕괴는 기회다
대시보드의 등장은 문서와 애플리케이션 경계 붕괴의 시작점이었다. 하지만 이는 혼란이 아니라 새로운 가능성의 출발점이다.
13.8.1 한국의 기회
한국은 이 변화에 특별한 위치에 있다: - 정부 주도: 공공 데이터 개방, 디지털 정부 구축 - 높은 디지털 리터러시: 세계 최고 수준의 디지털 인프라 - HWP 전환: 기존 시스템의 한계가 오히려 혁신 동력
13.8.2 실무진을 위한 조언
- 점진적 전환: HWP → Quarto 대시보드 → AI 대시보드
- 도구 학습: Excel 고급 기능 → Power BI → Quarto/Shiny
- 사고 전환: “보고서를 쓴다” → “경험을 설계한다”
다음 장에서는 대시보드를 넘어 완전한 반응형 문서와 실시간 컴퓨팅의 세계를 탐험해보겠다.
이 장에서 다룬 코로나19 대시보드 코드는 dashboards/
폴더에서 확인할 수 있습니다.
-
dashboards/index.qmd
파일 열기 - 터미널에서
quarto preview
실행 - 브라우저에서 실시간 대시보드 확인
여러분만의 데이터로 대시보드를 만들어보세요!
여러분이 자주 사용하는 도구들을 생각해보세요: - 구글 독스 - 노션
- 피그마 - 캔바
이들은 문서 도구인가요, 애플리케이션인가요? 경계가 모호한 이유는 무엇일까요?