<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Agility Archives - OVHcloud Blog</title>
	<atom:link href="https://blog.ovhcloud.com/tag/agility/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.ovhcloud.com/tag/agility/</link>
	<description>Innovation for Freedom</description>
	<lastBuildDate>Fri, 08 Jan 2021 10:55:27 +0000</lastBuildDate>
	<language>en-GB</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://blog.ovhcloud.com/wp-content/uploads/2019/07/cropped-cropped-nouveau-logo-ovh-rebranding-32x32.gif</url>
	<title>Agility Archives - OVHcloud Blog</title>
	<link>https://blog.ovhcloud.com/tag/agility/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Agile telemetry at OVHCloud – Part III</title>
		<link>https://blog.ovhcloud.com/agile-telemetry-at-ovhcloud-part-iii/</link>
		
		<dc:creator><![CDATA[Jeremy Hennart]]></dc:creator>
		<pubDate>Fri, 10 Apr 2020 15:19:30 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Agile Telemetry]]></category>
		<category><![CDATA[Agility]]></category>
		<category><![CDATA[Methodology]]></category>
		<category><![CDATA[Open Source]]></category>
		<guid isPermaLink="false">https://www.ovh.com/blog/?p=17016</guid>

					<description><![CDATA[This article is the third part in a series of articles, we recommend reading Part 1 and Part 2 first: The birth of agile telemetry at OVHcloud – Part I Agile telemetry at OVHCloud – Part II In the final post relating to agile telemetry, we focus on the micro-vision. In any project, keeping micro [&#8230;]<img src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2Fagile-telemetry-at-ovhcloud-part-iii%2F&amp;action_name=Agile%20telemetry%20at%20OVHCloud%20%E2%80%93%20Part%20III&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></description>
										<content:encoded><![CDATA[
<p>This article is the third part in a series of articles, we recommend reading Part 1 and Part 2 first:  </p>



<ul class="wp-block-list"><li><a href="https://www.ovh.com/blog/the-birth-of-agile-telemetry-at-ovhcloud-part-i/" data-wpel-link="exclude">The birth of agile telemetry at OVHcloud – Part I</a></li><li><a href="https://www.ovh.com/blog/agile-telemetry-at-ovhcloud-part-ii/" data-wpel-link="exclude">Agile telemetry at OVHCloud – Part II</a></li></ul>



<p>In the final post relating to agile telemetry, we focus on the micro-vision. In any project, keeping micro and macro vision separate is vital for effective communication.</p>



<h2 class="wp-block-heading">Macro and Micro vision</h2>



<p>For development teams, micro-vision is crucial. While a macro perspective is important for meeting goals such as delivery deadlines, overseeing the micro details of a development ensures a product is good quality. Here is how we managed to achieve this important goal: </p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img fetchpriority="high" decoding="async" width="661" height="434" src="https://www.ovh.com/blog/wp-content/uploads/2020/02/image-19.png" alt="" class="wp-image-17067" srcset="https://blog.ovhcloud.com/wp-content/uploads/2020/02/image-19.png 661w, https://blog.ovhcloud.com/wp-content/uploads/2020/02/image-19-300x197.png 300w" sizes="(max-width: 661px) 100vw, 661px" /><figcaption><em><strong>Macro and Micro Vision</strong></em></figcaption></figure></div>



<h2 class="wp-block-heading">Micro-Vision</h2>



<div class="wp-block-image"><figure class="aligncenter size-large"><img decoding="async" width="455" height="128" src="https://www.ovh.com/blog/wp-content/uploads/2020/02/image-20.png" alt="" class="wp-image-17068" srcset="https://blog.ovhcloud.com/wp-content/uploads/2020/02/image-20.png 455w, https://blog.ovhcloud.com/wp-content/uploads/2020/02/image-20-300x84.png 300w" sizes="(max-width: 455px) 100vw, 455px" /><figcaption><strong><em>Three data block</em></strong></figcaption></figure></div>



<p>This part of our Dashboard displays three important pieces of information relating to the progress of our sprints: the expected, the unexpected and the reason for the unexpected. </p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img decoding="async" width="376" height="217" src="https://www.ovh.com/blog/wp-content/uploads/2020/03/image.png" alt="" class="wp-image-17379" srcset="https://blog.ovhcloud.com/wp-content/uploads/2020/03/image.png 376w, https://blog.ovhcloud.com/wp-content/uploads/2020/03/image-300x173.png 300w" sizes="(max-width: 376px) 100vw, 376px" /><figcaption><strong><em>BurdownChart</em></strong></figcaption></figure></div>



<p><strong>(1) </strong>This is the progress of the current sprint and its percentage of completion. The percentage of completion is simply computed: </p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="232" height="58" src="https://www.ovh.com/blog/wp-content/uploads/2020/02/image-21.png" alt="" class="wp-image-17069"/></figure></div>



<p><strong>(2)</strong> This highlights the number of times the development team has gone out of its sprint to fix something and the  completion times. The attached graph shows the peak days when the team was mobilized. </p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="383" height="200" src="https://www.ovh.com/blog/wp-content/uploads/2020/03/image-1.png" alt="" class="wp-image-17380" srcset="https://blog.ovhcloud.com/wp-content/uploads/2020/03/image-1.png 383w, https://blog.ovhcloud.com/wp-content/uploads/2020/03/image-1-300x157.png 300w" sizes="auto, (max-width: 383px) 100vw, 383px" /><figcaption><em><strong>Impediment Chart</strong></em></figcaption></figure></div>



<p>To report this type of information:</p>



<ul class="wp-block-list"><li>Teams add in the &#8220;Label&#8221; field on JIRA the title: impediment.</li><li>They log the time spent in the &#8220;log work&#8221; field on JIRA.</li></ul>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="398" height="86" src="https://www.ovh.com/blog/wp-content/uploads/2020/03/image-2.png" alt="" class="wp-image-17384" srcset="https://blog.ovhcloud.com/wp-content/uploads/2020/03/image-2.png 398w, https://blog.ovhcloud.com/wp-content/uploads/2020/03/image-2-300x65.png 300w" sizes="auto, (max-width: 398px) 100vw, 398px" /></figure></div>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="404" height="45" src="https://www.ovh.com/blog/wp-content/uploads/2020/03/image-3.png" alt="" class="wp-image-17385" srcset="https://blog.ovhcloud.com/wp-content/uploads/2020/03/image-3.png 404w, https://blog.ovhcloud.com/wp-content/uploads/2020/03/image-3-300x33.png 300w" sizes="auto, (max-width: 404px) 100vw, 404px" /></figure></div>



<p>The accumulated information is then visible in our dashboard. This helps us to understand why a sprint does not progress. When teams go through weeks of troubleshooting, we can explain why.  </p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><em>NB: It is essential to separate the sprint from your impediments. These two pieces of information allow you to compare the &#8220;expected&#8221; and the &#8220;unexpected&#8221;. This allows us to propose 2 types of graphs.</em></p></blockquote>



<p><strong>(3)</strong> The last part highlights why the teams intervened when they came out of their sprint. This precious data gives us a clear vision of the situation. If a team spends 90% of its time dealing with a bug, or troubleshooting in support, it informs decisions making processes for future projects. </p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="192" height="200" src="https://www.ovh.com/blog/wp-content/uploads/2020/03/image-4.png" alt="" class="wp-image-17386"/><figcaption><em><strong>Nature of Impediment</strong></em></figcaption></figure></div>



<p>Example : We provide 30 hours of bug correction time during the sprints; should we focus on creating something new, or reducing the technical debt?</p>



<p><strong>Conclusion : Today, Agile telemetry is used by 19 teams at OVHCloud. It facilitates and allows us to measure the performance and progress of the teams remotely, and in real time. It also provides us with the up-to-date information we need to conduct our projects. It is this methodology that has won Innovations Awards for OVHCloud employees.</strong></p>



<p>If you want to dive into Agile Telemetry you can do it now!! Simply grab our <a href="https://github.com/ovh/jerem" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">open source dashboard and our bot Jerem.</a></p>
<img loading="lazy" decoding="async" src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2Fagile-telemetry-at-ovhcloud-part-iii%2F&amp;action_name=Agile%20telemetry%20at%20OVHCloud%20%E2%80%93%20Part%20III&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Agile telemetry at OVHCloud &#8211; Part II</title>
		<link>https://blog.ovhcloud.com/agile-telemetry-at-ovhcloud-part-ii/</link>
		
		<dc:creator><![CDATA[Jeremy Hennart]]></dc:creator>
		<pubDate>Fri, 28 Feb 2020 14:33:38 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Agile Telemetry]]></category>
		<category><![CDATA[Agility]]></category>
		<category><![CDATA[Methodology]]></category>
		<guid isPermaLink="false">https://www.ovh.com/blog/?p=16922</guid>

					<description><![CDATA[In our previous post, we outlined the reasons that led us to create an Agile monitoring tool. To capitalise on this collective success, we needed to: Establish an efficient, simple and universally-accepted methodology to support the development teams. Set out the different visions necessary for the good handling of a project. Define the micro vision, [&#8230;]<img src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2Fagile-telemetry-at-ovhcloud-part-ii%2F&amp;action_name=Agile%20telemetry%20at%20OVHCloud%20%26%238211%3B%20Part%20II&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></description>
										<content:encoded><![CDATA[
<p>In our <a href="https://www.ovh.com/blog/the-birth-of-agile-telemetry-at-ovhcloud-part-i/" data-wpel-link="exclude">previous post</a>, we outlined the reasons that led us to create an Agile monitoring tool. To capitalise on this collective success, we needed to:</p>



<ul class="wp-block-list"><li>Establish an efficient, simple and universally-accepted methodology to support the development teams.</li><li>Set out the different visions necessary for the good handling of a project.</li><li>Define the micro vision, for development teams. </li><li>Define the macro vision, for sponsors.</li><li>Industrialise this innovative concept for other teams at OVHcloud.</li></ul>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="537" src="https://www.ovh.com/blog/wp-content/uploads/2020/02/BBDA314D-616B-4B02-BB01-1D457F2F3AFF-1024x537.jpeg" alt="" class="wp-image-17238" srcset="https://blog.ovhcloud.com/wp-content/uploads/2020/02/BBDA314D-616B-4B02-BB01-1D457F2F3AFF-1024x537.jpeg 1024w, https://blog.ovhcloud.com/wp-content/uploads/2020/02/BBDA314D-616B-4B02-BB01-1D457F2F3AFF-300x157.jpeg 300w, https://blog.ovhcloud.com/wp-content/uploads/2020/02/BBDA314D-616B-4B02-BB01-1D457F2F3AFF-768x403.jpeg 768w, https://blog.ovhcloud.com/wp-content/uploads/2020/02/BBDA314D-616B-4B02-BB01-1D457F2F3AFF.jpeg 1200w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure></div>



<p>As with every new challenge, there was an element of complexity. OVHcloud is an international company, and our teams are distributed all around the world. The tool therefore needed to be easily readable and simple to maintain, and the indicators had to update automatically, as our teams work in a changing context where there are often unplanned events</p>



<p>We needed to create a tool that would allow us to remotely measure the performance and progress of teams in real time, and update the information needed to manage a project. This is our telemetry.</p>



<p><em>&#8220;Before engaging a development team, create your construction plans&#8230; draw!&#8221;</em> With this idea in mind, I started to sketch a few drafts on a notebook, then on software.</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="254" height="187" src="https://www.ovh.com/blog/wp-content/uploads/2020/02/image.png" alt="" class="wp-image-16923"/><figcaption><em><strong>First Wireframe of Agile Telemetry</strong></em></figcaption></figure></div>



<p>This first sketch highlighted what I wanted to show my teams. We could track our progress on every subject we were working on (the Epics we talked about in part I). We were able to see if the roadmap was achievable, based on the rhythm of the team, and measure the team&#8217;s performance. Finally, we had a tool that reconciled the micro and macro visions.</p>



<h3 class="wp-block-heading">But how do you make this board come alive?</h3>



<p>At OVHcloud we use a ticketing tool: JIRA. This tool helps us in our everyday project organisation. However, it doesn&#8217;t show the information we need. Nevertheless, we can make it talk&#8230; </p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="243" src="https://www.ovh.com/blog/wp-content/uploads/2020/02/5DC54DCC-C6B8-4C2A-AE4D-B95CFECDCF08-1024x243.jpeg" alt="" class="wp-image-17236" srcset="https://blog.ovhcloud.com/wp-content/uploads/2020/02/5DC54DCC-C6B8-4C2A-AE4D-B95CFECDCF08-1024x243.jpeg 1024w, https://blog.ovhcloud.com/wp-content/uploads/2020/02/5DC54DCC-C6B8-4C2A-AE4D-B95CFECDCF08-300x71.jpeg 300w, https://blog.ovhcloud.com/wp-content/uploads/2020/02/5DC54DCC-C6B8-4C2A-AE4D-B95CFECDCF08-768x182.jpeg 768w, https://blog.ovhcloud.com/wp-content/uploads/2020/02/5DC54DCC-C6B8-4C2A-AE4D-B95CFECDCF08.jpeg 1355w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Based on this concept, we and the teams have built a metrics table with the GRAFANA tool.</p>



<h3 class="wp-block-heading">This is our Agile telemetry</h3>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="455" height="299" src="https://www.ovh.com/blog/wp-content/uploads/2020/02/image-17.png" alt="" class="wp-image-16956" srcset="https://blog.ovhcloud.com/wp-content/uploads/2020/02/image-17.png 455w, https://blog.ovhcloud.com/wp-content/uploads/2020/02/image-17-300x197.png 300w" sizes="auto, (max-width: 455px) 100vw, 455px" /><figcaption><strong><em>Agile Telemetry Dashboard</em></strong></figcaption></figure></div>



<p>In this second blog post, we will be focusing on the macro vision. The next post will look at the micro vision part. 😉</p>



<h3 class="wp-block-heading">Macro vision</h3>



<p>This part of the table gives us a MACRO view of the progression throughout the quarter, and the associated charts.</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="455" height="173" src="https://www.ovh.com/blog/wp-content/uploads/2020/02/image-18.png" alt="" class="wp-image-16960" srcset="https://blog.ovhcloud.com/wp-content/uploads/2020/02/image-18.png 455w, https://blog.ovhcloud.com/wp-content/uploads/2020/02/image-18-300x114.png 300w" sizes="auto, (max-width: 455px) 100vw, 455px" /><figcaption><em><strong>In this macro part, there are four data blocks</strong></em></figcaption></figure></div>



<p></p>



<h4 class="wp-block-heading">1<sup>st</sup> data block: Quarter KPIs</h4>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="455" height="157" src="https://www.ovh.com/blog/wp-content/uploads/2020/02/image-4.png" alt="" class="wp-image-16927" srcset="https://blog.ovhcloud.com/wp-content/uploads/2020/02/image-4.png 455w, https://blog.ovhcloud.com/wp-content/uploads/2020/02/image-4-300x104.png 300w" sizes="auto, (max-width: 455px) 100vw, 455px" /><figcaption><em><strong>Some KPIs to drive our roadmap</strong></em></figcaption></figure></div>



<ul class="wp-block-list"><li><strong>(A)</strong> <strong>Predictability</strong>. Are you able to deliver all projects/requests? With this indicator, top management and development teams can monitor their capacity regarding deadlines. We are able to monitor this data with the following formula:</li></ul>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="426" src="https://www.ovh.com/blog/wp-content/uploads/2020/02/5FD8C904-2C9B-4185-914A-5933EDC94DEA-1024x426.jpeg" alt="" class="wp-image-17240" srcset="https://blog.ovhcloud.com/wp-content/uploads/2020/02/5FD8C904-2C9B-4185-914A-5933EDC94DEA-1024x426.jpeg 1024w, https://blog.ovhcloud.com/wp-content/uploads/2020/02/5FD8C904-2C9B-4185-914A-5933EDC94DEA-300x125.jpeg 300w, https://blog.ovhcloud.com/wp-content/uploads/2020/02/5FD8C904-2C9B-4185-914A-5933EDC94DEA-768x319.jpeg 768w, https://blog.ovhcloud.com/wp-content/uploads/2020/02/5FD8C904-2C9B-4185-914A-5933EDC94DEA.jpeg 1186w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<ul class="wp-block-list"><li><strong>(B)</strong> <strong>Quarter progression</strong>. Shows the completed parts of the quarter.</li></ul>



<ul class="wp-block-list"><li><strong>(C)</strong> <strong>Team velocity.</strong> The number of story point completed per day. With this information, we are able to built our future sprints, and maintain the team&#8217;s rhythm.</li></ul>



<ul class="wp-block-list"><li><strong>(D) Average impediment</strong>. This information is critical to building the next sprint and estimating the security coefficient. </li></ul>



<h4 class="wp-block-heading">Example</h4>



<p>Let&#8217;s say we have a seven-person team, with a capacity of 350 hours per sprint (7 people x 5 hours/day x 10 days). If our team logged 58 hours as impediments during a sprint, we could use this information to tailor the security coefficient for the next sprint.</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="425" src="https://www.ovh.com/blog/wp-content/uploads/2020/02/73E97825-58A3-4837-9D34-B85DEF56D2DE-1024x425.jpeg" alt="" class="wp-image-17241" srcset="https://blog.ovhcloud.com/wp-content/uploads/2020/02/73E97825-58A3-4837-9D34-B85DEF56D2DE-1024x425.jpeg 1024w, https://blog.ovhcloud.com/wp-content/uploads/2020/02/73E97825-58A3-4837-9D34-B85DEF56D2DE-300x125.jpeg 300w, https://blog.ovhcloud.com/wp-content/uploads/2020/02/73E97825-58A3-4837-9D34-B85DEF56D2DE-768x319.jpeg 768w, https://blog.ovhcloud.com/wp-content/uploads/2020/02/73E97825-58A3-4837-9D34-B85DEF56D2DE.jpeg 1437w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure></div>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="429" height="292" src="https://www.ovh.com/blog/wp-content/uploads/2020/02/FD0634D0-A498-45AF-BC0E-FB32F198C480.jpeg" alt="" class="wp-image-17243" srcset="https://blog.ovhcloud.com/wp-content/uploads/2020/02/FD0634D0-A498-45AF-BC0E-FB32F198C480.jpeg 429w, https://blog.ovhcloud.com/wp-content/uploads/2020/02/FD0634D0-A498-45AF-BC0E-FB32F198C480-300x204.jpeg 300w" sizes="auto, (max-width: 429px) 100vw, 429px" /></figure></div>



<p>On average, the team use 17% of their time to resolve impediments during a sprint. With this information, we are able to make a <strong>security coefficient</strong>. </p>



<h4 class="wp-block-heading">2<sup>nd</sup> data block: Sum of Roadmap Epics</h4>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="455" height="222" src="https://www.ovh.com/blog/wp-content/uploads/2020/02/image-7.png" alt="" class="wp-image-16930" srcset="https://blog.ovhcloud.com/wp-content/uploads/2020/02/image-7.png 455w, https://blog.ovhcloud.com/wp-content/uploads/2020/02/image-7-300x146.png 300w" sizes="auto, (max-width: 455px) 100vw, 455px" /></figure></div>



<p>This table collects the expected epics. It shows the number of story points evaluated by the teams, the number of points they have already completed, the number of tasks &#8220;not estimated&#8221;, and the rate of progress. With this table, we can give figures concerning a progression.  </p>



<h4 class="wp-block-heading">3<sup>rd</sup> data block: Quarter Completion</h4>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="353" height="209" src="https://www.ovh.com/blog/wp-content/uploads/2020/02/image-8.png" alt="" class="wp-image-16931" srcset="https://blog.ovhcloud.com/wp-content/uploads/2020/02/image-8.png 353w, https://blog.ovhcloud.com/wp-content/uploads/2020/02/image-8-300x178.png 300w" sizes="auto, (max-width: 353px) 100vw, 353px" /><figcaption><strong><em>This table give some information during each week.</em></strong></figcaption></figure></div>



<ol class="wp-block-list"><li><strong>Epic completion </strong>(<strong>1</strong>): During each week, we can watch the roadmap&#8217;s progression. Sometimes, we will see the completion roadmap decrease. It’s normal, because we have added a story point in our plan. (<strong>4</strong>)</li><li><strong>Impediment count (2): </strong>This is the number of times the teams came out of the sprint due to impediments.</li><li><strong>Impediment duration (3):</strong> The total time spent on impediments.</li><li><strong>Delta story point planned (4): </strong>The number of points entering or leaving the roadmap, allowing us to see any variations on the charts.</li></ol>



<h4 class="wp-block-heading">4<sup>th</sup> data block: Draw me a graph! </h4>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="455" height="198" src="https://www.ovh.com/blog/wp-content/uploads/2020/02/image-9.png" alt="" class="wp-image-16932" srcset="https://blog.ovhcloud.com/wp-content/uploads/2020/02/image-9.png 455w, https://blog.ovhcloud.com/wp-content/uploads/2020/02/image-9-300x131.png 300w" sizes="auto, (max-width: 455px) 100vw, 455px" /></figure></div>



<ul class="wp-block-list"><li><strong>A</strong>.  This figure represents the progress curve of the roadmap. It is created using the sum of the completed epics. </li><li><strong>B.  </strong>Our burnup roadmap.</li></ul>



<p>This graph represents two curves:</p>



<ul class="wp-block-list"><li><strong>a</strong> &#8211; The curve of the elements quantified and estimated by the teams.</li><li><strong>b</strong> &#8211; This is the limit, calculated using the velocity of the team on the number of days in the quarter. We then add the team&#8217;s safety coefficient.</li></ul>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="517" height="33" src="https://www.ovh.com/blog/wp-content/uploads/2020/02/image-14.png" alt="" class="wp-image-16948" srcset="https://blog.ovhcloud.com/wp-content/uploads/2020/02/image-14.png 517w, https://blog.ovhcloud.com/wp-content/uploads/2020/02/image-14-300x19.png 300w" sizes="auto, (max-width: 517px) 100vw, 517px" /></figure></div>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="320" height="31" src="https://www.ovh.com/blog/wp-content/uploads/2020/02/image-15.png" alt="" class="wp-image-16949" srcset="https://blog.ovhcloud.com/wp-content/uploads/2020/02/image-15.png 320w, https://blog.ovhcloud.com/wp-content/uploads/2020/02/image-15-300x29.png 300w" sizes="auto, (max-width: 320px) 100vw, 320px" /></figure></div>



<ul class="wp-block-list"><li><strong>c</strong> &#8211; The curve of the tasks completed by the teams.</li></ul>



<h3 class="wp-block-heading">Conclusion</h3>



<p>This dashboard brings together all the information that we have managed to pull together, thanks to the amazing contributions of the teams. By believing in the values and trusting the method, the group already has a maturity that they have achieved themselves. </p>



<p>For our top management, this board shows all the key information they need. When the predictability is green, all is well. When something is wrong, they are able to take the right decision, whether this involves changing priorities on the roadmap, or hiring new people to help teams successfully complete it (for example).</p>



<p>In our next post, I will explain the micro vision in detail. Until then, keep Agile !</p>
<img loading="lazy" decoding="async" src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2Fagile-telemetry-at-ovhcloud-part-ii%2F&amp;action_name=Agile%20telemetry%20at%20OVHCloud%20%26%238211%3B%20Part%20II&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Jerem: An Agile Bot</title>
		<link>https://blog.ovhcloud.com/jerem-an-agile-bot/</link>
		
		<dc:creator><![CDATA[Aurélien Hébert]]></dc:creator>
		<pubDate>Fri, 21 Feb 2020 16:58:47 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Agile Telemetry]]></category>
		<category><![CDATA[Agility]]></category>
		<category><![CDATA[Metrics]]></category>
		<category><![CDATA[Observability]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Time series]]></category>
		<guid isPermaLink="false">https://www.ovh.com/blog/?p=16943</guid>

					<description><![CDATA[At OVHCloud, we are open sourcing our “Agility Telemetry” project. Jerem, as our data collector, is the main component of this project. Jerem scrapes our JIRA at regular intervals, and extracts specific metrics for each project. It then forwards them to our long-time storage application, the OVHCloud Metrics Data Platform.&#160;&#160; Agility concepts from a developer&#8217;s [&#8230;]<img src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2Fjerem-an-agile-bot%2F&amp;action_name=Jerem%3A%20An%20Agile%20Bot&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></description>
										<content:encoded><![CDATA[
<p>At OVHCloud, we are open sourcing our “Agility Telemetry” project. <strong><a href="https://github.com/ovh/jerem" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">Jerem</a></strong>, as our data collector, is the main component of this project. Jerem scrapes our <strong>JIRA</strong> at regular intervals, and extracts <strong>specific metrics</strong> for each project. It then forwards them to our long-time storage application, the <strong>OVHCloud <a href="https://www.ovh.com/fr/data-platforms/metrics/" data-wpel-link="exclude">Metrics Data Platform</a></strong>.&nbsp;&nbsp;</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="537" src="https://www.ovh.com/blog/wp-content/uploads/2020/02/1FA9BFB1-689F-4D25-A0EC-A65B99909343-1024x537.jpeg" alt="Jerem: an agile bot" class="wp-image-17160" srcset="https://blog.ovhcloud.com/wp-content/uploads/2020/02/1FA9BFB1-689F-4D25-A0EC-A65B99909343-1024x537.jpeg 1024w, https://blog.ovhcloud.com/wp-content/uploads/2020/02/1FA9BFB1-689F-4D25-A0EC-A65B99909343-300x157.jpeg 300w, https://blog.ovhcloud.com/wp-content/uploads/2020/02/1FA9BFB1-689F-4D25-A0EC-A65B99909343-768x403.jpeg 768w, https://blog.ovhcloud.com/wp-content/uploads/2020/02/1FA9BFB1-689F-4D25-A0EC-A65B99909343.jpeg 1200w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<h3 class="wp-block-heading">Agility concepts from a developer&#8217;s point of view</h3>



<p>To help you understand our goals for <strong>Jerem</strong>, we need to explain some Agility concepts we will be using. First, we will establish a <strong>technical quarterly roadmap</strong> for a product, which sets out all <strong>features</strong> we <strong>plan to release</strong> every three months. This is what we call an <strong>epic</strong>.&nbsp;</p>



<p>For each epic, we identify the tasks that will need to be completed. For all of those tasks, we then evaluate the complexity of tasks using <strong>story points</strong>, during a team preparation session. A story point reflects the effort required to complete the specific JIRA task. </p>



<p>Then, to advance our roadmap, we will conduct regular <strong>sprints</strong> that correspond to a period of <strong>ten days</strong>, during which the team will onboard several tasks. The amount of story points taken in a sprint should match, or be close to, the <strong>team velocity</strong>. In other words, the average number of story points that the team is able to complete each day.</p>



<p>However, other urgent tasks may arise unexpectedly during sprints. That’s what we call an <strong>impediment</strong>. We might, for example, need to factor in helping customers, bug fixes, or urgent infrastructure tasks.&nbsp;&nbsp;&nbsp;</p>



<h3 class="wp-block-heading">How Jerem works </h3>



<p>At OVH we use JIRA to track our activity. Our <strong>Jerem</strong> bot scraps our <strong>projects</strong> <strong>from</strong> <strong>JIRA</strong> and exports all necessary data to our  <strong>OVHCloud <a href="https://www.ovh.com/fr/data-platforms/metrics/" data-wpel-link="exclude">Metrics Data Platform</a></strong>. Jerem can also push data to any Warp 10 compatible database. In Grafana, you simply query the Metrics platform (using <a href="https://github.com/ovh/ovh-warp10-datasource" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">Warp10 datasource</a>) with for example our <a href="https://github.com/ovh/jerem/blob/master/grafana/program_management.json" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">program management dashboard</a>. All your KPI are now available in a nice dashboard!</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="256" src="https://www.ovh.com/blog/wp-content/uploads/2020/02/DD1C99D4-E0B6-4AEC-9BDF-9ACA09CB1D45-1024x256.jpeg" alt="" class="wp-image-17164" srcset="https://blog.ovhcloud.com/wp-content/uploads/2020/02/DD1C99D4-E0B6-4AEC-9BDF-9ACA09CB1D45-1024x256.jpeg 1024w, https://blog.ovhcloud.com/wp-content/uploads/2020/02/DD1C99D4-E0B6-4AEC-9BDF-9ACA09CB1D45-300x75.jpeg 300w, https://blog.ovhcloud.com/wp-content/uploads/2020/02/DD1C99D4-E0B6-4AEC-9BDF-9ACA09CB1D45-768x192.jpeg 768w, https://blog.ovhcloud.com/wp-content/uploads/2020/02/DD1C99D4-E0B6-4AEC-9BDF-9ACA09CB1D45-1536x384.jpeg 1536w, https://blog.ovhcloud.com/wp-content/uploads/2020/02/DD1C99D4-E0B6-4AEC-9BDF-9ACA09CB1D45.jpeg 1720w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure></div>



<h3 class="wp-block-heading">Discover Jerem metrics</h3>



<p>Now that we have an overview of the main Agility concepts involved, let&#8217;s dive into Jerem! How do we convert those Agility concepts into metrics? First of all, we&#8217;ll retrieve all metrics related to epics (i.e. new features). Then, we will have a deep look at the sprint metrics.</p>



<h4 class="wp-block-heading">Epic data</h4>



<p>To explain Jerem epic metrics, we&#8217;ll start by creating a new one. In this example, we called it <code>Agile Telemetry</code>. We add a Q2-20 label, which means that we plan to release it for Q2. To record an epic with Jerem, you need to set a quarter for the final delivery! Next, we&#8217;ll simply add four tasks, as shown below:</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="651" src="https://www.ovh.com/blog/wp-content/uploads/2020/02/Epic-1-1024x651.png" alt="" class="wp-image-16984" srcset="https://blog.ovhcloud.com/wp-content/uploads/2020/02/Epic-1-1024x651.png 1024w, https://blog.ovhcloud.com/wp-content/uploads/2020/02/Epic-1-300x191.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2020/02/Epic-1-768x489.png 768w, https://blog.ovhcloud.com/wp-content/uploads/2020/02/Epic-1.png 1182w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>To get the metrics, we need to evaluate each individual task. We we&#8217;ll do this together during preparation sessions. In this example, we have custom story points for each task. For example, we estimated the <code>write a BlogPost about Jerem</code> task as being a 3.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="472" src="https://www.ovh.com/blog/wp-content/uploads/2020/02/Screen-Shot-2020-02-06-at-11.32.10-1024x472.png" alt="" class="wp-image-16957" srcset="https://blog.ovhcloud.com/wp-content/uploads/2020/02/Screen-Shot-2020-02-06-at-11.32.10-1024x472.png 1024w, https://blog.ovhcloud.com/wp-content/uploads/2020/02/Screen-Shot-2020-02-06-at-11.32.10-300x138.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2020/02/Screen-Shot-2020-02-06-at-11.32.10-768x354.png 768w, https://blog.ovhcloud.com/wp-content/uploads/2020/02/Screen-Shot-2020-02-06-at-11.32.10-1536x709.png 1536w, https://blog.ovhcloud.com/wp-content/uploads/2020/02/Screen-Shot-2020-02-06-at-11.32.10.png 1697w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>As a result, Jerem now has everything it needs to start collecting epic metrics. This example provides five metrics:</p>



<ul class="wp-block-list"><li><code>jerem.jira.epic.storypoint</code>: the total number of story points needed to complete this epic. The value here is 14 (the sum of all the epic story points). This metric will evolve whenever as the epic is updated by adding or removing tasks.&nbsp;</li><li><code>jerem.jira.epic.storypoint.done</code>: the number of completed tasks. In our example, we have already completed the <code>Write Jerem bot</code> and <code>Deploy Jerem Bot</code>, so we have already completed eight story points.</li><li><code>jerem.jira.epic.storypoint.inprogress</code>: the number of &#8216;in progress&#8217; tasks, such as <code>Write a BlogPost about Jerem</code>.</li><li><code>jerem.jira.epic.unestimated</code>: the number of unestimated tasks, shown as <code>Unestimated Task</code> in our example.</li><li><code>jerem.jira.epic.dependency</code>: the number of tasks that have dependency labels, indicating that they are mandatory for other epics or projects.</li></ul>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="443" src="https://www.ovh.com/blog/wp-content/uploads/2020/02/Metris-epics-1024x443.png" alt="" class="wp-image-16958" srcset="https://blog.ovhcloud.com/wp-content/uploads/2020/02/Metris-epics-1024x443.png 1024w, https://blog.ovhcloud.com/wp-content/uploads/2020/02/Metris-epics-300x130.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2020/02/Metris-epics-768x332.png 768w, https://blog.ovhcloud.com/wp-content/uploads/2020/02/Metris-epics-1536x665.png 1536w, https://blog.ovhcloud.com/wp-content/uploads/2020/02/Metris-epics.png 1784w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>This way, for each epic in a project, Jerem collects five unique metrics.  </p>



<h4 class="wp-block-heading">Sprint data</h4>



<p>To complete epic tasks, we work using a <strong>sprint</strong> process. When doing sprints, we want to provide a lot of <strong>insights</strong> into our <strong>achievements</strong>. That&#8217;s why Jerem collects sprint data too! </p>



<p>So let&#8217;s open a new sprint in JIRA and start working on our task. This gives us the following JIRA view:</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="241" src="https://www.ovh.com/blog/wp-content/uploads/2020/02/Sprint-ui-1024x241.png" alt="" class="wp-image-16963" srcset="https://blog.ovhcloud.com/wp-content/uploads/2020/02/Sprint-ui-1024x241.png 1024w, https://blog.ovhcloud.com/wp-content/uploads/2020/02/Sprint-ui-300x71.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2020/02/Sprint-ui-768x181.png 768w, https://blog.ovhcloud.com/wp-content/uploads/2020/02/Sprint-ui-1536x362.png 1536w, https://blog.ovhcloud.com/wp-content/uploads/2020/02/Sprint-ui.png 1804w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Jerem collects the following metrics for each sprint:&nbsp;</p>



<ul class="wp-block-list"><li><code>jerem.jira.sprint.storypoint.total</code>: the total number of story points onboarded into a sprint.</li><li><code>jerem.jira.sprint.storypoint.inprogress</code>: the story points currently in progress within a sprint.</li><li><code>jerem.jira.sprint.storypoint.done</code>: the number of story points currently completed within a sprint.</li><li><code>jerem.jira.sprint.events</code>: the &#8216;start&#8217; and of the &#8216;end&#8217; dates of sprint events, recorded as Warp10 string values.</li></ul>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="480" src="https://www.ovh.com/blog/wp-content/uploads/2020/02/Metrics-sprints-1024x480.png" alt="" class="wp-image-16964" srcset="https://blog.ovhcloud.com/wp-content/uploads/2020/02/Metrics-sprints-1024x480.png 1024w, https://blog.ovhcloud.com/wp-content/uploads/2020/02/Metrics-sprints-300x141.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2020/02/Metrics-sprints-768x360.png 768w, https://blog.ovhcloud.com/wp-content/uploads/2020/02/Metrics-sprints-1536x720.png 1536w, https://blog.ovhcloud.com/wp-content/uploads/2020/02/Metrics-sprints.png 1785w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>As you can see in the Metrics view above, we will record every sprint metric twice. We do this to provide a quick view of the active sprint, which is why we use the &#8216;current&#8217; label&#8217;. This also enables us to query past sprints, using the real sprint name. Of course, an active sprint can also be queried using its name.   </p>



<h4 class="wp-block-heading">Impediment data</h4>



<p>Starting a sprint means you need to know all the tasks you will have to work on over the next few days. But how can we track and measure unplanned tasks? For example, the very urgent one for your manager, or the teammate that needs a bit of help?</p>



<p>We can add special tickets on JIRA to keep track of those task. That&#8217;s what we call an &#8216;impediment&#8217;. They are labelled according their nature. If, for example, the production requires your attention, then it&#8217;s an &#8216;Infra&#8217; impediment. You will also retrieve metrics for the &#8216;Total&#8217; (all kinds of impediments), &#8216;Excess&#8217; (the unplanned tasks), &#8216;Support&#8217; (helping teammates), and &#8216;Bug fixes or other&#8217; (for all other kinds of impediment).</p>



<p>Each impediment belongs to the active sprint it was closed in. To close an impediment, you only have to flag it as &#8216;Done&#8217; or &#8216;Closed&#8217;.</p>



<p>We also retrieve metrics like:</p>



<ul class="wp-block-list"><li><code>jerem.jira.impediment.TYPE.count</code>: the number of impediments that occurred during a sprint.</li><li><code>jerem.jira.impediment.TYPE.timespent</code>: the amount of time spent on impediments during a sprint.</li></ul>



<p><code>TYPE</code> corresponds to the <strong>kind</strong> of recorded impediment. As we didn&#8217;t open any actual impediments, Jerem collects only the <code>total</code> metrics.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="433" src="https://www.ovh.com/blog/wp-content/uploads/2020/02/Metrics-impediment-1024x433.png" alt="" class="wp-image-16965" srcset="https://blog.ovhcloud.com/wp-content/uploads/2020/02/Metrics-impediment-1024x433.png 1024w, https://blog.ovhcloud.com/wp-content/uploads/2020/02/Metrics-impediment-300x127.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2020/02/Metrics-impediment-768x325.png 768w, https://blog.ovhcloud.com/wp-content/uploads/2020/02/Metrics-impediment-1536x650.png 1536w, https://blog.ovhcloud.com/wp-content/uploads/2020/02/Metrics-impediment.png 1773w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>To start recording impediments, we simply create a new JIRA task, in which we add an &#8216;impediment&#8217; label. We we also set its nature, and the actual time spent on it.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="819" height="903" src="https://www.ovh.com/blog/wp-content/uploads/2020/02/Screen-Shot-2020-02-06-at-14.16.54.png" alt="" class="wp-image-16967" srcset="https://blog.ovhcloud.com/wp-content/uploads/2020/02/Screen-Shot-2020-02-06-at-14.16.54.png 819w, https://blog.ovhcloud.com/wp-content/uploads/2020/02/Screen-Shot-2020-02-06-at-14.16.54-272x300.png 272w, https://blog.ovhcloud.com/wp-content/uploads/2020/02/Screen-Shot-2020-02-06-at-14.16.54-768x847.png 768w" sizes="auto, (max-width: 819px) 100vw, 819px" /></figure>



<p>For the impediment, we&#8217;ll we also retrieve the global metrics that Jerem always records:</p>



<ul class="wp-block-list"><li><code>jerem.jira.impediment.total.created</code>: the time spent from the creation date to complete an impediment. This allows us to retrieve a total impediment count. We can also record all impediment actions, even outside sprints.&nbsp;</li></ul>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>For a single Jira project, like our example, you can expect around 300 metrics. This might increase depending on the epic you create and flag on Jira, and the one you close.</p></blockquote>



<h3 class="wp-block-heading">Grafana dashboard</h3>



<p>We love building Grafana dashboards! They provide both the team and the manager a lot of insights into KPIs. The best part of it for me, as a developer, is that I see why it&#8217;s nice to fill a JIRA task!</p>



<p>In our first <a href="https://github.com/ovh/jerem/blob/master/grafana/program_management.json" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">Grafana dashboard</a>, you will retrieve all the best program management KPIs. Let&#8217;s start with the global overview:</p>



<h4 class="wp-block-heading">Quarter data overview</h4>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="421" src="https://www.ovh.com/blog/wp-content/uploads/2020/02/quarter-data-sandbox-1024x421.png" alt="" class="wp-image-16968" srcset="https://blog.ovhcloud.com/wp-content/uploads/2020/02/quarter-data-sandbox-1024x421.png 1024w, https://blog.ovhcloud.com/wp-content/uploads/2020/02/quarter-data-sandbox-300x123.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2020/02/quarter-data-sandbox-768x316.png 768w, https://blog.ovhcloud.com/wp-content/uploads/2020/02/quarter-data-sandbox-1536x632.png 1536w, https://blog.ovhcloud.com/wp-content/uploads/2020/02/quarter-data-sandbox.png 1840w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Here, you will find the current epic in progress. You will also find the global team KPIs, such as the predictability, the velocity, and the impediment stats. It&#8217;s here where the magic happens! When filled correctly, this dashboard will show you exactly what your team should deliver in the current quarter. This means you have quick access to all important current subjects. You will also be able to see if your team is expected to deliver on too many subjects, so you can quickly take action and delay some of the new features.</p>



<h4 class="wp-block-heading">Active sprint data</h4>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="286" src="https://www.ovh.com/blog/wp-content/uploads/2020/02/sprintdata-1024x286.png" alt="" class="wp-image-16969" srcset="https://blog.ovhcloud.com/wp-content/uploads/2020/02/sprintdata-1024x286.png 1024w, https://blog.ovhcloud.com/wp-content/uploads/2020/02/sprintdata-300x84.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2020/02/sprintdata-768x214.png 768w, https://blog.ovhcloud.com/wp-content/uploads/2020/02/sprintdata-1536x428.png 1536w, https://blog.ovhcloud.com/wp-content/uploads/2020/02/sprintdata.png 1839w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>The active sprint data panel is often a great support during our daily meetings. In this panel, we get a quick overview of the team&#8217;s achievements, and can establish the time spent on parallel tasks. </p>



<h4 class="wp-block-heading">Detailed data</h4>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="286" src="https://www.ovh.com/blog/wp-content/uploads/2020/02/detail-KPI-1024x286.png" alt="" class="wp-image-16970" srcset="https://blog.ovhcloud.com/wp-content/uploads/2020/02/detail-KPI-1024x286.png 1024w, https://blog.ovhcloud.com/wp-content/uploads/2020/02/detail-KPI-300x84.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2020/02/detail-KPI-768x215.png 768w, https://blog.ovhcloud.com/wp-content/uploads/2020/02/detail-KPI-1536x429.png 1536w, https://blog.ovhcloud.com/wp-content/uploads/2020/02/detail-KPI.png 1847w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>The last part provides more detailed data. Using the epic Grafana variable, we can check specific epics, along with the completion of more global projects. You have also a <code>velocity chart</code>, which plots the past sprint, and compares the expected story points to the ones actually completed.   </p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>The Grafana dashboard is directly availble in the Jerem project. You can import it directly in Grafana, provided you have a valid Warp 10 datasource configured. </p><p>To make the dashboard work as required, you have to configure the Grafana project variable in the form of a WarpScript list <code>[ 'SAN' 'OTHER-PROJECT' ]</code>. If our program manager can do it, I am sure you can! 😉 </p></blockquote>



<p>Setting up Jerem and automatically loading program management data give us a lot of insights. As a developer, I really enjoy it and I&#8217;ve quickly become used to tracking a lot more events in JIRA than I did before. You are able to directly see the impact of your tasks. For example, you see how quickly the roadmap is advancing, and you become able to identify any bottlenecks that are causing impediments. Those bottlenecks then become epics. In other words, once we start to use Jerem, we just auto-fill it! I hope you will enjoy it too! If you have any feedback, we would love to hear it.</p>
<img loading="lazy" decoding="async" src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2Fjerem-an-agile-bot%2F&amp;action_name=Jerem%3A%20An%20Agile%20Bot&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>The birth of agile telemetry at OVHcloud &#8211; Part I</title>
		<link>https://blog.ovhcloud.com/the-birth-of-agile-telemetry-at-ovhcloud-part-i/</link>
		
		<dc:creator><![CDATA[Jeremy Hennart]]></dc:creator>
		<pubDate>Tue, 04 Feb 2020 14:51:22 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Agile Telemetry]]></category>
		<category><![CDATA[Agility]]></category>
		<category><![CDATA[Methodology]]></category>
		<guid isPermaLink="false">https://www.ovh.com/blog/?p=16805</guid>

					<description><![CDATA[In October 2018, just before the OVHcloud Summit, I joined the Product Unit Platform as Program Manager. A new challenge came with this new role&#8230; to support the team working on a new product: OVHcloud Managed Kubernetes.&#160;The deadline was short, we had lots of things to do, and we needed to provide visibility to both [&#8230;]<img src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2Fthe-birth-of-agile-telemetry-at-ovhcloud-part-i%2F&amp;action_name=The%20birth%20of%20agile%20telemetry%20at%20OVHcloud%20%26%238211%3B%20Part%20I&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></description>
										<content:encoded><![CDATA[
<p>In October 2018, just before the OVHcloud Summit, I joined the Product Unit Platform as Program Manager. A new challenge came with this new role&#8230; to support the team working on a new product: <a href="https://www.ovh.com/world/public-cloud/kubernetes/" data-wpel-link="exclude">OVHcloud Managed Kubernetes</a>.&nbsp;The deadline was short, we had lots of things to do, and we needed to provide visibility to both Management and Development teams throughout. But as a Program Manager, I had the right tools in my bag: SCRUM and &#8220;agility&#8221;.&nbsp;</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="535" src="https://www.ovh.com/blog/wp-content/uploads/2020/02/205F1E58-C27F-4BDB-80FB-9AE69A0D3E09-1024x535.jpeg" alt="The birth of agile telemetry at OVHcloud." class="wp-image-16916" srcset="https://blog.ovhcloud.com/wp-content/uploads/2020/02/205F1E58-C27F-4BDB-80FB-9AE69A0D3E09-1024x535.jpeg 1024w, https://blog.ovhcloud.com/wp-content/uploads/2020/02/205F1E58-C27F-4BDB-80FB-9AE69A0D3E09-300x157.jpeg 300w, https://blog.ovhcloud.com/wp-content/uploads/2020/02/205F1E58-C27F-4BDB-80FB-9AE69A0D3E09-768x402.jpeg 768w, https://blog.ovhcloud.com/wp-content/uploads/2020/02/205F1E58-C27F-4BDB-80FB-9AE69A0D3E09.jpeg 1201w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure></div>



<p>My first action, as a newcomer, was to ask the team to express themselves. I wanted to understand how the group worked, as listening is one of the first steps in the agile construction process.&nbsp;</p>



<p>When dealing with significant changes, it&#8217;s necessary to do some change management and accompany people throughout the process. All too often, the word &#8220;agile&#8221; is used in a way that sacrifices common sense, becoming the scapegoat when unforeseen events or delays in delivery occur. Reassuring the team and explaining them that agility wasn&#8217;t going to make their lives harder, or add an overhead to the daily tasks, was a key objective. We achieved this in several ways:</p>



<ul class="wp-block-list"><li>Organising several presentations and methodology training sessions</li><li>Holding physical meetings with the teams at Paris and Lyon&nbsp;</li><li>Explaining how the method would work during a real sprint</li><li>C<span style="font-size: 1rem; font-weight: inherit;">ollectively drafting a guide<em> </em>to our implementation of the SCRUM method&nbsp;</span></li></ul>



<p>Once we had validated the fundamentals together, we moved on to the methodology. At this stage, we could begin to add value to the project by using agility.</p>



<h3 class="wp-block-heading"><strong>Value in our agility</strong></h3>



<p>After a few sprints using the agile method, our group found some stability, i.e. we had reached a good &#8220;velocity&#8221;, as we call it in agile practitioner slang. Velocity is an important value, and a determining factor in our ongoing journey towards agile telemetry.&nbsp;</p>



<p>To quickly (re)define it, velocity<em> </em>is the number of &#8220;effort points&#8221; the team is able to accomplish during a sprint.&nbsp;This key indicator allowed us to assess how much work our team could deliver over a given period of time.&nbsp;&nbsp;</p>



<h2 class="wp-block-heading">Velocity and effort points in our Managed Kubernetes project</h2>



<p>Let&#8217;s look at a simplified schema of how this method worked in our Managed Kubernetes project:&nbsp;</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="528" src="https://www.ovh.com/blog/wp-content/uploads/2020/02/5647B04E-022C-4696-8AD9-D909F618FC85-1024x528.jpeg" alt="Story points, epics and steps" class="wp-image-16914" srcset="https://blog.ovhcloud.com/wp-content/uploads/2020/02/5647B04E-022C-4696-8AD9-D909F618FC85-1024x528.jpeg 1024w, https://blog.ovhcloud.com/wp-content/uploads/2020/02/5647B04E-022C-4696-8AD9-D909F618FC85-300x155.jpeg 300w, https://blog.ovhcloud.com/wp-content/uploads/2020/02/5647B04E-022C-4696-8AD9-D909F618FC85-768x396.jpeg 768w, https://blog.ovhcloud.com/wp-content/uploads/2020/02/5647B04E-022C-4696-8AD9-D909F618FC85-1536x793.jpeg 1536w, https://blog.ovhcloud.com/wp-content/uploads/2020/02/5647B04E-022C-4696-8AD9-D909F618FC85.jpeg 1969w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Here, we have three main steps. For each of them, we collected its quantitative values, to get a consolidated view of each step&#8217;s velocity, in addition to a global view of the whole project. With these velocities, we got a good view of the project&#8217;s advancement, and some visibility on the deadlines. </p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="220" src="https://www.ovh.com/blog/wp-content/uploads/2020/01/image-3.png" alt="" class="wp-image-16809" srcset="https://blog.ovhcloud.com/wp-content/uploads/2020/01/image-3.png 1024w, https://blog.ovhcloud.com/wp-content/uploads/2020/01/image-3-300x64.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2020/01/image-3-768x165.png 768w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure></div>



<p>Example : </p>



<div class="wp-block-image"><figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" src="https://www.ovh.com/blog/wp-content/uploads/2020/02/B4898BA1-A836-457B-9843-86B4DDDE84AB-1024x465.jpeg" alt="Story points, velocity and remaining time" class="wp-image-16913" width="512" height="233" srcset="https://blog.ovhcloud.com/wp-content/uploads/2020/02/B4898BA1-A836-457B-9843-86B4DDDE84AB-1024x465.jpeg 1024w, https://blog.ovhcloud.com/wp-content/uploads/2020/02/B4898BA1-A836-457B-9843-86B4DDDE84AB-300x136.jpeg 300w, https://blog.ovhcloud.com/wp-content/uploads/2020/02/B4898BA1-A836-457B-9843-86B4DDDE84AB-768x349.jpeg 768w, https://blog.ovhcloud.com/wp-content/uploads/2020/02/B4898BA1-A836-457B-9843-86B4DDDE84AB.jpeg 1154w" sizes="auto, (max-width: 512px) 100vw, 512px" /></figure></div>



<p>This agile model allowed us to achieve our goal and deliver the Managed Kubernetes project to our customers on time, and this success subsequently led us to share these good practices with all teams in the Product Unit. </p>



<p>But a second challenge presented itself, as maintaining this process required a lot of discipline, with numerous opportunities for mistakes to be made. And so our next step was to create a tool capable of reducing the risk of error, while maintaining full visibility of projects at both the macro and micro levels. This is what we will present in detail in a future blog post: <strong>Agile telemetry by OVHcloud</strong>.&nbsp;</p>
<img loading="lazy" decoding="async" src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2Fthe-birth-of-agile-telemetry-at-ovhcloud-part-i%2F&amp;action_name=The%20birth%20of%20agile%20telemetry%20at%20OVHcloud%20%26%238211%3B%20Part%20I&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Using FPGAs in an agile development workflow</title>
		<link>https://blog.ovhcloud.com/using-fpgas-in-an-agile-development-workflow/</link>
		
		<dc:creator><![CDATA[Tristan Groléat]]></dc:creator>
		<pubDate>Tue, 21 Jan 2020 13:47:05 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Agility]]></category>
		<category><![CDATA[FPGA]]></category>
		<guid isPermaLink="false">https://www.ovh.com/blog/?p=16521</guid>

					<description><![CDATA[OVHcloud recently got a new name to emphasize its focus: the cloud, to empower you to run your workloads easily, without caring too much about the underlying hardware. So why talk about FPGAs? An FPGA is a hardware accelerator, a reconfigurable chip that can behave as custom silicon, designed for a specific application. We use [&#8230;]<img src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2Fusing-fpgas-in-an-agile-development-workflow%2F&amp;action_name=Using%20FPGAs%20in%20an%20agile%20development%20workflow&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></description>
										<content:encoded><![CDATA[
<p>OVHcloud recently got a new name to emphasize its focus: the cloud, to empower you to run your workloads easily, without caring too much about the underlying hardware. So why talk about FPGAs? </p>



<p>An FPGA is a hardware accelerator, a reconfigurable chip that can behave as custom silicon, designed for a specific application. We use FPGAs as custom network devices for our attacks mitigation system. But FPGA development is quite different from software development: it requires specialized proprietary software and long development cycles. </p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="537" src="https://www.ovh.com/blog/wp-content/uploads/2020/01/9E26E5E8-1CA5-483C-9AD7-D2E02E1AB7CE-1024x537.jpeg" alt="Using FPGA in an agile development workflow" class="wp-image-16784" srcset="https://blog.ovhcloud.com/wp-content/uploads/2020/01/9E26E5E8-1CA5-483C-9AD7-D2E02E1AB7CE-1024x537.jpeg 1024w, https://blog.ovhcloud.com/wp-content/uploads/2020/01/9E26E5E8-1CA5-483C-9AD7-D2E02E1AB7CE-300x157.jpeg 300w, https://blog.ovhcloud.com/wp-content/uploads/2020/01/9E26E5E8-1CA5-483C-9AD7-D2E02E1AB7CE-768x403.jpeg 768w, https://blog.ovhcloud.com/wp-content/uploads/2020/01/9E26E5E8-1CA5-483C-9AD7-D2E02E1AB7CE.jpeg 1200w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure></div>



<p>In this article, I would like to focus on the way we integrate FPGA development to the agile software development workflow used by all other developers at OVHcloud.</p>



<h3 class="wp-block-heading">Why use FPGAs?</h3>



<p>FPGAs are extremely generic chips, they can be used to build circuits for a very wide range of applications:</p>



<ul class="wp-block-list"><li>signal processing</li><li>finance</li><li>machine learning (classification)</li><li>networking</li></ul>



<p>Their  main interest is that you are not constrained by the architecture of a  CPU, you can build your custom hardware architecture tailored to an  application. This usually brings better performance, lower power  consumption and lower latency. </p>



<p>For networking applications, the  advantages are:</p>



<ul class="wp-block-list"><li>a direct connection to 100GbE links: no network interface card, no PCIe link, packets are received directly on the chip</li><li>an
 access to extremely low latency memory with very fast random accesses 
(QDR SRAM: each bank allows about 250 millions reads and writes per 
second)</li><li>the ability to build custom packet processing pipelines to use the resources of the chip at their maximum.</li></ul>



<p>This allows us to handle 300 millions packets per second and 400 Gb/s on a single FPGA board with a power consumption under 70W.</p>



<p>To know more about FPGAs, the ebook <a href="https://www.amiq.com/consulting/misc/free_pdf_books/fpgas_for_dummies_ebook.pdf" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">FPGAs For Dummies</a> is a good resource.</p>



<h2 class="wp-block-heading" id="UsingFPGAsinanagiledevelopmentworkflow-AtraditionalFPGAdevelopmentworkflow">A traditional FPGA development workflow</h2>



<p>Languages
 used to develop on FPGA have a strong specificity: contrary to standard
 sequential languages, everything happens in parallel, to model the 
behavior of millions of transistors working in parallel on a chip. Two 
main languages are used: VHDL and SystemVerilog. We use SystemVerilog. 
Here is an example SystemVerilog module:</p>



<pre class="wp-block-code"><code class="">// Simple example module: a counter
// Will clear if clear is 1 during one clock cycle.
// Will increment at each clock cycle when enable is 1.
 
`timescale 1ns / 1ps
 
module counter
    #(
        // Number of bits of counter result
        parameter WIDTH = 5
    )
    (
        input                    clk,
 
        // Control
        input                    enable,
        input                    clear,
         
        // Result
        output reg [WIDTH-1:0]   count = '0
    );
 
    always_ff @(posedge clk) begin
        if (clear) begin
            count &lt;= '0;
        end else if (enable) begin
            count &lt;= count + 1;
        end
    end
 
endmodule</code></pre>



<p>Modules can be combined together by connecting their inputs and outputs to create complex systems.</p>



<h4 class="wp-block-heading">Testing on the simulator</h4>



<p>A
 very important tool when developing on FPGA is the simulator: it is 
complex and slow to test the code directly on an actual FPGA. To speed 
things up, simulators can run code without specific hardware. They are 
used both for unit tests, to test each module separately, and for 
functional tests, simulating the whole design, controlling its inputs 
and checking its outputs. Here is the result on the counter module:</p>



<div class="wp-block-image"><figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" src="https://www.ovh.com/blog/wp-content/uploads/2020/01/image2019-10-27_13-22-44.png" alt="Simulator of FPGA counter module" class="wp-image-16780" width="854" height="190" srcset="https://blog.ovhcloud.com/wp-content/uploads/2020/01/image2019-10-27_13-22-44.png 854w, https://blog.ovhcloud.com/wp-content/uploads/2020/01/image2019-10-27_13-22-44-300x67.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2020/01/image2019-10-27_13-22-44-768x171.png 768w" sizes="auto, (max-width: 854px) 100vw, 854px" /></figure></div>



<p>This
 is the wave showing the value of each signal at each clock cycle. Of 
course, the simulator can also run headless, and the testbench can be 
modified to return a pass/fail result.</p>



<p>A basic simulator is 
provided by Xilinx, an FPGA manufacturer. More advanced simulators are 
provided by Mentor or Synopsys. These simulators are commercial and 
require expensive licenses.</p>



<h4 class="wp-block-heading">Building the binary</h4>



<p>Once all tests pass, it is time to get  a binary that can be used to configure the FPGA. The biggest FPGA  providers, Intel and Xilinx, both provide proprietary tools for this  process. A first phase, the synthesis, transforms the source code into a  circuit. The second phase, &#8220;place and route&#8221;, is a very complex optimization problem to fit the circuit onto the resources provided by  the FPGA, while respecting the timing constraints, so that the circuit  can run at the wanted frequency. It can last multiple hours, even up to  one day on very complex designs. This process might fail if the design  is over-constrained, so it is usual to have to start multiple processes  with different seeds to have more chances to get a working binary at the  end.</p>



<h2 class="wp-block-heading" id="UsingFPGAsinanagiledevelopmentworkflow-OurcurrentFPGAdevelopmentworkflow">Our current FPGA development workflow</h2>



<p>Our  current development process is very close to a traditional one. But  usually, FPGA development is much slower than software development. At  OVHcloud, we are able to develop and ship a small feature in one day. We  achieve that by leveraging the workflow used by software developers,  and by using our cloud infrastructure. Here is the global workflow:</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="534" src="https://www.ovh.com/blog/wp-content/uploads/2020/01/69E95F20-8A71-4CB3-84F4-9C9407CC93A4-1024x534.jpeg" alt="Our current FPGA workflow" class="wp-image-16782" srcset="https://blog.ovhcloud.com/wp-content/uploads/2020/01/69E95F20-8A71-4CB3-84F4-9C9407CC93A4-1024x534.jpeg 1024w, https://blog.ovhcloud.com/wp-content/uploads/2020/01/69E95F20-8A71-4CB3-84F4-9C9407CC93A4-300x157.jpeg 300w, https://blog.ovhcloud.com/wp-content/uploads/2020/01/69E95F20-8A71-4CB3-84F4-9C9407CC93A4-768x401.jpeg 768w, https://blog.ovhcloud.com/wp-content/uploads/2020/01/69E95F20-8A71-4CB3-84F4-9C9407CC93A4-1536x801.jpeg 1536w, https://blog.ovhcloud.com/wp-content/uploads/2020/01/69E95F20-8A71-4CB3-84F4-9C9407CC93A4.jpeg 1936w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure></div>



<p>The whole workflow is controlled by <a href="https://ovh.github.io/cds/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">CDS, our open-source continuous delivery system</a>. All tests, as well as the compilation jobs, run on Public Cloud, except the tests on board, which are run in our lab.</p>



<h4 class="wp-block-heading">Using our Public Cloud</h4>



<p>The setup of all machines is done by Ansible. There are a few important roles, to install different important components:</p>



<ul class="wp-block-list"><li>the simulator</li><li>the Xilinx compiler, Vivado</li><li>the Intel compiler, Quartus</li><li>the license server for the simulator and the compilers</li></ul>



<p>The
 license server as well as development boxes are long-running Public 
Cloud instances. The license server is the smallest instance possible, 
the development box is an instance with a fast CPU and a lot of RAM. The
 simulator and the compilers are installed on the development box. 
Authorizations to access the license server are managed with OpenStack 
security groups.</p>



<p>The instances used for simulated tests and for 
compilation are started using the OpenStack API when needed. It is very 
important because it allows to run multiple test sets in parallel, for 
different developers. It is also very important for compilation. We 
compile our designs for multiple targets (Stratix V FPGAs for 10G and 
Ultrascale+ FPGAs for 100G), so we need to run multiple compilation jobs
 in parallel. In addition, we run jobs in parallel with multiple seeds 
to improve our chances to get a correct binary. As build jobs can last 
12 hours with our designs, it is very important to start enough in 
parallel to be sure that we get at least one working binary.</p>



<h4 class="wp-block-heading">Running the tests</h4>



<p>Functional
 tests are very important because they validate each feature our designs
 provide. The tests are developed in Python, using scapy to send traffic
 and analyze the results. They can be run with a simulated design or 
with the real design on the actual FPGA boards. CDS is able to run tests
 automatically on the real boards by booking lab servers and connecting 
to them through SSH. The same process is used for performance tests.</p>



<p>The
 result of this infrastructure is that developers can push a new feature
 on a branch of our git repository, and they will have full unit and 
functional tests results in 30 minutes. If all is ok, they can trigger 
the compilation, and have the result tested on board the next day. Then 
they just have to tag the new package version to have a new release 
available. After that, the team managing the production can deploy the 
new version using ansible.</p>



<h2 class="wp-block-heading" id="UsingFPGAsinanagiledevelopmentworkflow-Goingfurther">Going further</h2>



<p>We
 have automated as much as possible our process and we use the public 
cloud infrastructure to accelerate the workflow. But currently we are 
still using a quite traditional FPGA development flow. Many different 
approches exist to go further, and as we want to push the FPGA 
development process as close to software development as we can, we have 
looked into many of them.</p>



<h4 class="wp-block-heading">HLS</h4>



<p>A very common approach is to use High 
Level Synthesis (HLS). It consists in using a high-level language to 
develop modules instead of SystemVerilog. With Vivado HLS, it is 
possible to develop in C++. It is also possible to use OpenCL, which we 
have tested on Intel boards. The principle of HLS is to extract the 
algorithm from the high level code, and then to build automatically the 
best pipelined architecture on FPGA. But we are doing packet processing,
 our algorithms are extremely basic. The complexity of our code lies in 
the architecture itself, to be able to support very high data rates. So 
we were not able to use HLS efficiently, the code we got was actually 
more complex than the same function in SystemVerilog.</p>



<h4 class="wp-block-heading">Chisel</h4>



<p>SystemVerilog  is extremely low-level and does not allow to use high level of  abstractions (at least not if you want the code to be usable by Intel  and Xilinx compilers). What we really need to simplify development is to  be able to use higher levels of abstraction. We do not need a complex  compiler to try and guess the best architecture itself. For that, we  have a PhD student currently collaborating on an Open Source project: <a href="https://www.chisel-lang.org/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">Chisel</a>.  </p>



<p>Chisel is a hardware design language based on Scala. Its main interest  is that it allows to use the whole level of abstraction offered by Scala  to describe hardware. It is also fully Open Source, which is highly  unusual in the hardware development world. It relies on Verilator, an Open Source simulator, for testing. This means that we could get rid of  proprietary simulators and have a fully open source toolchain, up to the  compilation. </p>



<p>There are currently no open source tools for the place and  route phase, at least on the most recent Xilinx and Intel FPGAs. But  Chisel can generate Verilog that can be used by proprietary compilers.</p>



<p>We  plan to have our first modules designed in Chisel used in production  soon. This should help us to have more reusable and easier to write  code, and to get slowly rid of proprietary tools. </p>



<h4 class="wp-block-heading">A paradigm change</h4>



<p>The open source  community is extremely important to keep making FPGA development closer  and closer to software development. A sign of improvement is the  progressive arrival of low-end FPGAs in FabLabs and hobby electronics  projects. We hope Xilinx and Intel FPGA will follow and that they will  one-day embrace open source for their compilers, which could allow to  make them more efficient and interoperable. FPGAs are accelerators that  offer an incredible flexibility and can be powerful alternatives to CPUs  and GPUs, but to democratize their use in cloud environments, the open  source community has to get much stronger.</p>
<img loading="lazy" decoding="async" src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2Fusing-fpgas-in-an-agile-development-workflow%2F&amp;action_name=Using%20FPGAs%20in%20an%20agile%20development%20workflow&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
