Challenge Overview
Challenge Objectives
- Make iris-sevice serverless
Technology Stack
- Python 2.7
- AWS Lambda
- AWS SQS
- AWS API Gateway
Requirements
Here is the original repo: https://github.com/linkedin/iris, and you can find its documentation here: https://iris.claims/We run a private challenge to split the ui and services. And the API of the services are now migrated to AWS Lambda.
But there is a *sender* in the current iris-service codebase, which hasn't been migrated.
The iris sender is a distributed app, it uses zookeeper to ensure there is only one master and several slaves running. The master node is responsible for loading messages from database and dispatch to slaves (or send on its own), while the slave nodes will just send the messages.
The purpose of this challenge is to migrate the sender to AWS Lambda and AWS SQS to make it serverless.
Here is the suggested approach:
- You are expected to create a Lamba function (to mimic the master node without message sending) to load messages from database and send messages to the SQS
- ���We need to ensure only one instance of running, and please refer to this to see how this can be achieved
- You are also expected to create another Lambda function (to mimic the sender node) to receive the messages from SQS and send them.
- ���It's likely the same message will be enqueued into SQS multiple times, this Lambda function should ensure already processed messages are not processed again
- The current API Lambda will send notification to the sender directly, this should be changed to send to the SQS directly so that it can be processed by the 2nd Lambda function above.
The purpose is to make the iris-service serverless, it's more important to ensure the same functionality is migrated correctly and completely, and you don't have to follow the suggested approach exactly (and in case it breaks the existing functionality, you need to come up a better approach).
Make sure you provide a detailed verification step for all functionalities in sender as well as the communication between API Lambda and sender for demonstration.
Final Submission Guidelines
Submission Deliverable- Patch file
- Detailed Deployment and Verification Guide
- Working AWS Deployment for easy verification