Gerrit is great, however it is also quite an important part of a bigger DevOps process. In this talk I will describe how multiple tools can be unified under a TeamForge or better DLM umbrella and what are the immediate benefits of it.
Interesting facts to mention:
CollabNet was founded in 1999 in San Francisco, VersionOne was founded in 2002 in Atlanta
Both CollabNet and VersionOne form a single company to be called CollabNet (as of August 07, 2017)
Combined portfolio includes (significant products only):
TeamForge (https://www.collab.net/products/teamforge-alm) and Lifecycle (https://www.versionone.com/product/lifecycle/overview): Application Lifecycle Management (ALM) latter one focused strongly on Agile ALM (SAFe, Scrum, Kanban, Lean, XP, …)
DevOps Lifecycle Manager (https://www.collab.net/products/devops-lifecycle-manager) and Continuum (https://www.versionone.com/product/continuum/devops): Value Stream Management (VSM) latter focused on DevOps Automation and Intelligence
The combined company has more than 300 employees worldwide and offices in US, India, UK, Netherlands & Germany
Based in Berlin office and responsible for everything about TeamForge Git/Gerrit Integration development
Active members (1 maintainer) of Gerrit community often participating in Gerrit Hackathons
It does what it is designed for: Code Reviews. Regardless of what it means for different people: from formal meeting with whole team going through the code to co-worker casual glance over the code before it gets committed.
And it does it really good :)
In addition it has quite vibrant community that responds to user requirements.
But after all this is just Code Review tool which is only single step in ALM process.
Complex domain and organizations requires proper tools and processes to support daily operations:
Acting ad-hoc (quite natural for small shops) is neither efficient nor repeatable at larger scale.
Implementation = monster app that does all and nothing
Synergy effect
The larger scale/complexity the more systematic approach is needed that involves not only right tools and processes but agile(lean) mindset focused on continuous learning/improvement.
Together it leads to operational excellence:
all about meeting (and exceeding) customer expectations in a sustainable manner!
a management philosophy based on earlier continuous improvement methodologies (Lean Thinking, Six Sigma, OKAPI and Scientific Management)
Core principles of operational excellence:
Respect every individual – create environment that empowers people to create sense of ‘ownership’
Lead with humility – willingness to seek input, carefully listen and continuously learn
Seek perfection – always identify opportunities for improvement
Assure quality at the source – 1) do not pass defects, 2) stop and fix problems, 3) respect the individual
Flow and pull value – focus on shortening lead-time from the beginning to end of value stream
Embrace scientific thinking – PDCA (plan, do, check and adjust), etc…
Focus on process – shift from finding person that introduced the failure to process that allowed it
Think systemically – understand how and why things happens
Create constancy of purpose – regardless of changing requirements and technologies keep pointing why certain things happen
Create value for the customer – every aspect should be focused on creating value for customer
Aspects of DevOps pipeline related to Gerrit that can be improved, having core principles in mind, by integrating it with external tools.
Great flexibility comes with great responsibility – one can fine tune access control but...
Trading flexibility for simplicity != one size fits all, but several well defined schemes come to rescue
Federated RBAC across projects, servers and tools = improve process compliance with centralized on- and off-boarding of project members
Operational excellence principles: focus on process, flow and pull value
Federated, unified accounts management across all tools with single point for users’ password and SSH keys management + TF users are automatically authenticated (SSO) to Gerrit
Operational excellence principles: focus on process, flow and pull value
Operational excellence principles: focus on process, flow and pull value
Software Quality aspects:
Functional: in short it is about conformance to explicitly stated functional requirements captured in User Stories and level of satisfaction experienced by end-users.
Structural - measured as compliance with good architectural and coding practices:
reliability (likelihood of potential application failures)
efficiency (key factor for applications requiring high execution speed)
security (likelihood of potential security breaches due to poor coding practices and architecture)
maintainability (usually consensus between Time-To-Market and keeping maintenance costs under control, however over-engineering is equally bad)
size (impacts maintainability)
Code Review – manually check compliance with good architectural and coding practices considering both functional and structural aspects of quality
Generate:
Requirements traceability reports
Generate defects distribution reports to improve phases/places that are especially vulnerable
Tests traceability and coverage reports
Static analysis with Errorprone, finbugs, sonar etc.
Operational excellence principles: Assure quality at the source, Focus on process, Flow and pull value
A Unified Tool Chain Visibility View is a Challenge!
Software Process Improvement:
Speed-up whole process and make more efficient
Improve quality (reduce number of end-user reported issues)
Value Stream Management – software solutions built to address problem of managing, visualizing and measuring business value throughput across complex, distributed and heterogeneous environments
Value Stream Mapping – practical exercise of mapping DevOps toolchain to uncover key bottlenecks in delivering value to customers (stakeholders)
Measure business value across application pipeline and answer questions like
Are teams delivering products faster and better?
Where is the time saved with a new process or feature delivery?
How are resources being allocated for new projects vs. reworking existing applications and services?
Monitor & predict
monitor entire DevOps toolchain (integration with popular open source and commercial tools in the market + ability to create custom integrations for homegrown tools), alert and predict (through trend analysis) parts that could cause slow downs/bottlenecks
Continuous feedback
Create continuous feedback loop across the entire application lifecycle – from plan, build, test, deploy, operations, and back to plan – facilitating effective collaboration between Dev, Test, Sec and Ops teams
Operational excellence principles: Seek Perfection, Flow and pull value, Embrace scientific thinking, Think systematically, Focus on process, Create value for the customer