- Coming up, we're joined by solution provider Icertis
to learn how they're using serverless technology
from Azure SQL Database serverless
to Azure Container Instances to give their customers
a customizable, turnkey
and scalable contract intelligence platform.
So today I'm joined by Icertis CTO Monish Darda.
Welcome to Microsoft Mechanics.
- Thanks for having me on the show, Jeremy.
- And thanks so much for joining us today.
So if you're new to Icertis,
their contract intelligence platform is used
by the world's most iconic brands
and also leading innovators
to manage over 7.5 million contracts
spanning over a trillion dollars.
The Icertis Contract Intelligence, or ICI platform,
turns contracts from static documents
into strategic advantage by structuring
and connecting the critical contract information
that defines how an organization runs.
Now, the ICI platform goes beyond standard templates
and clause libraries and workflow automation and approvals,
and it delivers
breakthrough contract life-cycle management technology
that links entitlements and obligations
in any kind of contract to critical business processes.
This ensures that all agreements are in compliance,
commitments are upheld throughout the contract life cycle,
and the intent of every contract is fully realized.
So Monish, the ICI platform is hosted entirely in Azure,
but now Icertis has gone to the next step of optimization
by incorporating serverless technologies.
- That's right.
You could say we were born in Azure 10 years ago.
We set out for our platform to be extremely flexible
and ready for cloud scale to really suit any organization,
from small businesses to the largest corporations
in the world, including Microsoft.
- So how have you gone about architecting
your platform?
- As with any enterprise platform,
our solution has been a mix of API and web front ends,
networking, IaaS for compute,
containers for our microservices,
PaaS services for data and caching,
as well as storage and messaging.
With critical compliance requirements
and a strong security posture,
each of our customers gets their own unique instance
of our platform services.
Our platform has foundational services
for contract management,
and we also offer modular solutions with a number
of business applications that our customers can choose from
based on their business needs.
This includes AI-infused services at the core,
as well as optional AI-driven applications.
And we integrate with a growing collection
of SaaS-based business apps and services.
Due to the extremely sensitive nature of contract data,
each customer instance is isolated
from others within separate Azure VNETS
that can connect to hybrid infrastructure,
which can sit in another cloud,
or it can even sit on-premise.
- And that VNET means
that contract intelligence infrastructure
is going to feel on-premises then
to any of the connected systems.
and your solutions have evolved
from PaaS-based data services
to incorporate more serverless technologies.
But can you explain more what's behind that?
- Yeah, so in the not too distant past,
we did provision customer environments
with a fixed tier of Azure SQL Database.
Contract operations, as you can imagine,
can be highly seasonal depending on a number of factors
like fiscal calendars, sales cycles, industry types.
Also the average user will use the platform
for just a few hours a day,
and it is very intermittent usage usually.
So we did typically start with Azure SQL Database
at the P1 level, and you can scale it up and down
with automation.
But those scale operations incur some downtime,
and they're still running, even if you aren't using them,
so it doesn't make sense to keep that compute running.
And even if you could scale things all the way down
to the lowest tier, we would still end up running compute.
- Right, so you had a really strong rationale then
for taking a serverless approach?
- We did.
We shifted our database deployment approach to serverless
for just-in-time compute
so that it only runs as queries come in
with Azure SQL Database serverless.
This eliminates idle compute
with a very nifty query-on-demand database backend.
- Right, that makes a lot of sense there because serverless
is ideal for databases with more intermittent usage patterns
or maybe extended periods where there's not any activity.
But how easy was this transition then
from PaaS into serverless?
- It wasn't as difficult in this case, primarily because
this is just a compute tier.
So the primary conditions for us are the virtual course,
memory and IO needed for these intermittent operations.
In fact, thinking about this felt harder
than actually doing it.
From an architectural perspective, you could see
that we had leveraging Azure Blob storage
and Azure Cache for Redis,
that doesn't change in both the PaaS
and now the new serverless configuration.
And setting up the database in Azure
is pretty much the same, whether it's provisioned with PaaS
or provisioned with serverless.
The main difference is that you set min-max ranges
and define when you want the service
to pause with serverless.
So here, for example, you can see the controls
for provision DTUs and data max size.
And if I click on serverless here,
you'll see minimum and maximum parameters
for the number of virtual calls you need,
which could vary from as low as 0.5 calls to as many as 40.
We start out with one minimum usually,
and eight maximum to balance performance
and cost for typical load.
The auto-pause delay for as low as one hour to seven days,
which we normally keep it at one hour,
given the load characteristics we have,
and then the back single data size up to one TB.
We typically use a minimum of 50 gig.
For an existing customer that's using provision compute,
we built an automated way to check the DTU database size
and performance tiers from P1 to P11, over a period of time.
And it'll move the provision database DTU model
to serverless, matching what's needed for compute.
So if you're new to the vCore model, to give you an idea,
125 DTUs with premium is about one virtual core.
The networking configuration is the same regardless
of database type, so there was nothing to change there.
And of course everything was totally tested and validated
and the move has been just a success on all fronts.
- Okay, so I know that a lot of people watching
are probably asking now is the query performance,
is it better or worse
than it would have been on average using serverless?
Are there any noticeable delays,
like maybe cold start versus provision compute?
- This is a common question, but to be honest,
the average query times actually went down
from what we observed before, between 10 to 15%,
with cost going down by 50 to 75%.
By providing more vCores when they are actually needed
and incurring zero costs when they're not,
this is a good balance between performance and cost
and it leads to happier customers
when certain load spikes happen.
In fact, let me show you a report that will trigger
an operation on a serverless instance.
So most of our reports are run in advance,
but if I run this one called CLM Activity Report Direct,
it's directly pulling from the live data
using our serverless compute.
So as you can see, it takes a few seconds to load.
Now that it's up, I'll change the frequency to Day Wise,
which modifies our query, and then choose Month Wise
so it brings in more data.
That's a small demonstration
to show that the user experience isn't compromised.
There was a small delay to load at first,
but it's still faster
than it would have been running P1 provision compute.
- Nice, but can we see an example
where this might be a little bit more pronounced?
- Yeah, sure thing.
I'll actually show you my user stress test
with a stored procedure.
On the left, you'll see a fixed tier SQL P1 instance,
and on the right is the serverless instance.
Now pay attention to the Client Seconds/Iteration field.
I'll give the fixed tier instance a headstart and hit go.
Then let's start the serverless instance on the right.
And I let that run 10 iterations,
and we have sped this up to save time of course.
You'll see that the average response time,
our Client Seconds/Iteration field for this query
on SQL Azure Database P1 is around 34 seconds
whereas if you look on serverless database,
the average time is around six seconds.
So user impact was positive in terms of performance,
but even more importantly,
there were a lot of other benefits.
We didn't have to spend as much time on capacity planning
and balancing cost per customer.
- Right, and the scaling here, as we saw earlier
with the different ranges,
it's automated within those ranges that we set before.
- And another big difference is that billing with serverless
is per second versus per hour using provision compute.
And that itself ends up reducing costs,
especially given the usage patterns we typically see.
In fact, the savings are often that around 70% sometimes
versus provision compute.
- Right, so there's a lot of upside here.
And you mentioned before that your platform
is provisioned via Azure Resource Manager templates.
So what are the options then here?
- Yes, it's fully automated and you can integrate it
with your current systems of record.
We use Azure Resource Manager templates, they're great.
They provide item potency, they're declarative
and they are repeatable for consistency.
Everything is fully orchestrated and integrated
with our DevOps process.
We have two standard configurations.
The first for smaller customers is a single server
with additional PaaS services.
We provision the resource group and virtual network
with the virtual machine that runs those services,
the UI, the API, and the search, the Redis Cache,
the SQL Database serverless, the Blob storage
and Service Bus.
This takes about 90 minutes to deploy from start to finish.
The second is an enterprise architecture, larger customers.
The main difference is that we build for a much larger scale
by expanding number of VMs from one VM
to a dedicated virtual machine skillset for each workload.
We run search on the cluster of VMs
and we add load balancing to the app
and within our search service.
The enterprise architecture takes around two to three hours
to deploy, and you can start
with a single server architecture and then you can move
to the enterprise architecture once you need it.
- Right, and then from there, you can add things like,
optional services, AI integration or other SaaS apps, right?
- That's right.
You can add business apps and experiences
to expose our functionality in Microsoft 365
with Microsoft Teams and Word,
and with other systems like Dynamics 365 and Salesforce.
We also have data connectors available
to integrate with apps like Adobe Sign and many more.
- Okay, this is really a great level of flexibility,
but what's next then on the horizon for Icertis?
- We started with Azure SQL Database serverless,
but we're expanding our serverless investments further
using Azure Container Instances and functions
to deliver more AI and machine learning-based services.
One example is the OCR,
the optical character recognition service we have
for digitizing tens of thousands of documents
with a printed or file-based documents.
So if there are 10,000 documents with 100 pages each
for example, you're talking about a process
that would take months, even with tabulization
that would take days.
And with serverless, we can split the document down
into individual pages for bundle processing.
With the combination of Azure Functions
for durable activities and orchestration,
along with the farm of 1,000 Azure Container Instances,
we can get that same processing time down to a few hours.
And since it's all compute charged by the second,
the cost is the same without the associated provisioning,
automation or even monitoring hassles.
That's the true promise of the cloud realized
for serverless.
And we're looking for more and more options
to bring serverless technology
to the Icertis contract intelligence platform.
- Thanks Monish for sharing how you're going
about implementing a serverless architecture in Azure
for the Icertis contract intelligence platform.
But, so for anyone who's watching and wants to learn more,
what do you recommend?
- Well, checkout icertis.com to learn more
about Icertis contract intelligence platform.
You can request a demonstration or contact our team,
and you can try our platform for yourself
from the Azure marketplace at aka.ms/icertisAM.
- Thanks again Monish, and also thank you
for watching us on Microsoft Mechanics.
And be sure to subscribe to our channel
if you haven't already,
and we'll see you soon.
(upbeat music)