21
Continuous Integration & Quality Development By Gareth Davies Mindvalley CTO www.darknet.org.uk slideshare.com/ShaolinTiger

Continuous Integration and Quality Development

Embed Size (px)

Citation preview

Page 1: Continuous Integration and Quality Development

Continuous Integration & Quality Development

By Gareth DaviesMindvalley CTO

www.darknet.org.ukslideshare.com/ShaolinTiger

Page 2: Continuous Integration and Quality Development

So, Who am I?

• I work at Mindvalley – we are in the learning experience business• Multi-cultural tech team with 35+ members• We are hiring! mindvalley.com/careers

Page 3: Continuous Integration and Quality Development

Technologies We Use• Ruby on Rails• Redis• PostgreSQL• PHP• Python• MongoDB• MySQL• Linode• Etc…

Page 4: Continuous Integration and Quality Development

This Talk & Pulse-check• This talk covers:• Continuous Integration/Development & Deployment• Development Workflow• Quality Development Mindset• Agile Methodology & Scrum• How it all comes together & Tools for 2015

• Pulse check – Github? Pull Request? Merge Conflicts?

Page 5: Continuous Integration and Quality Development

Continuous what?

Integration, Delivery & Deployment

Page 6: Continuous Integration and Quality Development

Continuous Integration• If you’re using Github or any modern VCS (properly) – you’re basically

already doing at least half of this.

“Continuous Integration (CI) is a development practice that requires developers to integrate code into a shared repository several times a

day. Each check-in is then verified by an automated build, allowing teams to detect problems early.”

Page 7: Continuous Integration and Quality Development

Continuous Delivery• This is where tools come in handy, simple projects and small dev

shops often haven’t reached this stage yet

“Continuous Delivery is the natural extension of Continuous Integration: an approach in which teams ensure that every change to the system is

releasable, and that we can release any version at the push of a button.”

Page 8: Continuous Integration and Quality Development

Continuous Deployment• Automating this stage is only for the brave! The first 2 MUST be solid

(CI/CD)

“Continuous Deployment is the deployment or release of code to Production as soon as it is ready. There is no large batching in Staging

nor long UAT process that is directly before Production.”

Page 9: Continuous Integration and Quality Development

Development Workflow

Page 10: Continuous Integration and Quality Development

Managing a Team Workflow• It helps to standardise the IDE with standard settings (Sublime etc.)• Have code conventions aka a style guide• Have strict whitespace conventions• Enforce daily stand-ups• Ensure communication to avoid conflicts• Don’t check in build artifacts (e.g scss/sass files)

Page 11: Continuous Integration and Quality Development

Quality Driven Mind-set• Everyone is responsible• Automation DOES NOT remove

the need for code review• Review every pull request with a

Systems Thinking attitude• Allow time in your dev plan for

refactoring, cleaning code, properly designing architecture and code reviews

Page 12: Continuous Integration and Quality Development

To Create Quality You Must Define It• Have a shared definition of quality• Communicate it through-out the team regularly• Benchmark code reviews against the quality definition

• Example metrics for quality:• Does it generate business value?• Is it documented for developers?• Is it documented for users?• Is it tested (manually and automatically?)• Is it secure?• Is it optimized and so on

• Similar to the ‘Definition of Done’ in Scrum

Page 13: Continuous Integration and Quality Development

Agile Programming?

Page 14: Continuous Integration and Quality Development

Agile Methodology“Agile software development is a group of software development

methods in which solutions evolve through collaboration between self-organizing, cross-functional teams. It promotes adaptive planning,

evolutionary development, early delivery, continuous improvement, and encourages rapid and flexible response to change.”

Page 15: Continuous Integration and Quality Development

Scrum Framework

Page 16: Continuous Integration and Quality Development

How Does it Connect?• Agile methodology thrives in a development environment that is well

structured with a solid workflow• The more complete your CI/CD systems are, the more agile you are

from a technical standpoint• The higher quality software you produce, the less iterations you have

to waste fixing bad code and architectural oversights

Page 17: Continuous Integration and Quality Development

CI/CD In Practise• Feature branches and Pull Requests lead to automated testing, which

deals with low hanging fruit + human code review = high quality software.

Page 18: Continuous Integration and Quality Development

How We Do It

Page 19: Continuous Integration and Quality Development

Tools Used• Github - https://github.com/• Circle-CI - https://circleci.com/• Code Climate - https://codeclimate.com/• Hipchat - https://www.hipchat.com/• Linode - https://www.linode.com/• Capistrano - http://capistranorb.com/

Page 20: Continuous Integration and Quality Development

Conclusion• Tools come and go, they fork, they die, they evolve• Use what suits your project/organisation the best (that includes

budget)• Most tools are free for Open Source projects• Have an Agile mind-set and a Quality Driven focus and you’ll be fine• Always test new methods, SaaS platforms, plugins, CI/CD tools and

agile processes/frameworks• Have fun!

Page 21: Continuous Integration and Quality Development

THE END

For Stalkers Twitter: @ShaolinTigerBlog: www.shaolintiger.comInfosec: www.darknet.org.ukThis presentation: www.slideshare.net/ShaolinTiger