End to end Continuous Delivery tools
Idea: A tool to open up, input the CD workflow. Does this exist? Does it need to exist?
General workflow
- Someone checks code in to version control
- Checkin gets picked up by build server
- Artifact repository or source control or build tool
- Script infrastructure: chef/puppet/custom scripts (should be version controlled)
- Deploy (Chef, Capistrano, shell scripts, manually)
- Testing
- UAT /(business sign off)
- Deployment to Production
- Monitoring/Logging (Nagios/PagerDuty/New Relic/Custom Built Solutions)
Thoughts
Teams use their own build tools and they come together in an artifact repo. For example, 1000 people working on the app(s). Do we want everything to go to a centralized CI server, or do we want devs to be more involved? Teams can have a local CI server, but it would be nice to still have a CD workflow on the ops level.
The pipeline is broken. Unless the app is architected so that any component can be changed along the way, the workflow won't be useful
Deployment contract: All apps must follow it. If so, our orchestration tool can handle it.
Facebook's deployment example: One gigantic binary and use bittorrent to get it to all of the servers and extract there. Rsync could work but it would not work sending it to thousands of machines.
Rationally Unified Process. There are documented processes at different contexts.
Are we okay with stitching together a bunch of tools? Over time, this may change. Use the cloud? There should be a standardized tool to deploy to the cloud.
Monitoring: Who finds issues first - the monitoring tools or the users?
Rollbacks: Stored in the artifact repo - easy unless there is a DB schema change?
These tools can be misused and used for generic automation.
Questions?
- Should this be a process tool that integrates others? Plugin/template based?