Amazon is the world’s largest online retailer and a prominent cloud service provider.
Project: Campaign Management Service
Languages / Tools Used: Kotlin, Typescript, Amazon Web Service (S3, Lambda, Step Functions, Smithy, API Gateway, DynamoDB)
Location: Sunnyvale, CA
During the fall of 2021, I worked remotely as a Software Development Engineer intern at Amazon, supporting the Business Data Technologies team. The team focuses on providing trustworthy, intuitive, and cost-efficient solutions for engineers to secure, store, analyze, and transform data at an unimaginable scale.
Internally, there exists millions of datasets that are used by hundreds of engineers and researchers, hosted on a platform that allows you to quickly search and rate based on your own experience. However, as the ability to submit a review is not commonly used, researchers and engineers find it difficult to understand which datasets best fit their use cases / project, increasing the time taken to analyze before starting development.
Since there is a need for users to understand what dataset works best for them, I created a campaign management service that aims to increase user engagement throughout the company’s millions of datasets. Similar to a newsletter, the goal of this service is to remind users to kindly review the datasets used for other users to read.
I designed and implemented a new microservice that automated this process of sending campaign emails to thousands of employees for new unreviewed datasets, as well as the APIs that allow for user subscription customization.
Even though this service was initially for the sole purpose of reminding users to leave a review on datasets, I was able to expand this service to have a more general use, not just for our team, but for any other team that chooses to use it! Teams are able to customize how the campaign will be executed and triggered, scaled to the millions of users and teams at Amazon.
- As a product designed to impact millions of employees at Amazon, scalability is an important pillar to the success of this project. However, this isn’t something that was usually taught in school or in hackathons, so having to tackle this for the first time was definitely intimidating! This exposed me to the many different terms of “scaling”, such as load balancers, sharding, and so on, allowing me to become a stronger engineer that is able to build for millions of people.
- Since this internship was done alongside my [in-person] school classes, communication and balance were important to ensure the smooth timeline of this ambitious project. I strived to keep my mentor and manager up-to-date with my tasks, allowing them to understand if there is something that I may need help with, or if there are too many tasks at hand. They provided me with the proper resources to succeed, as well as the flexibility to work on my own hours. As a result, I was able to quickly adapt to the new technologies and rapidly execute my tasks, while succeeding in my academics.
- Thinking Outside The Box
- While it is enough to follow the initial project scope and goals, it is also amazing to think of how your project could impact other individuals or teams. As the problem seemed to be recurring with other teams, I took that into account during the development lifecycle, to ensure the end product would be able to factor in these different teams, expanding and impacting a wider range audience.