Transcript
Page 1: JavaCro'14 - Amphinicy crown jewels our software development infrastructure – Tin Tvrtković

Amphinicy Crown

Jewels

Tin Tvrtković

13.5.2014.

Page 2: JavaCro'14 - Amphinicy crown jewels our software development infrastructure – Tin Tvrtković

@tintvrtkovic

Page 3: JavaCro'14 - Amphinicy crown jewels our software development infrastructure – Tin Tvrtković
Page 4: JavaCro'14 - Amphinicy crown jewels our software development infrastructure – Tin Tvrtković

Motivation and Focus

Page 5: JavaCro'14 - Amphinicy crown jewels our software development infrastructure – Tin Tvrtković
Page 6: JavaCro'14 - Amphinicy crown jewels our software development infrastructure – Tin Tvrtković

?

?

?

??

?

?

?

?

Page 7: JavaCro'14 - Amphinicy crown jewels our software development infrastructure – Tin Tvrtković

class HelloWorldApp {public static void main(String[] args) {

System.out.println("Hello World!"); // Display the string.System.out.println("Hello World!"); // Display the string.}

}

Page 8: JavaCro'14 - Amphinicy crown jewels our software development infrastructure – Tin Tvrtković

Build Automation Tool

Page 9: JavaCro'14 - Amphinicy crown jewels our software development infrastructure – Tin Tvrtković

Build Automation Tool

The dark ages:

– IDE based– IDE based

Page 10: JavaCro'14 - Amphinicy crown jewels our software development infrastructure – Tin Tvrtković

Build Automation Tool

The dark ages:

– IDE based– IDE based

The middle ages:

– Ant and Ivy

Page 11: JavaCro'14 - Amphinicy crown jewels our software development infrastructure – Tin Tvrtković

The dark ages:

– IDE based

Build Automation Tool

– IDE based

The middle ages:

– Ant and Ivy

Modernity:

– Maven

Page 12: JavaCro'14 - Amphinicy crown jewels our software development infrastructure – Tin Tvrtković
Page 13: JavaCro'14 - Amphinicy crown jewels our software development infrastructure – Tin Tvrtković

?

?

??

?

?

?

?

Page 14: JavaCro'14 - Amphinicy crown jewels our software development infrastructure – Tin Tvrtković

Code Repository

Page 15: JavaCro'14 - Amphinicy crown jewels our software development infrastructure – Tin Tvrtković

Code Repository

The dark ages:

– network disk based– network disk based

Page 16: JavaCro'14 - Amphinicy crown jewels our software development infrastructure – Tin Tvrtković

Code Repository

The dark ages:

– network disk based– network disk based

The middle ages:

– CVS, Subversion

Page 17: JavaCro'14 - Amphinicy crown jewels our software development infrastructure – Tin Tvrtković

Code Repository

The dark ages:

– network disk based– network disk based

The middle ages:

– CVS, Subversion

Modernity:

– git

Page 18: JavaCro'14 - Amphinicy crown jewels our software development infrastructure – Tin Tvrtković

Code Repository

The dark ages:

– network disk based– network disk based

The middle ages:

– CVS, Subversion

Modernity:

– git Mercurial

Page 19: JavaCro'14 - Amphinicy crown jewels our software development infrastructure – Tin Tvrtković
Page 20: JavaCro'14 - Amphinicy crown jewels our software development infrastructure – Tin Tvrtković

??

?

?

?

?

?

Page 21: JavaCro'14 - Amphinicy crown jewels our software development infrastructure – Tin Tvrtković

Continuous Integration

Page 22: JavaCro'14 - Amphinicy crown jewels our software development infrastructure – Tin Tvrtković

Continuous Integration

The dark ages:

– nothing

Page 23: JavaCro'14 - Amphinicy crown jewels our software development infrastructure – Tin Tvrtković

Continuous Integration

The dark ages:

– nothing

The middle ages:

– Luntbuild

Page 24: JavaCro'14 - Amphinicy crown jewels our software development infrastructure – Tin Tvrtković

Continuous Integration

The dark ages:

– nothing

The middle ages:

– Luntbuild

Modernity:

– Jenkins

Page 25: JavaCro'14 - Amphinicy crown jewels our software development infrastructure – Tin Tvrtković
Page 26: JavaCro'14 - Amphinicy crown jewels our software development infrastructure – Tin Tvrtković

?

?

?

?

?

Page 27: JavaCro'14 - Amphinicy crown jewels our software development infrastructure – Tin Tvrtković

Artifact Repositories

Page 28: JavaCro'14 - Amphinicy crown jewels our software development infrastructure – Tin Tvrtković

Artifact Repositories

The dark ages:

– nothing

Page 29: JavaCro'14 - Amphinicy crown jewels our software development infrastructure – Tin Tvrtković

Artifact Repositories

The dark ages:

– nothing

The middle ages:

– Nexus

Page 30: JavaCro'14 - Amphinicy crown jewels our software development infrastructure – Tin Tvrtković

Artifact Repositories

The dark ages:

– nothing

The middle ages:

– Nexus

Modernity:

– Nexus, Nopar, Bower-cache

Page 31: JavaCro'14 - Amphinicy crown jewels our software development infrastructure – Tin Tvrtković

Nopar Bower Cache DevPI?

Page 32: JavaCro'14 - Amphinicy crown jewels our software development infrastructure – Tin Tvrtković

??

?

Page 33: JavaCro'14 - Amphinicy crown jewels our software development infrastructure – Tin Tvrtković

Static Analysis

Page 34: JavaCro'14 - Amphinicy crown jewels our software development infrastructure – Tin Tvrtković

Static Analysis

The dark ages:

– manual checks

The middle ages:

– manual checks

Page 35: JavaCro'14 - Amphinicy crown jewels our software development infrastructure – Tin Tvrtković

Static Analysis

The dark ages:

– manual checks

The middle ages:

– manual checks

Modernity:

– Sonar

Page 36: JavaCro'14 - Amphinicy crown jewels our software development infrastructure – Tin Tvrtković
Page 37: JavaCro'14 - Amphinicy crown jewels our software development infrastructure – Tin Tvrtković

?

?

Page 38: JavaCro'14 - Amphinicy crown jewels our software development infrastructure – Tin Tvrtković

Integration Testing

Page 39: JavaCro'14 - Amphinicy crown jewels our software development infrastructure – Tin Tvrtković

Integration Testing

The dark ages:

– none / manual

The middle ages:

– none / manual

Page 40: JavaCro'14 - Amphinicy crown jewels our software development infrastructure – Tin Tvrtković

Integration Testing

The dark ages:

– none / manual

The middle ages:

– none / manual

Modernity:

– Groovy, Ansible

Page 41: JavaCro'14 - Amphinicy crown jewels our software development infrastructure – Tin Tvrtković
Page 42: JavaCro'14 - Amphinicy crown jewels our software development infrastructure – Tin Tvrtković

?

Page 43: JavaCro'14 - Amphinicy crown jewels our software development infrastructure – Tin Tvrtković

Code Review

Page 44: JavaCro'14 - Amphinicy crown jewels our software development infrastructure – Tin Tvrtković

Code Review

The dark ages:

– informal, senior to junior

The middle ages:

– informal, senior to junior

Page 45: JavaCro'14 - Amphinicy crown jewels our software development infrastructure – Tin Tvrtković

Code Review

The dark ages:

– informal, senior to junior

The middle ages:

– informal, senior to junior

Modernity:

– Review Board

Page 46: JavaCro'14 - Amphinicy crown jewels our software development infrastructure – Tin Tvrtković

Code Review

The dark ages:

– informal, senior to junior

The middle ages:

– informal, senior to junior

Modernity:

– Review Board cards

Page 47: JavaCro'14 - Amphinicy crown jewels our software development infrastructure – Tin Tvrtković

code

review?

Page 48: JavaCro'14 - Amphinicy crown jewels our software development infrastructure – Tin Tvrtković

Plans for the Future

• Heterogeneous build • Heterogeneous build

system

• Maven to Gradle?

• Code review story

• VM provisioning

Page 49: JavaCro'14 - Amphinicy crown jewels our software development infrastructure – Tin Tvrtković

Thank you for your attention!

Q&A Session