Amazon AWS - NodeJs - Solr Search Experiment

At Synerzip we are doing a new experiment with Amazon AWS, NodeJs and Solr Search.

Overview

Synerzip is a growing company, and we are seeing need of software stack to manage our internal operations. One such requirement is the ability to search our growing number of documents (especially our HR Team).

Application Scope

In the spirit of MVP (Minimal Viable Product) we are keeping our scope very limited. The Scope is to develop a short and sweet Resume Management System, that can be later bloated for other Document and Information Management Service

User Stories

Few User Stories to layout a picture

As a HR, I want to upload a Resume with a form (stating various aspect of an Employee), so that this gets registered in the Company Database

As a Employee, I want to search for the Resumes, so that I can find which person meets my skill set criteria

As a Employee, I want to see categories along side search search result for skills (Java, JavaScript, .NET), so that I can further narrow the search result

As a Employee, I want to see experience range along side search result (1-3, 3-6,7-10,10+), so that I can further narrow the search result

Search and Upload Resume UX

Managers can search for people's resume and will see the following Search interface

[singlepic id=26 w=480 h=320 float=]

HR can upload the employee resume or this can be done through Self Service interface

[singlepic id=27 w=480 h=320 float=]

Underlying Technologies

Following is the architecture of Search App.

There are following modules

  1. Single Page Application which is built on backbone. This is the javascript application. Think about this as a separate client (UX)
  2. Restful API which allows
    1. Uploading Attributes and Resume
    2. Search for Resumes
  3. OAuth Server (not depicted in the diagram)
    1. Generates a token which tells if the client app has permission to
      1. Upload Resume
      2. Search Resume
    2. The Restful API will need this token to function
  4. Apache Solr - Which is configured to index attributes and resume files
  5. Mongo DB - This will also store the attributes and resume for book keeping. This would also have the roles collection

[singlepic id=28 w=480 h=320 float=]

 

Deployment

The above would be deployed on Amazon AWS. Following technologies of Amazon AWS would be used to do so. The idea is to automate setting up Amazon AWS environment

  1. AWS IAM - To delegate aws responsibilities to the team (some will be admin, some will be operator with access to only start or shutdown, some will be only be able to backup to S3)
  2. AWS Cloud Formation - To create a template which automates creation of security group, ec2 + ebs image from pre determined ami, setup dns or elastic ip, initiate bootstrap of ec2 linux machine which will install nodejs, solr etc automatically
  3. AWS EC2/EBS - To actually host the single instance of server which runs everything
  4. AWS S3 - To periodically back up the EBS Instance to S3