An Introduction to Managing Components in your Software Supply Chain
Manfred Moser - #simpligility - www.simpligility.com
Sonatype - www.sonatype.com
Frameworks, Libraries, … Plumbing you don’t want to write yourself. Like Logging, IoC, persistence layer, ORM, widgets,…
You get them easily by declaring dependencies with Maven, Gradle, nuget, npm…
Third party components AND everything you create
What is the percentage of components in a typical application?
80-90% - so components are very important |
How many components can be found in an average application?
More than 100 ! |
Writing applications is assembling components! |
Just like for traditional manufacturing
Components are integral part of Software Development Life Cycle (SDLC)
It is an endless circle of activities:
When do software supply chain management efforts stop?
When all production deployments are turned off! |
Not when development stops. |
Open source projects are your suppliers! |
Demo - check forks, followers and committers on Github! |
Don’t be typical passive consumer only! Talk about tfs-plugin… |
Each additional vendor
So having less is easier. |
We know that we use lots of components
Where do we get them from? |
Very important as warehouses/distributors in their eco-systems
Run your own local warehouse! |
→ Use a repository manager!
Are people following this easily implemented best practice?
No!
→ Nexus is a key component of your enterprise development infrastructure
→ Way better than manual management or ignoring the need
Yet easy to implement… and open source! |
Now that you optimized getting components…
You will be surprised what you find! |
mvn dependency:tree
or similar analysis
Challenge yourself to produce a Bill of Materials
Demo time! |
Bill of Material - tracking production applications
Or so they think.
But still - don’t be afraid of using what is best for the job. Find the right balance. |
You are responsible for all components used in your application! |
Sonatype Application Health Check analysis of 1500+ applications
From the Top 100 components downloaded from the Central Repository - how many are old?
27 or about a third are out of date! |
Not too surprising, since a typical component has 3-4 releases per year.
How many versions of each library are used at Google?
One or two are mandated in most cases! |
One critical part of DevOps - Release Early, Release Often! Iterate Faster!
Why?
Just like release often - upgrade component versions often!
And just like in DevOps
→ The more often you release(upgrade), the better you get at it.
An average large enterprise downloads about 250k components from the Central Repository per year.
How many have known security vulnerabilities?
Approximately 15k! |
Some of them are running in production right now…
→ Lip service mostly or struggling.
Research is very difficult, laborious task
BUT
Approx. 280k components in Central Repository have restrictive licenses.
Similar to security issue - laborious and difficult task
Tools to the rescue |
Follow DevOps ideas again..
Define policies e.g.
→ Things do not add up, too painful to work with.
Finding agreement on policies can be hard too! |
Once you agree on a policy…
→ More and more tools for different stacks are emerging!
Expands Nexus
Hopefully we have time for a demo… |
Don’t wait! |
Questions, Remarks & Discussion
Slides on OSCON site, http://goo.gl/cZ04Is or email manfred@sonatype.com now |