Continuous Application Performance Management (CAPM) in EDC/CDMS
Table of Contents
Continuous application performance monitoring is a strategy we employ at Castor in order to ensure our users are getting the best experience out of our software.
As study datasets grow, we continuously find ourselves re-assessing our data strategies in order to remain both flexible and performant. Our current approach can be described with the following two techniques:
1. Human-centric discovery & iteration
Due to the flexible nature of Castor EDC/CDMS data model, it’s often possible that performance concerns will arise in different areas of the application depending on the study structure. Because of this, we take a human-centric approach to prioritising performance improvements in order to tackle the biggest issues on a study-by-study basis.
2. Application Performance Monitoring (AMP)
We use application performance monitoring tools to visualise our entire application infrastructure at a glance to identify bottlenecks, accelerate performance and focus on business results. Our engineering teams create service level indicators (SLIs) so that we can quickly understand the health of our applications both after making changes and as our clients’ datasets grow. Where necessary, we also attach a Service Level Objective (SLO) which results in alerts whenever one of our applications fall below the particular threshold.
Castor Service Levels:
Category | Indicator | Exclusions | Objective | Measured? |
General | Overall success rate. % of successful requests measured across all endpoints. |
>99.99% | Yes | |
Overall 95th percentile response time (measure also 50th and 99th percentile) | Export request | Yes | ||
Apdex score [T=0.5s] as measured by New Relic, calculated over 4 weeks | >= 0.9 | Yes | ||
Error rate (complementary of overall success rate, covers 200 HTTP response with success false) | Yes | |||
Opening Studies | % of successful requests opening a Study (2xx response) (StudyLoadController:loadStudyDataAction()) | >99.99% | Yes | |
95th percentile response time on opening Study requests (measure also 50th and 99th percentile) | Yes | |||
% of successful requests retrieves the list of studies list (2xx response) (StudyListController::listStudiesAction()) | >99.9% | No | ||
External Services | % of successfully delivered emails within application to Transactional Email Provider API | >99.9% | No | |
% of successful encryption calls (HTTP 2xx) with Encryption Provider (Google KMS) | >99.9% | Yes | ||
% of successful upload/download requests (HTTP 2xx) with LFS buckets (Google Cloud Storage) | >99.9% | Yes | ||
Data Entry | % of successful Create Record requests | >99.99% | Yes | |
95th percentile response time on Create Record requests (measure also 50th and 99th percentile) | Yes | |||
% of successful Data Entry requests | >99.99% | Yes | ||
% of successful Randomization requests | >99.99% | No | ||
% of successful Export requests | >99% | No | ||
95th percentile response time on data entry requests (measure also 50th and 99th percentile) | <750 ms | Yes | ||
Queuing | TBD | |||
Login | % of successful Authentication/Login requests | Yes | ||
95th percentile response time on login requests (measure also 50th and 99th percentile) | Yes |
If your study is showing abnormal loading times in certain areas you can submit a report to our support team by sending an email to support@castoredc.com. Please indicate the study id (can be found in the Settings) and describe which actions cause performance issues.