Unpacking the magic behind Azure Bot Service
Azure Bot Service is an intelligent , serverless bot service that scales on demand. It is an integrated environment that is purpose-built for bot development, enabling developers to build, connect, test, deploy, and manage bots, all from one place. Powered by Microsoft Bot Framework and Azure Functions, which means that your bot will run in a serverless environment on Azure that will scale based upon demand.
Azure Bot Service is an integrated environment that utilizes the following services:
- Azure App Service
- Azure Functions
- Azure Storage - Primarily Queue Storage for Queue Function Trigger
- Azure Application Insights
- Microsoft Bot Framework
Here are the steps to create a Bot Service. Bot Service is currently in Preview.
Once your Bot Service has been deployed, you can create a new bot. This process essentially is to authenticate your bot with the Bot Framework using Microsoft App ID and Password. This step is now integrated into Bot Service, hence, reducing the time to configure from various endpoints.
Inside Azure Bot Service App, we can observe that besides the “Develop” tab which allow developers to quickly develop and test their bot right off from Azure Portal, the other tabs are basically integrated from Bot Framework. Developers can also set up continous integration seamlessly with different deployment options.
What’s important here is the services that were created automatically after creating and deploying the Bot Service.
- App Service
- Functions
- Application Insights - This is the only service residing in South Central US
- Storage account
The above steps to create Azure Bot Service spins of a couple of services automatically. As we mentioned in previous article that you could easily spin up Azure services via Azure Resource Manager (ARM) scripts. Similarly, Azure Bot Service probably has a customized ARM script to collectively spin off multiple resources and services in the region specified automatically.
However, the only difference in writing your own ARM script to spin off these services vs Azure Bot Service is with the integrated environment that Azure Bot Service provides. It provides development of your bot codes with a provided template and an editor; it also comes together with Bot Framework’s functionalities.
One thing to note is, Bot Framework is still residing in the US region, hence, for all other regions, your message would be delivered to the US and back to your region. Expect slight delay and latency.
*Bot Framework will soon be made available in other regions
Why would you want to create these services manually from scratch?
The answer is pretty simple.
- I want to have control over my services.
- I want to have control over my architecture.
So last Friday, my intern and I took the entire day to reverse engineer the Bot Service’s deployment. We started by understanding what services were deployed, then how were the services connected, how can we replicate that, and eventually executing that ourselves. One point to note is, Azure Bot Service is in and of itself a powerful platform. We were recreating the process to understand what goes behind it and should we would like to take control over the services then how would the services communicate with one another. Hence, achieving the same result without any dependencies. In the next article, I’ll share more on how we did it and the secrets behind Azure Bot Service!
Cheers!