클라우드 네이티브한 다차원 데이터, Zarr
FOSS4G 2025에 다녀온 사내 개발자 분들이 기술 세미나를 하면서 다차원 데이터를 다루면서 클라우드 네이티브(Cloud-Native)한 Zarr라는 데이터 포맷이라는 걸 소개해 주셔서 LLM의 도움을 받아 찾고 정리해 보았습니다. 이제 겨우…
클라우드 네이티브한 다차원 데이터, Zarr
FOSS4G 2025에 다녀온 사내 개발자 분들이 기술 세미나를 하면서 다차원 데이터를 다루면서 클라우드 네이티브(Cloud-Native)한 Zarr라는 데이터 포맷이라는 걸 소개해 주셔서 LLM의 도움을 받아 찾고 정리해 보았습니다. 이제 겨우 NetCDF, Grib2 맛보기 정도만 해봤는데, 이미 2016년부터 Zarr가 개발되고 있었다니…😭
1. Zarr란 무엇인가?
Zarr는 다차원 압축 배열 데이터를 저장하기 위한 오픈 소스 포맷입니다. 2022년 OGC(Open Geospatial Consortium) 커뮤니티 표준으로 채택되며 지리공간 데이터 분야의 핵심 기술로 자리 잡았습니다.
왜 Zarr인가? (클라우드 네이티브의 장점)
- 부분 읽기(Partial Reading): 전체 파일을 다운로드하지 않고, 필요한 데이터 조각(Chunk)만 HTTP Range Request를 통해 즉시 가져옵니다.
- 병렬 처리: 여러 프로세스가 서로 다른 데이터 조각을 동시에 읽고 쓸 수 있어 대규모 분석 속도가 비약적으로 향상됩니다.
- 유연한 스토리지: 로컬 폴더뿐만 아니라 AWS S3, Google Cloud Storage 등 객체 스토리지에 최적화되어 있습니다.
2. Zarr의 내부 구조 파헤치기: example.zarr
Zarr는 데이터가 폴더 구조로 저장됩니다. example.zarr 폴더 내부를 들여다보면 다음과 같은 구조를 가집니다. example.zarr는 맨 아래 Github에 있는 노트북을 실행해보면 직접 만들어 볼 수 있습니다.
example.zarr/
├── zarr.json # 그룹 전체의 메타데이터 (Zarr v3 기준)
└── data/ # 우리가 생성한 배열 데이터 그룹
├── zarr.json # 배열의 형태(Shape), 타입, 청크 크기 정보
├── c0/0 # 0행 0열 데이터 조각 (Compressed Chunk)
├── c0/1 # 0행 1열 데이터 조각
└── ... # 바둑판 모양으로 쪼개진 데이터 파일들
- 메타데이터 파일 (.json): 데이터의 스키마와 압축 알고리즘 정보를 담고 있어, 이를 먼저 읽어 데이터의 전체 모습을 파악합니다.
- 청크 파일 (c0/0…): 실제 수치 데이터가 담긴 압축 파일입니다. 사용자가
[0:100, 0:100]범위를 요청하면 Zarr는 해당 영역에 맞는 특정 청크 파일만 서버에서 가져옵니다.
3. 주피터 노트북 실습 가이드
아래의 깃허브 저장소에서 제공하는 zarr_example.ipynb 노트북은 3가지 내용으로 구성되어 있습니다.
3.1. Zarr 배열 생성 (Local)
Zarr v3 문법을 사용하여 로컬 환경에 다차원 배열을 생성합니다. 1,000x1,000 크기의 데이터를 100x100 크기의 ’청크’로 나누어 저장하는 과정입니다.
3.2. 클라우드 데이터 로딩 및 시각화 (Remote)
미국 NOAA에서 제공하는 S3 버킷의 해수면 온도(SST) 데이터를 로드합니다. 수백 GB의 데이터지만, Lazy Loading 덕분에 우리가 슬라이싱한 한국 인근해(lat: 20~50, lon: 120~150) 데이터만 실시간으로 스트리밍하여 지도로 그려냅니다.

해수면 온도 데이터 지도 시각화
3.3. 포맷 변환 (NetCDF → Zarr)
기존에 사용하던 ds_kor2.nc 같은 NetCDF 파일을 to_zarr() 함수 하나로 간단하게 클라우드 최적화 포맷으로 변환하는 방법을 다룹니다.
3.4. 시작하기 위한 환경 구축
실습을 위해 아래 라이브러리 설치가 필요합니다.
# 기본 분석 및 시각화 도구
pip install numpy xarray geoviews cartopy hvplot jupyter_bokeh
# Zarr의 클라우드 원격 접속 기능 활성화
pip install "zarr[remote]" "fsspec[http]"
4. 정리
브이월드에서 SHP만 고집하지 말고 벡터는 FlatGeobuf, GeoPackage, 래스터는 COG, 그리고 기상청 등 기상/과학 데이터를 제공하는 곳에서는 Zarr로 데이터를 제공하면 주는 곳이나 받는 곳 모두 좋지 않을까 싶습니다.
주피터 노트북 및 예제 파일은 아래 깃허브에서 확인하실 수 있습니다.
🔗 GitHub 저장소: https://github.com/thlee33/ZARR_example2512
5. 도움을 받을 수 있는 주요 리소스
- 공식 문서 (Zarr Python): https://zarr.readthedocs.io/
- Zarr 사양(Spec) 정보: https://zarr-specs.readthedocs.io/
- OGC Zarr 표준 페이지: https://www.ogc.org/standard/zarr/
- Pangeo Forge (대규모 기상 데이터 변환 프로젝트): https://pangeo-forge.org/
메타데이터
- post_id
- c5dce4aa13b1
- slug
- 클라우드-네이티브한-다차원-데이터-zarr-c5dce4aa13b1
- url
- https://medium.com/@thlee33/%ED%81%B4%EB%9D%BC%EC%9A%B0%EB%93%9C-%EB%84%A4%EC%9D%B4%ED%8B%B0%EB%B8%8C%ED%95%9C-%EB%8B%A4%EC%B0%A8%EC%9B%90-%EB%8D%B0%EC%9D%B4%ED%84%B0-zarr-c5dce4aa13b1
- canonical_url
- https://medium.com/@thlee33/%ED%81%B4%EB%9D%BC%EC%9A%B0%EB%93%9C-%EB%84%A4%EC%9D%B4%ED%8B%B0%EB%B8%8C%ED%95%9C-%EB%8B%A4%EC%B0%A8%EC%9B%90-%EB%8D%B0%EC%9D%B4%ED%84%B0-zarr-c5dce4aa13b1
- author_url
- https://medium.com/@thlee33
- status
- ok
- fetched_at
- 2026-06-22 05:41:33