Skip to content

Latest commit

 

History

History
67 lines (43 loc) · 2.97 KB

M3.md

File metadata and controls

67 lines (43 loc) · 2.97 KB

Milestone: DEPLOYMENT, INFRASTRUCTURE, and something SPECIAL

Previously, we've focused on building, testing, and analysis of our software in a continuous deployment pipeline. Now, we're ready to start deploying software into production environments and designing and managing production infrastructure.

Deployment Components

Your production infrastructure and deployment pipeline should support the following properties.

  • Deployment: Deploy iTrust and checkbox.io to a production environment. Create a git hook on your jenkins server that will trigger a deployment when doing a git push to "production". The deployment needs to occur on actual remote machine (e.g. AWS, droplet, VCL), and not a local VM. The deployment should provision and configure the production environment using scripts+ansible.

  • Feature Flags: Create a configuration server for managing feature flags (using redis) that can be used to turn off/on features on iTrust in production. Pick one feature to demo in screencast.

Infrastructure Components

  • Infrastructure Upgrade Make improvements to the infrastructure of checkbox.io.

    • Extract a new microservice for rendering markdown => html in checkbox.io. Deploy several instances of microservice (at least 3). Demonstrate service availabilty after turning off nodes. You may use a cluster such as nomad, kubernetes, or implement your own strategy.

      In other words, replace the call to marqdown.render to use your cluster of microservices.

      app.post('/api/design/survey', 
          function(req,res)
          {
              console.log(req.body.markdown);
              var text = marqdown.render( req.body.markdown );
              res.send( {preview: text} );
          }
      );
      

Special Component

Add a new idea to your pipeline. Choose one of the following:

  • a chaos experiment/monkey
  • monitoring/analysis
  • deployment strategy (canary releases, etc.)
  • introduce new infrastructure upgrades
  • something cool.

Final Demo

In addition to your normal screencast to demonstrate your functionality, you will prepare a whole project demo.

Prepare a 4 minute screencast demonstrating your entire project, detailing the overall architecture of pipeline, as well as details of the components. You will want to make this a professionally edited video -- something that you can show to others when you go on the job market.

BONUS: The best 3 project presentations will get +10% bonus.

Evalution

This milestone will be worth 20% of the final grade.

  • Production deployment: 20%
  • Feature flags: 20%
  • Infrastructure Upgrades (microservices+cluster): 20%
  • Something special: 20%
  • Screencast for functionality: 10%
  • Final Demo Video: 10%

Submission

Submit here, a link to your repo that includes

your code, a README.md and screencast, describing how your milestone meets each requirement.

Due Sunday, April 28th before midnight.