Skip to content

BotKit SDK Deployment Guide: Architecture, Hosting, and Best Practices

The Kore.ai BotKit SDK is a powerful tool for extending and customizing Kore.ai virtual assistants. It allows developers to intercept messages sent to the Kore.ai platform and add custom processing logic, enabling advanced bot behaviors and integrations. However, deploying the BotKit SDK in a production environment requires careful planning and consideration to ensure scalability, high availability, and optimal performance.

This guide provides a comprehensive overview of the architecture, hosting options, system requirements, performance optimization techniques, load testing strategies, high availability configurations, API gateway integration, and security best practices for deploying the Kore.ai BotKit SDK at scale. Whether you are a developer, DevOps engineer, or IT architect, this handbook will provide you with the knowledge and guidelines necessary to successfully deploy and operate BotKit-enabled virtual assistants in an enterprise environment.

We will begin by discussing the overall architecture and integration patterns between the Kore.ai platform and the BotKit SDK. Then, we will explore various hosting options and the system requirements for running BotKit. Performance optimization and load testing will be covered in detail, including best practices for writing efficient BotKit code and simulating production loads. We will also delve into high availability considerations, API gateway configuration, authentication and authorization mechanisms, and rate-limiting strategies.

By following the guidelines and best practices outlined in this guide, you can confidently deploy the Kore.ai BotKit SDK, knowing that your virtual assistant can handle high traffic loads, provide optimal response times, and maintain high availability and security. Let’s get started on the path to BotKit production readiness!

Architecture

  • The BotKit SDK is a Node.js application that enables intercepting messages to the Kore.ai platform to add custom processing.
  • It runs as a standalone service that receives events from the Kore.ai platform based on the dialog flow.
  • The SDK receives message events, feedback survey events, and webhook events from Kore.ai.
  • It can send responses back to Kore.ai to control the conversation flow.

Hosting Considerations

  • The BotKit SDK can be hosted on a dedicated VM or using serverless functions like AWS Lambda.
  • A typical VM configuration starts with 2 vCPUs and 4GB memory. Adjust based on load and performance testing.
  • Follow the BotKit installation steps provided in the Kore.ai documentation.

System Requirements

  • Node.js version 16 or higher
  • Typical starting server spec: 2 vCPU, 4GB memory

Performance

  • Load test the BotKit API to ensure it provides the required throughput.
  • Use tools like Apache Bench or JMeter to simulate request load and benchmark the BotKit instance.
  • Ensure all code within BotKit handlers uses asynchronous processing to avoid blocking the event loop.
  • Any synchronous, long-running code will negatively impact the overall responsiveness and throughput.

High Availability

  • Deploy multiple BotKit instances behind a load balancer in an active-active, highly available configuration.
  • Ensure the BotKit process is monitored and automatically restarted on failure.

Asynchronous API

  • Kore.ai sends events to the configured BotKit API endpoint.
  • BotKit supports asynchronous communication – Kore.ai can call the API with a return URL.
  • BotKit should respond with an ACK immediately, then call the return URL to submit the final response later.

API Authorization

  • Whitelist the Kore.ai platform IP addresses so that only Kore.ai can call your BotKit API.
  • Require Kore.ai to authenticate requests using the Client ID and Secret generated when registering the BotKit app.

Rate Limit

  • Implement a rate limit on the BotKit API to protect against excessive requests.
  • Enforce limits per API key to prevent individual clients from overloading the system.