Hi, welcome to "This Is My Architecture".
My name is Andrea and I'm here with Pedro
from Orangetheory Fitness.
Hi Pedro, welcome to the show.
Thank you, Andrea.
So what do you guys do?
Orangetheory Fitness was founded about eleven years ago,
and we are a boutique fitness studios
coach led classes last about an hour, twenty or so members
and we are a global company.
Excellent, so we are going to talk about OT Live.
Tell our viewers, what is that?
Yes, right as the pandemic hit our studios were forced to shut down.
In order to keep our users engaged we came up with this digital experience
where we provide them virtual classes to keep that coach/member relationship
going through the times that the studios are closed.
Wonderful, this runs on AWS let's walk through a use case.
Let's dive straight to it I'm a studio member,
what do I do first?
Yes, so, as a member you would book a class
like you normally would except these are, you know
they're marked as virtual classes.
Once you are booked for the class you will receive an email with a link
to where the class will be held and once you get to that link
you will then use Cognito to authenticate and to let you into
the class, the application will then use API Gateway
with Lambda, to retrieve class information that will be provided
to the member.
Okay, from Aurora, wonderful okay, so now I'm authenticated
how do I establish connection with the coach?
What does the coach need to undergo?
Yes, so the coach follows a similar process, they just have a different link
and they use Cognito again to authenticate, go through
API Gateway, and follow the same flow to retrieve class information from Aurora
and they provide a lobby experience for our members
until the class is started.
I see, now, you know both are authenticated
as a studio member, you get to join a class, you have been assigned
a coach, how do they establish connection between themselves?
Yes, so, we rely heavily on the Chime SDK for this
work, so, what we use with Chime SDK to provide
the video experience that's going from the member to the coach and back.
The coach can see video tiles with each of the members
and the members can see a view not only of the coach
but we also mix in a video that is recorded, showing each
of the exercises that they need to be doing at any given time,
as well as the music that goes with the class.
I see, so you're using the Chime SDK to establish, you know, video connection.
What else are you gathering in that interaction?
So, during the class, our members wear our heart rate monitors
and from those heart rate monitors we collect heart rate data every second
that data is sent using the web socket functionality that Chime SDK provides
to the coach, and so the coach has a view of heart rate information
about every single one of members during the class.
-and so, this is real-time? -Yes
How do you ensure that low latency is a full on, real life
real-time experience? How do you achieve that?
Yes, so we are relying on the Chime service to provide us
that low latency experience and it is available in every region
that we need it to be.
I see, almost like an edge?
Yes, and then it's also available on the edge for improved performance.
Awesome, so walk us through what you do with that data?
You know, aside from just that in-studio experience.
Right, so, during the class like I said, the coach is able
to see the heart rate information of the member, now that data
is also being sent over Kinesis into our data lake, second by second.
There's also another experience which is once the workout completes
where the summary information for that workout, it's also sent over
Kinesis and down into our data lake we also send it, again, through our
rest APIs, and land it in DynamoDB so that it can be retrieved at any time
by the members using our mobile application, and they can
review the classes.
Wonderful, so let's talk about scaling I'm sure you're hosting many virtual classes
walk us through, how does that work here?
Hosting multiple classes, I'm sure is nationwide, how do you accomplish that?
Yes, so we are a cloud native serverless first shop, so we have been able to rely on
on API Gateway, Lambda, DynamoDB Aurora, S3, Kinesis, all of these manage
serverless services for scaling not only up, as our demand goes up
but down as well, as demand has flattened out, and now continue
to recover as our membership comes back.
Wonderful, and what does the future hold Pedro?
Well, this started as a short term project to give our members another option
while the studios were closed but it's now part, it's become part
of our member experience it's going to grow globally
and not only are we going to provide the virtual real time interactions, but we're
also going to provide our members with a library of video-on-demand
so, different exercises and different experiences
that they will be able to take advantage of.
Great, this is a very interesting architecture, thanks for walking us
through this OT Live Virtual Classes and you accomplished that through
Chime SDK connections between the coach and the studio members
and do it serverless and be able to scale.
-Thank you so much! -You are welcome
For being on the show, and thank you for watching
"This Is My Architecture"