javacro'14 - amphinicy crown jewels our software development infrastructure – tin tvrtković

Post on 22-Jun-2015

1.309 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

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.

TRANSCRIPT

Amphinicy Crown

Jewels

Tin Tvrtković

13.5.2014.

@tintvrtkovic

Motivation and Focus

?

?

?

??

?

?

?

?

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

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

}

Build Automation Tool

Build Automation Tool

The dark ages:

– IDE based– IDE based

Build Automation Tool

The dark ages:

– IDE based– IDE based

The middle ages:

– Ant and Ivy

The dark ages:

– IDE based

Build Automation Tool

– IDE based

The middle ages:

– Ant and Ivy

Modernity:

– Maven

?

?

??

?

?

?

?

Code Repository

Code Repository

The dark ages:

– network disk based– network disk based

Code Repository

The dark ages:

– network disk based– network disk based

The middle ages:

– CVS, Subversion

Code Repository

The dark ages:

– network disk based– network disk based

The middle ages:

– CVS, Subversion

Modernity:

– git

Code Repository

The dark ages:

– network disk based– network disk based

The middle ages:

– CVS, Subversion

Modernity:

– git Mercurial

??

?

?

?

?

?

Continuous Integration

Continuous Integration

The dark ages:

– nothing

Continuous Integration

The dark ages:

– nothing

The middle ages:

– Luntbuild

Continuous Integration

The dark ages:

– nothing

The middle ages:

– Luntbuild

Modernity:

– Jenkins

?

?

?

?

?

Artifact Repositories

Artifact Repositories

The dark ages:

– nothing

Artifact Repositories

The dark ages:

– nothing

The middle ages:

– Nexus

Artifact Repositories

The dark ages:

– nothing

The middle ages:

– Nexus

Modernity:

– Nexus, Nopar, Bower-cache

Nopar Bower Cache DevPI?

??

?

Static Analysis

Static Analysis

The dark ages:

– manual checks

The middle ages:

– manual checks

Static Analysis

The dark ages:

– manual checks

The middle ages:

– manual checks

Modernity:

– Sonar

?

?

Integration Testing

Integration Testing

The dark ages:

– none / manual

The middle ages:

– none / manual

Integration Testing

The dark ages:

– none / manual

The middle ages:

– none / manual

Modernity:

– Groovy, Ansible

?

Code Review

Code Review

The dark ages:

– informal, senior to junior

The middle ages:

– informal, senior to junior

Code Review

The dark ages:

– informal, senior to junior

The middle ages:

– informal, senior to junior

Modernity:

– Review Board

Code Review

The dark ages:

– informal, senior to junior

The middle ages:

– informal, senior to junior

Modernity:

– Review Board cards

code

review?

Plans for the Future

• Heterogeneous build • Heterogeneous build

system

• Maven to Gradle?

• Code review story

• VM provisioning

Thank you for your attention!

Q&A Session

top related