Sharing Multiple Jobs¶
TLDR¶
Extend job sharing capabilities of our Product to allow sharing (and viewing) of several jobs via a single shareable link.
My role¶
Tech lead of the team that implemented this feature, and now maintains it.
Implementation¶
Our product already had the capabily to share a single job to potential candidates; we needed a way to efficiently share several jobs with a single link. One logistical quirk that made implementation trickier than it could've been was that this feature was supposed to be built in a different microservice that handled the single job sharing. What this meant was that our microservice needed to have "colocation" systems to pull job data from core job systems, including any updates. Kafka was chosen to be streaming platform for this requirement.
Besides such a colocation system, we built APIs to create — and serve — lists of jobs that are mapped to short unique tokens. It was built in a way to leave scope for adding more functionality in the future.
On the front-end side, a new landing page had to built for sharing these jobs.
Challenges¶
-
This project began around the same time when 6 new people joined the team:
- 3 contractors
- 1 QA engineer
- 1 product owner
- 1 scrum master (a role set up for the first time in the organisation)
A big challenge for me was to act as an effective intermediary among the developers, QA, product team, and the Scrum Master, facilitating communication and collaboration.
-
We were the first team in my department to set up stream processing consumers using Kafka, so there were a lot of firsts for us:
- How to deal with dependencies on the producer's side?
- How to deal with an offline producer?
- How to deal with fluctuating loads in the message stream?
- How to deal with evolving schemas?
- How to deal with absence of data?
- How to deal with failures in processing?
- How to best monitor the producers/consumers?
- At what rate should we consume messages so as to not bottleneck our application containers and the database?
Impact¶
This feature has made it easier for our customers to share multiple "related" jobs with potential candidates via a single link, reducing the need to keep track of several single job links. It's also made browsing jobs easier for candidates, which they can now do on a single web page.