프로젝트 개요
SafetyBird는 한국의 실시간 재난 정보를 다국어(한국어, 일본어, 영어)로 제공하는 iOS 앱입니다.
한국에서는 재난 상황 발생시 기지국 기반으로 핸드폰 단말에 재난문자를 발송하지만, 외국인 및 저시력자를 위한 접근성이 부족하다는 문제가 있었습니다. 이 문제를 해결하기 위해, SafetyBird는 재난 정보를 수집한 후 가공하여, iOS 앱을 통해 사용자에게 더 나은 방식으로 안전 정보를 제공합니다.
사용된 기술
백엔드
SafetyBird는 서비스 고도화를 위해 마이크로서비스 아키텍처를 기반으로 백엔드를 직접 구축하였습니다. 정보 수집 모듈, Push Notification 모듈, REST API 서버를 각각 독립적인 서비스로 분리하고, Docker 컨테이너로 배포하여 HTTP 기반으로 통신하도록 설계했습니다.
- 정보 수집 서비스: 정부와의 계약을 통해 실시간 재난 정보 수집
- Push Notification 서비스: 긴급도에 따라 ASPN 서버에 Push를 요청하는 모듈
- REST API 서버: 클라이언트(iOS)와 데이터를 주고받는 hono 서버
- 데이터 관리: MongoDB를 이용하여 비정형화된 데이터를 저장
이번에는 언어로는 TypeScript, 런타임 환경으로는 Bun을 이용하여 개발을 진행했습니다. 배포를 위해서는 OCI(Oracle Cloud Infrastructure)의 Compute 환경을 이용하여 컨테이너들을 배포했습니다.
iOS
SwiftUI와 MV 아키텍처를 이용하여 앱을 개발했습니다. 재난문자 데이터를 저장하고 관리할수 있도록 SwiftData를 이용했으며, Firebase Analytics를 이용하여 이용자의 행동 데이터를 분석하여 서비스 개선을 위한 데이터를 수집하고 있습니다.
Safety Bird로 해결한 문제
기존 재난 문자 방송 시스템의 한계
이 프로젝트를 진행하는 것을 결정하고, 기존 시스템에서 제가 느낀 문제점은 이하와 같습니다.
- 기존 재난문자를 제공할때는 한 번만 표시되기 때문에, 사용자가 제때 정보를 확인하지 못 하면 다시 확인하기 어렵다.
- 정보가 한국어로만 제공되기 때문에 한국어를 모르는 외국인 관광객 및 재한외국인들은 사안의 심각성을 판단하기 힘드며, 메세지가 어떤 내용인지도 유추할수 없다.
- 저시력자, 시각장애인들은 고려한 접근성이 부족하다.
- 재난문자가 어떤 경고를 하고 있는지 쉽게 구분할 방법이 없다.
- 정보가 해당 지역에만 머물기에, 다른 지역에 있는 사람이 재난문자 정보에 접근할 수 없다.
SafetyBird의 해결 방법
SafetyBird는 기존 재난 문자 방송 시스템의 한계를 극복하기 위해, 서버를 구축하여 재난 문자를 가공하고 이를 모바일 앱을 통해 정보를 제공하고 있습니다.
실시간 재난 정보 수집 및 제공
기존 재난 문자 시스템은 한국어로만 제공되며, 기지국을 통해 1회성 메시지로 발송되는 방식이었습니다. 이러한 단점을 해결하기 위해, SafetyBird는 정부로부터 공식적인 데이터 접근 허가를 받아 실시간 원본 재난 정보를 수집하는 구조를 구축했습니다.
이를 통해 사용자는 앱 내에서 실시간으로 재난 정보를 확인할 수 있으며, 이전 재난 기록도 다시 조회할 수 있도록 설계되었습니다. 또한, 긴급도에 따라 푸시 알림을 제공하는 시스템을 도입하여, 사용자가 중요한 정보를 놓치지 않도록 했습니다.
AI 기반 실시간 다국어 번역 시스템
정부의 원본 데이터를 활용하여 실시간 재난 정보를 수집한 후, Google의 Gemini의 구조화된 출력을 활용해 영어 및 일본어로 즉시 번역하는 기능을 구현했습니다.
특히, SafetyBird는 단순 기계 번역이 아닌, 재난 경보에서 자주 사용되는 단어집을 사용하는 AI 모델을 적용하여 번역의 정확도를 높였습니다. 이를 통해 외국인 관광객이나 재한 외국인들이 보다 직관적으로 정보를 이해하고 대응할 수 있도록 개선되었습니다.
저시력자 및 시각장애인을 고려한 접근성 기능 제공
기존 재난 문자 시스템은 시각장애인이나 저시력자를 고려한 설계가 아니었습니다. iOS나 Android에서도 VoiceOver 혹은 Talkback와도 같은 지원 기능은 정상작동하긴 하지만, 정보를 원할 때 조회 가능하게 제공하지 못 하는 부분이 아쉬웠습니다.
SafetyBird는 Apple에서 제공하는 VoiceOver 기능과 Dynamic Type을 앱에서 원활하게 사용할수 있게 지원하고 있습니다.
직관적인 설계
재난 데이터를 분석하여 해당 재난을 33개의 유형으로 분류하고 유형에 맞는 아이콘과 타이틀을 나타내서, 직관적으로 상황을 파악할 수 있도록 UI를 설계했습니다.
앞으로의 개선 방향
추가 언어 지원
- 현재의 토큰 소모량을 측정하고, 번역의 성능을 평가한 후 중국어, 스페인어 등의 번역을 추가
사용자 맞춤 알림 기능
- 사용자의 관심 지역, 현재 위치를 반영하여 맞춤화된 정보만 받아볼 수 있는 기능을 제공
서비스 대상을 일본으로 확대
- L-Alert을 이용하여 일본 지역에서도 외국인들이 안전문자에 대한 정보를 쉽게 확인할 수 있도록 개선