49
Amphinicy Crown Jewels Tin Tvrtković 13.5.2014.

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

Embed Size (px)

DESCRIPTION

Software developers historically obsess over the tools they use, and even the smallest software endeavor must have at least some supporting infrastructure. Amphinicy has been in this business for a while, so we’ve tried our share of infrastructure tools; some we’ve kept, some we’ve abandoned, and some we’ve written ourselves. Due to some of our specific clients, we probably run more infrastructure than most, and we pride ourselves on almost all of it being open source. This talk will explore how we deal with software development from an infrastructure and processes perspective – from our repository and build system, through continuous integration and integration testing to formalized code reviews and ideas we might work on next.

Citation preview

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