DevOps Practices and Tools of a Small Company in love with Open Source
1. DevOps Practices and Tools
of a Small Company
in love with Open Source
Francesco Chicchiriccò, Industrial Keynote @ QUDOS 2017
L’Aquila, April 27th
2017
2. About me: Tirasa...
● 2001: MD in Computer Science
● 2003: starts ePOSSE
● 2007: ePOSSE is preferred
IAM delivery partner for Sun Microsystems Italia
● 2008: ePOSSE joins the Dutch Everett group as Everett Italia
● 2011: starts Tirasa, focusing on Open Source IAM
3. ...and more
● At The Apache Software Foundation:
○ Member
○ V.P. Apache Syncope
○ Cocoon, Olingo, jClouds, CXF, OpenJPA, PonyMail…
● Google Summer of Code mentor
● At GitHub:
4. About Tirasa: Inception
● After Sun Microsystem acquisition by Oracle, the future of
Waveset was uncertain
● 2010: Syncope project started to fill this gap
○ 100% Open Source
○ Based on Sun’s Identity Connectors, now ConnId
● 2011: Tirasa started, to provide enterprise services around
Syncope and other Open Source IAM technologies
● 2012: Tirasa donates Syncope IdM to The ASF, and it
becomes Apache Syncope
5. About Tirasa: Today
● Small (10), highly skilled staff
○ 1 ASF member
○ 4 PMC members
○ 1 ASF committer
● Create and leverage Open Source tools for Enterprise
Integration
6. About Tirasa: Services and Expertise
● Identity & Access Management (IAM)
○ Tailored Single-Day Workshop
○ Proof-of-Concept
○ Training
○ Development Support
Do it yourself and speed up implementation
○ Production Support
Take care of your rolled-out systems
● Delivery, Consultancy and System Integration
7. About Tirasa: CHOReVOLUTION
● EU funded project via H2020
● Dynamic and secured choreographies via distributed
coordination of services
● Tirasa responsible of developing Apache Syncope and
ConnId as security enablers of the platform
8. The Apache Syncope project
● Inception by Tirasa in 2010
● Entered ASF incubator in February 2012
● Graduated as TLP in November 2012
● Active community
○ 18 committers, 6 contributors
○ > 200 mailing list subscribers
○ 40 releases
● Joined GSoC in 2016
12. Learned from The ASF: Open Development*
● Not (necessarily) the same as Open Source
● Many eyeballs
● Written communication, asynchronous, distributed
● No meetings ??!?
● Quick feedback
● Learn from others
● Don’t be afraid to make mistakes in public
* courtesy of bdelacretaz@apache.org
13.
14. Open Development basics
● Issue tracker for everything:
○ features
○ bugs
○ test setup
○ server upgrades
● Discoverable repository:
○ code
○ node / container / VM
configuration & orchestration
● Continuous integration
15. Open Development: (1) Share
● Move away from 1:n / m:1 / n:k
e-mails to central hub
(mailing list, issue tracker,
code repository, …)
● Speak in URLs:
○ http://my.tracker/ISSUE-XXX
○ http://my.archive/xxx-yyy-zzz.html
○ http://my.code/xyx-a5f-ssd-556v
16. Open Development: (2) Real-time updates
● The project’s activity stream is populated by events from:
○ issue tracker
○ mailing list(s)
○ code repository
○ CI
● Who needs status meetings??!?
17. Open Development: (3) Broadcast
● Create an issue on the tracker rather than asking Fabio to fix:
○ code bug / improvement / refinement
○ missing / wrong documentation
○ deployments
○ configuration
● Traceable, Shareable
● Help building release notes
● Kanban board-able!
18. Open Development: (4) Searchable archives
● Live, self-updating knowledge base of project information:
○ issue tracker
○ mailing list(s)
○ code repository
○ CI
● Nothing helps more to get new project members up to speed
19. The five Wisdoms of Open Development
1. If it didn’t happen on the dev ML, it didn’t happen
2. Whatever you’re working on, it must be backed by an issue
on the tracker
3. If it’s not in the source code control system, it doesn’t exist
4. If it’s important, it needs a permanent URL
5. What happened while you were away?
Check the activity stream and archives.
20. Bring in the robots
● Automatic unit tests running on all
incoming contributions
● Automatic deployments for end-to-end
tests
● Notifications back to issue tracker /
mailing list
● Nightly builds
24. Scenario 1: Apache Syncope
Push to https://git-wip-us.apache.org/repos/asf/syncope.git
1. Notifies commits@syncope.apache.org
2. Triggers https://builds.apache.org/ (Jenkins)
(errors back to dev@syncope.apache.org)
a. Deploys to http://repository.apache.org/content/groups/snapshots/
b. Deploys to http://syncope-vm.apache.org:9080/
3. Comments https://issues.apache.org/jira/browse/SYNCOPE
4. R / O mirror to https://github.com/apache/syncope.git
a. Triggers https://travis-ci.org/apache/syncope/
b. Triggers https://ci.appveyor.com/project/ApacheSoftwareFoundation/syncope
25. Scenario 2: ConnId
Push to https://github.com/Tirasa/ConnId.git
1. Notifies connid-dev@google-groups.com
2. Triggers http://jenkins.tirasa.net
(errors back to connid-dev@google-groups.com)
3. Comments https://connid.atlassian.net/projects/BASE/
4. Triggers https://travis-ci.org/Tirasa/ConnId/
a. Deploys to https://oss.sonatype.org/content/repositories/snapshots
5. Triggers https://scan.coverity.com/projects/tirasa-connid
26. Scenario 3: Open Source IAM demo
Push to
https://sra.tirasa.net/gitbucket/git/Tirasa/SyncopeVMDemo.git
1. Notifies syncopevmdemo@tirasa.net
2. Triggers http://jenkins.tirasa.net
(errors back to syncopevmdemo@tirasa.net)
a. Build Docker image
b. Deploys to private registry
c. Synchronize with Dropbox for public download (on request)
3. Comments https://sra.tirasa.net/gitbucket/Tirasa/SyncopeVMDemo/issues