Next Generation Development Infrastructure with the Maven Enterprise Stack
Upcoming SlideShare
Loading in...5
×
 

Next Generation Development Infrastructure with the Maven Enterprise Stack

on

  • 5,356 views

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

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

Statistics

Views

Total Views
5,356
Slideshare-icon Views on SlideShare
5,309
Embed Views
47

Actions

Likes
9
Downloads
198
Comments
0

2 Embeds 47

http://www.slideshare.net 43
http://www.techgig.com 4

Accessibility

Categories

Upload Details

Uploaded via as Apple Keynote

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • <br />
  • The need for a holistic solution providing whole business solutions for Maven-based development. Support from developer onboarding to provisioning software into production. <br />
  • <br />
  • 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. <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • - How the parts of the stack link together and communicate <br /> - Show the REST connection <br /> <br />
  • Maven 3 <br /> Maven Studio for Eclipse <br /> Nexus <br /> Hudson for Maven <br /> Tycho <br /> - Build, Tools, DM, Server <br /> <br /> Hudson <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />

Next Generation Development Infrastructure with the Maven Enterprise Stack Next Generation Development Infrastructure with the Maven Enterprise Stack Presentation Transcript

  • Next Generation Development Infrastructure with the Maven Enterprise Stack Jason van Zyl SONATYPE http://twitter.com/jvanzyl
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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 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 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!
  • 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.
  • 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
  • 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
  • http://polyglot.sonatype.org
  • http://shell.sonatype.org
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • Maven Central Nexus
  • 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
  • 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
  • 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.
  • 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
  • No external resource provisioning No database provisioning (yet) No database schema changes (yet) No LDAP provisioning (yet)
  • * CAR * Runtime Recipe ITAR Assembler 1 BAR
  • 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
  • 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
  • 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
  • Suck less. Use Maven.
  • Questions?