Azure에 원격 진료 시스템을 구축합니다.

Azure Database for PostgreSQL
Azure 기능
AKS(Azure Kubernetes Service)
Azure Storage
Azure Traffic Manager

이 문서에서는 Azure 클라우드 플랫폼을 사용하여 원격 통신 시스템을 빌드하는 방법을 설명합니다.

아키텍처

원격 진료 시스템에 포함된 Azure 구성 요소의 아키텍처 개요

이 아키텍처의 Visio 파일을 다운로드합니다.

워크플로

이 솔루션은 다음을 포함한 네 가지 핵심 요소에 기반합니다.

  • 클라이언트
  • 통신 구성 요소
  • API 및 비즈니스 논리
  • 스토리지 및 인프라 서비스

아키텍처 다이어그램의 왼쪽에는 의료 전문가와 환자인 두 그룹의 클라이언트가 있습니다. 의료 전문가는 맞춤 소프트웨어 및 웹 포털 클라이언트를 사용하여 환자와 통신합니다. 반면 환자는 Bluetooth 연결을 통해 의료 기기에 연결된 모바일 앱을 사용합니다. 백 엔드 서비스를 사용하여 이 앞뒤로 통신할 수 있습니다.

  • 공용 API
  • Web RTC를 통한 영상 통화 또는 신호를 사용한 클라이언트 간 통신과 같은 워크플로를 담당하는 내부 마이크로 서비스입니다. 신호는 서버 코드가 클라이언트 쪽 웹 애플리케이션에 비동기 알림을 보낼 수 있도록 하는 Microsoft ASP.NET용 소프트웨어 라이브러리입니다.

이러한 서비스의 상태는 Azure Database for PostgreSQL과 같은 여러 Azure 서비스(다이어그램의 오른쪽)에서 유지됩니다. 미디어 파일은 Azure 스토리지 계정에 저장됩니다. 모든 서비스의 모든 로그는 Azure Application Insights를 사용하는 중앙 집중식 로깅 솔루션에 수집됩니다. 마지막으로, Azure Notification Hub의 지원으로 푸시 알림을 통해 클라이언트 간에 비동기 통신을 수행할 수 있습니다.

솔루션은 다음과 같은 방식으로 설정되었습니다.

  • 백 엔드에서 실행되는 클라우드 서비스의 확장성을 활용할 수 있습니다.

  • 솔루션을 빌드하는 팀의 자율성을 높입니다. 각 팀은 기능 도메인을 감독하고 구성 요소의 진화를 유도합니다. 기능 도메인은 겹치지 않으므로 각 팀은 자체적으로 혁신할 수 있습니다. 또한 서비스의 코드베이스는 독립적이므로 전체 솔루션에 대한 CI/CD 파이프라인이 간소화됩니다.

  • 마이크로 서비스에 걸쳐 기능을 배포하는 데 필요한 서비스 간 통신 및 조정 메커니즘을 빌드합니다. 이 문서에 설명된 솔루션은 Azure Cache for Redis를 사용하여 이 작업을 수행합니다.

  • 중앙 모니터링을 달성하고 솔루션 문제를 해결하는 기능을 향상시킵니다.

  • 관리 ID를 활용하여 비밀, 자격 증명, 인증서 및 키를 간소화하여 서비스 간 통신을 보호합니다.

구성 요소

  • Azure Database for PostgreSQL은 사용자(환자 및 의료 전문가) 및 디바이스 관련 데이터를 저장합니다. 이 서비스는 안정적이고 경량이며 공급업체 잠금이 없어서 선택되었습니다.
  • Azure Kubernetes Service는 애플리케이션 비즈니스 논리를 호스트하며 쉽게 배포하고 사용자 지정할 수 있는 유연성을 제공합니다. 또한 이 서비스는 아래에 사용되는 실제 하드웨어에서 솔루션을 추상화합니다.
  • Azure Cache for Redis는 서비스 내 데이터(공유 데이터)에 사용되는 임시 데이터를 호스트합니다. 캐시에서 데이터가 만료되는 경우 데이터베이스에서 서비스를 다시 만들 수 있습니다.
  • Azure Notification Hub는 들어오는 콘텐츠(채팅, 영상 통화, 디바이스 구성 설정)를 환자에게 알릴 수 있습니다.
  • Azure Functions는 작업을 예약합니다. 예를 들어 대규모 사용자 집합에 대한 광범위한 통신, 분석 조정이 백 엔드에서 작동합니다(집계...).
  • Azure Application Insights는 문제 해결을 위해 시스템의 신호/이벤트(마이크로 서비스, 프런트 엔드 및 디바이스의 로그에서 로그, 원격 분석)를 중앙 집중화합니다.
  • Azure CDN(Content Delivery Network)은 웹 포털에 유지 관리 및 업데이트(Java 스크립트 파일 제공)를 수행하고 포털을 통해 미디어 파일(비디오, 이미지)을 제공하는 데 사용됩니다. 이 모든 콘텐츠는 백그라운드에서 Azure 스토리지 계정에 저장됩니다.
  • Azure Traffic Manager는 지리적 위치 간의 부하를 분산합니다.
  • Azure SignalR을 사용하면 서버 코드가 클라이언트 쪽 웹 애플리케이션에 비동기 알림을 보낼 수 있습니다. 최종 사용자 디바이스는 표준 또는 고급 모드로 구성할 수 있습니다.

대안

데이터베이스 쪽에서 다른 PaaS 데이터베이스 서비스를 사용할 수 있습니다. Azure Kubernetes Service를 사용하는 대신 애플리케이션 논리를 호스팅하는 경우 Azure 앱 Service를 사용하는 것이 좋습니다.

시나리오 정보

세부 정보는 전문 의료 조직을 원격 환자와 연결하는 실제 고객 구현을 기반으로 합니다. 이러한 시스템을 구축하는 다른 방법이 있지만, 설명된 솔루션은 환자와 원격 치료 공급자 간의 통신을 가능하게 하고 환자가 휴대하는 의료 장치를 원격으로 조정하는 데 성공했습니다.

약 7억 명의 사람이 청각 장애를 앓고 있습니다. 그러나 그 중 10%만이 보청기 장치를 사용하여 삶을 개선합니다. 일부 지역이나 상황에서는 필요할 때 환자가 직접 도움을 받을 수 없습니다. 예를 들어 다음과 같은 환자를 고려해야 합니다.

  • 청각 진료 전문가의 사무실에서 재현할 수 없는 특정 청각 상황(예: 공원에서 걷거나 파티에 참석하거나 집에 있는 동안)에서 도움이 필요한 경우
  • 이동성 문제가 있거나 청각 진료 전문가와 먼 거리에 있는 경우.
  • 청각 치료 전문가의 수가 제한된 신흥 국가/지역에 살고 있는 경우.

이러한 어려움을 극복하려면 원격으로 청력 진료 서비스를 제공하는 기능이 중요합니다. 이 경우 의료 전문가는 채팅 또는 비디오 통신을 사용하여 원격 환자와 소통합니다. 청각 장애가 있는 사용자는 스마트폰을 사용하여 원격 세션 중에 보청기 장치에 액세스할 수 있습니다. 철각 진료 전문가가 보청기 구성에 대한 변경 내용을 실시간으로 배포함에 따라 환자는 즉시 향상된 청력을 경험합니다.

잠재적인 사용 사례

이 솔루션은 의료 산업에 적합합니다. 다음과 같은 추가 사용 사례에는 유사한 디자인 패턴이 있습니다.

  • 이러한 솔루션을 사용하여 모든 Bluetooth 지원 디바이스에 액세스하고 원격으로 튜닝할 수 있습니다.
  • 원격 설정/컨텍스트의 통신(텍스트, 음성, 비디오) 또는 지식 교환(교육, 만족도 설문 조사)이 가능합니다.
  • 전역적으로 분산된 웹 콘텐츠 관리가 가능합니다.
  • IoT(사물 인터넷)

모드

표준 모드

표준 모드에서 이 맞춤 소프트웨어는 디바이스에 대한 일부 구성 JSON 파일 또는 콘텐츠를 포함하는 알림을 준비합니다. 그러면 알림이 Azure Notification Hub에 전달되어 사용자의 휴대폰으로 알림을 푸시합니다.

고급 모드

고급 모드에서 보청기 전문가는 이 맞춤 소프트웨어를 사용하여 디바이스에 자세한 구성을 푸시합니다. 이를 위해서는 백 엔드와 디바이스 간에 안정적이고 신뢰할 수 있는 연결이 필요하며, SignalR은 WebSockets를 사용하여 이를 수행합니다. 최종 사용자의 휴대폰이 이 채널의 수신 끝에 있습니다. 휴대폰에서 Bluetooth 연결은 디바이스와의 최종 통신 링크를 설정합니다.

고려 사항

이러한 고려 사항은 워크로드의 품질을 향상시키는 데 사용할 수 있는 일단의 지침 원칙인 Azure Well-Architected Framework의 핵심 요소를 구현합니다. 자세한 내용은 Microsoft Azure Well-Architected Framework를 참조하세요.

다른 클러스터 앞에서 트래픽 관리자를 사용하여 지역 간 대기 시간을 최적화하고 클러스터를 사용할 수 없게 될 경우 대체 메커니즘으로 사용하는 것이 좋습니다. 데이터베이스의 경우 대량의 데이터를 로드하고 집계해야 하는 쿼리에 읽기 전용 복제본을 사용하는 것이 좋습니다. 캐싱을 통해 속도를 향상시키기 위해 CDN(콘텐츠 배달 네트워크)을 사용하여 정적 웹 파일(.html, .js, 이미지 등)을 전역적으로 제공하는 것이 좋습니다.

배포

이 시나리오를 배포할 때 고려해야 할 가장 중요한 측면은 클라우드 기반 백 엔드 및 프런트 엔드(휴대폰/디바이스)에서 배포를 조정하는 것입니다. 이를 위해 기능 플래그의 개념을 사용하는 것이 좋습니다.

관리

각 기능 도메인이 특정 마이크로 서비스를 사용하여 장기적으로 처리할 수 있도록 데이터베이스를 여러 개의 더 작은 데이터베이스로 분할할 수 있습니다. 이를 통해 모든 서비스와 관련된 데이터를 단일 데이터베이스에 집중시키는 것이 아니라 각 마이크로 서비스와 관련된 흐름의 원칙적 격리 및 자율성을 구현할 수 있습니다. 이 목표를 달성하려면 클라우드에서 PaaS 데이터베이스 서비스의 핵심 기능 중 하나인 이러한 데이터베이스를 자동화으로 프로비전하고 관리해야 합니다. 해당 데이터베이스 관리 계층은 해당 솔루션뿐만 아니라 통합 모니터링 솔루션에도 통합되어야 합니다.

모니터링

각 계층을 모니터링하는 것이 중요하며 각 모니터링 패싯은 클라우드의 단일 버킷으로 페더레이션되어야 합니다. 이러한 모든 로그 및 원격 분석 데이터 요소의 상관 관계를 사용하도록 설정하여 구성 요소 및 계층에서 전체적인 인사이트를 보장하는 것이 중요합니다.

현재 모니터링되는 계층에는 다음이 포함됩니다.

  • Windows 애플리케이션(청각 진료 전문가의 바탕 화면에 있는 맞춤 소프트웨어)
  • 호스트된 애플리케이션 논리
  • 클라우드 서비스

크기 조정 및 확장

Azure Kubernetes 클러스터의 구성을 하루 중 시간 또는 지역 패턴에 따라 변동하는 크기 조정 요구 사항과 일치하도록 최적화해야 합니다. Azure Database for PostgreSQL에서 읽기 복제본을 사용하여 읽기 워크로드(예: 쿼리 집계)를 오프로드하는 것이 좋습니다.

PostgreSQL의 TimescaleDB 확장을 사용하면 의료 기기에서 들어오는 시간 관련 데이터를 보다 효율적으로 처리할 수 있습니다. Azure Database for PostgreSQL – 하이퍼스케일(Citus)과 같은 스케일 아웃 솔루션을 사용하여 여러 데이터베이스 노드를 프로비전함으로써 전역 규모에 도달하는 것이 좋습니다.

보안 및 규정 준수

우수한 보안은 중요한 데이터 및 시스템에 대한 고의적인 공격과 악용을 방어합니다. 자세한 내용은 보안 요소의 개요를 참조하세요.

이 솔루션은 PHI 및 개인 데이터를 처리합니다. 따라서 의료 애플리케이션에 대해 인증된 서비스(HIPAA 인증, 데이터베이스에 남아 있는 데이터뿐만 아니라 로그 및 원격 분석 데이터)를 사용하는 것이 중요합니다. 자세한 내용은 Microsoft 보안 센터의 HIPAA 섹션을 참조하세요.

AKS, PostgreSQL, Redis Cache, Notification Hub, Azure Key Vault 및 Azure Functions와 같은 암호 없는 인증 유형을 지원하는 모든 Azure 서비스에서 관리 ID를 사용하여 암호 관리를 간소화해야 합니다. Azure 리소스에 대한 관리 ID를 지원하는 모든 서비스를 참조하세요.

비용 최적화

비용 최적화는 불필요한 비용을 줄이고 운영 효율성을 높이는 방법을 찾는 것입니다. 자세한 내용은 비용 최적화 핵심 요소 개요를 참조하세요.

단일 지역 배포의 경우 가격 계산기에서 가격 책정 정보 예제를 확인할 수 있습니다.

참가자

Microsoft에서 이 문서를 유지 관리합니다. 원래 다음 기여자가 작성했습니다.

주요 작성자:

다음 단계

비즈니스에 유사한 아키텍처 구현을 시작하려면 웹 서비스, Azure Database for PostgreSQL과 같은 데이터베이스, Xamarin.NET Core와 같은 모바일 애플리케이션 개발 기술 및 기술을 구축하는 것이 좋습니다.

제품 설명서:

실시간 통신:

WebRTC가 모바일 애플리케이션에 실시간 통신 기능을 제공하는 방법에 대한 자세한 내용은 WebRTC 프로젝트 사이트에서 확인할 수 있습니다.

서버 설정:

Icelink(휴대폰의 응용 프로그램 및 보청기 전문가 바탕 화면의 맞춤 소프트웨어에서 로드됨)와 같은 클라이언트 라이브러리를 사용하여 턴 서버* 및 두 클라이언트(휴대폰의 맞춤 소프트웨어 및 응용 프로그램) 간의 연결 유형(tcp, udp, p2p)을 관리합니다. 클라이언트 라이브러리에서는 다음을 수행합니다.

  • 스트리밍 채널을 만듭니다.
  • 연결을 설정합니다.
  • 오류 발생 시 패킷이 누락된 경우 연결을 관리하고 스트리밍을 대역폭의 변형으로 자동으로 조정합니다.
  • 통화 중에 호출(오디오 및/또는 비디오)을 인코딩/디코딩합니다.

*턴 서버는 VoIP 관련 프로토콜에서 미디어 릴레이를 담당하는 네트워크 엔터티입니다. 이 솔루션에서는 전 세계 여러 데이터 센터에서 https://xirsys.com/에 의해 호스팅 됩니다. 동일한 세션에서 두 클라이언트 간에 직접 연결을 설정합니다.