참고: 이 내용은 2022. 3. 2에 게시된 컨텐츠(Democratizing Data Apps — Snowflake to Acquire Streamlit)에서 번역되었습니다.

지난 몇 년 동안 BlackRock, Instacart, Lacework와 같은 회사의 대규모 고객 대면 앱을 비롯하여 Snowflake를 기반으로 구축되는 데이터 앱의 수가 크게 증가했습니다. 당사는 개발자들이 이러한 응용 프로그램을 더 빠르게 구현하고, 확장성을 높이며, 사용자(직원, 파트너 또는 고객)에게 보다 강력한 통찰을 제공하는 데 당사의 플랫폼이 도움이 되었다는 사실에 매우 뿌듯함을 느낍니다.

그러나 당사의 사명은 전 세계의 데이터를 동원하는 것이며, 풀 스택 엔지니어링 팀에 액세스할 수 없는 데이터 과학자와 개발자가 수백만 명에 달합니다. 당사는 어떻게 해야 개별 개발자, 데이터 과학자, 머신 러닝 엔지니어가 스스로 세계 최고의 데이터 앱을 구축하고 공유하도록 할 수 있을지 궁금했습니다.

이를 가능토록 하기 위해 데이터 애플리케이션 구축을 위한 최고의 프레임워크인 Streamlit이 최고의 데이터 플랫폼인 Snowflake에 합류할 것임을 발표하게 되어 매우 기쁩니다. 아직 거래가 완료되지 않았으며 관례적인 종결 조건이 적용되지만 미리 보기를 제공해 드릴 수 있습니다.

당사의 공동 고객은 수년 동안 Streamlit과 Snowflake로 앱을 구축해왔으며 해당 고객이 원활한 경험을 할 수 있도록 함께 일하면서 서로에 대해 조금 알게 되었습니다. 당사는 작년에 내부 해커톤을 개최했으며, 이때 여러 팀이 독립적으로 Streamlit을 사용하여 며칠 만에 Python 몇 줄로 훌륭해 보이는 고품질 앱을 구축했습니다. 당사는 더 많은 사람들이 데이터 앱에 액세스할 수 있도록 하는 아주 좋은 방법은 두 기술이 더 밀접해지도록 하는 것임을 깨달았습니다.

이것이 강력한 이유의 간단한 예를 좀 더 쉽게 보여드릴 수 있습니다. 다음은 데이터 마켓플레이스에서 무료로 제공되는 데이터 집합을 사용하여 캘리포니아에 있는 카운티의 코로나 19 사례 수 차트를 보여주는 Streamlit/Snowflake 앱의 전체 Python 코드입니다. 또한 현재 미리 보기로 제공되는 Python용 Snowpark를 사용하면 이 앱을 순수한 Python으로 작성하여 SQL도 데이터프레임 작업으로 대체할 수 있습니다.

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

# Open a connection to Snowflake, using Streamlit's secrets management
# In real life, we’d use @st.cache or @st.experimental_memo to add caching
conn = snowflake.connector.connect(**st.secrets["snowflake"])

# Get a list of available counties from the State of California Covid Dataset
# Data set is available free here: https://app.snowflake.com/marketplace/listing/GZ1MBZAUJF
# More info on the data set: https://www.snowflake.com/datasets/state-of-california-california-covid-19-datasets/ 
counties = pd.read_sql("SELECT distinct area from open_data.vw_cases ORDER BY area asc;", conn)

# Ask the user to select a county
option = st.selectbox('Select an area:', counties)

# Query the data set to get the case counts for the last 30 days for the chosen county
cases = pd.read_sql(f"SELECT date day, SUM(cases) CASES FROM open_data.vw_cases WHERE date > dateadd('days', -30, current_date()) AND area = %(option)s GROUP BY day ORDER BY day asc;", conn, params={"option":option})
cases = cases.set_index(['DAY'])

# Render a line chart showing the cases
f"Daily Cases in {option} over the last 30 days"
st.line_chart(cases)

이 앱의 결과:

해커톤 직후 당사는 Streamlit의 설립자인 Adrien, Thiago, Amanda와 훨씬 더 쉽게 Snowflake와 Streamlit을 함께 사용할 수 있는 방법에 대한 이야기를 나누었습니다. 대화를 나눈 지 얼마 되지 않아 개발자와 데이터 과학자에게 권한을 부여하려는 비전이 상당히 일치한다는 것을 알게 되었습니다. 양측 모두 멋지고 강력한 데이터 앱을 쉽게 구축하고 공유할 수 있도록 지원하여 모든 종류의 데이터 가치를 실현하고자 합니다. 그와 동시에 Streamlit의 사용 편의성, 유연성, 오픈 소스 커뮤니티와 Snowflake의 확장성, 데이터 범위, 거버넌스가 결합되면 전혀 새로운 차원의 데이터 앱을 구축할 수 있다는 것을 깨달았습니다. 두 회사가 데이터 과학자와 개발자를 위해 위대한 결합을 이루려는 이유에 대해 당사의 공동 설립자 Benoit와 Streamlit의 공동 설립자 Adrien이 나누는 이야기를 더 들어보시기 바랍니다.

거래가 종결되면 설립자와 훌륭한 팀뿐만 아니라 전체 Streamlit 커뮤니티와 함께 힘을 모을 수 있게 되어 매우 기쁩니다. 오픈 소스 프로젝트에는 수만 명의 Streamlit 개발자와 100명이 넘는 기여자가 있습니다. 커뮤니티는 오늘날의 Streamlit을 만드는 데 큰 역할을 했으며 앞으로도 Streamlit의 미래를 결정하는 중요한 역할을 하게 될 것입니다. 단지 누구나 어디에서 앱을 구축할 수 있다는 것이 Streamlit의 마법이 아니라 Streamlit 그 자체가 마법입니다. 당사는 오픈 소스 프로젝트와 커뮤니티를 지원하고 성장시키는 데 전념하고 있습니다.

그리고 더 많은 일들이 우리를 기다리고 있습니다. 6월 Snowflake Summit에서 만날 때는 어떻게 하면 보다 쉽고 강력하게 데이터 앱을 함께 구축할 수 있을지에 대한 더 많은 계획을 공유할 수 있을 것으로 예상합니다.

마지막으로, Snowflake 및 Streamlit에 참여하여 세계 최고의 데이터 애플리케이션용 플랫폼을 구축하기를 원하시는 분은 언제나 환영합니다. 앱 구축을 시작하고, Streamlit 포럼에 들러 인사를 나누고, 커뮤니티에서 다른 사람들과 만나거나 수많은 Snowflake 채용 공고를 살펴보십시오!

모두 함께 모여 무엇을 구축하게 될지 매우 기대됩니다.