Proprietary and ConfidentialContinuous Integration using Hudson and FitnesseNorman Boccone | Lead Engineer | twitter: @dropslowlyJennifer Wong | Lead QE Engineer | twitter: @jenlwongVasu Durgavarjhula | Director of Development | twitter: @d_vasu
Proprietary and Confidential2Overview► Who we are ?► The Challenge► Tools and Processes► Test Strategy► Conclusion
Ingenuity Systems  We are a leading provider of information and analytics solutions for life science researchers Our goal is to help life science researchers get biological insights from their data quickly and reliablyOur products are used by thousands of researchers worldwidePartial Customer ListProprietary and Confidential3
?Scientists Need a Tool to Make Good Decisions From Complex Biological DataToxicologyBiomarkersPharmacogenomicsDiscoveryUse understanding of disease mechanisms to identify and validate targetsElucidate biological mechanisms of drug action and toxicityIdentify and prioritize novel biomarkers by understanding role in disease pathwaysUnderstand mechanisms behind differential response to R(x)Hard to synthesize the picture of what that data means in a broader biological context, and how the pieces work together…           Traditional publishing models are good for learning but not applying knowledge …Enormous volume and complexity of biological and chemical data…CancerPublishing and CollaborationExperimental DataSearchProprietary and Confidential4
The Ingenuity® Knowledge Base  Is the core technology behind all of Ingenuity’s products and servicesTHE INGENUITY KNOWLEDGE BASEANALYSISHYPOTHESIS GENERATIONVISUALIZATIONECOMMERCE ENABLEMENTPATHWAY, REAGENT & GENE SEARCHENABLES SCIENTIFIC UNDERSTANDINGDiscover existing relationships and function, as well as inference of relationships that may not have been studied in a particular context yetGeneratetestable hypotheses, build pathways, ability to inferenceGet answers by asking detailed and in-depth scientific questions
The Ingenuity® Knowledge Base  How is it different?THE INGENUITY KNOWLEDGE BASE► Structured-to capture relevant details	Scientific statements are modeled into Findings using the Ingenuity Ontology► Expert Review Process- for accuracy	Findings go through QC process► Comprehensive- leverage knowledge in one place	Largest scientific knowledge base of its kind with modeled relationships between proteins, genes, complexes, cells, tissues, drugs, pathways and diseases► Timely- for access to up-to-date knowledge	  Findings are added weekly
Proprietary and ConfidentialThe Challenge7
Proprietary and Confidential8Single product
Proprietary and Confidential9multiple productsIngenuity Variant AnalysisNext Generation Sequencing Analysis ReportsIngenuity Product SearchReagent Portals for BD, Sigma, Thermo Fischer
Proprietary and Confidential10Large monolithic code base
Proprietary and Confidential11Modular ServicesSingle Sign OnUserManagementViews & ReportsUser DataContentServiceiReportMaster Graph
Proprietary and Confidential12Long release cycles
Proprietary and Confidential13Faster release cycles
Proprietary and Confidential14Speeding up the feedback loopDeveloperStakeholders
Proprietary and Confidential15Do all of this while supporting the existing product
Proprietary and Confidential16ApproachMove to a Service Oriented ArchitectureDon’t miss Jeff’s talk on Sunday 10:45 am “Learning to Love Services: Experiences from the Transition to a Service-oriented Architecture”Develop a test strategy focused on automated testingBuild a continuous integration systemAdopt agile product managementImprove infrastructure to create and deploy servicesFoster a Dev/Ops culture
Proprietary and Confidential17Continuous Integration WorkflowApplicationBundleDeploy ApplicationRun Fitnesse Tests(Nightly suite)Nightly Build(Clover)Run JUnitTestspublish summaryFitnesseBundleDeploy FitnessepublishpublishHudson Dashboard(JUnit, Fitnesse summary, Code Coverage)Fitnesse Wiki(Test history, Details, Test Case Management)LinkSVNCommit(Test Cases)
Proprietary and Confidential18Tools and Processes
Proprietary and Confidential19Service Oriented Architecture
Proprietary and Confidential20SOA: Beforelots of modules, separate but dependenteasy to develop on but also easy to add circular dependencieshard to keep track of purpose/value of all the modulesproduct consisted of bunches of modules put togetherreference was typically to latest devcodeto ensure "latest," individual modules of a product were rebuilt for every releasejunittests were run every time as wellnew product version meant build everything, test everythingbuilds were slow
Proprietary and Confidential21SOA: “Current”components: module grouped together.  Access through api module onlyless chance of circular dependencieseasier to comprehend modulesmore flexibility to change code: just do not change apicomponents built/tested separatelyfaster buildsless repetitive testingsome shared modules still exist (they are not part of any component)
Proprietary and Confidential22SOA: Conversion Notesfind a logical group of modulesConvert groupput group into hierarchical structure, hide things behind an apilayerconvert outside modules to use apissee Jeff's talk
Proprietary and Confidential23Build System
Proprietary and Confidential24Build System: Beforein-house ant scriptslots of control but it required lots of resourcesno real industry standardglobal scripts/property files, overrides allowedoffered consistency but (busy) people would override instead of follow patternscripts got complicatedanyone could add a new featureif anyone wanted a new feature, just tell them to add itinefficient additions, different code styles made scripts hard to readvery little dependency managementmultiple repositories for binary files
Proprietary and Confidential25Build System: “Current” mavennot much control, and very rigid  (a good thing, in a way)steep learning curvedifferent from previous way of doing thingsstandard structure; difficult to not follow structurehierarchical structure easily followedversions for all dependencies well definedeasy to add new features (after a short burst of intense agony)only one repository
Proprietary and Confidential26Build System: Conversion Notes get a maven repository manager (nexus? Turn on search!)add antrun plugin to publish artifacts to old systemchoose a simple component to start, make lots of little submodules(1 module per artifact, plus assembly)manually add needed dependencies to repositorybuild up company parent pom, use hierarchyPut all plugin management into parentKey maven plugins: buildnumber, buildhelper, release, assembly,
Proprietary and Confidential27Build System: TODOcleaner release plugincontinue learning mavencontribute to pluginsImprove internal maven FAQLook into git
Proprietary and Confidential28Continuous Builds
Proprietary and Confidential29Continuous Builds: BeforeHudson (no plugins)auto build start for each module, with artifacts publishedmanual build start for productsshell scripts to copy artifacts to release dir
Proprietary and Confidential30Continuous Builds: “Current”Hudsondevmaster for auto build of modules/submodules, auto published to repository manager (dev area)release master for components/products, auto published to repository manager (release area)modules/submodulesbuilt on checkincomponents/products built on schedule or on demandprocess includes various tests and deployments (Jen)
Proprietary and Confidential31Continuous Builds: Conversion Notesuse Jenkins, not Hudson  (more activity for Jenkins)startup new, clean serverscopy/create job that we wantTry to make Jenkins be the portal to everything fingerprintingPlugins we use: clover, fitnesse, findbugs, checkstyle, disk-usage, downstream build view, (custom) dashboard view, promoted builds, ssh slaves
Proprietary and Confidential32Continuous Builds: TODObetter job rollupjob templatesmore maven/hudson pluginssubmit hudson plugin(s) to community
Proprietary and Confidential33Deployment: Beforeproprietary shell/perl scriptstargeted to install app only  (not machine set up)multiple proprietary property config scripts
Proprietary and Confidential34Deployment: “Current”PuppetConfigures machines and appsWork on our machines and EC2Use of .erb files everywhere for property configuration
Proprietary and Confidential35Deployment: Conversion Notesmodify tar formatmoved to one tomcatused erb filessplit properties into app
Proprietary and Confidential36Deployment: TODOstandard server configuration types (e.g. “build machine”, “app machine”, …)more puppet scripts
Proprietary and Confidential37Visibility
Proprietary and Confidential38Visibility: Beforecfmap (IT server diagnostic tool)Hudson status pageFitNesse server
Proprietary and Confidential39Visibility: “Current”cfmapHudson status pageHudson dashboardextra tests built in to HudsonFitNesse serverService status page
Proprietary and Confidential40Visibility: Conversion Notesuse Hudson plugins, with drill downget everything to report in a standard way (junit xml)
Proprietary and Confidential41Visibility: TODOmore widgets for the dashboardIntegrate outside reports into dashboardcfmapstatus pagesdm? (service discovery manager)
Proprietary and Confidential42Test Strategy
Proprietary and Confidential43Testing For CI/CDTest Automation is keyHow and what to automateMezarosCohnCrispin
Proprietary and Confidential44Test ChallengesTestability:  some products are difficult to test at lower levelsLegacy Apps: one of our main products was a ‘Legacy App’.  Tests used to look like this:
Proprietary and Confidential45Test Challengesvarying levels of coveragesome of our newer components have great coverageother components have lower coverage: legacy, proof of concept
Proprietary and Confidential46SolutionsTest and code refactoringLegacy Apps: Strangulation approachautomate new and refactored featuresincremental work on tests: reserve time in each iteration for adding to testsChange in culture: team ownership of tests and statusCycle time for ipa was 2.5 weeksNow for most of our services, it is 20-40 minutes
Proprietary and Confidential47Test Infrastructure and Environments
Proprietary and Confidential48Process: Build PromotionBuild Promotion through Quality GatesBetaDeployed to BetaProprietary and Confidential49Test EnvironmentsStable EnvironmentMultiple nodes
 Deployment Tests
System and performance tests
 Manual/exploratoryCI EnvironmentSingle nodes
 functional testsService1Service1Service2Service2Service3Service3Service4Service4Service5Service5Service6
Proprietary and Confidential50Test Types
Proprietary and Confidential51Test Types: Deployment and HealthEach of our components has a built-in status page
Proprietary and Confidential52Test Types: Deployment and HealthStatus pageReflects app statusResource availability: DB Connections, Services
Proprietary and Confidential53Test Types: Deployment and HealthInformation is used for:DeploymentHealth MonitoringService Compatibility and Dependency checking
Proprietary and Confidential54Test Types: FitNesseFitNesse is a wiki-based web server test toolHelps abstract test definition from technical implementationProvides visual reporting and result history tracking
Proprietary and Confidential55Test Types: FitNesseThe FitNesse Server http://localhost:8080/FitNesse.UserGuide.TwoMinuteExamplehttp://localhost:8080/FitNesse.UserGuide.TwoMinuteExample?pageHistoryWiki view                   Editing the wiki         Test Results
Proprietary and Confidential56Test Types: FitNesse Integration with Hudson- Views, drilldown, configuration Test results converted to junit formatView of fitnesse test job in Hudson
Proprietary and Confidential57Drill downs on fitnesse test results in Hudson
Proprietary and Confidential58FitNessePlugin ConfigurationConvert results to Junit format
Proprietary and Confidential59Publish FitNesse Results and Coverage
Proprietary and Confidential60Test Types: FitNesseWhat we use it for:
Functional tests
Integration tests
UI Tests (com.jbergin.HtmlFixture)
DB Tests (dbfit)What we’ve done with it that is differentUse as execution framework for more complex tests Extension of fitnesse server for data-driven testsjson fixture – pass in javascriptExecution of Selenium tests
Proprietary and Confidential61Test Types: FitNesseLessons learnedFitNesse is good for straightforward verification of dataTo do more, you have to get creativeFixture and test ownership needs to be a shared responsibility
Proprietary and Confidential62Test Types: SeleniumWe fire off Selenium tests in two ways: via Hudson job or through FitNesse.Test results converted to junit format for display in hudsonHudson job in dashboard:                   Hudson job view:

Continuous Integration using Hudson and Fitnesse at Ingenuity Systems (Silicon Valley code camp 2011)

  • 1.
    Proprietary and ConfidentialContinuousIntegration using Hudson and FitnesseNorman Boccone | Lead Engineer | twitter: @dropslowlyJennifer Wong | Lead QE Engineer | twitter: @jenlwongVasu Durgavarjhula | Director of Development | twitter: @d_vasu
  • 2.
    Proprietary and Confidential2Overview►Who we are ?► The Challenge► Tools and Processes► Test Strategy► Conclusion
  • 3.
    Ingenuity Systems We are a leading provider of information and analytics solutions for life science researchers Our goal is to help life science researchers get biological insights from their data quickly and reliablyOur products are used by thousands of researchers worldwidePartial Customer ListProprietary and Confidential3
  • 4.
    ?Scientists Need aTool to Make Good Decisions From Complex Biological DataToxicologyBiomarkersPharmacogenomicsDiscoveryUse understanding of disease mechanisms to identify and validate targetsElucidate biological mechanisms of drug action and toxicityIdentify and prioritize novel biomarkers by understanding role in disease pathwaysUnderstand mechanisms behind differential response to R(x)Hard to synthesize the picture of what that data means in a broader biological context, and how the pieces work together… Traditional publishing models are good for learning but not applying knowledge …Enormous volume and complexity of biological and chemical data…CancerPublishing and CollaborationExperimental DataSearchProprietary and Confidential4
  • 5.
    The Ingenuity® KnowledgeBase Is the core technology behind all of Ingenuity’s products and servicesTHE INGENUITY KNOWLEDGE BASEANALYSISHYPOTHESIS GENERATIONVISUALIZATIONECOMMERCE ENABLEMENTPATHWAY, REAGENT & GENE SEARCHENABLES SCIENTIFIC UNDERSTANDINGDiscover existing relationships and function, as well as inference of relationships that may not have been studied in a particular context yetGeneratetestable hypotheses, build pathways, ability to inferenceGet answers by asking detailed and in-depth scientific questions
  • 6.
    The Ingenuity® KnowledgeBase How is it different?THE INGENUITY KNOWLEDGE BASE► Structured-to capture relevant details Scientific statements are modeled into Findings using the Ingenuity Ontology► Expert Review Process- for accuracy Findings go through QC process► Comprehensive- leverage knowledge in one place Largest scientific knowledge base of its kind with modeled relationships between proteins, genes, complexes, cells, tissues, drugs, pathways and diseases► Timely- for access to up-to-date knowledge Findings are added weekly
  • 7.
  • 8.
  • 9.
    Proprietary and Confidential9multipleproductsIngenuity Variant AnalysisNext Generation Sequencing Analysis ReportsIngenuity Product SearchReagent Portals for BD, Sigma, Thermo Fischer
  • 10.
  • 11.
    Proprietary and Confidential11ModularServicesSingle Sign OnUserManagementViews & ReportsUser DataContentServiceiReportMaster Graph
  • 12.
  • 13.
  • 14.
    Proprietary and Confidential14Speedingup the feedback loopDeveloperStakeholders
  • 15.
    Proprietary and Confidential15Doall of this while supporting the existing product
  • 16.
    Proprietary and Confidential16ApproachMoveto a Service Oriented ArchitectureDon’t miss Jeff’s talk on Sunday 10:45 am “Learning to Love Services: Experiences from the Transition to a Service-oriented Architecture”Develop a test strategy focused on automated testingBuild a continuous integration systemAdopt agile product managementImprove infrastructure to create and deploy servicesFoster a Dev/Ops culture
  • 17.
    Proprietary and Confidential17ContinuousIntegration WorkflowApplicationBundleDeploy ApplicationRun Fitnesse Tests(Nightly suite)Nightly Build(Clover)Run JUnitTestspublish summaryFitnesseBundleDeploy FitnessepublishpublishHudson Dashboard(JUnit, Fitnesse summary, Code Coverage)Fitnesse Wiki(Test history, Details, Test Case Management)LinkSVNCommit(Test Cases)
  • 18.
  • 19.
  • 20.
    Proprietary and Confidential20SOA:Beforelots of modules, separate but dependenteasy to develop on but also easy to add circular dependencieshard to keep track of purpose/value of all the modulesproduct consisted of bunches of modules put togetherreference was typically to latest devcodeto ensure "latest," individual modules of a product were rebuilt for every releasejunittests were run every time as wellnew product version meant build everything, test everythingbuilds were slow
  • 21.
    Proprietary and Confidential21SOA:“Current”components: module grouped together.  Access through api module onlyless chance of circular dependencieseasier to comprehend modulesmore flexibility to change code: just do not change apicomponents built/tested separatelyfaster buildsless repetitive testingsome shared modules still exist (they are not part of any component)
  • 22.
    Proprietary and Confidential22SOA:Conversion Notesfind a logical group of modulesConvert groupput group into hierarchical structure, hide things behind an apilayerconvert outside modules to use apissee Jeff's talk
  • 23.
  • 24.
    Proprietary and Confidential24BuildSystem: Beforein-house ant scriptslots of control but it required lots of resourcesno real industry standardglobal scripts/property files, overrides allowedoffered consistency but (busy) people would override instead of follow patternscripts got complicatedanyone could add a new featureif anyone wanted a new feature, just tell them to add itinefficient additions, different code styles made scripts hard to readvery little dependency managementmultiple repositories for binary files
  • 25.
    Proprietary and Confidential25BuildSystem: “Current” mavennot much control, and very rigid  (a good thing, in a way)steep learning curvedifferent from previous way of doing thingsstandard structure; difficult to not follow structurehierarchical structure easily followedversions for all dependencies well definedeasy to add new features (after a short burst of intense agony)only one repository
  • 26.
    Proprietary and Confidential26BuildSystem: Conversion Notes get a maven repository manager (nexus? Turn on search!)add antrun plugin to publish artifacts to old systemchoose a simple component to start, make lots of little submodules(1 module per artifact, plus assembly)manually add needed dependencies to repositorybuild up company parent pom, use hierarchyPut all plugin management into parentKey maven plugins: buildnumber, buildhelper, release, assembly,
  • 27.
    Proprietary and Confidential27BuildSystem: TODOcleaner release plugincontinue learning mavencontribute to pluginsImprove internal maven FAQLook into git
  • 28.
  • 29.
    Proprietary and Confidential29ContinuousBuilds: BeforeHudson (no plugins)auto build start for each module, with artifacts publishedmanual build start for productsshell scripts to copy artifacts to release dir
  • 30.
    Proprietary and Confidential30ContinuousBuilds: “Current”Hudsondevmaster for auto build of modules/submodules, auto published to repository manager (dev area)release master for components/products, auto published to repository manager (release area)modules/submodulesbuilt on checkincomponents/products built on schedule or on demandprocess includes various tests and deployments (Jen)
  • 31.
    Proprietary and Confidential31ContinuousBuilds: Conversion Notesuse Jenkins, not Hudson (more activity for Jenkins)startup new, clean serverscopy/create job that we wantTry to make Jenkins be the portal to everything fingerprintingPlugins we use: clover, fitnesse, findbugs, checkstyle, disk-usage, downstream build view, (custom) dashboard view, promoted builds, ssh slaves
  • 32.
    Proprietary and Confidential32ContinuousBuilds: TODObetter job rollupjob templatesmore maven/hudson pluginssubmit hudson plugin(s) to community
  • 33.
    Proprietary and Confidential33Deployment:Beforeproprietary shell/perl scriptstargeted to install app only (not machine set up)multiple proprietary property config scripts
  • 34.
    Proprietary and Confidential34Deployment:“Current”PuppetConfigures machines and appsWork on our machines and EC2Use of .erb files everywhere for property configuration
  • 35.
    Proprietary and Confidential35Deployment:Conversion Notesmodify tar formatmoved to one tomcatused erb filessplit properties into app
  • 36.
    Proprietary and Confidential36Deployment:TODOstandard server configuration types (e.g. “build machine”, “app machine”, …)more puppet scripts
  • 37.
  • 38.
    Proprietary and Confidential38Visibility:Beforecfmap (IT server diagnostic tool)Hudson status pageFitNesse server
  • 39.
    Proprietary and Confidential39Visibility:“Current”cfmapHudson status pageHudson dashboardextra tests built in to HudsonFitNesse serverService status page
  • 40.
    Proprietary and Confidential40Visibility:Conversion Notesuse Hudson plugins, with drill downget everything to report in a standard way (junit xml)
  • 41.
    Proprietary and Confidential41Visibility:TODOmore widgets for the dashboardIntegrate outside reports into dashboardcfmapstatus pagesdm? (service discovery manager)
  • 42.
  • 43.
    Proprietary and Confidential43TestingFor CI/CDTest Automation is keyHow and what to automateMezarosCohnCrispin
  • 44.
    Proprietary and Confidential44TestChallengesTestability: some products are difficult to test at lower levelsLegacy Apps: one of our main products was a ‘Legacy App’. Tests used to look like this:
  • 45.
    Proprietary and Confidential45TestChallengesvarying levels of coveragesome of our newer components have great coverageother components have lower coverage: legacy, proof of concept
  • 46.
    Proprietary and Confidential46SolutionsTestand code refactoringLegacy Apps: Strangulation approachautomate new and refactored featuresincremental work on tests: reserve time in each iteration for adding to testsChange in culture: team ownership of tests and statusCycle time for ipa was 2.5 weeksNow for most of our services, it is 20-40 minutes
  • 47.
    Proprietary and Confidential47TestInfrastructure and Environments
  • 48.
    Proprietary and Confidential48Process:Build PromotionBuild Promotion through Quality GatesBetaDeployed to BetaProprietary and Confidential49Test EnvironmentsStable EnvironmentMultiple nodes
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
    Proprietary and Confidential51TestTypes: Deployment and HealthEach of our components has a built-in status page
  • 55.
    Proprietary and Confidential52TestTypes: Deployment and HealthStatus pageReflects app statusResource availability: DB Connections, Services
  • 56.
    Proprietary and Confidential53TestTypes: Deployment and HealthInformation is used for:DeploymentHealth MonitoringService Compatibility and Dependency checking
  • 57.
    Proprietary and Confidential54TestTypes: FitNesseFitNesse is a wiki-based web server test toolHelps abstract test definition from technical implementationProvides visual reporting and result history tracking
  • 58.
    Proprietary and Confidential55TestTypes: FitNesseThe FitNesse Server http://localhost:8080/FitNesse.UserGuide.TwoMinuteExamplehttp://localhost:8080/FitNesse.UserGuide.TwoMinuteExample?pageHistoryWiki view Editing the wiki Test Results
  • 59.
    Proprietary and Confidential56TestTypes: FitNesse Integration with Hudson- Views, drilldown, configuration Test results converted to junit formatView of fitnesse test job in Hudson
  • 60.
    Proprietary and Confidential57Drilldowns on fitnesse test results in Hudson
  • 61.
    Proprietary and Confidential58FitNessePluginConfigurationConvert results to Junit format
  • 62.
    Proprietary and Confidential59PublishFitNesse Results and Coverage
  • 63.
    Proprietary and Confidential60TestTypes: FitNesseWhat we use it for:
  • 64.
  • 65.
  • 66.
  • 67.
    DB Tests (dbfit)Whatwe’ve done with it that is differentUse as execution framework for more complex tests Extension of fitnesse server for data-driven testsjson fixture – pass in javascriptExecution of Selenium tests
  • 68.
    Proprietary and Confidential61TestTypes: FitNesseLessons learnedFitNesse is good for straightforward verification of dataTo do more, you have to get creativeFixture and test ownership needs to be a shared responsibility
  • 69.
    Proprietary and Confidential62TestTypes: SeleniumWe fire off Selenium tests in two ways: via Hudson job or through FitNesse.Test results converted to junit format for display in hudsonHudson job in dashboard: Hudson job view:

Editor's Notes

  • #3 Outline for this deck:Who we areWhat challenge we are addressing (high level)Our platform = Ingenuity Knowledge Base Content (3 slides) Ontology (1 slide)Products and Solutions Overview Research and Analysis Solutions The challenge IPA addresses IPA overview The challenge Ingenuity Answers addresses Additional Solutions eCommerce EnterpriseWhat Sets Ingenuity Apart (USPs)
  • #5 What is the challenge Ingenuity is addressing? Speaking points:Helping researchers access detailed and high-quality knowledge and then USING it to design experiments, generate hypothesis, answer targeted questions, and analyze dataAll of Ingenuity's products and services have one common goal — to help life science researchers generate maximum value from all types of biological and chemical knowledge.Ingenuity offers a broad and flexible range of solutions that can be tailored to needs of various clients, including academic and therapeutic area researchers, computational biologists and informatics departments, and suppliers in the life sciences industry.
  • #6 Speaking Points:What is it? [high level description]The Ingenuity Knowledge Base is the core technology of Ingenuity Systems Is the engine behind all of Ingenuity’s products – (IPA) It is a repository of biological interactions and functional annotations created from millions of individually modeled relationships between proteins, genes, complexes, cells, tissues, drugs, and diseasesThe IKB enables scientific understanding – through IPA and other services, researchers canDiscover biological relationships and functionsBuild testable hypothesesLastly, they can answer targeted biological questions – and get back relevant answersSo, what is unique about the IKB – what have we done differently - next slideInference example:For example – can I discover a molecular path connecting a compound known to treat mammary tumors to angiogenesis? Types of contextual detail:SpeciesSynonymsExperimental methodSite of post-translational modificationDirection of changeTissue contextCell line contextOriginal source
  • #7 Speaking Points:How is our approach different? With the information we capture (publications, public knowledge, etc. - not JUST publications) we do THREE important things:We STRUCUTURE the information using the Ingenuity Ontology – statements are modeled into Findings. Findings are not just EXPERT REVIEW PROCESS We capture a lot of detail and ensure it is correct.The information we cover is COMPREHENSIVE – IKB covers and extensive body of biological and chemical info, including publications and third party sources.The information is TIMELY – weekly updates as of IPA 8 and IPA 8.5
  • #17 Small teams empowered to release to production without management approvalBetter iteration and release planning. Learning to build and release features incrementally; show/hide features in betaFocus on Unit testing first and then integration testingStreamline the build environment to do automated builds, deployments and build promotionRefactor the code base to create more modular and service oriented code base
  • #19 --title: --list items
  • #26 --only one repository
  • #27 --mention fingerprinting--all plugins in parent
  • #30 --artifactsinhudson repo--nodpeloyment/test pohase other than junit--just build, not CI
  • #31 --release master is the CI one--remove jenkinsrefernces
  • #34 --cconfigurabel, difficult to maintain
  • #35 --describe what puppet is--erb use--cofnigmgt standardized--moreenforcable
  • #37 --standard vmconfig
  • #39 --hudson build succesnoyl
  • #40 --status app page --hudson
  • #42 --service discovery mgr, router for services