3. ABOUT ME - @HGOMEZ
TODAY - CI ARCHITECT @ AXWAY *
OPS HAT - FORMER SENIOR OPS DIRECTOR
DEV HAT - FORMER DEV, TEAM LEADER AND ARCHITECT
QA HAT - FORMER QA TECH LEADER
JPACKAGE * , OBUILDFACTORY * AND DEVOPS INCUBATOR *
PROJECT FOUNDER
PROUD MEMBER OF ASF (TOMCAT * & XML-RPC* ) & OSSGTP *
4. TODAY SOFTWARE
CHALLENGES
SOFTWARE PROJECTS ARE LARGER AND COMPLEX
MORE AND MORE COMPONENT INTEROPERABILITY
MANY TEAMS AND OFTEN REMOTE TEAMS
TIGHT SCHEDULES
FREQUENT NEEDS AND REQUIREMENTS CHANGES
5. EARLY AGES (PREHISTORIC)
BUILD / RELEASE ON A “PER REQUEST” BASIS -> GO
PROJECT IN PROPER STATE -> YES IT BUILD
WELL DOCUMENTED PER STANDARDS -> DOC IS NOT AN OPTION
PROPERLY REVIEWED -> SOMEONE TESTED PRODUCT
BUT IT FAILED TOO OFTEN ;(
7. TOOLING NEEDED FOR AGILE
STANDARDIZE BUILD, TEST AND DEPLOYMENT
PROVIDE CONTINUOUS BUILDS, TEST AND DEPLOYMENT
ENSURES SOLID, REPRODUCIBLE AND ANALYZABLE STEPS
VISIBLE TO ALL ACTORS (DEV, QA, PRODUCT OWNER)
10. GOAL
THE ULTIMATE GOAL IS TO REDUCE TIMELY REWORK AND THUS
REDUCE COST AND TIME.
WHEN DONE WELL, CONTINUOUS INTEGRATION HAS BEEN
SHOWN TO ACHIEVE THESE GOALS.
11. WORKLOAD - HUMAN
TEAM MEMBERS WORK ON CODE
CODE AND UNIT TESTS
PUSH ON SCM AFTER LOCAL TESTS PASSED
12. WORKLOAD - MACHINE
POLLS SCM AND CHECK OUT IF CHANGES
BUILD ALL CODE
RUN ALL UNIT TESTS
DEPLOY SNAPSHOTS TO ARTIFACTS REPOSITORY
15. CONTINUOUS INTEGRATION
STEPS
FETCH FROM SCM
BUILD CODE
RUN UNIT TESTS
RUN INTEGRATION TESTS
DEPLOY ARTIFACTS
RUN ACCEPTANCE TESTS
PRODUCE REPORTS
16. NOTES ABOUT TESTS
TESTS SHOULD COVERS A WIDE SCOPE FROM DEV UP TO
RUNTIME
UNIT TESTING
INTEGRATION TESTING
ACCEPTANCE TESTING
PERFORMANCES TESTING
17. UNIT TESTING
HERE WE TEST CODE
ENSURES THE CODE IS DOING WHAT WE INTEND IT TO DO
MANY EXTREMELY QUICK AND SMALL TESTS
UT ENSURE WE MAKE THE SOFTWARE
RIGHT
18. INTEGRATION TESTING
USED TO VALIDATE CONTRACTS BETWEEN PARTICIPANTS
SHOULD BE PORTABLE (NOT PLATFORM DEPENDANTS)
"EXTERNAL COMPONENTS" SHOULD BE EMBEDDEDABLE OR
MOCKED
IT ENSURE WE MAKE THE RIGHT
SOFTWARE
19. ACCEPTANCE TESTING
KEEP THEM SIMPLE
REAL TARGET COMPONENTS SHOULD BE USED
PREFER PRE-REQUISITE (DONT EMBED SQL DB ENGINES)
DATASETS IN USE SHOULD BE MODERATE
PREPARE FOR PRODUCTION - ENROLL
YOUR OPS
20. PERFORMANCE TESTING
FIX QUICKLY PERFORMANCE REGRESSIONS
PREPARE FOR CAPACITY PLANNING
PROTECT YOURSELF FROM IN-PROD
DISCOVERY
28. DELIVERY
PROVIDE PRODUCT TO END USER
USER COULD THEN INSTALL OR UPDATE IT ON HIS OWN
SYSTEMS
29. DEPLOYMENT
PROVIDE OPERATIONAL SOLUTION TO END USER
USER COULD DIRECTLY USE IT ON HIS OWN OR LEASED SYSTEMS
30. EXTERNAL APPROACH
MANY GOOD PROVIDERS, CLOUD
BASED
CLOUD BEES *
HEROKU *
OPENSHIFT *
BUT YOU MAY DON'T HAVE CHOICES AND HAD DO IT IN-HOUSE
31. IN-HOUSE APPROACH
MATERIALIZE 3 CHAINS
SOFTWARE FACTORY
QUALITY FACTORY
DELIVERY&DEPLOYMENT FACTORY
AND DONT FORGET SERIOUS MONITORING FOR ALL OF THEM
32. SOFTWARE FACTORY
FROM SCM TO ARTIFACTS
BUILD
UNIT TESTS
INTEGRATION TESTS
CODE QA REPORTS (SONAR)
DEPLOY ARTIFACTS
33. QUALITY FACTORY
FROM ARTIFACTS TO RUNTIME
REPORTS
CONSUME ARTIFACTS FROM SOFTWARE FACTORY
RUN ACCEPTANCE TESTS
PERFORM PERFORMANCE TESTS
PROVISION CAPACITY PLANNING
REPORTS GENERATION
34. DELIVERY&DEPLOYMENT
FACTORY
FROM ARTIFACTS TO RUNNABLE
BUILD NATIVE PACKAGES
BUILD IMAGES (VMDK, AMI, DVD ISO)
PROVIDE RUN INFRASTRUCTURE (INSITE)
INTERFACE TO RUN INFRASTRUCTURE (OFF-SITE/PUBLIC)
CATALOG & PROVISION RUNTIMES
37. INTERACTIONS
SWF PRODUCES SOFTWARE MATERIALS
QAF CONSUME SWF MATERIALS
QAF GIVE 'GO FOR PRODUCTION' IN D&DF
D&DF PROVIDES QAF RUN INFRASTRUCTURE
D&DF COULD PROVIDES DEV RUN INFRASTRUCTURE
39. NATIVE PACKAGING
WIDELY USED IN UNIX WORLD
OS COMPONENTISATION APPROACH
RUNTIME DEPENDENCIES AWARE
POWERFUL LIFE-CYCLE SUPPORT
WEB BASED PACKAGES REPOSITORIES FOR MODERN DELIVERY
40. WIDELY USED IN UNIX
WORLD
YOUR OPS KNOWS THEM
YOUR CUSTOMER OPS KNOWS THEM
AVOID "NOT INVENTED HERE SYNDROM", BRING MORE
CONFIDENCE
41. OS COMPONENTISATION
APPROACH
YOUR APP SHOULD BE A COMPONENT LIKE THOSE BUNDLED BY
OS
EASY TO MANAGE AS SYSTEM SERVICE
TAKE CARE OF SYSTEM HABBIT (USER BY SERVICE)
42. RUNTIME DEPENDENCIES
AWARE
PROVIDES OR DEPENDS ON OTHERS OS PACKAGES
HELP SPLIT COMPLEX SOLUTIONS IN SET OF SIMPLE PACKAGES
INJECT SQL ENGINES, FRONT-ENDS CONFIGURATION VIA HOOKS
PUPPET/CHEF MANAGEABLE
43. POWERFULL LIFE-CYCLE
SUPPORT
EASY INSTALLATION
EASY UPDATE
EASY REMOVAL
INTERACT WITH OTHER COMPONENTS LIFE-CYCLE
44. MODERN DELIVERY
YUM, ZYPPER, APT ARE USING WEB BASED PACKAGES
REPOSITORIES
BUILD / PROVIDE YOUR OWN COMPANY WEB REPOSITORIES
SAME SOURCE FOR YOUR DEV, QA, SUPPORT, SALES AND
CUSTOMERS
100% CLOUD-READY WITHOUT EFFORT
45. SMART CD WITH JENKINS &
RPM
1. BUILD (MAVEN)
2. PACKAGE (RPMBUILD)
3. UPDATE REPO
4. DEPLOY !
47. IN A NUTSHELL
CONTINUOUS INTEGRATION MOTORIZE AGILITY
THEN CAME CONTINUOUS DELIVERY AND DEPLOYMENT
CONTINUOUS D&D COULD BE DONE IN HOUSE
CONSIDER NATIVE PACKAGING FOR CONTINUOUS DEPLOYMENT