Continuous Updating

42
Continuous Updating

description

Continuous Updating is a way to keep your software project up-to-date. Big migrations are risky and expensive. Small migrations you can do on the fly.

Transcript of Continuous Updating

Page 1: Continuous Updating

Continuous Updating

Page 2: Continuous Updating

How do you keep track of your LIBRARIES?

Page 3: Continuous Updating

How many DEPENDENCIES do you have in your project?

Page 4: Continuous Updating

Which LICENSES are your dependencies

using?

Page 5: Continuous Updating

You don’t know ?

Page 6: Continuous Updating

Requirements

Analysis

Design

Coding

Testing

Accepting

15 years ago we used to work with the WATERFALL MODEL

Page 7: Continuous Updating

But today we are AGILE!

Page 8: Continuous Updating

Everything the Waterfall Model used to execute in one year ...

!

... we nowadays execute in 2 weeks!

Page 9: Continuous Updating

The way we develop software today totally changed!

Page 10: Continuous Updating

Being AGILE got us

CONTINUOUS Testing

CONTINUOUS Refactoring

CONTINUOUS Integration

CONTINUOUS Delivery

Page 11: Continuous Updating

But what about CONTINUOUS Updating ?

Page 12: Continuous Updating

How do you update your LIBRARIES ?

Page 13: Continuous Updating

You don’t ?

Page 14: Continuous Updating

Because you never touch a running system, right ?

Page 15: Continuous Updating

So you wanna work with COBOL? Right?

Enjoy!

Page 16: Continuous Updating

If you can't fly then run, if you can't run then walk, if you can't walk then crawl, but whatever you do you have to keep moving forward. Martin Luther King Jr.

Page 17: Continuous Updating

Core committers don’t release new versions just for fun!

Page 18: Continuous Updating

• Bug Fixes

• Security Fixes

• Speed & Memory optimization

• New Features

They always have good reasons

Page 19: Continuous Updating

How do you ensure that new versions don’t break the system?

Page 20: Continuous Updating

Semantic Versioning Migration Paths

Continuous Testing

Page 21: Continuous Updating

http://semver.org/

Page 22: Continuous Updating

1.MAJOR version when you make incompatible API changes

2.MINOR version when you add functionality in a backwards-compatible manner

3.PATCH version when you make backwards-compatible bug fixes.

MAJOR.MINOR.PATCH

Page 23: Continuous Updating

Always follow the MIGRATION PATH!

Page 24: Continuous Updating

Many small steps are better than one big step !

You can do SMALL MIGRATIONS on the fly. !

BIG MIGRATIONS are risky and expensive. !

If you miss versions, you miss migration paths, too. And that leads to TROUBLE!

Page 25: Continuous Updating

1 2 3 4migrate migrate migrate

big migration … expensive

Don’t miss migration paths!

Page 26: Continuous Updating

Always run your TESTS against new versions

Page 27: Continuous Updating

Another reason for being current

Page 28: Continuous Updating

Do you really believe those young talents

wanna work with COBOL?

Or other OLD SHIT?

Page 29: Continuous Updating

Tracking versions is a pain!

Page 30: Continuous Updating

SOFTWARE LIBRARIES are NOT like iPhone

Apps!

Page 31: Continuous Updating

100 libraries per project in avg.

After 2 weeks the first libraries are OUT-DATED!

Page 32: Continuous Updating

Developers are missing critical BUG FIXES and important UPDATES!

Page 33: Continuous Updating

Manually checking for updates is no fun!

!

It cost TIME & MONEY! !

NOBODY WANTS TO DO IT!

Page 34: Continuous Updating

So, how do you wanna solve this PROBLEM?

Page 35: Continuous Updating

You have to AUTOMATE!

Page 36: Continuous Updating

You need a TOOL for that!

Page 37: Continuous Updating

GemNotifier Gemnasium VersionEye

Languages Ruby Ruby, Node.JSJava, Ruby, NodeJS, Python, PHP, Clojure, JavaScript, Object-C

Project Integration Single Subscribe GitHub GitHub, URL, FileUpload, API

Changelogs no yes in progress

Security no yes in progress

Licenses no no yes

API no no yes

Page 38: Continuous Updating

www.VersionEye.com

Keeps an eye on more than 270K open source libraries! Supports 8 Languages and 7 Package Managers!

Page 39: Continuous Updating

https://www.versioneye.com/api?version=v2

API

Ruby command line tool: https://github.com/versioneye/veye

Projects using the VersionEye API

Maven Plugin: https://github.com/versioneye/versioneye_maven_plugin

Zend Framework Module: https://github.com/ocramius/VersionEyeModule

Symfony Profiler Module: https://github.com/mattsches/VersionEyeBundle

Page 40: Continuous Updating
Page 41: Continuous Updating
Page 42: Continuous Updating

QUESTIONS? !

Contact me on Twitter

!

@RobertReiz