Describe a Challenging Project You Worked On
One common interview question is to "Describe a challenging project you worked on." In 2011, AWS had only a few RDS choices, unlike the many options available today.
Throughout my career, I have worked on many interesting projects, but I will focus on my time at Precor, a fitness equipment manufacturer. In 2011, Precor was building on the concept of "Connected Fitness" to allow fitness machines to connect to the internet. This enabled users to download workouts, save workouts, watch instructional videos, read e-books while running on a treadmill, and enjoy many other features.
Precor needed to build a team from the ground up for this project, as they previously only made fitness machines with basic embedded software. I was the second hire after the engineering manager and became Principal Engineer. My mission was to design and build on the vision of "connected fitness." Precor had two main teams: one working on the console (P80 equipment, a dedicated terminal attached to a fitness machine) and my team, working on the backend systems powering all machines in gyms, clubs, and hotels.
Team Composition:
My
team consisted of an Engineering Manager, a Principal Engineer (me) as
team lead/architect, five engineers, and a Product Owner. We followed a
Scrum approach.
My Mission:
I
was tasked in building two categories of APIs (myself and the team, I
played a key role, leading the team, in both defining much of the
architecture and code modules):
1. APIs to help club operators understand machine utilization.
2. APIs to empower exercisers.
Focus on the Exerciser's API:
Every
console connected to the internet had a dedicated UI running on an
embedded Linux machine, powered by an ARM Cortex CPU with decent video
capability, such as rendering YouTube videos. The Fitness Equipment (FE)
served as an API client. Another client type was the Mobile App, built
by a third party.
The backend systems were built as microservices
running on the AWS Cloud. The Exerciser API was a REST API leveraging
OAuth2 for user authorization. The use case for exercisers was to create
and track their fitness goals using both a mobile app and the fitness
machines, regardless of location, as long as they were using Precor
connected fitness equipment.
For club owners, the use case was to
better serve their customers with modern machines and understand
machine utilization, idle time, and receive custom alerts for machine
malfunctions. They could also generate custom reports on user exercise
frequency to predict membership cancellations.
Exerciser API Features:
The
Exerciser API allowed users to log in via RFID, enabling the machine to
adjust settings such as angle, inclination, and speed on a treadmill,
and start recording exercise data, including calories and duration.
Users could check their daily and weekly exercise progress towards their
goals on the mobile app, which could be customized for goals like
getting fit or losing weight. Users were awarded badges on the mobile
app for achieving milestones, such as 1,000 steps, accompanied by a
congratulatory message and a cool image.
The Exerciser API:
On the backend, we built the stack with Java and the Spring framework, using Apache as the HTTP server. The database was RDS (MySQL), and we used DynamoDB, a columnar datastore, for high volume and write throughput. Redis was used to track denial of service attacks.
DynamoDB was utilized for the Fitness Machine APIs to store frequent heartbeat data and log messages. To buffer between the server and storage, we implemented a message queue in front of DynamoDB.
The Goals of this Project, known as Preva was to Increase user retention, attract new members,
drive secondary revenue generation and help gym members achieve their goals.
Precor conducted several studies to measure each of these goals, and I will link these studies to Precor website:
•Drive Secondary Revenue Generation
•Help Gym Members Achieve their Goals
Conclusion:
This project was both fun and challenging due to several factors: tight deadlines, the innovation involved, learning cloud computing, leading a team, and ultimately helping people improve their lives by promoting a healthy lifestyle.
No comments:
Post a Comment