생각해 볼 실험 하나
휴대폰을 비행기 모드로 전환해 보십시오. 그리고 가장 자주 쓰는 앱을 열어 보십시오.
어떤 앱은 그대로 하얀 화면만 뜹니다. 어떤 앱은 예전에 저장해 둔 데이터는 보여주지만, 그 외에는 아무것도 할 수 없습니다. 어떤 앱은 계속 쓸 수 있게 해 주고, 연결이 돌아오면 그때 동기화합니다.
세 번째 경우를 대부분은 "오프라인 지원"이라 부릅니다. 온라인 상태로 돌아갈 것을 전제로, 오프라인은 그저 일시적인 불편이라고 가정하는 이름입니다.
xGrid는 다릅니다. xGrid의 기본 상태는 오프라인입니다. 네트워크가 돌아오기를 기다리지 않습니다. xGrid가 배치되는 현장에서는 네트워크가 영영 돌아오지 않을 수도 있기 때문입니다.
이것은 기능이 저하된 모드가 아닙니다. 정상 모드입니다.
의료정보 시스템 전체가 장치 하나에
xGrid의 핵심은 손바닥만 한 크기의 전용 엣지 컴퓨팅 장치이며, 휴대용 배터리로 전원을 공급받습니다.
이 장치 하나에서 세 가지 시스템이 동시에 돌아갑니다:
- xGrid Community Grid — 환자 등록, 중증도 분류, 임상 인수인계, 처방을 처리합니다
- xGrid Medical Grid — 재고 관리, 혈액은행, 수술 추적, 약국 조제를 처리합니다
- xGrid READY — 시설 물자 재고와 복원력 추적을 처리합니다
세 시스템은 각각 독립적이며, 저마다 자체 데이터베이스를 갖습니다. 장치가 켜지면 모든 서비스가 자동으로 시작되고, 어느 서비스든 오류가 나면 몇 초 안에 스스로 재시작됩니다.
그런 다음 장치는 자체 와이파이 핫스팟을 엽니다.
간호사, 의사, 약사는 휴대폰을 꺼내 이 와이파이에 연결하고 브라우저를 열어 바로 작업을 시작합니다. 라우터도, 기지국도, 어떤 종류의 클라우드 서비스도 필요 없습니다.
장치 자체가 인프라입니다.휴대폰이 와이파이 범위를 벗어나면?
간호사가 50미터 떨어진 중증도 분류 텐트로 걸어가다 휴대폰의 와이파이 연결이 끊깁니다. 그래도 그녀는 환자를 분류합니다. 그 데이터는 사라질까요?
사라지지 않습니다. 휴대폰의 시스템이 그 작업을 로컬에 대기시켜 두었다가, 와이파이 범위로 돌아오면 자동으로 동기화합니다.
이 대기열은 단순히 먼저 들어온 순서대로 처리되지 않습니다. 작업은 세 가지 우선순위로 나뉩니다:
| 우선순위 | 유형 | 비고 |
|---|---|---|
| 최고: 임상 조치 | 분류, 지시, 활력징후, 응급약물 | 7일 보관, 자동 삭제되지 않음 |
| 중간: 운영 조치 | 재고 변동, 조제, 혈액은행 조치 | 3일 보관 |
| 최저: 시스템 로그 | 화면 조회, 클릭 기록 | 동기화 후 즉시 삭제 |
연결이 복원되면 임상 조치가 먼저 동기화됩니다. 대역폭이 부족하면 시스템 로그는 버려도 어떤 환자 데이터에도 영향을 주지 않습니다.
긴급 오버라이드(break-glass), 수혈 기록, 통제 약물 불출처럼 감사에 필수적인 조치는 어떤 경우에도 자동 삭제되지 않습니다. 동기화가 확인될 때까지 계속 보관됩니다.
네 가지 자동 동기화 트리거
휴대폰이 다시 범위 안에 들어오면, 시스템은 언제 동기화할지 어떻게 알까요? 하나의 메커니즘에만 의존하지 않습니다. 네 가지 독립된 트리거를 씁니다:
- 화면으로 돌아올 때 — 간호사가 다른 앱에서 시스템으로 돌아오는 즉시 동기화를 시도합니다
- 네트워크를 감지할 때 — 휴대폰이 와이파이에 연결되는 순간 즉시 동기화합니다
- 정기 점검 — 30초마다 자동으로 확인해, 동기화 대기 중인 데이터가 있으면 전송합니다
- 페이지를 닫기 전 — 마지막 시도로, 브라우저를 닫아도 데이터가 유실되지 않도록 합니다
네 가지 방어선 중 적어도 하나는 반드시 작동합니다. 실제 운영에서 오프라인 데이터의 동기화 지연은 보통 초 단위이며, 최악의 경우에도 분 단위입니다.
오프라인 카운트다운
간호 스테이션 화면 상단에는 얼마나 오래 오프라인 상태였는지를 색으로 보여주는 배너가 있습니다:
겁을 주려는 것이 아닙니다. 운영자에게 결정할 충분한 시간을 주려는 것입니다: 와이파이 범위로 돌아가 동기화할지, 오프라인 상태로 계속 작업할지. 오프라인 상태가 길어질수록 휴대폰의 데이터와 중앙 데이터베이스 사이의 차이는 커집니다. 카운트다운은 이 차이를 눈에 보이게 만듭니다.
왜 클라우드를 쓰지 않는가?
할 수 없어서가 아닙니다. 의존해서는 안 되기 때문입니다.
재난 의료가 배치되는 현장은 이렇습니다:
- 기지국이 무너져 이동통신망을 아예 쓸 수 없을 수 있습니다
- 전력이 불안정해 장치는 보조배터리로 작동합니다
- IT 담당자가 없고, 운영자는 간호사와 의사입니다
- 설정할 시간이 없어 꺼내자마자 바로 쓸 수 있어야 합니다
이런 조건에서는 클라우드에 의존하는 어떤 시스템이든 치명적인 문제를 안고 있습니다: 가장 필요한 순간에 연결이 끊겨 있을 가능성이 가장 높다는 것입니다.
xGrid의 답은 '클라우드'를 몸에 지니고 다니는 것입니다. 장치 한 대, 보조배터리 하나, 휴대폰 몇 대만 있으면 완전한 의료정보 시스템이 됩니다. 부팅부터 사용 가능까지 30초입니다.
'오프라인 퍼스트'가 실제로 의미하는 것
"오프라인 모드가 있다"는 뜻이 아닙니다.
"외부 의존성이 전혀 없어도 모든 핵심 기능을 수행할 수 있는 시스템"이라는 뜻입니다.
모든 설계 결정은 이 전제에서 출발합니다. 별도의 서버가 필요한 데이터베이스 대신 임베디드 데이터베이스를 선택했습니다. 앱스토어가 필요한 네이티브 앱 대신 브라우저 기반 애플리케이션을 선택했습니다. 실시간 동기화 대신 이벤트 큐잉을 선택했습니다. 네트워크 관리자가 설정해야 하는 VPN 대신 와이파이 핫스팟을 선택했습니다.
이 선택들은 모두 같은 질문에 대한 답입니다: 장치 한 대와 휴대폰 몇 대만 있어도 이 기능이 작동하는가?
답이 "아니오"라면, 답이 "예"가 될 때까지 다시 설계합니다.
