Candidate name: [your name here]
Architecture: https://www.lucidchart.com/documents/view/9076997e-eb19-444d-a2d4-40f800ba87cd/0_0
- github account + 2fa
- node.js + npm/yarn(preferable)
- docker
- create a new api called 'listing-publish' for publish real estate listings
- the published listing must be validated and encoded using Google's protocol buffers, then sent to RabbitMQ (dockerized)
- create a new service for consuming the messages from RabbitMQ and storing them into MongoDB (dockerized)
- create an additional search service for querying the listings from the MongoDB instance
- using Redis (dockerized), add a cache layer for caching the MongoDB query results
- create an additional service for consuming the RabbitMQ messages and storing them into Elasticsearch (dockerized)
- please note that the service must consume messages from a new queue so messages coming from 'listing-publish' will reach both Elasticsearch and MongoDB consumers
- add full text search capabilities to least on 2 fields on search service.
- now MongoDB will only query by id of document, please note that the listing id must be the same as the id on Elasticsearch and MongoDB.
- An example of how to encode messages using protocol buffers can be found at https://www.npmjs.com/package/protobufjs#examples