automatize everything

Post on 14-Jul-2015

122 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Automatize-*Crif Tech Days 2012

Boris Bucha

Tech days 2011

1. Get it

3. Build it 4. Run it

2. Configure it

5. Deploy it

“There should be two tasks for a human being to perform to deploy software into a development, test, or production environment: to pick the version and environment and to press the “deploy” button.”

[Continuous Delivery]

What we aim for?

• Build application binaries – ant, make… √

• Configuration (tools ??) X

• Database (tools ??) X

• Delivery (tools ??) X

Why?

• NHibernate: 63K LoC

• Bailiffs: 157K LoC

• R#: 500K LoC

• BAM: 1M LoC

• Russian CB: 1.3M LoC

• .NET4: 2M LoC

VCS almighty

• DB scripts … all configurations … deployment scripts … application source code

EVERYTHING!

Antipattern #1

• Manual Configuration Management of Production Environments

– Hours to enable new team member

– Hours to install any new environment

– Hours to get WHY it doesn’t work on my PC ?!

Infrastructure as code

• “Infrastructure as code is an approach whereby infrastructure

configuration is scripted or described by files that are stored in version control, and changes are pushed out to the datacenter in a controlled manner. This parallels the discipline of

source control and build promotion used in software development, hence ‘as code’” [http://www.thoughtworks.com/articles/technology-

radar-january-2011]

Configizer

+

Configize !

Configizer v2

• Adopted by: Bailiffs, Elixir, Kolikmam, BAM

• New features: – Hidden passwords

– Better parameters factoring possibilities

– Encryption of critical sections

– Owaspize

• Thank you: Ondrej, Ľuboš, Roman, Andrej

Antipattern #2

• Deploying Software Manually– Diffing Test DB with some “prod-like” DB

– Long installation instructions

– Long delivery cycles

– Broken productions

– Evenings / Weekends in office fixing

Deliver often

• MVP hype [Agile-*, Lean-*] -> feedback

• Incremental DB patches (*-Migrations libs)

• Automatic package build –best documentation

• Enterprise software on any unplugged laptop• Feature toggles (use feature branches not version branches)

“If it hurst …”

So again

1. Get it

3. Build it 4. Run it

2. Configure it

5. Deploy it

Not there yet

• Automatic setup of web applications (and services like Mystic) – mitigated by F5 execution

• Visible dashboards

• 100% host environment control (Puppet -http://projects.puppetlabs.com/projects/puppet)

• “Repeatability and reliability derive from two principles: automate almost everything, and keep everything you need to build, deploy, test, and release your application in version control.“

[Continuous Delivery]

top related