LP Experience Flashcards
To Learn the fluency of lp experience stories (6 cards)
Introduction
Name
Current degree, favorite subjects
Work experience company, team, domain and
Gym, sports, Travel
Request Payload
Disagree, Commit
Customer Obsession
S: Customer (BA) raised concerns over large number (30+) of data fields (incident categories, sub categories, division data) for incident creation. Time consuming (~20mins) and hindered his ability to navigate to relavant fields.
T: Identify redundant fields. Devise solution to store the fields.
A:
1. Analyzed (Looking at 3 months request log data) and Idetified the dynamic fields, referring last months request log.
2. Proposed moving the fields to server side.
3. Conflict between teammate, about storing the fields in CSV, DB or central config repo (Configs: overhead and bloated app configs).
4. Suggested DB, query flexibility. For now, configs and then to DB.
R:
1. Deployed in 1 week, in current sprint.
2. Reduced fields for BA from 50+ to 20.
3. Reused the configs by other team to fill the UI for BAs (TOM for UI screen on trader desks).
4. Request payload decreased by 18% and 7ms improvement (how to measure request processing times?)
Validation Logic for ER
Customer Obsession
Deliver Results with Ambiguity
Customer Obsession, Bias for action, Invent and simplify, Think Big.
S:
1. New D2C flow to be implemented, (Customer) BA finalizing the ER fields and frequent validation changes (2-3 times per week). Downstream team depended on the data to start their development.
T:
1. Make a change adaptable design to convert ER into Order and Fills.
2. Provide data quickly (current sprint) to downstream for further processing.
A:
1. Abstracted the ER. Decoupled the changing validation logic using dynamic rule evaluation framework (Separating the validation rules from core business logic).
2. Interface, Validation rules classes, Factory pattern to generate the rules dynamically in service class.
R:
1. Downstream team could start development ~2 weeks early, to reduce total project timeline by 30%.
2. Customer was happy for the quick instant adaptable changes.
Spring Boot Migration
Ownership
High Standards
S:
Business slowdown and less requirements. Decided to look for areas of technical improvements.
T:
1. Identify upgrades
2. Free up or optimize resources
A:
1. Undertook spring boot migration of services
2. Referred Official spring migration guide, 1.x to 3.x
3. Java version to 8 to 17, config changes, flyway migration and checksum, Resolve transitive dependencies
4. Document all the finding and changes for other team.
5. Verified successful runs by unit and integration tests and manual API calls.
Result:
1. Migrated 5+ services to Spring boot 3.x.x.
2. Created Documentation with 10+changes, referred by 4 teams with total of 30+ developers.
Long Polling Experience
Frugality
Deep dive
Invent and Simplify
Ownership
Situation: Web-tier to request queue to app-tier (image recognition 3secs) to response queue to web-tier; issues: request took longer, processes hanging indefinitely, 15-20 mins for 50 requests.
Task: Investigate the delay, Increase throughput (no_of_requests per second) for the requests, Optimize resource usage.
Action: Analysed SQS queue metrics: Observed (High NumOfEmptyReceives: 1200), SQS default short-polling, Coupling of each request with reading response queue. Decoupled (by implementing background process) at web-tier to long poll response queue (20secs), resolved the async callback and provided the result.
Result: Reduced response time, for 50 concurrent requests in under 2-3mins. Number of empty receives reduced to 0. Less number of network calls to SQS queue.
Video-recognition project
Ownership
Frugality
Invent and simplify
S: Video-recognition project, the client would upload/stream video to S3, a video-splitting lambda would read the video and split it into frames using ffmpeg library. The frames would then be sent to s3-stage-1 and would be read by face-recognition lambda. During the testing of video-splitting lambda, I noticed the usage of docker image (as suggested by professor) delayed the deployment and took a lot of testing time.
T: I decided to find an optimized way to deploy the video-splitting function faster. I realised I did not require specific python runtime and other libraries. So we could use the existing lambda runtime itself.
A: The only custom library was ffmpeg, which I decoupled from the lambda deployment package by using lambda layers and s3. Now the deployment package was in KBs, rather than 200+Mb, image size earlier.
R: This optimization reduced the cold time start for lambda function from 2000ms to <200ms. (measured from cloudwatch logs, INIT_START log message). It reduced the testing and build time for the image by 20-30 mins.