Welcome to 'This Is My Architecture'.
I'm Lana with AWS and today, we're talking with Shane from Aventri.
Hi, Shane. Welcome.
Hi, Lana. Thanks for having me.
So, would you mind telling me a little bit about Aventri?
Sure. So, we are a cloud-based solution.
We provide end-to-end event management, functionality for our customers
and that includes everything from pre-event marketing
through registration and on-site tools like check-in and badging
and then post-event surveys and data analytics.
Great. Even my own events moved online over the last in a year and a half,
-Yup. -with the pandemic.
So, how are you using Chime and IVS and other AWS services to respond to these changes?
Yeah, so this is sort of the infrastructure for our virtual events platform
which is our newest product.
It was just released in September of 2020.
And we're leveraging Chime
and AWS infrastructure for a couple of things.
Number one is obviously to do the meetings the audio and video for the meetings in real-time.
And then the other one is to record the meetings and videos so that they can be played back later video-on-demand.
Great. So, let's get started.
As a user, accessing the portal, what happens next? Let's say it's a video live event.
Sure. So, what you're not seeing here, if you can imagine off to the left is the front end of the application.
It's basically your standard react single-page application but what it does is it talks through API gateway
to a Lambda that handles all of the messaging and processing from the front end
and you know, obviously, one of the paths that it takes is that, we'll talk to Chime SDK
to create a meeting as well as, as attendees join,
it also uses a Chime SDK to add attendees to the meeting.
And then the Chime SDK, the great thing about it is you know,
it handles all of the real-time video the web RTC for us
and you know we used to have an infrastructure prior to this
where we were doing a lot of it ourselves
and we had to run lots of different resources and compute instances
and now Chime takes care of all of that for us.
It handles all of our media and turn services and everything like that.
And I'm seeing that you're queuing some events here.
So what happens in the in this part of the architecture?
Yep, so this is one of the great things about Chime, I mean it saved us a lot of time is it's actually a trigger for SQS.
So every time there's an important event that happens in Chime somebody joins, leaves,
turns on their microphone, turns off, starts recording, starts sharing content.
We get a message through SQS, and then we end up storing that through another lambda function into S3,
in S3 bucket where after the event, we can do lots of analytics on what happened
so we know how long people stayed, what they did, if they shared, if they chatted,
if they participated in a poll and so forth.
Great. So we're deriving some insights from the user behavior during the event?
And that's extremely important to our customers, so you know,
they want to know obviously how many people attended
but what the interest level was, and we can give them that by showing them
how much interaction the attendees had during the event
as well as you know how long they stayed.
So I would imagine that you have quite a lot of bursts between smaller meetings and large ones.
So, how do you manage sessions and states and so on in this architecture?
Yup. So, we actually do that through DynamoDB.
So, all of our meeting state is handled in DynamoDB.
So, it's basically like a session store for all of the meetings that are going on
and you know, we do meeting sizes anywhere from you know,
50 people all the way up to tens of thousands of people.
As I mentioned, this is a fairly new product, we launched in September.
Since then, we've done about 30,000 meetings.
And logs about 100,000 hours
of real-time video and audio.
Great. So, this is how we're handling the meetings.
What about streaming of video to all of the other viewers?
Yes. So, all of the viewers that are attending the meeting in real-time,
they'll see the video process through Chime, right?
So, all the web RTC and all the audio mixing and everything happens in the Chime infrastructure
and we're able to push that out to the attendees, so they can see it in their browser
but we also have another interesting path here
where we do recording of the meeting and use it later for video-on-demand playback.
And the nice thing about that is we're able to leverage some other parts of AWS
outside of Chime to enable that workflow
so what will happen is when the attendee, or I'm sorry the host of the meeting
decides to record it, it'll put a message into SQS
that of course triggers a Lambda automatically for us
and here's I think, a pretty interesting piece, the Lambda will then
spawn through Fargate in ECS container and inside that ECS container
we actually run some command-line application,
so we run FFmpeg to do a lot of encoding of the video stream itself
and inside the container we also spawn a virtual browser
and that browser joins the meeting as a virtual attendee,
sort of like a bot if you will and that's how we're able to render the entire meeting for the video recording
and then of course once the meeting is over, it'll store that video file in S3.
Great and I'm seeing another mention of DynamoDB here.
So is this metadata store or how we're using it here?
Yeah, so, DynamoDB, actually skipped a step,
DynamoDB is actually where we manage all of the containers.
So, the container state, what containers are running,
when they need to run, when they need to spawn and when they need to end.
Awesome. Shane, thank you so much for coming down today and telling us
how you moved to virtual event infrastructure.
And thank you for watching, "This is My Architecture."