automatize everything

16
Automatize-* Crif Tech Days 2012 Boris Bucha

Upload: boris-bucha

Post on 14-Jul-2015

122 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Automatize everything

Automatize-*Crif Tech Days 2012

Boris Bucha

Page 2: Automatize everything

Tech days 2011

1. Get it

3. Build it 4. Run it

2. Configure it

5. Deploy it

Page 3: Automatize everything
Page 4: Automatize everything

“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]

Page 5: Automatize everything

What we aim for?

• Build application binaries – ant, make… √

• Configuration (tools ??) X

• Database (tools ??) X

• Delivery (tools ??) X

Page 6: Automatize everything

Why?

• NHibernate: 63K LoC

• Bailiffs: 157K LoC

• R#: 500K LoC

• BAM: 1M LoC

• Russian CB: 1.3M LoC

• .NET4: 2M LoC

Page 7: Automatize everything

VCS almighty

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

EVERYTHING!

Page 8: Automatize 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 ?!

Page 9: Automatize everything

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]

Page 10: Automatize everything

Configizer

+

Configize !

Page 11: Automatize everything

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

Page 12: Automatize everything

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

Page 13: Automatize everything

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 …”

Page 14: Automatize everything

So again

1. Get it

3. Build it 4. Run it

2. Configure it

5. Deploy it

Page 15: Automatize everything

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)

Page 16: Automatize everything

• “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]