설치 및 업그레이드 > 배포 아키텍처 안내서 > ThingWorx Foundation 배포 구성 요소
ThingWorx Foundation 배포 구성 요소
ThingWorx 구성 요소는 클라이언트, 응용 프로그램 및 데이터라는 세 가지 레이어로 생각해볼 수 있습니다. 다음 이미지는 ThingWorx 솔루션의 기본 시작점을 보여줍니다.
사물/장치: 이 레이어에는 ThingWorx Platform에서의 연결, 데이터 전송 및 콘텐츠 수신 작업을 수행하는 사물, 장치, 에이전트 및 기타 자산이 포함되어 있습니다.
사용자/클라이언트: 이 레이어에는 사용자가 ThingWorx Platform에 액세스하는 데 사용하는 제품(주로 웹 브라우저)이 포함되어 있습니다.
플랫폼: 플랫폼 레이어(또는 응용 프로그램 계층)는 ThingWorx Foundation이 위치한 곳으로, ThingWorx 시스템의 허브 역할을 수행합니다. 이 레이어는 클라이언트 레이어에 대한 연결을 제공하고, 인증 및 승인 확인을 수행하고, 콘텐츠를 수집/처리/분석하고, 경고 전송과 같은 조건에 반응합니다.
데이터베이스: 데이터베이스 레이어는 ThingWorx Runtime 모델 메타데이터 및 시스템 데이터를 유지합니다.
모델 메타데이터에는 ThingWorx 엔티티 정의, 사물 정의 및 연관된 속성 정의가 포함되어 있습니다.
ThingWorx 모델에 대해 수집한 런타임 데이터입니다. 이 데이터는 ThingWorx 모델에서 블로그, wiki, 스트림, 가치 스트림 및 데이터 테이블의 콘텐츠 행으로 유지되는 테이블 형식 또는 시계열 데이터일 수 있습니다.
ThingWorx 솔루션의 성능과 복잡성이 증가함에 따라 각 계층 내 아키텍처 요구사항도 많아집니다.
다음 단원에서는 구성 요소가 작동하는 계층 또는 레이어 내 ThingWorx 솔루션의 각 구성 요소를 소개합니다.
사용자/클라이언트 구성 요소
ThingWorx Composer 또는 실행 시간 매쉬업을 통해 ThingWorx Platform에 액세스하는 사용자 또는 클라이언트는 HTML/HTML5를 지원하는 최신 브라우저(예: Microsoft Edge, Firefox, Safari 또는 Chrome)를 사용해야 합니다.
사물/장치 구성 요소
ThingWorx Edge MicroServer - ThingWorx Edge MicroServer(EMS)는 인터넷상에서 ThingWorx 서버에 연결해야 하는 에지 장치 또는 데이터 저장소와 함께 작동합니다. 따라서 방화벽 뒤에 있는 장치 및 데이터 저장소가 ThingWorx 서버와 안전하게 통신하고 솔루션 환경에 완벽하게 참여할 수 있습니다. ThingWorx EMS는 단순 커넥터가 아니지만 데이터의 인텔리전스 및 사전 처리를 에지로 이동할 수 있게 합니다.
ThingWorx Edge SDK - ThingWorx Edge SDK는 에지 장치에서 ThingWorx Platform으로 데이터를 안전하게 전송할 수 있는 응용 프로그램을 생성하기 위한 프레임워크를 제공하는 클래스, 객체, 함수, 메소드 및 변수의 컬렉션입니다. ThingWorx Edge SDK는 C, .NET 및 Java 프로그래밍 언어에 대한 경험이 있는 개발자를 위한 도구를 제공합니다.
ThingWorx EMS 및 ThingWorx Edge SDK는 프록시를 통한 연결을 지원합니다. 프록시 구성 및 연관된 변경 관리를 관리하는 프로세스는 고객 및/또는 프로젝트에 따라 다릅니다. ThingWorx Edge SDK는 SDK 라이브러리가 사용자 정의 에지 구성 요소에 의해 포함되거나 참조될 수 있으며, 이에 따라 솔루션 설계를 기준으로 업데이트할 수 있으므로 최고의 유연성을 제공합니다.
플랫폼 구성 요소
ThingWorx Connection Server - ThingWorx Connection Server는 원격 장치의 연결을 용이하게 하고 장치와의 모든 메시지 라우팅을 처리하는 서버 응용 프로그램입니다. ThingWorx Connection Server는 ThingWorx AlwaysOn 통신 프로토콜을 사용하여 WebSocket에 대해 확장 가능한 연결을 제공합니다. ThingWorx Foundation Server에서의 연결 관리를 오프로드하는 자산의 수가 25,000개를 초과하는 경우 연결 서버를 사용하는 것이 좋습니다. 장치 연결을 활성 클러스터 노드 사이에 분산하려면 고가용성 구성의 연결 서버가 필요합니다. 또한 ThingWorx Foundation Server에 대한 동시 연결 수 100,000개마다 하나 이상의 연결 서버가 권장됩니다. 장치-연결 서버의 비율은 다음과 같은 많은 요소에 따라 변경될 수 있습니다.
장치 수
장치에서의 쓰기 제출 빈도
Tomcat - Apache Tomcat은 Apache Software Foundation(ASF)에서 개발한 오픈 소스 서브렛 컨테이너입니다. Tomcat은 Oracle Corporation의 Java Servlet 및 JSP(Java Server Pages) 사양을 구현하고 Java 코드를 실행할 순수 Java HTTP 웹 서버 환경을 제공합니다.
ThingWorx Foundation Server - ThingWorx Foundation은 M2M(사물지능통신) 및 IoT 응용 프로그램에 대한 완전한 설계, 런타임 및 인텔리전스 환경을 제공합니다. ThingWorx Foundation은 연결된 장치, 시스템, 센서 및 산업 장비와 같은 원격 자산의 데이터를 제어하고 보고하는 응용 프로그램을 효율적으로 빌드, 실행 및 확장하도록 설계되었습니다.
ThingWorx Foundation은 ThingWorx 환경의 허브 역할을 합니다. 여기에는 환경에 배포된 원격 자산(또는 장치)의 동작과 자산 간의 관계를 정의하는 응용 프로그램을 개발하는 데 유용한 도구 세트가 포함되어 있습니다.
자산이 모델링된 후에는 물리적 장치를 모니터링 및 관리하고 데이터를 수집할 수 있도록 ThingWorx Foundation을 등록하고 통신할 수 있습니다.
데이터베이스 구성 요소
ThingWorx Platform은 데모 또는 교육 환경을 위한 소규모 구현부터 초당 수천 개의 트랜잭션을 지원하는 많은 양의 고가용성 데이터베이스에 이르기까지 요구사항에 가장 적합한 데이터베이스를 고객이 선택할 수 있는 플러그형 데이터 저장소 모델을 제공합니다.
가치 스트림, 스트림, 데이터 테이블, 블로그 및 Wiki는 ThingWorx용 데이터 공급자로 정의됩니다. 데이터 공급자는 런타임 데이터를 저장하는 데이터베이스로 간주됩니다. 런타임 데이터는 연결된 장치가 데이터(예: 온도, 습도 또는 위치)를 저장하기 위해 사물을 구성하고 사용한 후 지속되는 데이터입니다. 모델 공급자는 사물에 대한 메타데이터를 저장하는 데 사용됩니다.
지속성 공급자는 데이터 공급자, 모델 공급자 또는 둘 다를 포함할 수 있습니다.
데이터베이스 옵션에 대한 자세한 내용은 지속성 공급자를 참조하십시오.
고가용성 구성 요소
고가용성은 비즈니스 연속성을 위한 중요 고려 사항입니다. 고가용성 구성 요소는 응용 프로그램 레이어와 데이터베이스 레이어 모두에 적용되어야 유효합니다.
9.0 릴리즈부터는 비즈니스 로직 및 사용자 요청을 처리하는 여러 활성 서버 노드가 있는 클러스터 구성에 ThingWorx를 배포할 수 있습니다. 이 구성은 이전 릴리즈에서 제공된 활성/수동 장애 조치 구성을 대체합니다.
클러스터링된 구성에서는 장치 연결을 활성 클러스터 노드 사이에 분산하기 위해 연결 서버가 필요합니다.
ThingWorx 응용 프로그램 레이어를 사용하려면 Apache ZooKeeper 및 Apache Ignite가 추가 구성 요소로 필요합니다. 고가용성 데이터베이스 레이어 요구사항은 선택한 데이터 공급자의 요구사항에 따라 달라집니다.
* 
고가용성은 실제로 유효하도록 소프트웨어 스택을 초과한 고려 사항을 포함합니다. 전원 공급 장치, 하드 디스크 및 네트워크 인프라(라우터, 부하 분산 장치, 방화벽 등)와 같은 중복 인프라도 평가해야 합니다.
ZooKeeper - Apache ZooKeeper는 구성 정보를 유지 관리하고, 이름을 지정하고, 분산된 동기화를 제공하고, 그룹 서비스를 제공하기 위한 중앙 서비스입니다. 클러스터 사이의 동기화를 활성화하는 분산된 응용 프로그램에 대한 조정 서비스입니다. ThingWorx와 관련해서 ZooKeeper는 클러스터 노드 가용성을 모니터링하고 오류 발생 시 새 ThingWorx Foundation 리더 노드를 선택하는 데 사용됩니다.
Ignite - Apache Ignite는 노드 클러스터에 걸친 대량의 데이터를 저장하고 계산하도록 설계된 오픈 소스 분산된 데이터베이스, 캐싱 및 처리 플랫폼입니다. 클러스터링된 ThingWorx 배포에서 Ignite는 클러스터의 모든 노드에서 장치 데이터에 대한 공유 캐시를 저장하고 유지 관리하는 데 사용됩니다.
최소 공간이 있는 HA 배포
Ignite는 ThingWorx Foundation 프로세스 내에 포함되어 실행될 수 있으며 이 경우 별도의 설치는 필요하지 않습니다. 포함형 Ignite는 환경의 공간이 성능보다 더 중요한 경우에만 사용해야 합니다. 고가용성만 필요하고 확장은 필요하지 않은 소규모 환경에 사용해야 합니다. 이는 확장할 수 없으며 성능 문제를 위한 솔루션입니다.
포함형 Ignite 2 서버 시나리오에서 유일한 이점은 읽기입니다. Ignite는 일부 데이터를 서버 A의 주 데이터로 표시하고, 일부 데이터를 B 서버의 주 데이터로 표시하며, 다른 서버를 데이터 백업용으로 표시합니다. 일반적으로 모든 읽기는 데이터의 주 서버로 향합니다. 이는 원격 호출일 수도 있고 그렇지 않을 수도 있습니다. 포함형 Ignite의 주요 차이는 백업에서 읽기를 true로 설정할 수 있다는 것입니다. 이 경우 읽기에서 네트워크를 홉(hop)하지 않습니다.
쓰기는 동일한 시스템으로 이동할 수도 있고 그렇지 않을 수도 있으며 다른 시스템에 백업될 수도 있습니다. 따라서 쓰기에 대한 성능상의 이점은 없습니다.
포함형 Ignite를 실행하면 시스템 크기에 따라 성능이 저하될 수 있습니다. HA 클러스터의 단일 서버 ThingWorx 설정과 Ignite 서버 인스턴스는 다릅니다.
메모리가 플랫폼과 공유됩니다. Ignite는 속성 메모리를 저장하는 것 외에도 추가 대기열과 기타 사물을 추가합니다.
JVM에서 CPU 수를 기준으로 언제든지 활성화할 수 있는 스레드 수가 제한됩니다. Ignite는 요청을 처리하고 데이터를 백업하며 일부 예외 작업을 수행하는 데 많은 스레드가 필요합니다. 단일 서버에는 이 로드가 없습니다.
캐시로 들어오고 나가는 모든 객체는 HA 시스템의 캐시 내부/외부에 직렬화되며 이는 단일 서버 설정의 카페인 캐시 계층에는 적용되지 않습니다.
데이터베이스 고가용성 기능
PostgreSQL - ThingWorx는 PostgreSQL 고가용성을 데이터 솔루션으로 사용할 수 있도록 지원합니다. 고가용성은 주 서버에서 오류가 발생할 경우 데이터에 대한 읽기 및 쓰기를 캡처하도록 별도의 서버를 설정하는 옵션을 제공합니다. 자세한 내용은 PostgreSQL 고가용성을 참조하십시오.
SQL Server - 일반적으로 SQL Standard Edition은 필요한 대부분의 기능을 지원하므로 생산 환경에 적합합니다. 고가용성 기능, 메모리 내 OLTP 또는 테이블 및 색인 분할이 필요한 생산 설정의 경우 SQL Enterprise Edition을 사용하는 것이 좋습니다. 자세한 내용은 Microsoft SQL Server 고가용성을 참조하십시오.
InfluxDB Enterprise - InfluxDB 데이터베이스의 클러스터링된 버전을 제공합니다. 클러스터링을 사용하면 노드 간에 데이터를 공유하여 고가용성과 수평 확장을 모두 지원할 수 있으므로 서로 다른 서버를 통해 읽기 및 질의를 실행하여 전체 시스템의 확장성을 높일 수 있습니다. 새 워크로드를 지원하도록 데이터 노드 수를 쉽게 확장할 수 있습니다. 자세한 내용은 InfluxDB를 지속성 공급자로 사용을 참조하십시오.
도움이 되셨나요?