RFQ Evaluation Criteria Evidence

# criteria evidence
a assigned,one leader, gave that person authority and responsibility, and held that,person accountable for the quality of the prototype submitted The team assigned Vijay Goswami as the Product Owner. Mr. Goswami also played the role technical architect and devops engineer on the project. While being in the dual role of Product Owner and developer is not ideal, the team had to work with the available resources it had. As a product owner, Mr. Goswami prioritized the list of features and assigned tasks to team members. All four labor categories were utilized between the 3 people who worked on the prototype.documentation link
b assembled,a multidisciplinary and collaborative team that includes at a minimum of two,of the labor categories limited to the Development Pool labor categories to,develop the prototype as quoted in Attachment C Based on the vision and usage of the application a development team was assembled. The collective development team has had experience in the following areas 1. Developing applications using open source technologies 2. Experience with cloud platforms 3. Experience handling highly visible projects. Some of the experience included the following 1. Acting as system architect and tech lead in delivering the http://travel.state.gov website (~500k visitors per day) 2. Developing public datasets and API for Department of State 3. Designing cloud infrastructure platform for deploying enterprise scale applications available across all countries and timezones documentation link
c used at,least five modern and open-source technologies, regardless of architectural,layer (frontend, backend, etc.) The development team made the decision to use only open source technologies for buildign the prototype based on the requirements of the RFQ. The team originally used Jira and Confluence tools but moved to Githup pages and issues feature after the RFQ questions were made available. The prototype makes use of following technologies Node.js Javascript - implementation of ECMAScript language standard MongoDB Ruby - for generating this documentation Jekyll Docker. The application itself uses the following frameworks locomotive bootable bootable-environment express connect-powered-by ejs underscore mongoose request grunt Mocha documentation link
d deployed,the prototype on an Infrastructure as a Service (IaaS) or Platform as a,Service (PaaS) provider, and indicated which provider they used The development team used Amazon cloud services to deploy the application using Amazon Elastic BeanStalk which provides Platform as a Service (PaaS) cloud model. The application itself uses Amazon EC2 Container service. Deploying on cloud platform allowed use to rapidly build the development and production environment while keeping the cost low. The cloud environment will also benefit testing application scalibility features when it is made available at internet scale. The following Amazon cloud services were utilizedAmazon EC2 Amazon S3 Amazon VPC AWS Elastic Beanstalk AWS CloudTrail Amazon SNS Amazon EC2 Container Service Amazon Route 53 AWS Identity and Access Management (IAM) In addition to the PaaS service. The prototype also utilized the following Software as a Service (Saas) cloud model 1. Codeship documentation link
e wrote,unit tests for their code documentation link . Unit tests are in the test folder.
f set up,or used a continuous integration system to automate the running of tests and,continuously deployed their code to their IaaS or PaaS provider We use Codeship for implemeting continuous build, test and deployment of My Medication List application. We chose Codeship for it's ability to deploy passed builds to Elastic Beanstalk which other CI tools were lacking. Codeship, however, does not provide the ability to select the branches that will be unit tested which is a shortcoming. The current CI workflow is as follows 1. Codeship has been configured to watch the github repository 2. Changes pushed to the repsoitory trigger a build and running of unit tests 3. If a build passes, the deployment pipeline for that branch is executed and the environment associated with that pipeline is updated with latest code. The following table shows the mapping between branches in github and the deployment pipeline associated with that branch. documentation link
g set up,or used configuration management We use git for source code and system artifact version control and configuration management. All versioned project artifacts are hosted on Github. Github provides a web based interface for interacting with git hosted on the server. Additional benefits include, collaboration using issues and wiki as well as providing metrics on usage by team members. Third party hooks available in Github such as notification when changes are pushed enable continous integration and integration with third party issue management system such as Jira. While using the command line tool can be used for performing checkins and push to Github repository, we suggest using SourceTree tool for working with Github. Sourcetree is available for Mac and Windows platforms. Our branching model is based on gitflow. Details on the using the gitflow workflow can be found here. documentation link
h set up,or used continuous monitoring We leveraged Platform as a Service (PaaS) cloud model for hosting the application on Amazon Elastic Beanstalk. Utilizing a PaaS model comes with following benefits Higher level of abstraction compared to OS/infrastructure as a service (IaaS) based models Built in mechanisms for scaling, monitoring and healing Cost effeciences Faster time to market Our continuous monitoring model consists of following elements 1. Healthcheck, notification and scaling configurations 2. Monitoring platform generated metrics 3. Logging and monitoring system and environment changes 4. Running analysis scripts/jobs on logs saved to Amazon S3 (tbd) We also use google analytics to get information on site access. documentation link
i deploy,their software in a container (i.e., utilized operating-system-level,virtualization) The development team used Amazon cloud services to deploy the application using Amazon Elastic BeanStalk which provides Platform as a Service (PaaS) cloud model. The application itself uses Amazon EC2 Container service. Deploying on cloud platform allowed use to rapidly build the development and production environment while keeping the cost low. The cloud environment will also benefit testing application scalibility features when it is made available at internet scale. The following Amazon cloud services were utilized Amazon EC2 Amazon S3 Amazon VPC AWS Elastic Beanstalk AWS CloudTrail Amazon SNS Amazon EC2 Container Service Amazon Route 53 AWS Identity and Access Management (IAM) In addition to the PaaS service. The prototype also utilized the following Software as a Service (Saas) cloud model 1. Codeship documentation link
j used an,iterative approach, where feedback informed subsequent work or versions of,the prototype The development team used an iterative approach to develop the prototype. User stories were created and added to backlog, the stories were then prioritized for implementation of the sprint (which was compressed to meet RFQ deadline). The team deployed the minimum viable project after 3 days of the RFQ and kept adding incremental value and functionality to the project, all the while keeping a product that could be used as an evidence for the RFQ submission. The team originally utilized Jira and Confluence along with Github, but moved to github pages and issues after an update to the RFQ was posted. The team performed scrum calls and sprint retrospective meetings which was recorded in Confluence. The team was proactive in picking up additional tickets and working on them in the interest of meeting the RFQ deadline. documentation link. Sprint and story information is available here
k provided,sufficient documentation to install and run their prototype on another,machine All documentation related to the project including design, development, deployment and monitoring is availble on github pages
l prototype,and underlying platforms used to create and run the prototype are openly,licensed and free of charge All of the tools and technologies required to develop, build and run the applications are openly licensed and free of charge documentation link