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.
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 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} ); } );
-
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.
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.
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%
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.