SlideShare a Scribd company logo
Software Factory in a Box
   Marcello Teodori
   JUG Milano

                               Marcello Teodori - marcello.teodori@gmail.com – JUG Milano
domenica 6 marzo 2011
A few words about the speaker


   - one of the JUG Leaders for JUG Milano
   - moderator for SpringFramework-IT and Groovy Italian User Group mailing lists
   - owner and CTO in ExcogitaNet
   - owner, developer and pitcher for Git Enterprise
   - now based in London, working as freelancer tech lead for various enterprises and startups
   - somewhat twitterer: http://twitter.com/magomarcelo
       and blogger: http://magomarcelo.blogspot.com

                                                                       Marcello Teodori - marcello.teodori@gmail.com – JUG Milano
domenica 6 marzo 2011
Let’s define a Software Factory
    Once upon a time there was a little factory who was able to turn ideas into code...
                                                           ...and make everyone happy!




                                                               Marcello Teodori - marcello.teodori@gmail.com – JUG Milano
domenica 6 marzo 2011
But inside the factory truth was more often...

   Like having a cat
   in the waste bin...




                                                                Marcello Teodori - marcello.teodori@gmail.com – JUG Milano
domenica 6 marzo 2011
Hang on! It’s never too late to...




                                                             Marcello Teodori - marcello.teodori@gmail.com – JUG Milano
domenica 6 marzo 2011
First get the state we’re in... the Joel test

   Let’s assess the status of
   our working environment
   using the test of Joel Spolsky:
   12 Steps to Better Code
   (2000)


               http://www.joelonsoftware.com/articles/fog0000000043.html
                                                                   Marcello Teodori - marcello.teodori@gmail.com – JUG Milano
domenica 6 marzo 2011
And the lesson we can learn is...




                                                            Marcello Teodori - marcello.teodori@gmail.com – JUG Milano
domenica 6 marzo 2011
But trying to introduce tools can lead to some objections...
                              SOFTWARE
                               FACTORY
                              TOOLS ARE
                              EXPENSIVE
                                           LOTS OF THEM
                                           ARE OSS AND
                                           ACTUALLY VERY
                                            GOOD TOO


                              SETUP IS
                            COMPLICATED

                                           I COULD TRY
                                           AND INSTALL
                                             IN A VM

                           WHAT ABOUT
                         TRAINING? WE
                         NEED TO DEFINE
                         WORKFLOWS AND
                           PROCEDURES
                                            WELL...




                                                                Marcello Teodori - marcello.teodori@gmail.com – JUG Milano
domenica 6 marzo 2011
What can we do...?

    Software Factory in a Box!
    - a Virtual Machine with an OSS OS (Ubuntu Server 10.04 LTS)
    - implementing a software factory
    - for Maven/Java projects (mostly...)
    - built on OSS tools
    - we can experiment best practices with

                                                          Marcello Teodori - marcello.teodori@gmail.com – JUG Milano
domenica 6 marzo 2011
What’s inside the Software Factory in a Box...

   The VM contents:
   - redmine (issue tracker & wiki)
   - subversion edge (scm + management tools)
   - jenkins (continuous integration)
   - artifactory (maven repository)
   - sonar (source code reporting)
   all configured using PostgreSQL as database
   with the same identity across all systems provided by OpenLDAP (directory server)
                                                                Marcello Teodori - marcello.teodori@gmail.com – JUG Milano
domenica 6 marzo 2011
Redmine
   http://www.redmine.org/
   - wiki with markdown syntax
   - multi-project issue tracker
      with customizable workflow
   - milestone planning
   - integration with subversion and many more SCM...
   - notifications
   - GPLv3 license, built on Ruby and Rails

                                                        Marcello Teodori - marcello.teodori@gmail.com – JUG Milano
domenica 6 marzo 2011
Jenkins
 http://jenkins-ci.org/
 - possibly the most widely used OSS
      continuous integration server
 - can ran as job scripts, ant/maven builds
      triggered on specific conditions
 - integration with subversion and many more SCM...
 - extensible via plugins with rich directory:
      - sonar plugin
      - promotion plugin
      - artifactory plugin
 - MIT licensed, built on Java
                                                      Marcello Teodori - marcello.teodori@gmail.com – JUG Milano
domenica 6 marzo 2011
Subversion Edge
    http://www.open.collab.net/go/csvne2_r2a/
    - distribution of Subversion with tools
        provided by CollabNet
    - web-based repository management
    - web configurable LDAP integration
    - basic web permission editing
    - includes ViewVC repository viewer
    - AGPL licensed, built in Java
        (excluding Subversion and ViewVC)
                                                Marcello Teodori - marcello.teodori@gmail.com – JUG Milano
domenica 6 marzo 2011
Artifactory

   http://www.jfrog.com/products.php
   - a generic repository manager
        can host artifacts and dependencies
   - built for Maven
        but supporting also Ivy and Gradle
   - remote REST APIs
        supports publishing via POST of generic files
   - cache for external repositories, pre-configured with most
        used ones: (Maven Central, Codehaus, JBoss, Spring...)
   - LDAP support
   - LGPLv3 licensed, built on Java
                                                                 Marcello Teodori - marcello.teodori@gmail.com – JUG Milano
domenica 6 marzo 2011
Sonar

   http://www.sonarsource.org/
   - static code analysis and reporting
   - statistics on code health
   - plugin system
       to support many languages beyond Java
   - integrates well known tools:
       FindBugs, CheckStyle, PMD, Cobertura...
   - LGPL licensed, built on Java and JRuby
                                                 Marcello Teodori - marcello.teodori@gmail.com – JUG Milano
domenica 6 marzo 2011
OpenLDAP + web management provided by Zentyal

   http://www.zentyal.org/
   - web interface for Small Business Server
   - based on Ubuntu Server 10.04 LTS
   - all the configuration is on OpenLDAP
        http://www.openldap.org/
   - we’re using just its user and group module
   - can sync to external LDAP server
       even Active Directory with password sync!
   - provides self-service change password web
                                                           Marcello Teodori - marcello.teodori@gmail.com – JUG Milano
domenica 6 marzo 2011
Let’s experiment with some best practices...
        ...and check if they’re fit for us! Let’s see some possible examples...
   - use a wiki as project knowledge base
   - slice requirement documents in issues and track them
   - avoid “downloading the internet” with maven
   - build project with dedicated maven repository
   - one repository per project with standard trunk/tags/branches layout on subversion
   - promote and release projects from the CI server
   - share common project properties using a parent POM
   - publish a documentation site for a project with maven
   - monitor health state of source code through static analysis
   - create our custom maven archetypes and publish them on artifactory
                                                                                Marcello Teodori - marcello.teodori@gmail.com – JUG Milano
domenica 6 marzo 2011
What’s next...

   We can move our Software Factory in a Box
   VM in the virtualized infrastructure of our
   company datacenter!




                                                 Marcello Teodori - marcello.teodori@gmail.com – JUG Milano
domenica 6 marzo 2011
What’s next too...

   If we don’t want to host some of these tools...
       many of them offer a cloud service version...
   - DEV@cloud by CloudBees for Jenkins
   - Artifactory Online by JFrog
   - many more for Redmine and Subversion


  ...but don’t forget to manage identityacross all services!
                                                               Marcello Teodori - marcello.teodori@gmail.com – JUG Milano
domenica 6 marzo 2011
Or yet what’s next again...
   We can switch from Subversion to a more advanced SCM...
     ..like Git for example!
   And use instead of Subversion Edge as a distribution of Git with web management
     for user, repositories and permissions available as service and packaged...




                                                  http://www.gitenterprise.com

                                                               Marcello Teodori - marcello.teodori@gmail.com – JUG Milano
domenica 6 marzo 2011
SFBOX - The Project

   Some references:
   - http://tinyurl.com/sfbox - the Software Factory in a Box in OVA format
       (Open Virtualization Format Archive, runnable on VirtualBox, VMWare Player/
       Workstation and possibly others...)
       - login account with sudo privileges is: user/password
       - hostname is sfbox.local published via DNS-SD
   - https://github.com/mteodori/sfbox - the Software Factory in a Box project on
       GitHub to collect feedback, input and share install scripts...
                                                          Marcello Teodori - marcello.teodori@gmail.com – JUG Milano
domenica 6 marzo 2011
Q&A &... thanks!




   - http://www.jugmilano.it/ - JUG Milano & endless discussions on tools and best
       practices on our mailing list!
   - http://www.liludori.com/ - the wonderful world of Liludori providing the pictures
       in this presentation, courtesy of Mauro Gandini and Eloisa Scichilone
                                                           Marcello Teodori - marcello.teodori@gmail.com – JUG Milano
domenica 6 marzo 2011

More Related Content

What's hot

DevOps unraveled - Nyenrode masterclass on Agile Management
DevOps unraveled - Nyenrode masterclass on Agile ManagementDevOps unraveled - Nyenrode masterclass on Agile Management
DevOps unraveled - Nyenrode masterclass on Agile Management
Inspectie van het Onderwijs
 
Built in Quality by Michael Ballé - Lean IT Summit 2013
Built in Quality by Michael Ballé - Lean IT Summit 2013Built in Quality by Michael Ballé - Lean IT Summit 2013
Built in Quality by Michael Ballé - Lean IT Summit 2013
Institut Lean France
 
Pulse 2013: DevOps Review and Roadmap
Pulse 2013: DevOps Review and RoadmapPulse 2013: DevOps Review and Roadmap
Pulse 2013: DevOps Review and Roadmap
Daniel Berg
 
Building a DevOps Team that isn't Evil
Building a DevOps Team that isn't EvilBuilding a DevOps Team that isn't Evil
Building a DevOps Team that isn't EvilIBM UrbanCode Products
 
A 7 year lean journey
A 7 year lean journeyA 7 year lean journey
A 7 year lean journey
Operae Partners
 
Dev ops of die (
Dev ops of die (Dev ops of die (
Dev ops of die (
Johann Botha
 
What do the "Cool Kids" know about DevOps?
What do the "Cool Kids" know about DevOps?What do the "Cool Kids" know about DevOps?
What do the "Cool Kids" know about DevOps?
Bill Holtshouser
 
Adapting the Lean Enterprise Self-Assessment Tool for Software Development Do...
Adapting the Lean Enterprise Self-Assessment Tool for Software Development Do...Adapting the Lean Enterprise Self-Assessment Tool for Software Development Do...
Adapting the Lean Enterprise Self-Assessment Tool for Software Development Do...
Teemu Karvonen
 
DevOps Transformation - Another View
DevOps Transformation - Another ViewDevOps Transformation - Another View
DevOps Transformation - Another View
Agron Fazliu
 
IBM Innovate - Uderstanding DevOps
IBM Innovate - Uderstanding DevOpsIBM Innovate - Uderstanding DevOps
IBM Innovate - Uderstanding DevOps
Sanjeev Sharma
 
DevOps 101 - IBM Impact 2014
DevOps 101 - IBM Impact 2014 DevOps 101 - IBM Impact 2014
DevOps 101 - IBM Impact 2014
Sanjeev Sharma
 
IBM DevOps Announcements - June 2014
IBM DevOps Announcements - June 2014IBM DevOps Announcements - June 2014
IBM DevOps Announcements - June 2014
IBM Rational software
 
DevOps 101 for Government
DevOps 101 for GovernmentDevOps 101 for Government
DevOps 101 for Government
Sanjeev Sharma
 
5 Keys to Building a Successful DevOps Culture featuring Mandi Walls
5 Keys to Building a Successful DevOps Culture featuring Mandi Walls5 Keys to Building a Successful DevOps Culture featuring Mandi Walls
5 Keys to Building a Successful DevOps Culture featuring Mandi Walls
Serena Software
 
Implementing SAP with a lean thinking approach - European Lean IT Summit 2012
Implementing SAP with a lean thinking approach - European Lean IT Summit 2012 Implementing SAP with a lean thinking approach - European Lean IT Summit 2012
Implementing SAP with a lean thinking approach - European Lean IT Summit 2012
Institut Lean France
 
Practical DevOps
Practical DevOpsPractical DevOps
Practical DevOps
Kelvin Yeung
 
Designing a Reliable Software Factory for the Cloud
Designing a Reliable Software Factory for the CloudDesigning a Reliable Software Factory for the Cloud
Designing a Reliable Software Factory for the Cloud
AnkaraCloud
 
Agile meets waterfall
Agile meets waterfallAgile meets waterfall
Agile meets waterfall
Rakuten Group, Inc.
 
Evolving Team Structure in DevOps
Evolving Team Structure in DevOpsEvolving Team Structure in DevOps
Evolving Team Structure in DevOps
Sherry Chang
 
Mainframe DevOps: A Zowe CLI-enabled Roadmap
Mainframe DevOps: A Zowe CLI-enabled RoadmapMainframe DevOps: A Zowe CLI-enabled Roadmap
Mainframe DevOps: A Zowe CLI-enabled Roadmap
DevOps.com
 

What's hot (20)

DevOps unraveled - Nyenrode masterclass on Agile Management
DevOps unraveled - Nyenrode masterclass on Agile ManagementDevOps unraveled - Nyenrode masterclass on Agile Management
DevOps unraveled - Nyenrode masterclass on Agile Management
 
Built in Quality by Michael Ballé - Lean IT Summit 2013
Built in Quality by Michael Ballé - Lean IT Summit 2013Built in Quality by Michael Ballé - Lean IT Summit 2013
Built in Quality by Michael Ballé - Lean IT Summit 2013
 
Pulse 2013: DevOps Review and Roadmap
Pulse 2013: DevOps Review and RoadmapPulse 2013: DevOps Review and Roadmap
Pulse 2013: DevOps Review and Roadmap
 
Building a DevOps Team that isn't Evil
Building a DevOps Team that isn't EvilBuilding a DevOps Team that isn't Evil
Building a DevOps Team that isn't Evil
 
A 7 year lean journey
A 7 year lean journeyA 7 year lean journey
A 7 year lean journey
 
Dev ops of die (
Dev ops of die (Dev ops of die (
Dev ops of die (
 
What do the "Cool Kids" know about DevOps?
What do the "Cool Kids" know about DevOps?What do the "Cool Kids" know about DevOps?
What do the "Cool Kids" know about DevOps?
 
Adapting the Lean Enterprise Self-Assessment Tool for Software Development Do...
Adapting the Lean Enterprise Self-Assessment Tool for Software Development Do...Adapting the Lean Enterprise Self-Assessment Tool for Software Development Do...
Adapting the Lean Enterprise Self-Assessment Tool for Software Development Do...
 
DevOps Transformation - Another View
DevOps Transformation - Another ViewDevOps Transformation - Another View
DevOps Transformation - Another View
 
IBM Innovate - Uderstanding DevOps
IBM Innovate - Uderstanding DevOpsIBM Innovate - Uderstanding DevOps
IBM Innovate - Uderstanding DevOps
 
DevOps 101 - IBM Impact 2014
DevOps 101 - IBM Impact 2014 DevOps 101 - IBM Impact 2014
DevOps 101 - IBM Impact 2014
 
IBM DevOps Announcements - June 2014
IBM DevOps Announcements - June 2014IBM DevOps Announcements - June 2014
IBM DevOps Announcements - June 2014
 
DevOps 101 for Government
DevOps 101 for GovernmentDevOps 101 for Government
DevOps 101 for Government
 
5 Keys to Building a Successful DevOps Culture featuring Mandi Walls
5 Keys to Building a Successful DevOps Culture featuring Mandi Walls5 Keys to Building a Successful DevOps Culture featuring Mandi Walls
5 Keys to Building a Successful DevOps Culture featuring Mandi Walls
 
Implementing SAP with a lean thinking approach - European Lean IT Summit 2012
Implementing SAP with a lean thinking approach - European Lean IT Summit 2012 Implementing SAP with a lean thinking approach - European Lean IT Summit 2012
Implementing SAP with a lean thinking approach - European Lean IT Summit 2012
 
Practical DevOps
Practical DevOpsPractical DevOps
Practical DevOps
 
Designing a Reliable Software Factory for the Cloud
Designing a Reliable Software Factory for the CloudDesigning a Reliable Software Factory for the Cloud
Designing a Reliable Software Factory for the Cloud
 
Agile meets waterfall
Agile meets waterfallAgile meets waterfall
Agile meets waterfall
 
Evolving Team Structure in DevOps
Evolving Team Structure in DevOpsEvolving Team Structure in DevOps
Evolving Team Structure in DevOps
 
Mainframe DevOps: A Zowe CLI-enabled Roadmap
Mainframe DevOps: A Zowe CLI-enabled RoadmapMainframe DevOps: A Zowe CLI-enabled Roadmap
Mainframe DevOps: A Zowe CLI-enabled Roadmap
 

Similar to Software Factory in a Box

A software factory in a box
A software factory in a boxA software factory in a box
A software factory in a box
Silvio Gulizia
 
Flowdock's full-text search with MongoDB
Flowdock's full-text search with MongoDBFlowdock's full-text search with MongoDB
Flowdock's full-text search with MongoDB
Flowdock
 
JavaScript Power Tools 2015 - Marcello Teodori - Codemotion Rome 2015
JavaScript Power Tools 2015 - Marcello Teodori - Codemotion Rome 2015JavaScript Power Tools 2015 - Marcello Teodori - Codemotion Rome 2015
JavaScript Power Tools 2015 - Marcello Teodori - Codemotion Rome 2015
Codemotion
 
JavaScript Power Tools 2015
JavaScript Power Tools 2015JavaScript Power Tools 2015
JavaScript Power Tools 2015
Marcello Teodori
 
Paolo Dal Checco, Alessandro Rossetti, Stefano Fratepietro - DEFT 7 Manual
Paolo Dal Checco, Alessandro Rossetti, Stefano Fratepietro - DEFT 7 ManualPaolo Dal Checco, Alessandro Rossetti, Stefano Fratepietro - DEFT 7 Manual
Paolo Dal Checco, Alessandro Rossetti, Stefano Fratepietro - DEFT 7 Manual
Sandro Rossetti
 
Paolo Dal Checco, Alessandro Rossetti, Stefano Fratepietro - DEFT 7 Manual
Paolo Dal Checco, Alessandro Rossetti, Stefano Fratepietro - DEFT 7 ManualPaolo Dal Checco, Alessandro Rossetti, Stefano Fratepietro - DEFT 7 Manual
Paolo Dal Checco, Alessandro Rossetti, Stefano Fratepietro - DEFT 7 Manual
Deft Association
 
Introducing CrossWorlds for IBM Domino
Introducing CrossWorlds for IBM DominoIntroducing CrossWorlds for IBM Domino
Introducing CrossWorlds for IBM Domino
Daniele Vistalli
 
Pareto will tell you to stop using your ORM - Mateo Collina
Pareto will tell you to stop using your ORM - Mateo CollinaPareto will tell you to stop using your ORM - Mateo Collina
Pareto will tell you to stop using your ORM - Mateo Collina
Wey Wey Web
 
Spring Roo Internals Javaday IV
Spring Roo Internals Javaday IVSpring Roo Internals Javaday IV
Spring Roo Internals Javaday IV
Massimiliano Dessì
 
IzPack - fOSSa 2009
IzPack - fOSSa 2009IzPack - fOSSa 2009
IzPack - fOSSa 2009julien.ponge
 
Fedora Modularity
Fedora ModularityFedora Modularity
Fedora Modularity
Adam Šamalík
 
Breaking the monolith
Breaking the monolithBreaking the monolith
Breaking the monolith
Jacopo Nardiello
 
Metasploit - The Exploit Learning Tree
Metasploit - The Exploit Learning TreeMetasploit - The Exploit Learning Tree
Metasploit - The Exploit Learning Tree
E Hacking
 
Reactive Microservice Architecture with Groovy and Grails
Reactive Microservice Architecture with Groovy and GrailsReactive Microservice Architecture with Groovy and Grails
Reactive Microservice Architecture with Groovy and GrailsSteve Pember
 
Return of the monolith
Return of the monolith Return of the monolith
Return of the monolith
Alper Hankendi
 
Building The Open Ntf Dev Playground
Building The Open Ntf Dev PlaygroundBuilding The Open Ntf Dev Playground
Building The Open Ntf Dev PlaygroundFactor-y S.r.l.
 
Codemotion 2013 Madrid - Modern OOP embedded development with .NET Micro Fram...
Codemotion 2013 Madrid - Modern OOP embedded development with .NET Micro Fram...Codemotion 2013 Madrid - Modern OOP embedded development with .NET Micro Fram...
Codemotion 2013 Madrid - Modern OOP embedded development with .NET Micro Fram...Lorenzo Maiorfi
 
Micro services
Micro servicesMicro services
Micro services
Alex Punnen
 
DevOps in a Cloud Native World
DevOps in a Cloud Native WorldDevOps in a Cloud Native World
DevOps in a Cloud Native World
Michael Ducy
 
Symony2 A Next Generation PHP Framework
Symony2 A Next Generation PHP FrameworkSymony2 A Next Generation PHP Framework
Symony2 A Next Generation PHP Framework
Ryan Weaver
 

Similar to Software Factory in a Box (20)

A software factory in a box
A software factory in a boxA software factory in a box
A software factory in a box
 
Flowdock's full-text search with MongoDB
Flowdock's full-text search with MongoDBFlowdock's full-text search with MongoDB
Flowdock's full-text search with MongoDB
 
JavaScript Power Tools 2015 - Marcello Teodori - Codemotion Rome 2015
JavaScript Power Tools 2015 - Marcello Teodori - Codemotion Rome 2015JavaScript Power Tools 2015 - Marcello Teodori - Codemotion Rome 2015
JavaScript Power Tools 2015 - Marcello Teodori - Codemotion Rome 2015
 
JavaScript Power Tools 2015
JavaScript Power Tools 2015JavaScript Power Tools 2015
JavaScript Power Tools 2015
 
Paolo Dal Checco, Alessandro Rossetti, Stefano Fratepietro - DEFT 7 Manual
Paolo Dal Checco, Alessandro Rossetti, Stefano Fratepietro - DEFT 7 ManualPaolo Dal Checco, Alessandro Rossetti, Stefano Fratepietro - DEFT 7 Manual
Paolo Dal Checco, Alessandro Rossetti, Stefano Fratepietro - DEFT 7 Manual
 
Paolo Dal Checco, Alessandro Rossetti, Stefano Fratepietro - DEFT 7 Manual
Paolo Dal Checco, Alessandro Rossetti, Stefano Fratepietro - DEFT 7 ManualPaolo Dal Checco, Alessandro Rossetti, Stefano Fratepietro - DEFT 7 Manual
Paolo Dal Checco, Alessandro Rossetti, Stefano Fratepietro - DEFT 7 Manual
 
Introducing CrossWorlds for IBM Domino
Introducing CrossWorlds for IBM DominoIntroducing CrossWorlds for IBM Domino
Introducing CrossWorlds for IBM Domino
 
Pareto will tell you to stop using your ORM - Mateo Collina
Pareto will tell you to stop using your ORM - Mateo CollinaPareto will tell you to stop using your ORM - Mateo Collina
Pareto will tell you to stop using your ORM - Mateo Collina
 
Spring Roo Internals Javaday IV
Spring Roo Internals Javaday IVSpring Roo Internals Javaday IV
Spring Roo Internals Javaday IV
 
IzPack - fOSSa 2009
IzPack - fOSSa 2009IzPack - fOSSa 2009
IzPack - fOSSa 2009
 
Fedora Modularity
Fedora ModularityFedora Modularity
Fedora Modularity
 
Breaking the monolith
Breaking the monolithBreaking the monolith
Breaking the monolith
 
Metasploit - The Exploit Learning Tree
Metasploit - The Exploit Learning TreeMetasploit - The Exploit Learning Tree
Metasploit - The Exploit Learning Tree
 
Reactive Microservice Architecture with Groovy and Grails
Reactive Microservice Architecture with Groovy and GrailsReactive Microservice Architecture with Groovy and Grails
Reactive Microservice Architecture with Groovy and Grails
 
Return of the monolith
Return of the monolith Return of the monolith
Return of the monolith
 
Building The Open Ntf Dev Playground
Building The Open Ntf Dev PlaygroundBuilding The Open Ntf Dev Playground
Building The Open Ntf Dev Playground
 
Codemotion 2013 Madrid - Modern OOP embedded development with .NET Micro Fram...
Codemotion 2013 Madrid - Modern OOP embedded development with .NET Micro Fram...Codemotion 2013 Madrid - Modern OOP embedded development with .NET Micro Fram...
Codemotion 2013 Madrid - Modern OOP embedded development with .NET Micro Fram...
 
Micro services
Micro servicesMicro services
Micro services
 
DevOps in a Cloud Native World
DevOps in a Cloud Native WorldDevOps in a Cloud Native World
DevOps in a Cloud Native World
 
Symony2 A Next Generation PHP Framework
Symony2 A Next Generation PHP FrameworkSymony2 A Next Generation PHP Framework
Symony2 A Next Generation PHP Framework
 

More from Marcello Teodori

Anatomy of an APS 2 appication
Anatomy of an APS 2 appicationAnatomy of an APS 2 appication
Anatomy of an APS 2 appication
Marcello Teodori
 
Refactoring to a SPA
Refactoring to a SPARefactoring to a SPA
Refactoring to a SPA
Marcello Teodori
 
Wicket from Designer to Developer
Wicket from Designer to DeveloperWicket from Designer to Developer
Wicket from Designer to Developer
Marcello Teodori
 
Groovy & Grails
Groovy & GrailsGroovy & Grails
Groovy & Grails
Marcello Teodori
 
m2eclipse: integrazione maven2 in eclipse IDE
m2eclipse: integrazione maven2 in eclipse IDEm2eclipse: integrazione maven2 in eclipse IDE
m2eclipse: integrazione maven2 in eclipse IDE
Marcello Teodori
 
JBoss Seam, un framework per Java EE 5
JBoss Seam, un framework per Java EE 5JBoss Seam, un framework per Java EE 5
JBoss Seam, un framework per Java EE 5
Marcello Teodori
 
Rich Internet Application
Rich Internet ApplicationRich Internet Application
Rich Internet Application
Marcello Teodori
 
Struttin' on, novità in casa Struts
Struttin' on, novità in casa StrutsStruttin' on, novità in casa Struts
Struttin' on, novità in casa Struts
Marcello Teodori
 
Java sul tuo Mac
Java sul tuo MacJava sul tuo Mac
Java sul tuo Mac
Marcello Teodori
 
Sviluppare su OpenOffice.org con Java
Sviluppare su OpenOffice.org con JavaSviluppare su OpenOffice.org con Java
Sviluppare su OpenOffice.org con Java
Marcello Teodori
 
Un backend per tutte le stagioni con Spring
Un backend per tutte le stagioni con SpringUn backend per tutte le stagioni con Spring
Un backend per tutte le stagioni con Spring
Marcello Teodori
 
Streaming in Java e Flex con Red5
Streaming in Java e Flex con Red5Streaming in Java e Flex con Red5
Streaming in Java e Flex con Red5
Marcello Teodori
 
Spring e Flex
Spring e FlexSpring e Flex
Spring e Flex
Marcello Teodori
 

More from Marcello Teodori (13)

Anatomy of an APS 2 appication
Anatomy of an APS 2 appicationAnatomy of an APS 2 appication
Anatomy of an APS 2 appication
 
Refactoring to a SPA
Refactoring to a SPARefactoring to a SPA
Refactoring to a SPA
 
Wicket from Designer to Developer
Wicket from Designer to DeveloperWicket from Designer to Developer
Wicket from Designer to Developer
 
Groovy & Grails
Groovy & GrailsGroovy & Grails
Groovy & Grails
 
m2eclipse: integrazione maven2 in eclipse IDE
m2eclipse: integrazione maven2 in eclipse IDEm2eclipse: integrazione maven2 in eclipse IDE
m2eclipse: integrazione maven2 in eclipse IDE
 
JBoss Seam, un framework per Java EE 5
JBoss Seam, un framework per Java EE 5JBoss Seam, un framework per Java EE 5
JBoss Seam, un framework per Java EE 5
 
Rich Internet Application
Rich Internet ApplicationRich Internet Application
Rich Internet Application
 
Struttin' on, novità in casa Struts
Struttin' on, novità in casa StrutsStruttin' on, novità in casa Struts
Struttin' on, novità in casa Struts
 
Java sul tuo Mac
Java sul tuo MacJava sul tuo Mac
Java sul tuo Mac
 
Sviluppare su OpenOffice.org con Java
Sviluppare su OpenOffice.org con JavaSviluppare su OpenOffice.org con Java
Sviluppare su OpenOffice.org con Java
 
Un backend per tutte le stagioni con Spring
Un backend per tutte le stagioni con SpringUn backend per tutte le stagioni con Spring
Un backend per tutte le stagioni con Spring
 
Streaming in Java e Flex con Red5
Streaming in Java e Flex con Red5Streaming in Java e Flex con Red5
Streaming in Java e Flex con Red5
 
Spring e Flex
Spring e FlexSpring e Flex
Spring e Flex
 

Recently uploaded

Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Product School
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
Elena Simperl
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
Frank van Harmelen
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
Prayukth K V
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Product School
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
Alison B. Lowndes
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
Safe Software
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
RTTS
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
Product School
 
Search and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical FuturesSearch and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical Futures
Bhaskar Mitra
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
OnBoard
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
Jemma Hussein Allen
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
Product School
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
Product School
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
UiPathCommunity
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
Thijs Feryn
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
Elena Simperl
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
DianaGray10
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
Paul Groth
 

Recently uploaded (20)

Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
 
Search and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical FuturesSearch and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical Futures
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
 

Software Factory in a Box

  • 1. Software Factory in a Box Marcello Teodori JUG Milano Marcello Teodori - marcello.teodori@gmail.com – JUG Milano domenica 6 marzo 2011
  • 2. A few words about the speaker - one of the JUG Leaders for JUG Milano - moderator for SpringFramework-IT and Groovy Italian User Group mailing lists - owner and CTO in ExcogitaNet - owner, developer and pitcher for Git Enterprise - now based in London, working as freelancer tech lead for various enterprises and startups - somewhat twitterer: http://twitter.com/magomarcelo and blogger: http://magomarcelo.blogspot.com Marcello Teodori - marcello.teodori@gmail.com – JUG Milano domenica 6 marzo 2011
  • 3. Let’s define a Software Factory Once upon a time there was a little factory who was able to turn ideas into code... ...and make everyone happy! Marcello Teodori - marcello.teodori@gmail.com – JUG Milano domenica 6 marzo 2011
  • 4. But inside the factory truth was more often... Like having a cat in the waste bin... Marcello Teodori - marcello.teodori@gmail.com – JUG Milano domenica 6 marzo 2011
  • 5. Hang on! It’s never too late to... Marcello Teodori - marcello.teodori@gmail.com – JUG Milano domenica 6 marzo 2011
  • 6. First get the state we’re in... the Joel test Let’s assess the status of our working environment using the test of Joel Spolsky: 12 Steps to Better Code (2000) http://www.joelonsoftware.com/articles/fog0000000043.html Marcello Teodori - marcello.teodori@gmail.com – JUG Milano domenica 6 marzo 2011
  • 7. And the lesson we can learn is... Marcello Teodori - marcello.teodori@gmail.com – JUG Milano domenica 6 marzo 2011
  • 8. But trying to introduce tools can lead to some objections... SOFTWARE FACTORY TOOLS ARE EXPENSIVE LOTS OF THEM ARE OSS AND ACTUALLY VERY GOOD TOO SETUP IS COMPLICATED I COULD TRY AND INSTALL IN A VM WHAT ABOUT TRAINING? WE NEED TO DEFINE WORKFLOWS AND PROCEDURES WELL... Marcello Teodori - marcello.teodori@gmail.com – JUG Milano domenica 6 marzo 2011
  • 9. What can we do...? Software Factory in a Box! - a Virtual Machine with an OSS OS (Ubuntu Server 10.04 LTS) - implementing a software factory - for Maven/Java projects (mostly...) - built on OSS tools - we can experiment best practices with Marcello Teodori - marcello.teodori@gmail.com – JUG Milano domenica 6 marzo 2011
  • 10. What’s inside the Software Factory in a Box... The VM contents: - redmine (issue tracker & wiki) - subversion edge (scm + management tools) - jenkins (continuous integration) - artifactory (maven repository) - sonar (source code reporting) all configured using PostgreSQL as database with the same identity across all systems provided by OpenLDAP (directory server) Marcello Teodori - marcello.teodori@gmail.com – JUG Milano domenica 6 marzo 2011
  • 11. Redmine http://www.redmine.org/ - wiki with markdown syntax - multi-project issue tracker with customizable workflow - milestone planning - integration with subversion and many more SCM... - notifications - GPLv3 license, built on Ruby and Rails Marcello Teodori - marcello.teodori@gmail.com – JUG Milano domenica 6 marzo 2011
  • 12. Jenkins http://jenkins-ci.org/ - possibly the most widely used OSS continuous integration server - can ran as job scripts, ant/maven builds triggered on specific conditions - integration with subversion and many more SCM... - extensible via plugins with rich directory: - sonar plugin - promotion plugin - artifactory plugin - MIT licensed, built on Java Marcello Teodori - marcello.teodori@gmail.com – JUG Milano domenica 6 marzo 2011
  • 13. Subversion Edge http://www.open.collab.net/go/csvne2_r2a/ - distribution of Subversion with tools provided by CollabNet - web-based repository management - web configurable LDAP integration - basic web permission editing - includes ViewVC repository viewer - AGPL licensed, built in Java (excluding Subversion and ViewVC) Marcello Teodori - marcello.teodori@gmail.com – JUG Milano domenica 6 marzo 2011
  • 14. Artifactory http://www.jfrog.com/products.php - a generic repository manager can host artifacts and dependencies - built for Maven but supporting also Ivy and Gradle - remote REST APIs supports publishing via POST of generic files - cache for external repositories, pre-configured with most used ones: (Maven Central, Codehaus, JBoss, Spring...) - LDAP support - LGPLv3 licensed, built on Java Marcello Teodori - marcello.teodori@gmail.com – JUG Milano domenica 6 marzo 2011
  • 15. Sonar http://www.sonarsource.org/ - static code analysis and reporting - statistics on code health - plugin system to support many languages beyond Java - integrates well known tools: FindBugs, CheckStyle, PMD, Cobertura... - LGPL licensed, built on Java and JRuby Marcello Teodori - marcello.teodori@gmail.com – JUG Milano domenica 6 marzo 2011
  • 16. OpenLDAP + web management provided by Zentyal http://www.zentyal.org/ - web interface for Small Business Server - based on Ubuntu Server 10.04 LTS - all the configuration is on OpenLDAP http://www.openldap.org/ - we’re using just its user and group module - can sync to external LDAP server even Active Directory with password sync! - provides self-service change password web Marcello Teodori - marcello.teodori@gmail.com – JUG Milano domenica 6 marzo 2011
  • 17. Let’s experiment with some best practices... ...and check if they’re fit for us! Let’s see some possible examples... - use a wiki as project knowledge base - slice requirement documents in issues and track them - avoid “downloading the internet” with maven - build project with dedicated maven repository - one repository per project with standard trunk/tags/branches layout on subversion - promote and release projects from the CI server - share common project properties using a parent POM - publish a documentation site for a project with maven - monitor health state of source code through static analysis - create our custom maven archetypes and publish them on artifactory Marcello Teodori - marcello.teodori@gmail.com – JUG Milano domenica 6 marzo 2011
  • 18. What’s next... We can move our Software Factory in a Box VM in the virtualized infrastructure of our company datacenter! Marcello Teodori - marcello.teodori@gmail.com – JUG Milano domenica 6 marzo 2011
  • 19. What’s next too... If we don’t want to host some of these tools... many of them offer a cloud service version... - DEV@cloud by CloudBees for Jenkins - Artifactory Online by JFrog - many more for Redmine and Subversion ...but don’t forget to manage identityacross all services! Marcello Teodori - marcello.teodori@gmail.com – JUG Milano domenica 6 marzo 2011
  • 20. Or yet what’s next again... We can switch from Subversion to a more advanced SCM... ..like Git for example! And use instead of Subversion Edge as a distribution of Git with web management for user, repositories and permissions available as service and packaged... http://www.gitenterprise.com Marcello Teodori - marcello.teodori@gmail.com – JUG Milano domenica 6 marzo 2011
  • 21. SFBOX - The Project Some references: - http://tinyurl.com/sfbox - the Software Factory in a Box in OVA format (Open Virtualization Format Archive, runnable on VirtualBox, VMWare Player/ Workstation and possibly others...) - login account with sudo privileges is: user/password - hostname is sfbox.local published via DNS-SD - https://github.com/mteodori/sfbox - the Software Factory in a Box project on GitHub to collect feedback, input and share install scripts... Marcello Teodori - marcello.teodori@gmail.com – JUG Milano domenica 6 marzo 2011
  • 22. Q&A &... thanks! - http://www.jugmilano.it/ - JUG Milano & endless discussions on tools and best practices on our mailing list! - http://www.liludori.com/ - the wonderful world of Liludori providing the pictures in this presentation, courtesy of Mauro Gandini and Eloisa Scichilone Marcello Teodori - marcello.teodori@gmail.com – JUG Milano domenica 6 marzo 2011