01
SatCHAT
위성 데이터를 다루는 대화형 AI 플랫폼
Overview
위성영상 분석 SaaS의 프론트엔드를 v1 출시부터 v2 모노레포 전환까지 2년 8개월 맡았습니다.
지도에 관심 지역을 그리면 해당 지역의 위성영상을 찾고, 채팅으로 변화 탐지와 시계열 분석을 이어 가는 제품입니다.
v1은 프론트엔드를 단독으로, v2는 2인 체제에서 공동으로 개발했습니다.
Problem
위성영상 분석은 전용 프로그램을 설치하고, 영상을 전처리하고, 지수를 계산해 해석할 줄 알아야 하는 일이었습니다. 도메인 전문가가 아니면 시작조차 어려웠습니다.
이 과정을 지도에 도형을 그리고 질문하는 일로 줄이는 것이 제품의 목표였습니다.
Constraint
원본은 브라우저가 감당하지 못한다
위성영상 한 장은 브라우저가 통째로 받아서 그릴 수 있는 크기가 아닙니다. 그런데 사용자는 지도를 끌고 확대하는 내내 끊김 없이 보기를 기대합니다.
분석 응답은 흐르는 중에 끊긴다
분석 결과는 한 번에 오지 않고 스트리밍으로 옵니다. 연결이 끊기면 사용자는 답을 받다 만 화면을 보게 됩니다.
네 개 로케일로 동시에 나간다
화면은 영어·한국어·일본어·인도네시아어로 함께 나갑니다. 문구뿐 아니라 숫자와 날짜, 줄바꿈까지 언어마다 다르게 굴러야 합니다.
Decision
원본 대신 타일로 가져온다
COG(Cloud Optimized GeoTIFF) 타일로 지금 보고 있는 영역만 가져옵니다. NDVI 같은 분광지수도 같은 경로로 그려서, 지수를 바꿔도 새 영상을 다시 받지 않습니다.
구름 마스크는 저해상도부터 깐다
정확한 구름 마스크를 기다리는 동안 화면이 비어 있으면 사용자는 고장으로 읽습니다. 저해상도를 먼저 보여 주고 고해상도를 비동기로 얹어, 기다리는 동안에도 분석 상태를 읽을 수 있게 했습니다.
EventStream을 WebSocket으로 바꿨다
끊기는 스트리밍을 EventStream에서 WebSocket으로 옮기고 Ping-Pong으로 연결을 유지했습니다. 대화가 길어져도 답이 중간에 사라지지 않습니다.
지도 로직을 앱에서 떼어 냈다
AOI 드로잉, 비교 뷰, 공간 파일 파서를 공용 패키지로 분리해 앱 사이의 중복을 없앴습니다. 이 패키지는 나중에 오픈소스로 공개했습니다.
Interface

- 01꼭짓점을 끌어 다듬는다. 스스로 교차한 도형과 최소 면적 미만은 그리는 도중에 걸러 낸다.
- 02면적을 즉시 되돌려 준다. 검색을 누르기 전에 범위가 타당한지 사용자가 먼저 판단한다.
- 03같은 화면에서 말로 이어 간다. 지도와 대화가 다른 화면으로 갈라지지 않는다.

- 01한 장, 두 장 비교, 시계열로 분석 모드가 갈린다. 고른 모드가 아래 목록이 요구하는 영상 수를 정한다.
- 02분광지수를 고르면 같은 COG 타일 경로로 다시 그린다. 지수를 바꿔도 영상을 새로 받지 않는다.
- 03영상마다 촬영 시각과 해상도(GSD)가 붙는다. 분석 결과를 나중에 되짚으려면 출처가 화면에 남아 있어야 한다.

- 01가운데 손잡이로 경계를 옮긴다. 한쪽을 끌면 반대쪽도 같이 움직인다. 두 시점이 어긋나면 비교 자체가 틀어진다.
- 02양쪽이 같은 지수 눈금을 쓴다. 눈금이 다르면 색이 같아도 값이 다르다.
Engineering
- AOI지도에서 그린 도형을 검증해 좌표로 넘긴다
- Search그 좌표에 걸린 위성영상을 찾는다
- COG tiles보고 있는 영역만 타일로 받아 그린다
- WebSocket분석 응답이 끊기지 않고 흘러 들어온다
- Canvas지수·마스크·비교 뷰가 한 화면에 겹친다
세 번의 지도 엔진
v1은 OpenLayers로 시작해 Mapbox GL로 옮겼고, v2에서는 MapLibre까지 다뤘습니다. 엔진이 바뀌어도 앱 코드가 흔들리지 않도록 지도 조작을 공용 패키지 뒤에 두었습니다.
그리는 도중에 거르는 검증
스스로 교차하는 폴리곤과 최소 면적 미만을 그리는 시점에 판정합니다. 잘못된 도형이 검색까지 내려가면 오류는 훨씬 뒤에서 드러납니다.
다시 그리는 횟수를 줄인다
리사이즈 옵저버에 쓰로틀링을 걸어 창 크기가 바뀌는 동안 지도가 매 프레임 다시 그려지지 않게 했습니다.
깨졌을 때 알 수 있게
Sentry를 클라이언트·엣지·서버에 걸고, 로그인 이후 화면까지 포함한 Lighthouse 측정 환경과 PR 자동 검증 파이프라인을 세웠습니다.
Result
2024년 7월 클로즈드 베타를 거쳐 12월 정식 출시했고, 출시와 동시에 국내 공공연구기관과 첫 유료 구독 계약을 맺었습니다.
일부 언론은 이를 위성 분야 챗봇의 세계 최초 상용화로 보도했습니다. 지도 공용 패키지는 오픈소스로 공개해 지금도 쓰이고 있습니다.
화면은 공개된 제품 소개 페이지의 것입니다. 회사 코드와 내부 자료는 싣지 않았습니다.