매쉬업에서 서비스 데이터 캐싱
매쉬업에서 데이터를 검색하는 데 사용되는 서비스에 대해 캐싱 데이터를 활성화할 수 있습니다. 캐싱은 서버에 대한 네트워크 요청 수를 줄여 성능과 사용자 경험을 향상시키는 데 유용합니다. 예를 들어, 로드하는 데 몇 초 정도 시간이 걸리는 서비스를 캐싱하면 특히 서비스가 자주 실행되고 반환된 데이터가 자주 변경되지 않는 경우 네트워크를 줄일 수 있습니다. 캐싱이 활성화되고 CacheDuration 속성이 설정되면 지정된 기간 이후 캐시가 만료될 때까지 서비스 결과가 브라우저에 의해 일시적으로 저장됩니다. InvalidateCache 서비스 매개 변수에 이벤트를 바인딩하여 해당 서비스의 캐시된 데이터를 수동으로 지울 수도 있습니다. 이렇게 하면 캐시 수명 주기를 프로그래밍 방식으로 제어할 수 있습니다. 예를 들어, 사용자가 매쉬업의 특정 위치에서 데이터를 업데이트하면 InvalidateCache를 트리거하여 다음 호출에서 새 데이터를 가져오도록 강제할 수 있습니다.
예를 들어, 서비스를 사용하여 실시간 날씨 데이터를 표시하는 매쉬업이 있다고 가정해 보겠습니다. 데이터 속성 패널에서 CacheReturnedData를 선택하여 캐싱을 활성화할 수 있습니다. CacheDuration을 60000밀리초(1분)로 설정하고 매쉬업 인스턴스 간에 캐시를 공유하기 위해 CacheStrategy로 매쉬업 이름을 선택합니다. 사용자가 1분 내에 매쉬업을 다시 로드하면 ThingWorx에서 캐시된 결과를 제공합니다. 기간이 만료되면 서비스를 다시 호출합니다. 매쉬업이 입력 매개 변수(예: 선택한 도시)를 허용하는 경우 CacheKeyParameters를 구성하여 각 입력에 대해 별도로 데이터를 캐시할 수 있습니다. 매쉬업이 너무 많은 조합을 캐시하거나 메모리를 너무 많이 사용하는 경우입니다.
매쉬업 데이터 캐싱을 위한 모범 사례
• 캐싱은 선택적으로 사용하고 정적이거나 변경 속도가 느린 데이터를 반환하는 서비스에만 활성화합니다.
• 적절한 캐시 기간을 설정합니다. 데이터가 자주 변경되는 경우에는 캐시 시간을 길게 설정하지 않도록 합니다.
• 대용량 데이터 집합은 캐시하지 않도록 합니다. 대신 결과에 페이지 매김을 적용하거나 필요한 데이터만 가져오도록 제한합니다.
• 캐시 전략을 테스트합니다. 개발 중에 캐싱 디버거 도구를 사용하여 캐싱 동작의 유효성을 검사합니다.
매쉬업에서 서비스에 대한 캐싱 활성화
매쉬업에서 서비스에 대한 캐싱을 활성화하려면 다음 단계를 수행합니다.
1. Mashup Builder에서 데이터 패널을 연 다음 캐시할 데이터 서비스를 선택하여 해당 데이터 속성을 봅니다.
2. 데이터 속성 패널의 고급 아래에서 CacheReturnedData 속성 옆에 있는 확인란을 선택합니다.
3. CacheDuration 속성을 사용하여 저장된 결과를 유지할 시간(밀리초)을 지정합니다.
4. 필요한 경우 CacheStrategy 속성을 사용하여 캐시 스토리지 전략을 지정합니다.
5. 특정 매개 변수 입력에 대한 결과를 캐시하려면 CacheKeyParameters 값의 드롭다운 목록에서 매개 변수를 선택합니다.
6. 저장을 클릭한 다음 매쉬업 보기를 클릭합니다.
런타임에 서비스가 처음 실행되면 서비스 데이터가 캐시됩니다. CacheKeyParameters 속성을 사용하여 서비스에 대해 선택한 입력 매개 변수를 기반으로 반환된 데이터는 모두 캐시됩니다. 서비스가 다시 실행되면 CacheDuration에 설정된 시간이 만료될 때까지 저장된 캐시에서 데이터를 검색합니다.
캐싱 전략 선택
CacheStrategy 속성을 사용하여 다음 두 가지 방법 중 하나로 캐시된 데이터를 저장할 수 있습니다.
• 매쉬업 인스턴스 - 캐시가 현재 매쉬업 인스턴스의 고유 식별자를 기반으로 생성됩니다. 이 전략을 사용하여 매쉬업의 각 인스턴스에 별도의 캐시가 있는지 확인합니다. 이는 각 매쉬업 인스턴스에 서로 다른 데이터를 표시할 때 유용합니다. 엔티티와 서비스가 동일한 경우에도 마찬가지입니다.
• 매쉬업 이름 - 캐시가 매쉬업, 엔티티 및 서비스 이름을 기반으로 생성됩니다. 컬렉션 위젯과 같이 동일한 데이터가 매쉬업의 여러 인스턴스에 표시될 것으로 예상되는 경우 또는 매쉬업이 다른 매쉬업 내에 포함된 경우 이 전략을 사용합니다. 이 전략은 인스턴스 캐싱보다 덜 구체적이며 캐시가 동일한 매쉬업의 모든 인스턴스에서 공유됩니다.
서비스 캐싱 속성
다음 표에는 데이터 속성 패널의 서비스에 사용할 수 있는 캐싱 데이터 속성이 나와 있습니다.
속성 | 설명 | 기본 유형 | 기본값 | 바인딩 가능 여부 |
|---|
CacheReturnedData | 활성화하면 서버에서 반환된 데이터를 캐시할 수 있습니다. | BOOLEAN | False | 아니요 |
CacheDuration | 캐시된 데이터의 TTL(Time to Live) 기간을 설정합니다. 데이터가 캐시되면 기간이 만료된 후에만 서버에서 새 데이터를 읽어들입니다. | INTEGER | | 예 |
CacheStrategy | 캐시가 저장되는 방식을 제어합니다. 매쉬업 인스턴스 또는 매쉬업 이름을 기반으로 캐시된 결과를 저장하도록 선택할 수 있습니다. | STRING | 매쉬업 인스턴스 | 아니요 |
CacheKeyParameters | 캐시 키 생성에 사용할 입력 매개 변수를 선택할 수 있는 드롭다운 목록을 엽니다. 서비스 입력 매개 변수를 선택하면 해당 입력에 대한 서비스 결과가 캐시됩니다. | STRING | | 아니요 |
MaxResultSets | 데이터 서비스에 대해 저장할 최대 결과 수를 제어합니다. 입력 매개 변수가 업데이트되면 새 결과가 캐시됩니다. 가장 오래된 결과는 최대값에 도달하면 삭제됩니다. | INTEGER | 10 | 예 |
InvalidateCache | 서비스에 대해 캐시된 결과를 지웁니다. 캐싱이 활성화된 경우에만 사용할 수 있습니다. 서버 변경이 발생할 때 캐시된 데이터를 새로 고치거나 수동으로 새 데이터를 강제로 검색하도록 이 서비스를 트리거할 수 있습니다. | InvalidateCache 서비스는 CacheReturnedData가 활성화된 경우에만 사용할 수 있습니다. |
| Service | | 예 |
캐싱 성능 유효성 검사 및 문제 해결
캐싱을 사용하면 네트워크 성능이 향상되지만 메모리에 너무 많은 데이터를 저장하면 매쉬업 응답성이 저하되고 성능 문제가 발생할 수 있습니다. 이러한 문제를 완화하기 위해 ThingWorx는 캐싱에 사용할 수 있는 메모리 양을 자동으로 제한합니다. 응용 프로그램이 최대 캐시 크기를 초과하면 시스템은 새 결과 집합을 저장할 수 있는 충분한 공간이 확보될 때까지 가장 오래된 캐시 엔트리부터 자동으로 제거합니다. 런타임 디버거 도구를 사용하면 매쉬업에 사용되는 캐시된 데이터를 모니터링하고 관리할 수 있습니다. 런타임에 디버거 도구를 열려면 매쉬업 도구 모음에 디버그 정보 표시/숨기기 버튼이 표시되어 있는 경우 이를 클릭하거나 CTRL+ALT+SHIFT+F9를 눌러 런타임 도구 모음을 표시합니다.
| ThingWorx는 서비스가 저장된 결과의 최대 개수에 도달하거나 총 캐시 크기가 제한을 초과하면 캐시된 항목을 자동으로 제거합니다. 캐시가 총 크기 제한을 초과하면 ThingWorx는 새 결과 집합을 저장할 수 있는 충분한 공간이 확보될 때까지 가장 오래된 캐시된 엔트리를 먼저 삭제합니다. 이러한 제한은 최적의 성능을 보장하고 브라우저에서 과도한 메모리 사용을 방지하는 데 도움이 됩니다. |
다음 이미지는 런타임에 디버거를 보여줍니다. Cache Data 탭의 상단에서 캐시된 항목의 총 수, 대략적인 총 캐시 크기, 최대 허용 캐시 크기를 보여주는 요약을 확인할 수 있습니다. 이 요약은 캐싱이 성능에 영향을 줄 수 있는지 여부를 빠르게 평가하는 데 도움이 됩니다.
디버거는 캐시된 각 서비스에 대해 다음 정보를 표시합니다.
• 매쉬업 이름 - 서비스를 호출한 매쉬업입니다.
• 서비스 이름 - 데이터를 캐시한 특정 서비스입니다.
• 캐시 ID - 캐시된 결과를 그룹화하고 식별하는 데 사용되는 내부 식별자입니다.
• 캐시된 결과 엔트리입니다. 각 항목에는 다음이 표시됩니다.
◦ 캐시된 항목의 캐싱 전략
◦ 캐시된 결과의 크기
◦ 마지막 액세스 시간
◦ 서비스 호출에 사용된 입력 매개 변수 및 해당 값
◦ 캐시 엔트리를 수동으로 제거하는 삭제 버튼
캐시된 항목을 수동 또는 자동으로 삭제하면 요약이 업데이트됩니다. 각 섹션을 확장 및 축소할 수도 있습니다. 이 예에서는 첫 번째 서비스인 getCategories가 매쉬업 이름에 대해 캐시됩니다. serviceDefsMock과 같은 다른 서비스는 Mashup Instance에 대해 캐시됩니다. 이 서비스에 대해 캐시된 입력 매개 변수와 해당 값도 나열됩니다.