Design points
- Everything is code
- Everything is packaged
- Separate code and config
- Code and configuration flow at different rates
- Separate env-dependent attributes
- More volatile - flows much faster
- Separate packages
- Balance distributed vs local orchestration
- On the deploy side - decision to be made about how to approach orchestration
- Distributed
- Network level coordinatinon
- Multi-box, off-box
- Coordinating rolling upgrades
- Pool of boxes
- Workflow captured separately, captured/encoded independent of environment, e.g. Rundeck, specify business/technical process to orechestrate in distributed manner divorced of environment
- Same template, same workflows meet the env-specific data/nodeset & get instantiated at runtime
- Local
- On-box, within given node
- Set of tasks to bring system to target state
- Modular automation - capture implementation/code in modules, move them around the network, e.g. chef cookbooks
- Separate concerns - met with separate tools fitting together in tool chain
- Resolve directed vs convergent orchestration
- Directed orchestration:
- single node in network
- fire out commands in authoritative manner
- Continuous deploy / rolling upgrade - best met with directed orchestration
- Convergent orchestration:
- Rise of cloud/different design (e.g. chef)
- Fuzziness - room for environment to converge
- Good for scale / compliance
- Not either-or... need a solution that accommodates both
- Integrate application and infrastructure provisioning
- "integrate build and deploy"
- Want a systemic solution
- Single orchestrated provisioning process
- Moving away from static infra - we need infra and app up quickly
- Design for flow not the organisation
- Subordinate organisational differences/divisions - forget those requirements/constraints
- Build for business/process flow across the system
1289s
1466s - The tool for the job
- There's often a number of tools to choose to do the job
- Choose the job to fit the people in the org
- Java guy = Ant/Maven
- Ruby = Rake
- Systems = Make
- All languages can build RPMs: Ant/Mave/Rake/Make
- Tool you choose may vary depending on who's consuming them
2294s - Environment-Specific Application-Level Attributes
- Mapping databag into context
- Package version and application state defined per environment within package's databag
Build console (Jenkins) does build orchestration, deploy console (Rundeck) does deploy orchestration, Chef does local orchestration.