Backend Infrastructure
Candu is deployed over AWS, and we run most of our servers in ECS. We use blue-green deployments powered by a custom-made framework. At any given point, we can roll back to any commit within 3 minutes.We also have the ability to create a staging environment in less than a minute for any commit that is pushed to our backend. Developers can then test any change in a production-like environment. For databases, we use a combination of DynamoDB and RDS across multiple hosting zones to ensure maximum uptime and reliability. High throughput data processing code is hosted using AWS Lambda to ensure the highest availability and scalability levels. Finally, we use a message-driven architecture to ensure that critical customer data is processed at least once.
Frontend Infrastructure
In order to provide high availability and fast delivery, Candu uses a CDN to publish content. Whenever a user edits content in our dashboard, the changes are saved on our servers. Once content has been published, Candu uploads a version of that content to the CDN. We use this publishing mechanism in order to:- Ensure that you can safely edit content in a draft state before publishing.
- Increase the upload speed and availability of all content that you create.
- Provide a versioning process and audit trail for any content.
- CDNs have extremely high availability and reliability. We selected S3 + Cloudflare as our primary vendors.
- CDNs are distributed and geographically close to our customers, meaning we can serve content quickly.
SDK
The Candu SDK is installed within your application to provide dynamic segmentation and user analytics, and to render UI. The SDK’s main functionalities are:- Rendering Content
- Collecting analytics via eventing
Error Handling
All components (e.g., Content, Segments, etc.) in the SDK are wrapped with error boundaries to prevent JavaScript-related errors from propagating outside the Candu SDK and impacting our clients. If the error boundaries receive any errors, those are logged in the Candu tracking system. If Candu encounters a JavaScript error in customer code or if an error happens anywhere in the Candu SDK, those errors are logged in the Candu tracking system for immediate review. If for any reason there is an undetected error, Candu automatically drops rendering and will not display any content in order to protect page performance.Code Quality
Before release, each new SDK version needs to pass an extensive and continuously expanding set of unit and integration tests to eliminate any potential regression tests. Additionally, we aim to reach 100% coverage using TypeScript to minimize type unsafe errors and to help developers with integrating the SDK into their projects.Versioning
In case a breaking change is identified on an SDK release, we bump versioning for that release according to SemVer. This should prevent accidental installation of the SDK without proper migration steps in place.SLAs
At Candu, we take our SLA and partner operations extremely seriously. We strive to maintain a 99.9% SLA in all of our APIs & frontend assets.SLA monitoring is done through 3rd party integration monitoring. We currently ping 10+ APIs for uptime, as well as other critical aspects of our infrastructure that we use to provide services. All the tests are performed from 7 different locations around the world (Canada Central, Ohio, Oregon, Sydney, Tokyo, Frankfurt, London) to ensure we maintain availability within and throughout different regions.
All critical integration tests are performed each minute. If any alerts were to fail, our team would be notified immediately as outlined in our escalation policy.