SlideShare ist ein Scribd-Unternehmen logo
1 von 22
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Was ist angesagt?

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
IBM UrbanCode Products
 
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
 

Was ist angesagt? (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
 

Ähnlich wie Software Factory in a Box

IzPack - fOSSa 2009
IzPack - fOSSa 2009IzPack - fOSSa 2009
IzPack - fOSSa 2009
julien.ponge
 
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
Steve Pember
 
Building The Open Ntf Dev Playground
Building The Open Ntf Dev PlaygroundBuilding The Open Ntf Dev Playground
Building The Open Ntf Dev Playground
Factor-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
 

Ähnlich wie 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
 

Mehr von Marcello Teodori

Mehr von 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
 

Kürzlich hochgeladen

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 

Kürzlich hochgeladen (20)

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 

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