AllJoyn 이해 - Architecture 개념 정리

Allseen Alliance에 소개되어 있는 AllJoyn의 Architecture 내용을 이해하기 위해 아래와 같이 해석해서 정리해 보았습니다. 개발자 입장에서 볼 때 새로운 용어나 개념의 이해가 선행되어야 코드상에서의 접근이 용이하다는 것은 중요한 점입니다. 많은 용어와 개념들을 가능한한 원문 형태로 이해하는것이 가장 빠른 방법입니다.
(원문 참조 : https://allseenalliance.org/developers/learn/architecture )


ARCHITECTURE

Network Architecture

AllJoyn™ 프레임워크는 로컬 네트웍 상에서 동작 합니다. 디바이스들과 앱들이 서로를 광고(advertise)하고 발견(discover)하는 것을 가능하게 합니다. 이 섹션은 네트웍 아키텍쳐와 다양한 AllJoyn 컴포넌트들 사이에서의 관계를 설명합니다.

Apps and Routers
AllJoyn 프레임워크는 AllJoyn Apps와 AllJoyn Routers ,짧게 얘기하면 Apps 와 Routers 로 구성됩니다. 앱들(Apps)은 라우터들(Routers)과 라우터들은 앱들과  통신하게 됩니다. 앱들은 다른 앱들과 통신하기 위해서 오직 라우터를 통해서만 가능합니다.

앱들과 라우터들은 동일한 물리적인 디바이스 혹은 서로 다른 디바이스 상에서 존재할 수 있습니다. AllJoyn관점에서 이것은 중요하지 않습니다. 실제 아래와 같이 일반적인 3가지의 토폴로지가 존재합니다.

1. 앱이 라우터를 소유하고 있는 경우
이 경우, 라우터는 어플리케이션에 번들로 동봉된 개념으로 "Bundled Router"라고 합니다. 
안드로이드나 애플의 iOS 및 윈도우즈나 맥의 OS X와 같은 데스크탑 OS 상의 앱들이 일반적으로 이 그룹에 속합니다. 

2. 여러 앱들이 같은 디바이스 상에서 하나의 라우터를 사용하는 경우
이 경우,  라우터는 "Standalone Router"라고 하고 일반적으로 백그라운드로 동작하는 서비스 프로세스 형태로 동작합니다. 이것은 리눅스 시스템 상에서 범용적인 데몬 프로세서 처럼 AllJoyn 라우터가 실행되며 각각의 올조인 앱들은 이 공용 Standalone Router에 접속하게 됩니다. 많은 앱들이 공용 라우터에 접속하게 됨으로써, 디바이스는 적은 리소스를 소비하게 되어 효율적입니다.

3. 앱이 다른 디바이스상의 라우터를 사용하는 경우
임베디드 디바이스에 해당되는 사항으로 통상 AllJoyn 라우터를 실행하기에 충부하지 않은 CPU와 메모리를 가진 디바이스 들이 해당 됩니다.(표준 AllJoyn 프레임워크에 비해 임베디스 디바이스에 필요한 최소한의 구성을 사용하는 의미로 이해)

아래 그림의 왼쪽 모바일의 경우는 각각의 앱이 라우터를 소유하는 1번에 해당하고, 
상단 두개의 임베디스 디바이스들은 3번의 다른 디바이스상의 라우터를 사용하는 경우에 해당되고, 오른쪽 하단의 경우는 리눅스와 같이 공용 라우터를 공유하는 2번의 경우에 해당됩니다.


Transports
AllJoyn 프레임워크는 로컬 네트웍 상에서 구동됩니다. 현재 Wi-Fi, Ethernet, Serial 그리고 Power Line(PLC)를 지원합니다. AllJoyn 소프트웨어는 전송계층에 종속되지 않는 형태로 개발되었고 오픈소스 형태로 계속 진화하면서 미래에는 더 많은 전송계층을 추가 지원하게 될 것입니다. 

또한, 브리지 소프트웨어는 Zigbee, Z-wave 또는 클라우드와 같은 다른 시스템에 AllJoyn 프레임워크를 연결해 만들 수 있습니다. 사실, 워킹그룹은 표준 AllJoyn 서비스로 Gateway Agent를 추가하는 작업을 진행하고 있습니다.


Software Architecture

AllJoyn 네트워크는 올조인 어플리케이션들과 올조인라우터들로 구성됩니다.
AllJoyn 어플리케이션은 아래의 컴포넌트로 구성됩니다.
AllJoyn 라우터는 독립적으로 존재하거나 AllJoyn 코어 라이브러리에 번들로 포함되어 구동 될 수 있습니다.


AllJoyn Router
AllJoyn Router 는  다른 전송 계층 사이를 포함하여 AllJoyn 라우터들과 어플리케이션 사이에 AllJoyn 메시지를 전달하는 전송 경로를 설정합니다.

AllJoyn Core Library
AllJoyn Core LIbrary는 올조인 네크워크와 상호작용하는 가장 낮은 API들의 셋을 제공합니다.
이는 다음과 같은 기능의 직접 엑세스 제공합니다:
  • Advertisements and discovery
  • Session creation
  • Interface defintion of methods, properties, and signals
  • Object creation and handling
개발자는 AllJoyn 프레임워크 서비스를 구현하거나 전용 인터페이스들을 구현하기 위해 이 API들을 사용한다.

Learn more about AllJoyn Core Frameworks.

AllJoyn Service Framework Libraries
AllJoyn 서비스 프레임워크는 onboarding, notification, control panel 과 같은 공용 서비스 셋을 구현한다. 공용 AllJoyn 서비스 프레임워크를 사용함으로써, 앱들과 디바이스들의 각각의 특정 기능을 수행하는 것이 올바르게 상호작용 할 수 있습니다.
서비스 프레임워크는 AllSeen 워킹그룹 속으로 세분화 됩니다:
    • Onboarding. Wi-Fi 네트워크에 새 장치를 가져올 수 있는 일관된 방법을 제공합니다.
    • Configuration. 어플리케이션/디바이스의 친숙한 이름과 같은 확실한 속성들을 설정할 수 있습니다.
    • Notifications. AllJoyn 네트워크 상에서 디바이스들에 의해 전송 및 수신되는 텍스트 기반 알림 통지를 할 수 있습니다.. 또한 URL을 통해 오디오와 이미지를 지원합니다. 
    • Control Panel. 디바이스들이 원격으로 제어하기 위한 가상 컨트롤 패널을 광고하도록 할 수 있습니다. 
  • More Service Frameworks. 더많은 서비스 프레임워크들이 AllSeen 워킹그룹들에 의해 활발히 개발되고 있습니다. 
개발자들은 가능한한 AllJoyn서비스 프레임워크들을 사용하는 것이 좋습니다.
만약 존재하는 서비스를 사용하지 못하는 경우, 개발자는 표준 서비스를 만들기 위해 AllSeen 얼라이언스와 일하는 것을 권장합니다. 어떤 경우에는, 개별적인 서비스와 인터페이스를 사용하는 것이 가장 일반적이지만, 반면에 이런 서비스들은 상호 작용 하지 못하게 되거나 거대한 디바이스들과 앱들의 AllJoyn 에코시스템에서의 잇점을 가질 수 없게 될 것입니다. 

AllJoyn App Code
이것은 AllJoyn 어플리케이션의 어플리케이션 로직 입니다. 상위 레벨 기능을 제공하는 AllJoyn 서비스 프레임워크 또는 AllJoyn 코어 API에 직접 엑세스를 제공하는  AllJoyn 코어 라이브러리로 프로그램화 될 수 있습니다.


Thin and Standard
AllJoyn 프레임워크는 두가지 종류가 제공됩니다.

  • Standard. 안드로이드, iOS, 리눅스와 같은 임베디드 디바이스가 아닌 경우에 해당됩니다. 
  • Thin. 아두이노, 쓰레드X, 메모리가 제한된 리눅스와 같은 자원이 제한된 임베디드 디바이스들이 해당됩니다.





Programming Models

일반적으로 어플리케이션션들은 동일한 AllJoyn 서비스 프레임워크를 사용하는 다바이스들과 호환될 수 있도록 AllJoyn 서비스 프레임워크 API를 사용해서 만들어지게 됩니다.
AllSeen  에코시스템 내에서, 오직 AllSeen 워킹 그룹들에 의해 개발된 AllJoyn 서비스 프레임워크를 사용한 어플리케이션만이 다른 어플리케이션들과 디바이스들과 호환될 수 있습니다.

만약 어플리케이션이 자신의 서비스를 구현하기를 원할 경우, AllJoyn 코어 API를 직접 프로그래밍하여 구현 할 수 있습니다. 이렇게 할 경우, 다른 AllJoyn 디바이스들 사이의 에드혹 상호작용을 가능하게하기 위해 Events와 Actions의 규칙을 따르기를 권장 합니다.

어플리케이션은 서비스 프레임워크와 코어 API를 함께 사용할 수 있습니다.

이상 AllJoyn의 Architecture 개념을 정리해 보았습니다.

댓글

이 블로그의 인기 게시물

Virtual Box에서 공유폴더 설정하기

라즈베리파이2 구입 및 간단 설치하기 (NOOBS)