0
Next Generation
Development Infrastructure
with the Maven Enterprise
Stack
Jason van Zyl
   SONATYPE
http://twitter.com/jv...
Maven Enterprise Stack
Organizations want complete business solutions for their Maven-based software
development.
A comple...
The Evolution of ‘Making Things’
                                        Ad hoc                                           ...
Maven Central Unique IPs / Month in 2009
700,000
                                                                         ...
Maven Enterprise Stack: A complete business
                      solution for Maven-based development

                De...
Tycho        NAR



    s-b-p        OSGi



    PAX       FlexMojos   Maven             M2Eclipse   Maven



            ...
Responding to invitations for improvement
Maven 3.0
Fully backward compatible: from the CLI perspective Maven 3.0 should be a drop-in
replacement for Maven 2.x
Over...
Maven 3.0
Fully backward compatible: from the CLI perspective Maven 3.0 should be a drop-in
replacement for Maven 2.x
Over...
Tycho Build
Tycho attempts to be a complete replacement for PDE headless build, Buckminster, and
everything else that atte...
Maven Enterprise Stack Architecture & Tooling

                     P2         Maven        OBR



M2Eclipse
             ...
NAR: AOL Classifier
AOL Classifier specifies where the NAR file was created and where it will work:
  Architecture
    i386, x...
http://polyglot.sonatype.org
http://shell.sonatype.org
Tycho        NAR



    s-b-p        OSGi



    PAX       FlexMojos   Maven             M2Eclipse   Maven



            ...
Hudson for Maven
1.0
  Advanced Maven 3.x support
  REST integration using Apache Wink
      Advanced inter-server communi...
Tycho        NAR



    s-b-p        OSGi



    PAX       FlexMojos   Maven             M2Eclipse   Maven



            ...
M2Eclipse Configuration Framework


  Turn Maven
 mumbo-jumbo
into Eclipse talk      Automation & Maven


              WTP...
M2Eclipse Configuration Framework


  Turn Maven
 mumbo-jumbo
into Eclipse talk      Automation & Maven


              WTP...
Maven Studio for Eclipse (Commercial)
1.0
  Developer onboarding -- Huge! The ROI is the first day used!
  Integration with...
Tycho        NAR



    s-b-p        OSGi



    PAX       FlexMojos   Maven             M2Eclipse   Maven



            ...
Configuration management
                                   Open Source Ecosystem
        Terracotta
                     C...
Maven Central




   Nexus
Nexus Professional
Maven site support
Maven settings.xml provisioning
Enterprise LDAP integration: multi server support wi...
Tycho        NAR



    s-b-p        OSGi



    PAX       FlexMojos   Maven             M2Eclipse   Maven



            ...
Provisioning Problem
Runtime provisioning solutions are generally created in an ad hoc fashion in much the same way that b...
Proviso focuses on Java Runtimes
We are trying to deal with more popular runtimes like Tomcat, Jetty, JBoss, and Equinox
W...
No external resource provisioning
No database provisioning (yet)
No database schema changes (yet)
No LDAP provisioning (ye...
*
             CAR




         *
                     Runtime
Recipe       ITAR
                    Assembler




       ...
Recipes
We have tried to stay simple for now and use a Maven POM to describe the constituent BAR, ITARs, and
CARs
We initi...
Runtime Assembler
We need to be able to take a recipe and create the runtime. But it’s not as simple as just assembling a ...
Eclipse P2 for provisioning
P2 is a very advanced provisioning system Java
P2 is the basis of the update manager in Eclips...
Suck less.
Use Maven.
Questions?
Next Generation Development Infrastructure with the Maven Enterprise Stack
Next Generation Development Infrastructure with the Maven Enterprise Stack
Next Generation Development Infrastructure with the Maven Enterprise Stack
Next Generation Development Infrastructure with the Maven Enterprise Stack
Next Generation Development Infrastructure with the Maven Enterprise Stack
Upcoming SlideShare
Loading in...5
×

Next Generation Development Infrastructure with the Maven Enterprise Stack

4,362

Published on

This is a presentation from Sonatype's Maven Meetup Philadelphia 2010

Published in: Technology
0 Comments
10 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
4,362
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
200
Comments
0
Likes
10
Embeds 0
No embeds

No notes for slide

  • The need for a holistic solution providing whole business solutions for Maven-based development. Support from developer onboarding to provisioning software into production.

  • Trying to lay the ground work in that Maven is the platform upon which we are building. Maven is the dominant choice, strong community and provides the distinct differentiator of creating standards upon which an ecosystem can be built.





  • - How the parts of the stack link together and communicate
    - Show the REST connection

  • Maven 3
    Maven Studio for Eclipse
    Nexus
    Hudson for Maven
    Tycho
    - Build, Tools, DM, Server

    Hudson


























  • Transcript of "Next Generation Development Infrastructure with the Maven Enterprise Stack"

    1. 1. Next Generation Development Infrastructure with the Maven Enterprise Stack Jason van Zyl SONATYPE http://twitter.com/jvanzyl
    2. 2. Maven Enterprise Stack Organizations want complete business solutions for their Maven-based software development. A complete solutions starts with initiating, or onboarding, developers and ends with provisioning an application to production. A Maven-based software development is component-centric. Maven describes components, creates components, distributes components, and consumes components. Everything in Maven is about the production, use, and movement of components. Why? The ROI is in the first day of use. From the Eclipse onboarding alone. Sonatype is the organization that understands Maven-based development best Early adopter save enormously and get to participate in the design of the stack
    3. 3. The Evolution of ‘Making Things’ Ad hoc Structure Text Ad hoc Automobile Manufacturing Circa 1923 Structured Automobile Manufacturing Circa 2010 1923: 108 independent Automobile Manufacturers in the US Alone http://en.wikipedia.org/wiki/List_of_defunct_United_States_automobile_manufacturers
    4. 4. Maven Central Unique IPs / Month in 2009 700,000 667,708 646,600 588,141 557,734 525,000 514,924 512,165 514,589 502,899 470,237 475,643 362,893 350,000 315,970 Maven is the de facto component distribution infrastructure for Java projects 175,000 Maven Central is the de facto store house of all Open Source Java components: 300M hits/month 0 Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec 2008 Total Unique IPs: 1,836,709 2009 Total Unique IPs: 3,978,964
    5. 5. Maven Enterprise Stack: A complete business solution for Maven-based development Developer checks in source code Hudson checks out source code M2Eclipse 2 SCM 3 Hudson Binary dependencies Developer requests binary are delivered to the 4 Hudson instructs Maven dependencies from Nexus 1 developers workspace to perform the automated build Nexus 5 Maven Maven deploys built Proviso requests updates artifacts to Nexus to runtime components from Nexus 6 Nexus sends components updates to Proviso Maven Central Agent Proviso 7 Agent Agent Proviso provisions components to the cloud runtime
    6. 6. Tycho NAR s-b-p OSGi PAX FlexMojos Maven M2Eclipse Maven P2 Groovy Maven Shell Hudson Nexus GEM Polyglot Ruby Git Proviso OBR Maven Scala Clojure EC2 vCloud Zeus
    7. 7. Responding to invitations for improvement
    8. 8. Maven 3.0 Fully backward compatible: from the CLI perspective Maven 3.0 should be a drop-in replacement for Maven 2.x Overhaul for embedding, in particular looking at M2Eclipse, Hudson & Nexus Plugin API enhancements for incremental builds Parallel execution Parallel downloads Separation of the artifact resolution layer (and eventual integration with P2)
    9. 9. Maven 3.0 Fully backward compatible: from the CLI perspective Maven 3.0 should be a drop-in replacement for Maven 2.x Overhaul for embedding, in particular looking at M2Eclipse, Hudson & Nexus Plugin API enhancements for incremental builds Parallel execution Parallel downloads Separation of the artifact resolution layer (and eventual integration with P2) Maven 3.0-beta-1: Only 3 issues left!
    10. 10. Tycho Build Tycho attempts to be a complete replacement for PDE headless build, Buckminster, and everything else that attempts to build OSGi bundles and Eclipse plugins in a MANIFEST.MF- first way. Tycho already uses Eclipse/OSGi metadata to resolve project dependencies by OSGi rules and injects these dependencies into maven project model dynamically, at build time. Tycho uses JDT to make sure modularity rules are applied. Tycho uses the OSGi state resolver is used to make sure the resolution that occurs during build-time matches what you will need at runtime. Tycho supports bundles, fragments, features and update sites, as well as RCP applications. Tycho knows how to run JUnit test plugins using the OSGi runtime. Tycho has support for P2 repositories, Update Sites and Maven repositories. Tycho supports POM-first OSGi bundles. M2Eclipse has support for importing Tycho projects as Eclipse PDE projects.
    11. 11. Maven Enterprise Stack Architecture & Tooling P2 Maven OBR M2Eclipse JSR330 Tycho Central PDE Guice P2 Tycho Eclipse Tycho Build Tycho DM Peaberry Tycho Maven 3 Server PAX Tycho Tools Tycho Runtime Shiro Tycho DM m-b-p Wink Equinox Runtime Enunciate Assembler Proviso Nexus Hudson
    12. 12. NAR: AOL Classifier AOL Classifier specifies where the NAR file was created and where it will work: Architecture i386, x86, amd64, ppc, sparc, … Operating System Windows, Linux, MacOSX, SunOS, … Linker g++, gcc, msvc, CC, icc, icpc Examples: x86-Windows-msvc, x86-Windows-g++ i386-Linux-g++, i386-Linux-icpc, amd64-Linux-g++ ppc-MacOSX-g++, i386-MacOSX-g++ sparc-SunOS-CC
    13. 13. http://polyglot.sonatype.org
    14. 14. http://shell.sonatype.org
    15. 15. Tycho NAR s-b-p OSGi PAX FlexMojos Maven M2Eclipse Maven P2 Groovy Maven Shell Hudson Nexus GEM Polyglot Ruby Git Proviso OBR Maven Scala Clojure EC2 vCloud Zeus
    16. 16. Hudson for Maven 1.0 Advanced Maven 3.x support REST integration using Apache Wink Advanced inter-server communication like Nexus or Hudson with Hudson slaves Shiro integration to provide the same security infrastructure as Multi-platform smoke testing: check a canonical build before firing builds on slaves 1.1 Workflow integration for long-lived release processes Automated build promotion based on long-lived release processes
    17. 17. Tycho NAR s-b-p OSGi PAX FlexMojos Maven M2Eclipse Maven P2 Groovy Maven Shell Hudson Nexus GEM Polyglot Ruby Git Proviso OBR Maven Scala Clojure EC2 vCloud Zeus
    18. 18. M2Eclipse Configuration Framework Turn Maven mumbo-jumbo into Eclipse talk Automation & Maven WTP m2eclipse + configuration AJDT JDT framework Flex Turn Eclipse mumbo-jumbo Humans & Eclipse into Maven talk
    19. 19. M2Eclipse Configuration Framework Turn Maven mumbo-jumbo into Eclipse talk Automation & Maven WTP m2eclipse + configuration AJDT JDT framework Flex Turn Eclipse mumbo-jumbo Humans & Eclipse into Maven talk
    20. 20. Maven Studio for Eclipse (Commercial) 1.0 Developer onboarding -- Huge! The ROI is the first day used! Integration with Adobe’s Flex/FlashBuilder Integration with Polarion’s Subversive to provide enterprise Subversion support Integration with Hudson through an optimized REST interface Sonatype has created Integration with Maven Archetype which optimizes creating and managing custom archetypes Integration with Tomcat for rapid hot re-deploy for accelerated webapp development Integration with Confluence Integration with JIRA for time tracking 1.1 Integration with JRebel Integration with Nexus to be governance & compliance aware from project initialization Integration with GWT
    21. 21. Tycho NAR s-b-p OSGi PAX FlexMojos Maven M2Eclipse Maven P2 Groovy Maven Shell Hudson Nexus GEM Polyglot Ruby Git Proviso OBR Maven Scala Clojure EC2 vCloud Zeus
    22. 22. Configuration management Open Source Ecosystem Terracotta Codehaus - bad POMs - repositories in POMs (bad practice) - mixed snapshot and release repositories Apache - incorrect optional dependencies One repository JBoss configuration! Nexus Group Dev Unified indices for m2e Test Production QA Precious Developers Corporate Ecosystem
    23. 23. Maven Central Nexus
    24. 24. Nexus Professional Maven site support Maven settings.xml provisioning Enterprise LDAP integration: multi server support with caching Eclipse update site & OSGi support Staging & Promotion Atlassian Crowd integration License, compliance and governance support
    25. 25. Tycho NAR s-b-p OSGi PAX FlexMojos Maven M2Eclipse Maven P2 Groovy Maven Shell Hudson Nexus GEM Polyglot Ruby Git Proviso OBR Maven Scala Clojure EC2 vCloud Zeus
    26. 26. Provisioning Problem Runtime provisioning solutions are generally created in an ad hoc fashion in much the same way that build infrastructures are created. Proviso is an attempt to provide structure and patterns for developing, building, testing, and provisioning runtimes We need to reason not only about runtimes assembled statically, but we need to be able to modify live systems. In-situ operation is a requirement.
    27. 27. Proviso focuses on Java Runtimes We are trying to deal with more popular runtimes like Tomcat, Jetty, JBoss, and Equinox We are not limited to dealing with these specific runtimes, the patterns that we are developing will work for any Java runtime but we are focusing concretely on the products that we work with an develop first: Nexus Hudson
    28. 28. No external resource provisioning No database provisioning (yet) No database schema changes (yet) No LDAP provisioning (yet)
    29. 29. * CAR * Runtime Recipe ITAR Assembler 1 BAR
    30. 30. Recipes We have tried to stay simple for now and use a Maven POM to describe the constituent BAR, ITARs, and CARs We initially tried to make an external format, but we found that a Maven POM was easier in the short term because we need to integrate the recipes as part of the build. When the BAR, ITARs, and CARs are stated as normal Maven dependencies then it’s much easier to integrate in a Maven multi-module build We would ideally like to have an external format (i.e. not a POM) and ultimately we would like to create a DSL for describing the recipes and some of the constraints for a particular runtime (i.e. the required and provided capabilities - memory constraints, number of cores...) We will likely borrow some ideas from Puppet
    31. 31. Runtime Assembler We need to be able to take a recipe and create the runtime. But it’s not as simple as just assembling a bunch of artifacts, resources and configurations We need to be able to accommodate making and working with runtimes in a few different scenarios: Build time assembly Dynamic run time assembly During development Assuming a common ITAR structure which really means a standard binary runtime structure Assuming a common CAR structure which really means a standard configuration system Assuming a canonical artifact store which can reliably provide locked down, yet mutable, set of artifacts
    32. 32. Eclipse P2 for provisioning P2 is a very advanced provisioning system Java P2 is the basis of the update manager in Eclipse since 3.4 P2 is repository type agnostic so we can use P2 for any Java runtime P2 is very pluggable with concepts of touchpoints and actions P2 uses SAT4J which is the boolean solver that won the Mancoosi solver competition
    33. 33. Suck less. Use Maven.
    34. 34. Questions?
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×