Make, Snowflake, Streamlit 연동 자동 대체 데이터 대시보드 구축: 실시간 인사이트 확보 및 데이터 기반 투자 결정 최적화

수동 데이터 업데이트와 씨름하는 대신 Make, Snowflake, Streamlit을 연결하여 자동화된 데이터 대시보드를 구축하세요. 이 대시보드는 실시간 인사이트를 제공하고, 데이터 기반 투자 결정을 최적화하여 시간과 비용을 절약해 줍니다. 더 이상 outdated된 정보에 의존하지 마세요!

1. The Challenge / Context

많은 기업과 개인 투자자들이 엑셀 스프레드시트 또는 비효율적인 데이터 파이프라인에 의존하여 투자 결정을 내리고 있습니다. 이는 데이터 업데이트의 지연, 오류 발생 가능성 증가, 실시간 인사이트 부족으로 이어집니다. 데이터가 최신 상태가 아니면 올바른 결정을 내리기 어렵고, 경쟁에서 뒤쳐질 수 있습니다. 특히 빠르게 변화하는 시장 환경에서는 더욱 치명적입니다. 또한, 데이터 분석에 필요한 시간이 많이 소요되어 핵심 업무에 집중하기 어렵다는 문제도 있습니다.

2. Deep Dive: Make, Snowflake, Streamlit

이번 솔루션의 핵심은 세 가지 강력한 도구, 즉 Make, Snowflake, Streamlit을 효과적으로 통합하는 것입니다. 각 도구의 역할과 기능을 살펴보겠습니다.

  • Make (이전의 Integromat): 로우 코드 자동화 플랫폼으로, 다양한 애플리케이션과 서비스를 연결하여 워크플로우를 구축할 수 있습니다. 이번 프로젝트에서는 Snowflake의 데이터 변경을 감지하고, Streamlit 대시보드를 자동으로 업데이트하는 역할을 담당합니다.
  • Snowflake: 클라우드 기반 데이터 웨어하우스로, 대용량 데이터의 저장, 관리, 분석에 최적화되어 있습니다. 여기서는 투자 관련 데이터를 저장하고, Make에서 데이터를 가져와 Streamlit에 제공하는 역할을 합니다. Snowflake의 뛰어난 확장성과 성능은 실시간 데이터 처리 및 분석을 가능하게 합니다.
  • Streamlit: Python 기반의 오픈 소스 프레임워크로, 데이터 과학자와 머신러닝 엔지니어가 데이터를 시각화하고, 대화형 웹 애플리케이션을 쉽게 만들 수 있도록 돕습니다. Snowflake에서 가져온 데이터를 시각적으로 표현하여 투자자들이 직관적으로 인사이트를 얻을 수 있도록 합니다.

3. Step-by-Step Guide / Implementation

이제 Make, Snowflake, Streamlit을 연동하여 자동화된 데이터 대시보드를 구축하는 과정을 자세히 살펴보겠습니다.

Step 1: Snowflake 데이터베이스 및 테이블 설정

Snowflake에 투자 관련 데이터를 저장할 데이터베이스와 테이블을 생성합니다. 테이블 스키마는 투자 데이터의 종류에 따라 달라질 수 있지만, 일반적으로 다음과 같은 컬럼을 포함합니다.

  • Symbol (종목 코드)
  • Date (날짜)
  • Open (시가)
  • High (고가)
  • Low (저가)
  • Close (종가)
  • Volume (거래량)

-- 데이터베이스 생성
CREATE DATABASE investment_data;

-- 데이터베이스 사용
USE investment_data;

-- 테이블 생성
CREATE TABLE stock_prices (
    symbol VARCHAR(10) NOT NULL,
    date DATE NOT NULL,
    open DECIMAL(10, 2),
    high DECIMAL(10, 2),
    low DECIMAL(10, 2),
    close DECIMAL(10, 2),
    volume BIGINT,
    PRIMARY KEY (symbol, date)
);
    

Step 2: Streamlit 대시보드 개발

Streamlit을 사용하여 Snowflake의 데이터를 시각화하는 대시보드를 개발합니다. 필요한 라이브러리를 설치하고, Snowflake에 연결하여 데이터를 가져오는 코드를 작성합니다.


import streamlit as st
import snowflake.connector
import pandas as pd

# Snowflake 연결 설정
@st.cache_data
def get_connection():
    return snowflake.connector.connect(
        user=st.secrets["snowflake"]["user"],
        password=st.secrets["snowflake"]["password"],
        account=st.secrets["snowflake"]["account"],
        warehouse=st.secrets["snowflake"]["warehouse"],
        database="investment_data",
        schema="PUBLIC"
    )

# 데이터 가져오기
@st.cache_data
def load_data(symbol):
    conn = get_connection()
    query = f"SELECT * FROM stock_prices WHERE symbol = '{symbol}' ORDER BY date"
    df = pd.read_sql(query, conn)
    return df

st.title('Stock Price Dashboard')

# 종목 선택
symbol = st.selectbox('Select a stock symbol', ['AAPL', 'MSFT', 'GOOG'])

# 데이터 로드
data = load_data(symbol)

# 데이터 시각화 (예: 라인 차트)
st.line_chart(data.set_index('date')['close'])
    

중요: `st.secrets`를 사용하여 Snowflake 연결 정보를 안전하게 관리하세요. Streamlit secrets에 Snowflake credentials를 추가해야 합니다.

Step 3: Make 시나리오 구축

Make에서 Snowflake 데이터 변경을 감지하고 Streamlit 대시보드를 업데이트하는 시나리오를 구축합니다. 다음 단계를 따르세요.

  1. Make에 로그인하고 새 시나리오를 만듭니다.
  2. Snowflake 모듈을 추가하고 "Watch events" 트리거를 선택합니다.
  3. Snowflake 연결을 설정하고, 모니터링할 테이블 (예: `stock_prices`)을 지정합니다.
  4. Webhooks 모듈을 추가하고 "Custom webhook" 액션을 선택합니다.
  5. Webhook URL을 생성하고 Streamlit 앱을 재시작하는 데 사용할 수 있도록 저장합니다. (예: Streamlit Community Cloud app의 경우, 앱을 다시 배포하여 캐시를 clear합니다.) 또는 좀 더 복잡하지만 API를 통해 streamlit app을 refresh하는 방법도 있습니다.
  6. 필요에 따라 필터를 추가하여 특정 조건에서만 Webhook이 트리거되도록 설정합니다 (예: 특정 종목의 데이터가 변경되었을 때).

핵심: Streamlit 대시보드를 업데이트하는 가장 간단한 방법은 다시 배포하는 것입니다. Streamlit Community Cloud를 사용하는 경우, 앱 설정에서 "Reboot app" 버튼을 누르면 됩니다. 하지만 좀 더 자동화된 방법으로는 Streamlit API를 사용하는 방법도 있지만, 현재 Streamlit API는 experimental 상태이므로 주의해서 사용해야 합니다.

대체 방법 (API Call을 통한 Streamlit App Refresh, EXPERIMENTAL): Streamlit API를 사용하여 programmatic하게 app을 refresh 할 수 있습니다. 이 방법은 조금 더 복잡하지만 완전 자동화된 파이프라인을 구축할 수 있게 해줍니다. Make에서 Webhook이 트리거되었을 때 Streamlit API endpoint를 호출하도록 설정해야 합니다. 이 기능은 아직 Experimental 상태이므로, Streamlit document를 참고하여 사용해야 합니다.

Step 4: Webhook URL 설정

Make에서 생성한 Webhook URL을 사용하여 Snowflake 데이터 변경 시 Streamlit 대시보드를 업데이트합니다. 앞서 언급했듯이 가장 간단한 방법은 Streamlit Community Cloud에서 앱을 재배포하는 것입니다. 좀 더 복잡한 방법은 Streamlit API (Experimental)를 사용하는 것입니다.


# Streamlit app 재배포를 위한 예시 (Streamlit Community Cloud)
# (이것은 실제로 코드가 아니라, 개념적인 설명입니다.)
# 1. Make에서 Webhook이 트리거되면, Streamlit Community Cloud API를 호출하여 앱을 재배포합니다.
# 2. 앱 재배포는 캐시를 clear하고 최신 데이터를 반영합니다.

# Streamlit API (Experimental)를 사용하는 경우
# (이것은 실제로 코드가 아니라, 개념적인 설명입니다.)
# 1. Make에서 Webhook이 트리거되면, Streamlit API endpoint를 호출합니다.
# 2. Streamlit API는 app을 refresh하는 기능을 제공합니다.
    

4. Real-world Use Case / Example

개인 투자자인 저는 주식 시장 분석에 많은 시간을 할애했습니다. 매일 엑셀 스프레드시트를 사용하여 주식 가격 데이터를 수집하고, 차트를 만들고, 투자 결정을 내렸습니다. 하지만 이 과정은 매우 번거롭고 시간이 많이 소요되었습니다. Make, Snowflake, Streamlit을 연동한 자동화된 데이터 대시보드를 구축한 후, 데이터 업데이트에 소요되는 시간을 주당 5시간 이상 절약할 수 있었습니다. 또한, 실시간 인사이트를 바탕으로 더 나은 투자 결정을 내릴 수 있게 되었습니다. 특히, 시장 변동성이 클 때 빠르게 대응할 수 있다는 점이 매우 유용했습니다.

5. Pros & Cons / Critical Analysis

  • Pros:
    • 데이터 업데이트 자동화로 시간과 노력을 절약
    • 실시간 인사이트 확보로 데이터 기반 투자 결정 최적화
    • 오류 발생 가능성 감소
    • 뛰어난 확장성 및 유연성
    • 로우 코드/노 코드 솔루션으로 개발 용이
  • Cons:
    • Make, Snowflake, Streamlit에 대한 기본적인 이해 필요
    • 초기 설정 및 구성에 시간 소요
    • Streamlit API (Experimental) 사용 시 불안정성 가능성
    • Snowflake 비용 발생

6. FAQ

  • Q: Snowflake 비용은 어느 정도 발생하나요?
    A: Snowflake 비용은 데이터 저장량, 컴퓨팅 리소스 사용량, 쿼리 실행 횟수 등에 따라 달라집니다. Snowflake 웹사이트에서 가격 정보를 확인하고, 예상 사용량을 기준으로 비용을 산정해 보시는 것이 좋습니다.
  • Q: Make 대신 다른 자동화 플랫폼을 사용할 수 있나요?
    A: 네, Zapier, Pipedream 등 다른 자동화 플랫폼을 사용할 수도 있습니다. 하지만 Make는 다양한 애플리케이션과 서비스를 연결할 수 있는 강력한 기능과 합리적인 가격 정책을 제공하므로, 이번 솔루션에 가장 적합하다고 판단했습니다.
  • Q: Streamlit 대시보드를 더 복잡하게 만들 수 있나요?
    A: 물론입니다. Streamlit은 다양한 차트 라이브러리, 위젯, 테마 등을 제공하므로, 데이터 시각화 및 사용자 인터페이스를 더욱 풍부하게 만들 수 있습니다. Streamlit documentation을 참고하여 다양한 기능을 활용해 보세요.

7. Conclusion

Make, Snowflake, Streamlit을 연동한 자동화된 데이터 대시보드는 투자 결정을 최적화하고 시간을 절약할 수 있는 강력한 도구입니다. 이 글에서 제시된 단계를 따라 자신만의 대시보드를 구축하고, 실시간 인사이트를 확보하여 더 나은 투자 결정을 내리세요. 지금 바로 코드를 시도해 보고, 데이터 기반 투자의 힘을 경험해 보세요! Streamlit 공식 문서를 확인하여 더 많은 정보를 얻으십시오.