SlideShare a Scribd company logo
1 of 40
How important it is to invest in a good software
factory and automate the build process as much
as possible
...if possible
Nicolas Mas - Nicolas.Mas@gmail.com
https://www.linkedin.com/in/nicolasmas
Acknowledgment
“Alone we can do so little; together
we can do so much”
Eric Domingo Shuang Xia
Lokesh Boghte
Cedric Arnoult
Andrew Tiu
What this talk won’t do
⬗ Elaborate on Yet Another Software Factory Definition
⬘ Or only if, as a consultant once told me: “a common language needs to be
defined to understand each other” © Ajit Alwe ;-)
⬗ Enumerate a list of tools
⬗ Talk about any PM methodology
⬗ Show any code in action
⬗ Entertain you with funny pictures (sorry)
So what is it going to be?
⬗ A discussion about a real experience
⬗ back to basic: breaking down a complex problem into smaller chunks and
finding solution
⬗ An example of software factory designed to handle a specific problem
⬗ Bonus: Discuss if it’s worth automating the build of the software factory
as well as the automation of the build process (inception style)
⬗ B Tracks: if we really have time
Actually we have two topics here...
...and they are complementary
1. Investing in a good software factory
2. Automate the build process as much as possible
Investing in a good software
factory: YES YOU CAN!
Part One:
Quick Survey
⬗ What’s a software factory for you?
⬗ Are you using one?
For us, it all started with a unique context...
⬗ A Java Spring project
⬘ Team of 5 developers
◆ A “A Team”, with distinct and partially overlapping skills and experience
⬘ A delivery manager
◆ NOT from a technical background
⬘ A product owner on the client side
◆ NOT from a technical background
◆ NOT collocated
⬘ Tight deadline
...which induced
⬗ Small team with high pressure
⬗ Delivery manager does not speak the same language as the developers
⬗ Product owner in another country
⬗ Customer dev. processes are very different
⬗ Deliverables:
⬘ Code quality
⬘ Documentation
⬘ processes on top of the usuals
⬗ Start from scratch
⬗ A bit of innovation
So we needed to:
Rethink the way we would build the product
&
Customize the process to build the product
WHY?
To manage the risks generated by these factors
&
Make sure we deliver an amazing great product
which will provide our customer the greatest
satisfaction (hint: bullshit)
Moving on from there
We can segregate our problem by vertical domains/aspects:
⬗ The product scope
⬗ Delivery management
⬗ Development process
⬘ Dependency Management
⬘ Code repository
⬘ Build process
⬘ Software Quality
⬘ Deployment process
⬗ Delivery process
⬗ Feedback
⬗ Communication
Mapping
⬗ The product scope
⬗ Delivery management
⬗ Development process
⬘ Dependency Management
⬘ Code repository
⬘ Build process
⬘ Software Quality
⬘ Deployment process
⬗ Delivery process
⬗ Feedback
⬗ Communication
=> Jira
=> Human (yes!)
=> Maven
=> GitHub
=> Jenkins
=> Sonar
=> Jenkins
=> Shell
=> Jira
=> Slack
A few remarks
⬗ The tools chosen are NOT the only one available:
⬘ Actually many !!
⬗ Rather than being a fixed structure, the Software Factory is a living
system and must be design accordingly
⬗ Setup, test before the development starts
⬗ Complete transparency within the team and with the client
What did we gain doing this?
⬗ We are confident we can deliver anything, anytime
⬗ Newcomers to the project are not a potential problem
⬗ We minimized the impact of human factor
⬗ The delivery pipe is unlikely to be a blocking factor for the project
⬘ We won’t be able to put it on the tools if we fail
Is there anything else we can improve?
⬗ We designed our software factory in such a way that our main point of
failure is the human factor
How could we minimize that?
Automate as much as possible
the build process: YES YOU
CAN! (BUT...)
Part Two:
What we can’t automate
⬗ code commit by the developers
⬗ stakeholders communication
⬘ at least partially (Slack technically allows us to do it, but can’t adapt to the
stakeholder feedback).
What we decided not automate
⬗ Code review
⬗ Delivery
⬘ (YES this can be discussed … and YES I am aware of continuous delivery).
So finally, what we can automate
The build process + UAT deployment
“Jenkins is an open source continuous integration tool written in Java.
Jenkins provides continuous integration services for software development. It
is a server-based system running in a servlet container such as Apache
Tomcat.”
⬗ A maven build is triggered (code pulled from github)
⬗ Shell scripts deploy on UAT targets
⬗ Postprocess action: email + Slack message
So finally, what we can automate
The software quality - SonarQube
“SonarQube is an open platform for continuous inspection of code quality”
Code coverage
Code Quality
So how did it go?
⬗ Anytime delivery was real
⬘ BUT complexity increased with time and integration with other systems
(what a surprise!)
⬗ Code coverage tools sides effects
⬘ Require dev to code in a sometimes not so efficient manner
⬗ Client communication is better
⬘ Scope management
⬘ improved transparency
Delivery happened no matter what
Was it worth it?
YES
Bonus: Automating the
creation and setup of the
software factory
Can or Cannot?
Part Three:
Automating the whole thing
⬗ We want to be able to recreate from a master the whole software
factory stack
⬘ In case of a crash (but can it be stateful?)
⬘ A new project is started in //, with similar constraints
⬗ We want to maintain a backup infra just in case
⬘ How do we keep them aligned?
⬘ AWS + local VBOx for example
Our current setup (manual)
What we manually setup so far
DB Stack CI Stack Staging Stack
Github
virtualbox
vagrant
Physical server
Ubuntu server Ubuntu serverUbuntu server
Dev machine: MB Pro
⬗ Eclipse IDE + JDK 1.7
⬗ Spring 4.0.4 + Apache CXF
⬗ Maven 3.0.3
⬗ Tomcat 7
⬗ Findbugs
Staging Server: VM: Ubuntu 14.04
LTS
⬗ JDK 1.7.0_11
⬗ Tomcat 7.0.37
DB Server: VM: Ubuntu 14.04 LTS
⬗ Oracle Entreprise Edition
11.2.0.3
⬗ Gemfire
CI Server: VM: Ubuntu 14.04 LTS
⬗ JDK 1.7.0_11
⬗ Jenkins
⬗ Archiva
⬗ GitHub
⬗ Jira Agile
⬗ Jira Crucible
⬗ Sonar Cube 4.1.2
Infra: Ubuntu 14.04 LTS
⬗ Vagrant
⬗ Saltstack
⬗ packer
⬗ Virtualbox
Our target through automation
DB Stack CI Stack Staging Stack
Github
virtualbox
vagrant
AWS
Physical server
WebApp
-
Software
Factory
Builder
Ubuntu serverUbuntu serverUbuntu server
The Software Factory Builder
⬗ Node.js (locally hosted) front end
⬗ Underlying technologies (main ones)
⬘ Packer (OS baking)
⬘ SaltStack (provisioning)
⬘ Vagrant (VM management)
What it looks like
⬗ A node.js interface
⬘ You can imagine anything for the VM type (VMWare, digital ocean etc.)
What it looks like
What it looks like
What it looks like
Pros & Cons
What’s cool..
⬗ Traditionally, software factories are built once and used for projects for
years. Stacks are updated, patched, reconfigured => lower and lower
reliability. In our case, we can rebuild it every time
⬗ We can duplicate on different infrastructures local or in the cloud
⬗ Once defined, the build pattern is fast to execute
What’s not…
⬗ Maintaining the setup and testing it before a “gold” version takes time
and is complexe => it’s an upfront investment you might not benefit from
⬗ You can’t automate 100%, rather 90%. So you still need a bit of work
Bonus Track - Did you know ?
“The mother of all demos”
http://en.wikipedia.org/wiki/The_Mother_of_All_Demos
⬗ Douglas Engelbart's December 9, 1968
⬗ 90-minute live public demonstration of the online system, NLS, they had
been working on since 1962
⬗ 1000 attendees and a demo of almost all features we use today
⬘ Mouse
⬘ hypertext, object addressing and dynamic file linking
⬘ shared-screen collaboration involving two persons at different sites
communicating over a network with audio and video interface.
http://web.stanford.edu/dept/SUL/library/extra4/sloan/mousesite/1968Dem
o.html
https://www.youtube.com/playlist?list=PL76DBC8D6718B8FD3
Watch it !!
Bye Bye !
Nicolas Mas - Nicolas.Mas@gmail.com
https://www.linkedin.com/in/nicolasmas

More Related Content

What's hot

My Dad Won't Buy Me DevOps
My Dad Won't Buy Me DevOpsMy Dad Won't Buy Me DevOps
My Dad Won't Buy Me DevOpsXebiaLabs
 
Building the Bridge to Enterprise DevOps Success
 Building the Bridge to Enterprise DevOps Success Building the Bridge to Enterprise DevOps Success
Building the Bridge to Enterprise DevOps SuccessXebiaLabs
 
DevOps Continuous Integration & Delivery - A Whitepaper by RapidValue
DevOps Continuous Integration & Delivery - A Whitepaper by RapidValueDevOps Continuous Integration & Delivery - A Whitepaper by RapidValue
DevOps Continuous Integration & Delivery - A Whitepaper by RapidValueRapidValue
 
Application Lifecycle Management with TFS
Application Lifecycle Management with TFSApplication Lifecycle Management with TFS
Application Lifecycle Management with TFSMehdi Khalili
 
TDD - Cultivating a Beginner's Mind
TDD -  Cultivating a Beginner's MindTDD -  Cultivating a Beginner's Mind
TDD - Cultivating a Beginner's MindShai Yallin
 
Is Your DevOps Ready to Scale?
Is Your DevOps Ready to Scale?Is Your DevOps Ready to Scale?
Is Your DevOps Ready to Scale?XebiaLabs
 
Build your QA Pipeline using Serenity , Selenium WebDriver , Rest Assured and...
Build your QA Pipeline using Serenity , Selenium WebDriver , Rest Assured and...Build your QA Pipeline using Serenity , Selenium WebDriver , Rest Assured and...
Build your QA Pipeline using Serenity , Selenium WebDriver , Rest Assured and...Moataz Nabil
 
DevOps is a Journey - Choose Your Own Adventure
DevOps is a Journey - Choose Your Own AdventureDevOps is a Journey - Choose Your Own Adventure
DevOps is a Journey - Choose Your Own AdventureFabian Iannarella
 
Kanban like another approach for gaming projects, Катерина Гаськова
Kanban like another approach for gaming projects, Катерина ГаськоваKanban like another approach for gaming projects, Катерина Гаськова
Kanban like another approach for gaming projects, Катерина ГаськоваSigma Software
 
Spark 2013 Presentation of making the enterprise agile
Spark 2013 Presentation of making the enterprise agileSpark 2013 Presentation of making the enterprise agile
Spark 2013 Presentation of making the enterprise agilegbgruver
 
The Role of Automation in the Journey to Continuous Delivery
The Role of Automation in the Journey to Continuous DeliveryThe Role of Automation in the Journey to Continuous Delivery
The Role of Automation in the Journey to Continuous DeliveryXebiaLabs
 
Quality Jam 2016 Product Roadmap
Quality Jam 2016 Product RoadmapQuality Jam 2016 Product Roadmap
Quality Jam 2016 Product RoadmapQASymphony
 
Ssw forte-agile-seminar
Ssw forte-agile-seminarSsw forte-agile-seminar
Ssw forte-agile-seminarSSW
 
Dev ops training in chennai
Dev ops training in chennaiDev ops training in chennai
Dev ops training in chennairaj esaki
 
Salesforce DevOps: Where Do You Start?
Salesforce DevOps: Where Do You Start?Salesforce DevOps: Where Do You Start?
Salesforce DevOps: Where Do You Start?Chandler Anderson
 
Devconf - Moving 65000 Microsofties to DevOps with Visual Studio Team Services
Devconf - Moving 65000 Microsofties to DevOps with Visual Studio Team ServicesDevconf - Moving 65000 Microsofties to DevOps with Visual Studio Team Services
Devconf - Moving 65000 Microsofties to DevOps with Visual Studio Team ServicesWilly-Peter Schaub
 
What business benefits from DevOps 2014
What business benefits from DevOps 2014What business benefits from DevOps 2014
What business benefits from DevOps 2014Erno Aapa
 

What's hot (20)

DevOps Overview
DevOps OverviewDevOps Overview
DevOps Overview
 
My Dad Won't Buy Me DevOps
My Dad Won't Buy Me DevOpsMy Dad Won't Buy Me DevOps
My Dad Won't Buy Me DevOps
 
Building the Bridge to Enterprise DevOps Success
 Building the Bridge to Enterprise DevOps Success Building the Bridge to Enterprise DevOps Success
Building the Bridge to Enterprise DevOps Success
 
DevOps Continuous Integration & Delivery - A Whitepaper by RapidValue
DevOps Continuous Integration & Delivery - A Whitepaper by RapidValueDevOps Continuous Integration & Delivery - A Whitepaper by RapidValue
DevOps Continuous Integration & Delivery - A Whitepaper by RapidValue
 
Application Lifecycle Management with TFS
Application Lifecycle Management with TFSApplication Lifecycle Management with TFS
Application Lifecycle Management with TFS
 
TDD - Cultivating a Beginner's Mind
TDD -  Cultivating a Beginner's MindTDD -  Cultivating a Beginner's Mind
TDD - Cultivating a Beginner's Mind
 
Is Your DevOps Ready to Scale?
Is Your DevOps Ready to Scale?Is Your DevOps Ready to Scale?
Is Your DevOps Ready to Scale?
 
Build your QA Pipeline using Serenity , Selenium WebDriver , Rest Assured and...
Build your QA Pipeline using Serenity , Selenium WebDriver , Rest Assured and...Build your QA Pipeline using Serenity , Selenium WebDriver , Rest Assured and...
Build your QA Pipeline using Serenity , Selenium WebDriver , Rest Assured and...
 
DevOps is a Journey - Choose Your Own Adventure
DevOps is a Journey - Choose Your Own AdventureDevOps is a Journey - Choose Your Own Adventure
DevOps is a Journey - Choose Your Own Adventure
 
Kanban like another approach for gaming projects, Катерина Гаськова
Kanban like another approach for gaming projects, Катерина ГаськоваKanban like another approach for gaming projects, Катерина Гаськова
Kanban like another approach for gaming projects, Катерина Гаськова
 
Spark 2013 Presentation of making the enterprise agile
Spark 2013 Presentation of making the enterprise agileSpark 2013 Presentation of making the enterprise agile
Spark 2013 Presentation of making the enterprise agile
 
The Role of Automation in the Journey to Continuous Delivery
The Role of Automation in the Journey to Continuous DeliveryThe Role of Automation in the Journey to Continuous Delivery
The Role of Automation in the Journey to Continuous Delivery
 
"DevOps > CI+CD "
"DevOps > CI+CD ""DevOps > CI+CD "
"DevOps > CI+CD "
 
Quality Jam 2016 Product Roadmap
Quality Jam 2016 Product RoadmapQuality Jam 2016 Product Roadmap
Quality Jam 2016 Product Roadmap
 
Ssw forte-agile-seminar
Ssw forte-agile-seminarSsw forte-agile-seminar
Ssw forte-agile-seminar
 
Dev ops training in chennai
Dev ops training in chennaiDev ops training in chennai
Dev ops training in chennai
 
Salesforce DevOps: Where Do You Start?
Salesforce DevOps: Where Do You Start?Salesforce DevOps: Where Do You Start?
Salesforce DevOps: Where Do You Start?
 
An introduction to DevOps
An introduction to DevOpsAn introduction to DevOps
An introduction to DevOps
 
Devconf - Moving 65000 Microsofties to DevOps with Visual Studio Team Services
Devconf - Moving 65000 Microsofties to DevOps with Visual Studio Team ServicesDevconf - Moving 65000 Microsofties to DevOps with Visual Studio Team Services
Devconf - Moving 65000 Microsofties to DevOps with Visual Studio Team Services
 
What business benefits from DevOps 2014
What business benefits from DevOps 2014What business benefits from DevOps 2014
What business benefits from DevOps 2014
 

Similar to Investing in a good software factory and automating the build process

Confoo-Montreal-2016: Controlling Your Environments using Infrastructure as Code
Confoo-Montreal-2016: Controlling Your Environments using Infrastructure as CodeConfoo-Montreal-2016: Controlling Your Environments using Infrastructure as Code
Confoo-Montreal-2016: Controlling Your Environments using Infrastructure as CodeSteve Mercier
 
Services, tools & practices for a software house
Services, tools & practices for a software houseServices, tools & practices for a software house
Services, tools & practices for a software houseParis Apostolopoulos
 
DevOps Indonesia #2 - Toolchain & Technology
DevOps Indonesia #2 - Toolchain & TechnologyDevOps Indonesia #2 - Toolchain & Technology
DevOps Indonesia #2 - Toolchain & TechnologyDevOps Indonesia
 
DevOps Indonesia - DevOps Toolchain and Technology
DevOps Indonesia - DevOps Toolchain and TechnologyDevOps Indonesia - DevOps Toolchain and Technology
DevOps Indonesia - DevOps Toolchain and TechnologyMade Mulia Indrajaya
 
Introducing Agile Methodologies
Introducing Agile MethodologiesIntroducing Agile Methodologies
Introducing Agile MethodologiesStfalcon Meetups
 
Andrea Di Persio
Andrea Di PersioAndrea Di Persio
Andrea Di PersioCodeFest
 
Agile Development Brown Bag Lunches Slides
Agile Development Brown Bag Lunches SlidesAgile Development Brown Bag Lunches Slides
Agile Development Brown Bag Lunches Slidesguesta1c5d7
 
DevOps Fest 2020. immutable infrastructure as code. True story.
DevOps Fest 2020. immutable infrastructure as code. True story.DevOps Fest 2020. immutable infrastructure as code. True story.
DevOps Fest 2020. immutable infrastructure as code. True story.Vlad Fedosov
 
Beyond Technical Debt: Unconventional techniques to uncover technical and soc...
Beyond Technical Debt: Unconventional techniques to uncover technical and soc...Beyond Technical Debt: Unconventional techniques to uncover technical and soc...
Beyond Technical Debt: Unconventional techniques to uncover technical and soc...Juraj Martinka
 
DevOps make teamwork great.
DevOps make teamwork great.DevOps make teamwork great.
DevOps make teamwork great.keithmin
 
How To Do Kick-Ass Software Development, by Sven Peters
How To Do Kick-Ass Software Development, by Sven PetersHow To Do Kick-Ass Software Development, by Sven Peters
How To Do Kick-Ass Software Development, by Sven PetersZeroTurnaround
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous IntegrationPreetam Palwe
 
Share the insight of ServiceInsight
Share the insight of ServiceInsightShare the insight of ServiceInsight
Share the insight of ServiceInsightParticular Software
 
Agile Methodologies And Extreme Programming - Svetlin Nakov
Agile Methodologies And Extreme Programming - Svetlin NakovAgile Methodologies And Extreme Programming - Svetlin Nakov
Agile Methodologies And Extreme Programming - Svetlin NakovSvetlin Nakov
 
Continuous, continuous, continuous
Continuous, continuous, continuousContinuous, continuous, continuous
Continuous, continuous, continuousMichele Orselli
 
Challenges and Best Practices of Database Continuous Delivery
Challenges and Best Practices of Database Continuous DeliveryChallenges and Best Practices of Database Continuous Delivery
Challenges and Best Practices of Database Continuous DeliveryDBmaestro - Database DevOps
 
Agile Methodologies And Extreme Programming
Agile Methodologies And Extreme ProgrammingAgile Methodologies And Extreme Programming
Agile Methodologies And Extreme ProgrammingUtkarsh Khare
 

Similar to Investing in a good software factory and automating the build process (20)

Confoo-Montreal-2016: Controlling Your Environments using Infrastructure as Code
Confoo-Montreal-2016: Controlling Your Environments using Infrastructure as CodeConfoo-Montreal-2016: Controlling Your Environments using Infrastructure as Code
Confoo-Montreal-2016: Controlling Your Environments using Infrastructure as Code
 
Services, tools & practices for a software house
Services, tools & practices for a software houseServices, tools & practices for a software house
Services, tools & practices for a software house
 
DevOps Indonesia #2 - Toolchain & Technology
DevOps Indonesia #2 - Toolchain & TechnologyDevOps Indonesia #2 - Toolchain & Technology
DevOps Indonesia #2 - Toolchain & Technology
 
DevOps Indonesia - DevOps Toolchain and Technology
DevOps Indonesia - DevOps Toolchain and TechnologyDevOps Indonesia - DevOps Toolchain and Technology
DevOps Indonesia - DevOps Toolchain and Technology
 
Introducing Agile Methodologies
Introducing Agile MethodologiesIntroducing Agile Methodologies
Introducing Agile Methodologies
 
Andrea Di Persio
Andrea Di PersioAndrea Di Persio
Andrea Di Persio
 
Agile Development Brown Bag Lunches Slides
Agile Development Brown Bag Lunches SlidesAgile Development Brown Bag Lunches Slides
Agile Development Brown Bag Lunches Slides
 
DevOps Fest 2020. immutable infrastructure as code. True story.
DevOps Fest 2020. immutable infrastructure as code. True story.DevOps Fest 2020. immutable infrastructure as code. True story.
DevOps Fest 2020. immutable infrastructure as code. True story.
 
Beyond Technical Debt: Unconventional techniques to uncover technical and soc...
Beyond Technical Debt: Unconventional techniques to uncover technical and soc...Beyond Technical Debt: Unconventional techniques to uncover technical and soc...
Beyond Technical Debt: Unconventional techniques to uncover technical and soc...
 
Usable Software Design
Usable Software DesignUsable Software Design
Usable Software Design
 
DevOps make teamwork great.
DevOps make teamwork great.DevOps make teamwork great.
DevOps make teamwork great.
 
How To Do Kick-Ass Software Development, by Sven Peters
How To Do Kick-Ass Software Development, by Sven PetersHow To Do Kick-Ass Software Development, by Sven Peters
How To Do Kick-Ass Software Development, by Sven Peters
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous Integration
 
Share the insight of ServiceInsight
Share the insight of ServiceInsightShare the insight of ServiceInsight
Share the insight of ServiceInsight
 
Agile Methodologies And Extreme Programming - Svetlin Nakov
Agile Methodologies And Extreme Programming - Svetlin NakovAgile Methodologies And Extreme Programming - Svetlin Nakov
Agile Methodologies And Extreme Programming - Svetlin Nakov
 
Agile
AgileAgile
Agile
 
Continuous, continuous, continuous
Continuous, continuous, continuousContinuous, continuous, continuous
Continuous, continuous, continuous
 
What is dev ops?
What is dev ops?What is dev ops?
What is dev ops?
 
Challenges and Best Practices of Database Continuous Delivery
Challenges and Best Practices of Database Continuous DeliveryChallenges and Best Practices of Database Continuous Delivery
Challenges and Best Practices of Database Continuous Delivery
 
Agile Methodologies And Extreme Programming
Agile Methodologies And Extreme ProgrammingAgile Methodologies And Extreme Programming
Agile Methodologies And Extreme Programming
 

More from Nicolas Mas

Building software by feature with immutable infrastructures on AWS
Building software by feature with immutable infrastructures on AWSBuilding software by feature with immutable infrastructures on AWS
Building software by feature with immutable infrastructures on AWSNicolas Mas
 
DevOps: Building by feature with immutable infrastructure at Serv.sg
DevOps: Building by feature with immutable infrastructure at Serv.sgDevOps: Building by feature with immutable infrastructure at Serv.sg
DevOps: Building by feature with immutable infrastructure at Serv.sgNicolas Mas
 
Internet et Mondes Virtuels.Fr
Internet et Mondes Virtuels.FrInternet et Mondes Virtuels.Fr
Internet et Mondes Virtuels.FrNicolas Mas
 
Virtual Worlds : Anew kind of Sociability Fr
Virtual Worlds : Anew kind of Sociability FrVirtual Worlds : Anew kind of Sociability Fr
Virtual Worlds : Anew kind of Sociability FrNicolas Mas
 
Metaverse a new dimension.Fr
Metaverse a new dimension.FrMetaverse a new dimension.Fr
Metaverse a new dimension.FrNicolas Mas
 
PraTic Days Avatars ConceptSL 230309
PraTic Days Avatars ConceptSL 230309PraTic Days Avatars ConceptSL 230309
PraTic Days Avatars ConceptSL 230309Nicolas Mas
 

More from Nicolas Mas (8)

Building software by feature with immutable infrastructures on AWS
Building software by feature with immutable infrastructures on AWSBuilding software by feature with immutable infrastructures on AWS
Building software by feature with immutable infrastructures on AWS
 
DevOps: Building by feature with immutable infrastructure at Serv.sg
DevOps: Building by feature with immutable infrastructure at Serv.sgDevOps: Building by feature with immutable infrastructure at Serv.sg
DevOps: Building by feature with immutable infrastructure at Serv.sg
 
Mediatar Fr
Mediatar FrMediatar Fr
Mediatar Fr
 
Internet et Mondes Virtuels.Fr
Internet et Mondes Virtuels.FrInternet et Mondes Virtuels.Fr
Internet et Mondes Virtuels.Fr
 
Virtual Worlds : Anew kind of Sociability Fr
Virtual Worlds : Anew kind of Sociability FrVirtual Worlds : Anew kind of Sociability Fr
Virtual Worlds : Anew kind of Sociability Fr
 
Metaverse a new dimension.Fr
Metaverse a new dimension.FrMetaverse a new dimension.Fr
Metaverse a new dimension.Fr
 
Pra Tic Avatars
Pra Tic AvatarsPra Tic Avatars
Pra Tic Avatars
 
PraTic Days Avatars ConceptSL 230309
PraTic Days Avatars ConceptSL 230309PraTic Days Avatars ConceptSL 230309
PraTic Days Avatars ConceptSL 230309
 

Recently uploaded

My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentationphoebematthew05
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDGMarianaLemus7
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 

Recently uploaded (20)

My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentation
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDG
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 

Investing in a good software factory and automating the build process

  • 1. How important it is to invest in a good software factory and automate the build process as much as possible ...if possible Nicolas Mas - Nicolas.Mas@gmail.com https://www.linkedin.com/in/nicolasmas
  • 2. Acknowledgment “Alone we can do so little; together we can do so much” Eric Domingo Shuang Xia Lokesh Boghte Cedric Arnoult Andrew Tiu
  • 3. What this talk won’t do ⬗ Elaborate on Yet Another Software Factory Definition ⬘ Or only if, as a consultant once told me: “a common language needs to be defined to understand each other” © Ajit Alwe ;-) ⬗ Enumerate a list of tools ⬗ Talk about any PM methodology ⬗ Show any code in action ⬗ Entertain you with funny pictures (sorry)
  • 4. So what is it going to be? ⬗ A discussion about a real experience ⬗ back to basic: breaking down a complex problem into smaller chunks and finding solution ⬗ An example of software factory designed to handle a specific problem ⬗ Bonus: Discuss if it’s worth automating the build of the software factory as well as the automation of the build process (inception style) ⬗ B Tracks: if we really have time
  • 5. Actually we have two topics here... ...and they are complementary 1. Investing in a good software factory 2. Automate the build process as much as possible
  • 6. Investing in a good software factory: YES YOU CAN! Part One:
  • 7. Quick Survey ⬗ What’s a software factory for you? ⬗ Are you using one?
  • 8. For us, it all started with a unique context... ⬗ A Java Spring project ⬘ Team of 5 developers ◆ A “A Team”, with distinct and partially overlapping skills and experience ⬘ A delivery manager ◆ NOT from a technical background ⬘ A product owner on the client side ◆ NOT from a technical background ◆ NOT collocated ⬘ Tight deadline
  • 9. ...which induced ⬗ Small team with high pressure ⬗ Delivery manager does not speak the same language as the developers ⬗ Product owner in another country ⬗ Customer dev. processes are very different ⬗ Deliverables: ⬘ Code quality ⬘ Documentation ⬘ processes on top of the usuals ⬗ Start from scratch ⬗ A bit of innovation
  • 10. So we needed to: Rethink the way we would build the product & Customize the process to build the product WHY?
  • 11. To manage the risks generated by these factors & Make sure we deliver an amazing great product which will provide our customer the greatest satisfaction (hint: bullshit)
  • 12. Moving on from there We can segregate our problem by vertical domains/aspects: ⬗ The product scope ⬗ Delivery management ⬗ Development process ⬘ Dependency Management ⬘ Code repository ⬘ Build process ⬘ Software Quality ⬘ Deployment process ⬗ Delivery process ⬗ Feedback ⬗ Communication
  • 13. Mapping ⬗ The product scope ⬗ Delivery management ⬗ Development process ⬘ Dependency Management ⬘ Code repository ⬘ Build process ⬘ Software Quality ⬘ Deployment process ⬗ Delivery process ⬗ Feedback ⬗ Communication => Jira => Human (yes!) => Maven => GitHub => Jenkins => Sonar => Jenkins => Shell => Jira => Slack
  • 14. A few remarks ⬗ The tools chosen are NOT the only one available: ⬘ Actually many !! ⬗ Rather than being a fixed structure, the Software Factory is a living system and must be design accordingly ⬗ Setup, test before the development starts ⬗ Complete transparency within the team and with the client
  • 15. What did we gain doing this? ⬗ We are confident we can deliver anything, anytime ⬗ Newcomers to the project are not a potential problem ⬗ We minimized the impact of human factor ⬗ The delivery pipe is unlikely to be a blocking factor for the project ⬘ We won’t be able to put it on the tools if we fail
  • 16. Is there anything else we can improve? ⬗ We designed our software factory in such a way that our main point of failure is the human factor How could we minimize that?
  • 17. Automate as much as possible the build process: YES YOU CAN! (BUT...) Part Two:
  • 18. What we can’t automate ⬗ code commit by the developers ⬗ stakeholders communication ⬘ at least partially (Slack technically allows us to do it, but can’t adapt to the stakeholder feedback).
  • 19. What we decided not automate ⬗ Code review ⬗ Delivery ⬘ (YES this can be discussed … and YES I am aware of continuous delivery).
  • 20. So finally, what we can automate The build process + UAT deployment “Jenkins is an open source continuous integration tool written in Java. Jenkins provides continuous integration services for software development. It is a server-based system running in a servlet container such as Apache Tomcat.”
  • 21. ⬗ A maven build is triggered (code pulled from github) ⬗ Shell scripts deploy on UAT targets ⬗ Postprocess action: email + Slack message
  • 22. So finally, what we can automate The software quality - SonarQube “SonarQube is an open platform for continuous inspection of code quality”
  • 25. So how did it go? ⬗ Anytime delivery was real ⬘ BUT complexity increased with time and integration with other systems (what a surprise!) ⬗ Code coverage tools sides effects ⬘ Require dev to code in a sometimes not so efficient manner ⬗ Client communication is better ⬘ Scope management ⬘ improved transparency Delivery happened no matter what
  • 26. Was it worth it? YES
  • 27. Bonus: Automating the creation and setup of the software factory Can or Cannot? Part Three:
  • 28. Automating the whole thing ⬗ We want to be able to recreate from a master the whole software factory stack ⬘ In case of a crash (but can it be stateful?) ⬘ A new project is started in //, with similar constraints ⬗ We want to maintain a backup infra just in case ⬘ How do we keep them aligned? ⬘ AWS + local VBOx for example
  • 29. Our current setup (manual) What we manually setup so far DB Stack CI Stack Staging Stack Github virtualbox vagrant Physical server Ubuntu server Ubuntu serverUbuntu server
  • 30. Dev machine: MB Pro ⬗ Eclipse IDE + JDK 1.7 ⬗ Spring 4.0.4 + Apache CXF ⬗ Maven 3.0.3 ⬗ Tomcat 7 ⬗ Findbugs Staging Server: VM: Ubuntu 14.04 LTS ⬗ JDK 1.7.0_11 ⬗ Tomcat 7.0.37 DB Server: VM: Ubuntu 14.04 LTS ⬗ Oracle Entreprise Edition 11.2.0.3 ⬗ Gemfire CI Server: VM: Ubuntu 14.04 LTS ⬗ JDK 1.7.0_11 ⬗ Jenkins ⬗ Archiva ⬗ GitHub ⬗ Jira Agile ⬗ Jira Crucible ⬗ Sonar Cube 4.1.2 Infra: Ubuntu 14.04 LTS ⬗ Vagrant ⬗ Saltstack ⬗ packer ⬗ Virtualbox
  • 31. Our target through automation DB Stack CI Stack Staging Stack Github virtualbox vagrant AWS Physical server WebApp - Software Factory Builder Ubuntu serverUbuntu serverUbuntu server
  • 32. The Software Factory Builder ⬗ Node.js (locally hosted) front end ⬗ Underlying technologies (main ones) ⬘ Packer (OS baking) ⬘ SaltStack (provisioning) ⬘ Vagrant (VM management)
  • 33. What it looks like ⬗ A node.js interface ⬘ You can imagine anything for the VM type (VMWare, digital ocean etc.)
  • 37. Pros & Cons What’s cool.. ⬗ Traditionally, software factories are built once and used for projects for years. Stacks are updated, patched, reconfigured => lower and lower reliability. In our case, we can rebuild it every time ⬗ We can duplicate on different infrastructures local or in the cloud ⬗ Once defined, the build pattern is fast to execute What’s not… ⬗ Maintaining the setup and testing it before a “gold” version takes time and is complexe => it’s an upfront investment you might not benefit from ⬗ You can’t automate 100%, rather 90%. So you still need a bit of work
  • 38. Bonus Track - Did you know ? “The mother of all demos” http://en.wikipedia.org/wiki/The_Mother_of_All_Demos ⬗ Douglas Engelbart's December 9, 1968 ⬗ 90-minute live public demonstration of the online system, NLS, they had been working on since 1962 ⬗ 1000 attendees and a demo of almost all features we use today ⬘ Mouse ⬘ hypertext, object addressing and dynamic file linking ⬘ shared-screen collaboration involving two persons at different sites communicating over a network with audio and video interface. http://web.stanford.edu/dept/SUL/library/extra4/sloan/mousesite/1968Dem o.html
  • 40. Bye Bye ! Nicolas Mas - Nicolas.Mas@gmail.com https://www.linkedin.com/in/nicolasmas

Editor's Notes

  1. How important it is to invest in a good software factory and automate the build process as much as possible. This is what is going to keep us busy for the next 45 minutes.
  2. First, this is a team effort. So here is the team.
  3. Why? list of tools: Because it does not make sense, and we would only stay at the surface of the topic PM Methodo: we want this discussion being still relevant no matter which past/present/future PM approach is used Code in action: too complex and murphy’s law !Funny pics: Because @Lokesh said so, and like with Chuck Norris, you obey
  4. A discussion: something that actually happened Back to basics: we are software developers, we have one very usual way to solve problems Example of SF: What we did in a project, how we came to this specific set of tools
  5. History: since grad, only notepad, ne IDE and the JVM. It did not prevent me to graduate in computer science. projects at that time: one person project, no customer, all poc only constraint was the delivery. Which means the delivery itself does not justify a soft factory. When does this statement deprecates? Is there one version of the software factory?
  6. So we had this java spring project to do. A team 5 developers, an agile delivery manager (who is not from a technical background), one product owner on the client side who is not collocated and a very tight.
  7. Underlying factors: small team with high pressure (what happens if one is sick?) Delivery manager does not speak the same language as the developers Product owner in another country Customer development processes are different Deliverables includes code quality, documentation, processes among the usual Start from scratch A bit of innovation
  8. All theses asked us to rethink the way we would build the product and customize the process to build the product.
  9. Why? - or let’s put it simply: we want to survive the project… Delivering is the drive here. We need to make sure we deal we what we can manage in order to be able to handle all the unexpected things which will pour on the project.. + murphy’s law
  10. Let’s do it the developper way: let’s break the big problem into smaller chunk and solve them: we can segregate by vertical domains (the obvious one) This is important because it will allow us to map the proper tool with the right problem to solve
  11. This becomes our software factory
  12. Choice of tools: a few examples (github/SVN/Perforce,Gradel,TeamCity, ECL Emma … etc.) Our SF is actually a living system which is evolving with the product being developed: all the component can be changed/removed/adapated. It should be non intrusive.
  13. Back to our product: the SF made us confident to deliver anything, anytime. We minimized the impact of human factor: which is happening only when required. The delivery pipe is unlikely to be a blocking factor
  14. Now our main point of failure is the human factor. We can address as much as possible by automating everything we can within the software factory.
  15. Build process in a general manner of speaking
  16. [LB] We can automate stakeholder communication a bit with Slack, with feeds from JIRA and Jenkins and Github, some part of stakeholder communication (at least the technical part) can be automated.
  17. Then there are some things that we decided NOT to be automated: Code review
  18. examples Build process (jenkins) (+ examples) Software Quality (ECL EMMA) (+ examples) Deployment process (shell script) (+ examples)
  19. Many tools: (squale, metricsware, kalistix, cast etc.)
  20. This is a screenshot from Sonar Code Coverage plugin, it works perfectly well with standard JUnit which means that its easy to add on, we do not have to make any change to the way we write unit tests. Sonar uses ECL EMMA for Code Coverage analysis. Sonar also has IDE plugins (Ecliipse, IntelliJ, etc) so doing this sort of analysis within IDE during development is one click. On the top you can see that this class has a 62.5% coverage, what that means is out of all the lines of codes written in that class, the unit tests we have execute about 63% lines and generally speaking are safe because they are tested. It does not check whether unit tests are of any meaning or not. One can just write some unit tests and not have any assertions and still have this number high, which really does not mean anything :) It can highlight code that is not covered and code that is covered. It can also show branch and loop coverage, which means that it will show all possible conditional coverage. Which is a good thing again if unit tests are meaningful. M
  21. This is Sonar with Findbugs plugin. It has a lot of good coding rules and if some code violates that it will highlight them like throwing java.lang.Exception for example. It also categorises them as Critical, Major etc. Sonar itself has other add on features to manage the issues. This has plus and minus, few things identified here are good but in long term this start to somehow force developer to write code in a different way which does not feel good.
  22. So how did it go? (how this SF helped us to address our concerns) Anytime delivery was real. However It tends to degrade the anytime delivery Code coverage tools: example: to increase the test coverage, we have tests which do not assert anything. Client communication is better: We do know what is going on.
  23. Was the effort to think, design and build the software factory worth it? made us explore tech we use but never try to understand reusability scalability SF architecture: virtualized & automated Getting it out of the way
  24. So far the creation of the SF is manual, and time consuming. Can we build the software factory in an automated manner?
  25. [TODO] short description of the infra this time.
  26. Describe what the WebApp does. Dynamically setup and configure the virtual stack
  27. We first thought of automating the build after all the conf files are generated, but decided to manually call the tools to build the stack (it’s a quick prototype).
  28. Bottom line: it’s an interesting concept but more at the R&D level Middle ground: automate what is easy to automate, plus what is always used. Alternative: CoreOS + binaries in Docker containers ?