<?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>architecture Archives &#8211; Structured Procrastination</title>
	<atom:link href="https://blog.adamspiers.org/tag/architecture/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.adamspiers.org/tag/architecture/</link>
	<description>because there&#039;s always something more interesting than what you should be doing</description>
	<lastBuildDate>Wed, 18 Sep 2019 11:32:40 +0000</lastBuildDate>
	<language>en-GB</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0.2</generator>

<image>
	<url>https://blog.adamspiers.org/wp-content/uploads/2018/12/cropped-IMG_20160907_193859-PANO-c-7-32x32.jpg</url>
	<title>architecture Archives &#8211; Structured Procrastination</title>
	<link>https://blog.adamspiers.org/tag/architecture/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Improving trust in the cloud with OpenStack and AMD SEV</title>
		<link>https://blog.adamspiers.org/2019/09/13/improving-trust-in-the-cloud-with-openstack-and-amd-sev/</link>
					<comments>https://blog.adamspiers.org/2019/09/13/improving-trust-in-the-cloud-with-openstack-and-amd-sev/#respond</comments>
		
		<dc:creator><![CDATA[Adam]]></dc:creator>
		<pubDate>Fri, 13 Sep 2019 12:00:00 +0000</pubDate>
				<category><![CDATA[front page]]></category>
		<category><![CDATA[geek]]></category>
		<category><![CDATA[work]]></category>
		<category><![CDATA[AMD]]></category>
		<category><![CDATA[architecture]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[coopetition]]></category>
		<category><![CDATA[OpenStack]]></category>
		<category><![CDATA[SEV]]></category>
		<guid isPermaLink="false">https://blog.adamspiers.org/?p=1871</guid>

					<description><![CDATA[<p>This post contains an exciting announcement, but first I need to provide some context! Ever heard that joke &#8220;the cloud is just someone else&#8217;s computer&#8221;? Of course it&#8217;s a gross over-simplification, but there&#8217;s more than a grain of truth in it. And that raises the question: if your applications are running in someone else&#8217;s data-centre, [&#8230;]</p>
<p>The post <a href="https://blog.adamspiers.org/2019/09/13/improving-trust-in-the-cloud-with-openstack-and-amd-sev/">Improving trust in the cloud with OpenStack and AMD SEV</a> appeared first on <a href="https://blog.adamspiers.org">Structured Procrastination</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p> This post contains an exciting announcement, but first I need to provide some context! </p>
<p> Ever heard that joke &#8220;the cloud is just someone else&#8217;s computer&#8221;? </p>
<div class="figure">
<p><img decoding="async" src="https://blog.adamspiers.org/wp-content/uploads/2019/09/no-cloud-coffee-mug.jpg" alt="Coffee mug saying &quot;There is no cloud. It's just someone else's computer&quot;" title="There are T-shirts too ..." style="width: 50%; margin: 0 auto; display: block;" /> </p>
</p></div>
<p> Of course it&#8217;s a gross over-simplification, but there&#8217;s more than a grain of truth in it.  And that raises the question: <b>if your applications are running in someone else&#8217;s data-centre, how can you trust that they&#8217;re not being snooped upon, or worse, invasively tampered with?</b> </p>
<p> Until recently, the answer was &#8220;you can&#8217;t&#8221;.  Well, that&#8217;s another over-simplification.  You could design your workload to be tamperproof; for example even if individual mining nodes in Bitcoin or Ethereum are compromised, the blockchain as a whole will resist the attack just fine.  But there&#8217;s still the snooping problem. </p>
<div id="outline-container-org4c32b9b" class="outline-2">
<h2 id="org4c32b9b">Hardware to the rescue?</h2>
<div class="outline-text-2" id="text-org4c32b9b">
<p> However, there&#8217;s some good news on this front.  Intel and AMD realised this was a problem, and have both introduced new hardware capabilities to help improve the level to which cloud users can trust the environment in which their workloads are executed, e.g.: </p>
<ul class="org-ul">
<li>
<p> <a href="https://en.wikipedia.org/wiki/Zen_(microarchitecture)#Enhanced_security_and_virtualization_support">AMD SEV (Secure Encrypted Virtualization)</a> which can encrypt the memory of a running VM with a key which is only accessible to the owner of that VM.  This is done on-chip so that even if you have physical access to the machine, it makes it a lot harder to snoop in on the running VM<sup><a id="fnr.1" name="fnr.1" class="footref" href="#fn.1">1</a></sup>. </p>
<p> It can also provide the guest owner with an attestation which cryptographically proves that the memory was encrypted correctly and can only be decrypted by the owner. </p>
</li>
<li><a href="https://www.tomshardware.co.uk/intel-mktme-amd-memory-encryption,news-60766.html">Intel MKTME (Multi-Key Total Memory Encryption)</a> which is a similar approach.</li>
</ul>
<p> But even with that hardware support, there is the question to what degree anyone can trust public clouds run on proprietary technology. There is a growing awareness that Free (Libre) / Open Source Software tends to be inherently more secure and trustworthy, since its transparency enables unlimited peer review, and its openness allows anyone to contribute improvements. </p>
<p> And these days, <a href="https://www.openstack.org">OpenStack</a> is pretty much the undisputed king of the Open Source cloud infrastructure world. </p>
</div>
</div>
<div id="outline-container-org85d715d" class="outline-2">
<h2 id="org85d715d">An exciting announcement</h2>
<div class="outline-text-2" id="text-org85d715d">
<p> So I&#8217;m delighted to be able to announce a significant step forward in trustworthy cloud computing: as of this week, <b>OpenStack is now able to launch VMs with SEV enabled!</b> (Given the appropriate AMD hardware, of course.) </p>
<div class="figure">
<p><a href="https://blog.adamspiers.org/wp-content/uploads/2019/09/SEV-Horizon-flavor-metadata-2.png" title="The new hw:mem_encryption flavor extra spec. Click for full size." alt="The new hw:mem_encryption flavor extra spec" style="width: 98%; margin: 0 auto; display: block;"><img decoding="async" src="https://blog.adamspiers.org/wp-content/uploads/2019/09/SEV-Horizon-flavor-metadata-2-1.png" alt="The new hw:mem_encryption flavor extra spec" title="The new hw:mem_encryption flavor extra spec. Click for full size." style="width: 98%; margin: 0 auto; display: block;" /></a> </p>
</p></div>
<p> The core functionality is all merged and will be in the imminent Train release.  You can read <a href="https://docs.openstack.org/nova/latest/admin/configuration/hypervisor-kvm.html#amd-sev-secure-encrypted-virtualization">the documentation</a>, and you will also find it mentioned in <a href="https://docs.openstack.org/releasenotes/nova/">the Nova Release Notes</a>. </p>
<p> While this is &#8220;only&#8221; an <a href="https://en.wikipedia.org/wiki/Minimum_viable_product">MVP</a> and far from the end of the journey (see below), it&#8217;s an important milestone in a strong partnership between my employer <a href="http://suse.com/">SUSE</a> and <a href="https://www.amd.com/">AMD</a>.  We started work on adding SEV support into OpenStack around a year ago: </p>
<div class="figure">
<p><a href="https://blueprints.launchpad.net/nova/+spec/amd-sev-libvirt-support" title="The original blueprint for integrating AMD SEV into nova. Click for full size." alt="The original blueprint for integrating AMD SEV into nova" style="width: 98%; margin: 0 auto; display: block;"><img decoding="async" src="https://blog.adamspiers.org/wp-content/uploads/2019/09/SEV-launchpad-blueprint-implemented.png" alt="The original blueprint for integrating AMD SEV into nova" title="The original blueprint for integrating AMD SEV into nova. Click for full size." style="width: 98%; margin: 0 auto; display: block;" /></a> </p>
</p></div>
<p> This resulted in <a href="http://specs.openstack.org/openstack/nova-specs/specs/train/approved/amd-sev-libvirt-support.html">one of the most in-depth technical specification documentations I&#8217;ve ever had to write</a>, plus many months of intense collaboration on the code and several changes in design along the way. </p>
<div class="figure">
<p><a href="https://review.opendev.org/#/q/topic:bp/amd-sev-libvirt-support+status:merged" title="SEV code reviews. Click to view in Gerrit!" alt="SEV code reviews. Click to view in Gerrit!" style="width: 98%; margin: 0 auto; display: block;"><img decoding="async" src="https://blog.adamspiers.org/wp-content/uploads/2019/09/SEV-Gerrit-merged-patches.png" alt="SEV code reviews. Click to view in Gerrit!" title="SEV code reviews. Click to view in Gerrit!" style="width: 98%; margin: 0 auto; display: block;" /></a> </p>
</p></div>
<p> I&#8217;d like to thank not only my colleagues at SUSE and AMD for all their work so far, but also many members of the upstream OpenStack community, especially the <a href="https://wiki.openstack.org/wiki/Nova">Nova</a> team.  In particular I enjoyed fantastic support from the PTL (Project Technical Lead) Eric Fried, and several developers at Red Hat, which I think speaks volumes to how well <a href="https://en.wikipedia.org/wiki/Coopetition">the &#8220;coopetition&#8221; model</a> works in the Open Source world. </p>
<p> The rest of this post gives a quick tour of the implementation via screenshots and brief explanations, and then concludes with what&#8217;s planned next. </p>
<p><span id="more-1871"></span></p>
<p> OpenStack&#8217;s Compute service (nova) will automatically detect the presence of the SEV feature on any compute node which is configured to support it.  You can optionally configure how many slots are available on the memory controller for encryption keys.  One is used for each guest, so this effectively acts as the maximum number of guest VMs which can concurrently use SEV.  Here you can see the configuration of <a href="https://docs.openstack.org/nova/latest/configuration/config.html#libvirt.num_memory_encrypted_guests">this option</a>, and how nova handles the inventory.  Note that it also registers an SEV trait on the compute host, so that in the future if the cloud has a mix of hardware offering different guest memory encryption technologies, you&#8217;ll be able to choose which one you want for any given guest, if you need to. </p>
<div class="figure">
<p><a href="https://blog.adamspiers.org/wp-content/uploads/2019/09/SEV-CLI-compute-inventory-trait.png" title="Inventorying the SEV feature. Click for full size." alt="Inventorying the SEV feature." style="width: 98%; margin: 0 auto; display: block;"><img decoding="async" src="https://blog.adamspiers.org/wp-content/uploads/2019/09/SEV-CLI-compute-inventory-trait.png" alt="Inventorying the SEV feature." title="Inventorying the SEV feature. Click for full size." style="width: 98%; margin: 0 auto; display: block;" /></a> </p>
</p></div>
<p> SEV can be enabled by the operator by adding a new <code>hw:mem_encryption</code> &#8220;extra spec&#8221; which is a property on nova&#8217;s <a href="https://docs.openstack.org/nova/latest/user/flavors.html">flavors</a>.  As already shown in the screenshot above, this can be done through Horizon, OpenStack&#8217;s web dashboard.  However it can also be set per-image via a similarly-named property <code>hw_mem_encryption</code>: </p>
<div class="figure">
<p><a href="https://blog.adamspiers.org/wp-content/uploads/2019/09/SEV-Horizon-image-metadata-4.png" title="Enabling SEV via image property in Horizon. Click for full size." alt="Enabling SEV via image property in Horizon." style="width: 98%; margin: 0 auto; display: block;"><img decoding="async" src="https://blog.adamspiers.org/wp-content/uploads/2019/09/SEV-Horizon-image-metadata-4.png" alt="Enabling SEV via image property in Horizon." title="Enabling SEV via image property in Horizon. Click for full size." style="width: 98%; margin: 0 auto; display: block;" /></a> </p>
</p></div>
<p> and of course this can all be done via the command-line too: </p>
<div class="figure">
<p><a href="https://blog.adamspiers.org/wp-content/uploads/2019/09/SEV-CLI-flavor-image.png" title="Enabling SEV via CLI. Click for full size." alt="Enabling SEV via CLI. Click for full size." style="width: 98%; margin: 0 auto; display: block;"><img decoding="async" src="https://blog.adamspiers.org/wp-content/uploads/2019/09/SEV-CLI-flavor-image.png" alt="Enabling SEV via CLI. Click for full size." title="Enabling SEV via CLI. Click for full size." style="width: 98%; margin: 0 auto; display: block;" /></a> </p>
</p></div>
<p> Notice the presence of a few other image properties which are crucial for SEV to function correctly.  (These are explained fully in the documentation.) </p>
<p> Once booted, an SEV VM instance looks and behaves pretty much like any other OpenStack VM: </p>
<div class="figure">
<p><a href="https://blog.adamspiers.org/wp-content/uploads/2019/09/SEV-Horizon-instances.png" title="SEV instances listed in Horizon. Click for full size." alt="SEV instances listed in Horizon" style="width: 98%; margin: 0 auto; display: block;"><img decoding="async" src="https://blog.adamspiers.org/wp-content/uploads/2019/09/SEV-Horizon-instances.png" alt="SEV instances listed in Horizon" title="SEV instances listed in Horizon. Click for full size." style="width: 98%; margin: 0 auto; display: block;" /></a> </p>
</p></div>
<p> However there are <a href="https://docs.openstack.org/nova/latest/admin/configuration/hypervisor-kvm.html#impermanent-limitations">some limitations</a>, e.g. it cannot <i>yet</i> be live-migrated or suspended: </p>
<div class="figure">
<p><a href="https://blog.adamspiers.org/wp-content/uploads/2019/09/SEV-CLI-live-migrate-suspend-forbidden.png" title="Enabling SEV via flavor extra spec or image property. Click for full size." alt="Enabling SEV via flavor extra spec or image property" style="width: 98%; margin: 0 auto; display: block;"><img decoding="async" src="https://blog.adamspiers.org/wp-content/uploads/2019/09/SEV-CLI-live-migrate-suspend-forbidden.png" alt="Enabling SEV via flavor extra spec or image property" title="Enabling SEV via flavor extra spec or image property. Click for full size." style="width: 98%; margin: 0 auto; display: block;" /></a> </p>
</p></div>
<p> Behind the scenes, nova takes care of quite a few important details in how the VM is configured in libvirt.  Firstly it performs sanity checks on the flavor and image properties.  Then it adds a crucial new <code>&lt;launchSecurity&gt;</code> element: </p>
<div class="figure">
<p><a href="https://blog.adamspiers.org/wp-content/uploads/2019/09/SEV-CLI-server-launchSecurity-XML.png" title="Enabling SEV via flavor extra spec or image property. Click for full size." alt="Enabling SEV via flavor extra spec or image property" style="width: 98%; margin: 0 auto; display: block;"><img decoding="async" src="https://blog.adamspiers.org/wp-content/uploads/2019/09/SEV-CLI-server-launchSecurity-XML.png" alt="Enabling SEV via flavor extra spec or image property" title="Enabling SEV via flavor extra spec or image property. Click for full size." style="width: 98%; margin: 0 auto; display: block;" /></a> </p>
</p></div>
<p> and also enables IOMMU for <code>virtio</code> devices: </p>
<div class="figure">
<p><a href="https://blog.adamspiers.org/wp-content/uploads/2019/09/SEV-CLI-server-iommu-XML.png" title="Enabling IOMMU for virtio devices. Click for full size." alt="Enabling IOMMU for virtio devices" style="width: 98%; margin: 0 auto; display: block;"><img decoding="async" src="https://blog.adamspiers.org/wp-content/uploads/2019/09/SEV-CLI-server-iommu-XML.png" alt="Enabling IOMMU for virtio devices" title="Enabling IOMMU for virtio devices. Click for full size." style="width: 98%; margin: 0 auto; display: block;" /></a> </p>
</p></div>
</div>
</div>
<div id="outline-container-orgb46ad8b" class="outline-2">
<h2 id="orgb46ad8b">What&#8217;s next?</h2>
<div class="outline-text-2" id="text-orgb46ad8b">
<p> This area of technology is new and rapidly evolving, so there is still plenty of work left to be done, especially on the software side. </p>
<p> Of course we&#8217;ll be adding this functionality to <a href="https://www.suse.com/products/suse-openstack-cloud/">SUSE OpenStack Cloud</a>, initially as a technical preview for our customers to try out. </p>
<p> Probably the most important feature needed next on the SEV side is the ability to verify the attestation which cryptographically proves that the memory was encrypted correctly and can only be decrypted by the owner.  In addition specification of the work required to add support to OpenStack for Intel&#8217;s MKTME already <a href="https://review.opendev.org/#/c/666769/">started</a>, so I would expect that to continue. </p>
</div>
</div>
<div id="footnotes">
<h2 class="footnotes">Footnotes: </h2>
<div id="text-footnotes">
<div class="footdef"><sup><a id="fn.1" name="fn.1" class="footnum" href="#fnr.1">1</a></sup> </p>
<div class="footpara">
<p class="footpara"> There are still potential attacks, e.g. snooping unencrypted memory cache or CPU registers.  Work by AMD and others is ongoing to address these. </p>
</div>
</div>
</div>
</div>
<p><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fblog.adamspiers.org%2F2019%2F09%2F13%2Fimproving-trust-in-the-cloud-with-openstack-and-amd-sev%2F&#038;title=Improving%20trust%20in%20the%20cloud%20with%20OpenStack%20and%20AMD%20SEV" data-a2a-url="https://blog.adamspiers.org/2019/09/13/improving-trust-in-the-cloud-with-openstack-and-amd-sev/" data-a2a-title="Improving trust in the cloud with OpenStack and AMD SEV"><img src="https://static.addtoany.com/buttons/share_save_171_16.png" alt="Share"></a></p><p>The post <a href="https://blog.adamspiers.org/2019/09/13/improving-trust-in-the-cloud-with-openstack-and-amd-sev/">Improving trust in the cloud with OpenStack and AMD SEV</a> appeared first on <a href="https://blog.adamspiers.org">Structured Procrastination</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.adamspiers.org/2019/09/13/improving-trust-in-the-cloud-with-openstack-and-amd-sev/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Report from the OpenStack PTG in Dublin</title>
		<link>https://blog.adamspiers.org/2018/03/09/openstack-ptg-dublin/</link>
					<comments>https://blog.adamspiers.org/2018/03/09/openstack-ptg-dublin/#comments</comments>
		
		<dc:creator><![CDATA[Adam]]></dc:creator>
		<pubDate>Fri, 09 Mar 2018 18:30:00 +0000</pubDate>
				<category><![CDATA[front page]]></category>
		<category><![CDATA[geek]]></category>
		<category><![CDATA[travel]]></category>
		<category><![CDATA[work]]></category>
		<category><![CDATA[architecture]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[OpenStack]]></category>
		<guid isPermaLink="false">https://blog.adamspiers.org/?p=1599</guid>

					<description><![CDATA[<p>Last week I attended OpenStack&#8217;s PTG (Project Teams Gathering) in Dublin. This event happens every 6 months in a different city, and is a fantastic opportunity for OpenStack developers and upstream contributors to get together and turbo-charge the next phase of collaboration. I wrote a private report for my SUSE colleagues summarising my experience, but [&#8230;]</p>
<p>The post <a href="https://blog.adamspiers.org/2018/03/09/openstack-ptg-dublin/">Report from the OpenStack PTG in Dublin</a> appeared first on <a href="https://blog.adamspiers.org">Structured Procrastination</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p> Last week I attended OpenStack&#8217;s <a href="https://www.openstack.org/ptg">PTG (Project Teams Gathering)</a> in Dublin.  This event happens every 6 months in a different city, and is a fantastic opportunity for OpenStack developers and upstream contributors to get together and turbo-charge the next phase of collaboration. </p>
<p> I wrote a private report for my SUSE colleagues summarising my experience, but then <a href="http://www.gazlene.net/dublin-ptg.html">Colleen posted her report publicly</a>, which made me realise that it would be far more in keeping with <a href="https://governance.openstack.org/tc/reference/opens.html">OpenStack&#8217;s Four Opens</a> to publish mine online.  So here it is! </p>
<p><span id="more-1599"></span></p>
<div id="outline-container-org8fff103" class="outline-2">
<h2 id="org8fff103">General observations</h2>
<div class="outline-text-2" id="text-org8fff103">
<p> The PTG was well-attended with just over 400 people from all over the world.  As with previous PTGs this felt like just the right size: enough to have most projects / organizations well represented, but not too big to prevent serendipitous meetings happening many times throughout the week, where I would just be wandering around and bump into exactly the right person I needed to talk to 🙂 </p>
<p> <a href="https://wiki.openstack.org/wiki/PTG/Rocky/Etherpads">All the etherpads are publicly available</a> in case you want to dive into the gory details. </p>
<p> IMHO <a href="https://git.openstack.org/cgit/openstack/ptgbot/tree/README.rst">the ptgbot</a> continued to work really well for adapting to the dynamic and fast-changing agenda.  I submitted a few patches to polish it further. </p>
<p> The &#8220;extreme&#8221; (for Ireland, anyway) weather, which was reportedly the heaviest snow in 40 years, caused a lot of disruption, not just for travel, but also that our conference venue in Croke Park Stadium was forced to shut on Thursday afternoon, rather than Friday evening as originally planned.  Luckily our amazing hotel, <a href="https://www.doylecollection.com/hotels/the-croke-park-hotel">The Croke Park</a>, stepped up to the plate and allowed us to continue the conference there.  It was quite a squash fitting everyone in, but somehow they managed it, and the ensuing organized mayhem had the unexpected side effect of building really strong comradery between everyone. </p>
<p> There was a <a href="https://twitter.com/e_monty/status/968658891507732481">piano-bar style sing-along night</a> (with OpenStack&#8217;s Executive Director <a href="https://twitter.com/jbryce">Jonathan Bryce</a> doing a great job on the piano), <a href="https://twitter.com/knelson92/status/969515964176969734">a board games night</a> &#x2026;  I think it was my colleague Keith Berger who shrewdly observed that it was like being on a cruise ship 🙂  Having the best Guinness in the world on tap probably helped too.  Check out <a href="https://twitter.com/hashtag/SnowpenStack">#SnowpenStack on Twitter</a> for some of the hilarious antics. </p>
<p> We managed a couple of SUSE team dinners and it was great to spend more time with teammates, especially the ones who are normally on a different continent 🙂 </p>
</div>
</div>
<div id="outline-container-org2cb7aa0" class="outline-2">
<h2 id="org2cb7aa0">Self-healing SIG</h2>
<div class="outline-text-2" id="text-org2cb7aa0">
<ul class="org-ul">
<li><a href="https://etherpad.openstack.org/p/self-healing-ptg-rocky">https://etherpad.openstack.org/p/self-healing-ptg-rocky</a></li>
</ul>
<p> My main reason for attending the PTG was bootstrapping <a href="https://blog.adamspiers.org/announcing-openstacks-self-healing-sig/">this new SIG which I founded a few months ago</a>.  We had a really good session filling Tuesday afternoon, with about 30 people attending. </p>
<div class="figure">
<p><a href="https://blog.adamspiers.org/wp-content/uploads/2018/03/self-healing-PTG-Dublin.jpeg" width="99%" align="center" alt="The subset of self-healing attendees brave enough to venture out into the cold" title="The subset of self-healing attendees brave enough to venture out into the cold"><img decoding="async" src="https://blog.adamspiers.org/wp-content/uploads/2018/03/self-healing-PTG-Dublin-50.jpeg" alt="The subset of self-healing attendees brave enough to venture out into the cold" width="99%" align="center" title="The subset of self-healing attendees brave enough to venture out into the cold" /></a> </p>
</p></div>
<p> There were discussions about various use cases, and some people are already keen to start work on use cases immediately.  We also had representatives from the <a href="https://wiki.openstack.org/wiki/API_SIG">API SIG</a>, including <a href="http://graham.hayes.ie/">Graham Hayes a.k.a. <code>mugsie</code></a> who is leading the new <a href="https://review.openstack.org/#/c/531456/">health-check API initiative</a>, and from OPNFV, since <a href="http://lists.openstack.org/pipermail/openstack-dev/2018-March/127956.html">we are trying to promote better sharing of work on automated testing of self-healing / HA functionality</a>.  (If you&#8217;re interested, please <a href="https://etherpad.openstack.org/p/extreme-testing-contacts">sign up here</a>!) </p>
<p> We agreed some concrete next steps, some of which I already started working on: </p>
<ul class="org-ul">
<li><a href="https://storyboard.openstack.org/#!/story/2001628">Populate our self-healing-sig repo with the standard Sphinx stuff and templates for use cases and specs</a></li>
<li><a href="https://storyboard.openstack.org/#!/story/2001639">Compile a list of contact info for self-healing stakeholders across the various projects / organizations</a></li>
<li>Start to visualize the architectural integration points between involved projects.</li>
<li>Start to document use cases and write specs for proposed work.</li>
</ul>
<p> You can follow all activity via <a href="https://storyboard.openstack.org/#!/project/917">the StoryBoard project</a>. </p>
<p> The only disappointment with this session was that no operators attended.  However I managed to coordinate with some people involved with <a href="https://etherpad.openstack.org/p/TYO-ops-meetup-2018">the Tokyo Ops meetup this week</a>, in order to gather feedback from ops, and we got a session slot booked in that agenda which happened yesterday.  Additionally I am speaking on self-healing and leading a discussion session on it at <a href="https://www.meetup.com/Openstack-London/events/247958746/">the London OpenStack Meetup next Monday</a>, so hopefully we&#8217;ll get some good feedback there too. </p>
</div>
</div>
<div id="outline-container-orgda7e8a1" class="outline-2">
<h2 id="orgda7e8a1">First Contact SIG</h2>
<div class="outline-text-2" id="text-orgda7e8a1">
<ul class="org-ul">
<li><a href="https://etherpad.openstack.org/p/FC_SIG_Rocky_PTG">https://etherpad.openstack.org/p/FC_SIG_Rocky_PTG</a></li>
</ul>
<p> I joined the contributor guide part of this session briefly to give some feedback and also organise collaboration on writing a quickstart guide for people who are used to GitHub and don&#8217;t know Gerrit, since I promised to write that after creating <a href="https://ethercalc.openstack.org/github-gerrit">a comparison matrix</a> in Denver, which provides a base for the guide. </p>
</div>
</div>
<div id="outline-container-org295e4bb" class="outline-2">
<h2 id="org295e4bb">StoryBoard</h2>
<div class="outline-text-2" id="text-org295e4bb">
<p> The Self-healing SIG <a href="http://lists.openstack.org/pipermail/openstack-sigs/2017-November/000180.html">previously agreed to use StoryBoard for tracking work</a>, not just to aid collaboration within the SIG, but also to help dogfood StoryBoard and provide feedback.  So I spent quite a bit of time with the StoryBoard folks giving feedback and brainstorming ideas for improving usability.  I also started work on a &#8220;Rosetta stone&#8221; matrix which aims to show the key differences between StoryBoard and other issue trackers people are used to, such as JIRA, Trello, GitHub, Bugzilla, Redmine etc.  Similarly to the approach with the GitHub / Gerrit matrix above, it could serve as the basis for a document which helps &#8220;port&#8221; people to StoryBoard from other issue trackers. </p>
</div>
</div>
<div id="outline-container-orgf78a52f" class="outline-2">
<h2 id="orgf78a52f">Fast-forward upgrades (FFU)</h2>
<div class="outline-text-2" id="text-orgf78a52f">
<ul class="org-ul">
<li><a href="https://etherpad.openstack.org/p/ffu-ptg-rocky">https://etherpad.openstack.org/p/ffu-ptg-rocky</a></li>
</ul>
<p> This was a really full session, with some good discussions.  Main points: </p>
<ul class="org-ul">
<li>It was agreed to form an Upgrade SIG, and <a href="https://governance.openstack.org/sigs/">this has now happened</a>.</li>
<li>AFAICS everyone is not yet on the same page about what FFU means exactly, especially regarding online migrations.  There is perhaps room for improvement in the <a href="https://governance.openstack.org/tc/reference/tags/index.html">governance tags</a> provided for tracking upgradability (<a href="https://governance.openstack.org/tc/reference/tags/assert_supports-upgrade.html">assert:supports-upgrade</a>, <a href="https://governance.openstack.org/tc/reference/tags/assert_supports-accessible-upgrade.html">assert:supports-accessible-upgrade</a>), which would help clarify this.</li>
<li>IIUC <a href="https://wiki.openstack.org/wiki/Kolla">Kolla</a> seem to be going in a slightly different direction based on online rolling upgrades, although I don&#8217;t think they necessarily have any strong objections to supporting offline upgrades so maybe things will converge in the long term.</li>
<li>Noone from <a href="https://wiki.openstack.org/wiki/Openstack-helm"><code>openstack-helm</code></a> present 🙁</li>
<li>Lots of gotchas, and consequent debates on how best to capture and share these.</li>
</ul>
</div>
</div>
<div id="outline-container-org57e226e" class="outline-2">
<h2 id="org57e226e">Oslo</h2>
<div class="outline-text-2" id="text-org57e226e">
<ul class="org-ul">
<li><a href="https://etherpad.openstack.org/p/oslo-ptg-rocky">https://etherpad.openstack.org/p/oslo-ptg-rocky</a></li>
</ul>
<p> I only had time to pop into the <code>oslo</code> room briefly, to discuss an interesting new initiative in <code>oslo.config</code> to automate migration of config between releases (a bit like DB migrations, but for <code>oslo.config</code> instead of DB schema).  This was also mentioned in the FFU session. </p>
<ul class="org-ul">
<li><a href="https://review.openstack.org/#/c/520043/">gerrit#I851628c0 (Propose spec for handle config changes in code)</a></li>
<li><a href="https://review.openstack.org/#/c/526314/">gerrit#I0a14a4a4 (Handle config mapping changes)</a></li>
<li><a href="https://review.openstack.org/#/c/526261/">gerrit#I0b95d3ea ({WIP}{POC} Handle config mapping changes)</a></li>
</ul>
<p> I posed some questions about how this would handle config which requires extra per-project logic to migrate, and also how it would handle config which has been <b>explicitly</b> set to the default value. We had some interesting discussions on that but I think ultimately the answer was &#8220;let&#8217;s cross that bridge when we come to it&#8221;. </p>
<p> I also had a quick chat with Ken Giusti about <a href="https://bugs.launchpad.net/barbican/+bug/1705543">a long-standing <code>oslo.service</code> bug we&#8217;ve worked on</a>, but we ran out of time and agreed to take it online. </p>
</div>
</div>
<div id="outline-container-org061e0f7" class="outline-2">
<h2 id="org061e0f7">OpenStack Ansible</h2>
<div class="outline-text-2" id="text-org061e0f7">
<p> I demo&#8217;d <a href="https://github.com/aspiers/ansible-viz">ansible-viz</a>, the Ansible visualization tool of which I recently became the maintainer, to the <a href="https://docs.openstack.org/openstack-ansible/latest/">OpenStack Ansible</a> folks.  They seemed really enthusiastic, and are looking into using it for embedding diagrams in their docs.  Hopefully this means they will start contributing to make it better! </p>
<p> My colleague Dirk Müller and I also talked to them in general about other areas for potential collaboration.  We were both impressed with how open they are to help and collaborate! </p>
</div>
</div>
<div id="outline-container-org36a5675" class="outline-2">
<h2 id="org36a5675">Misc</h2>
<div class="outline-text-2" id="text-org36a5675">
<p> As usual with the PTGs, I got huge value from random unplanned conversations in hallways, at lunch tables, in the bar etc. </p>
<p> I spent a lot of time talking to Emmet Hickory (a.k.a. <code>persia</code>) and he gave me some great ideas about new use cases for the <code>git</code> workflow tools I have been building in <a href="https://hackweek.suse.com/">hackweeks</a> and spare time.  I already knew that my <a href="https://github.com/aspiers/git-deps"><code>git-deps</code></a> tool allows fairly accurate predictions of how difficult it will be to backport a given commit to a stable branch, but a new idea emerged that this could be added as a non-voting job to <a href="https://docs.openstack.org/infra/zuul/">Zuul</a>&#8216;s checks pipeline, to facilitate a more proactive / preemptive approach to backporting. </p>
<p> I talked with Tony Breeds (PTL of stable branch maintenance) about this who told me that Neutron is already extremely proactive when it comes to backporting, so they might be interested in this.  So I met Miguel Lavalle (Neutron PTL) and he was really interested and requested that I put it on the agenda for a future Neutron IRC meeting.  <a href="https://wiki.openstack.org/wiki/Network/Meetings#On_Demand_Agenda">This has now happened</a> and we will discuss during next Tuesday&#8217;s meeting. </p>
<p> Emmet helped me realise that my <code>git-explode</code> tool could also help with backporting work, so I need to finish packaging that and publish it.  There is a <a href="https://www.meetup.com/londongit/">London Git meetup</a> coming up soon, and I might present the tools at that. </p>
<p> I&#8217;m getting off-topic now so I&#8217;ll finish here 🙂  If you found this report useful please leave a comment below, so that I know it&#8217;s worth bothering to do next time 🙂 </p>
</div>
</div>
<p><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fblog.adamspiers.org%2F2018%2F03%2F09%2Fopenstack-ptg-dublin%2F&#038;title=Report%20from%20the%20OpenStack%20PTG%20in%20Dublin" data-a2a-url="https://blog.adamspiers.org/2018/03/09/openstack-ptg-dublin/" data-a2a-title="Report from the OpenStack PTG in Dublin"><img src="https://static.addtoany.com/buttons/share_save_171_16.png" alt="Share"></a></p><p>The post <a href="https://blog.adamspiers.org/2018/03/09/openstack-ptg-dublin/">Report from the OpenStack PTG in Dublin</a> appeared first on <a href="https://blog.adamspiers.org">Structured Procrastination</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.adamspiers.org/2018/03/09/openstack-ptg-dublin/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Abstraction As A Service</title>
		<link>https://blog.adamspiers.org/2017/12/19/abstraction-as-a-service/</link>
					<comments>https://blog.adamspiers.org/2017/12/19/abstraction-as-a-service/#respond</comments>
		
		<dc:creator><![CDATA[Adam]]></dc:creator>
		<pubDate>Tue, 19 Dec 2017 18:55:00 +0000</pubDate>
				<category><![CDATA[front page]]></category>
		<category><![CDATA[geek]]></category>
		<category><![CDATA[architecture]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[fake news]]></category>
		<category><![CDATA[humour]]></category>
		<category><![CDATA[OpenStack]]></category>
		<guid isPermaLink="false">https://blog.adamspiers.org/?p=1569</guid>

					<description><![CDATA[<p>The birth of abstraction layers The last five decades of computing have seen a gradual progression of architectural abstraction layers. Around 50 years ago, IBM mainframes gained virtualization capabilities. Despite explosive progress in the sophistication of hardware following Moore&#8217;s Law, there wasn&#8217;t too much further innovation in abstraction layers in server computing until well after [&#8230;]</p>
<p>The post <a href="https://blog.adamspiers.org/2017/12/19/abstraction-as-a-service/">Abstraction As A Service</a> appeared first on <a href="https://blog.adamspiers.org">Structured Procrastination</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div id="outline-container-orgf0b3819" class="outline-2">
<h2 id="orgf0b3819">The birth of abstraction layers</h2>
<div class="outline-text-2" id="text-orgf0b3819">
<p> The last five decades of computing have seen a gradual progression of architectural abstraction layers.  <a href="https://www.networkworld.com/article/2254433/virtualization/with-long-history-of-virtualization-behind-it--ibm-looks-to-the-future.html">Around 50 years ago, IBM mainframes gained virtualization capabilities.</a>  Despite explosive progress in the sophistication of hardware following Moore&#8217;s Law, there wasn&#8217;t too much further innovation in abstraction layers in server computing until well after the dawn of the microcomputer era, in the early 2000s, when virtualization suddenly became all the rage again.  (I heard a rumour that this was due to certain IBM patents expiring, but maybe that&#8217;s an urban myth.)  Different types of hypervisors emerged, including <a href="https://virtuozzo.com/support/pvc/">early forms of containers</a>. </p>
<p> Then we started to realise that a hypervisor wasn&#8217;t enough, and we needed a whole management layer to keep control of the new &#8220;VM sprawl&#8221; problem which had arisen.  A whole bunch of solutions appeared, including the concept of &#8220;cloud&#8221;, but many were proprietary, and so after a few years OpenStack came along to the rescue! </p>
</div>
</div>
<div id="outline-container-org1acf60d" class="outline-2">
<h2 id="org1acf60d">The cloud era</h2>
<div class="outline-text-2" id="text-org1acf60d">
<p> But then we realised that managing OpenStack itself was a pain, and someone had the idea that rather than building a separate management layer for managing OpenStack, we could just use OpenStack to manage itself!  And so OpenStack on OpenStack, or Triple-O as it&#8217;s now known, was born. </p>
<p> Within and alongside OpenStack, several other new exciting trends emerged: Software-Defined Networking (SDN), Software-Defined Storage (e.g. Ceph), etc.  So the umbrella term Software-Defined Infrastructure was coined to refer to this group of abstraction layers. </p>
<p><span id="more-1569"></span>
</div>
</div>
<div id="outline-container-orgec1b76b" class="outline-2">
<h2 id="orgec1b76b">The container era</h2>
<div class="outline-text-2" id="text-orgec1b76b">
<p> Whilst OpenStack was busy growing up and moving past the Peak of Inflated Expectations, all of a sudden Docker and containers burst onto the scene and provided a lot of new buzzwords to get everyone excited again.  But after the excitement started to fade, that familiar sinking feeling came back with the realisation that just like VMs, containers need something to manage them. </p>
<p> But then Kubernetes leapt in to the rescue!  And all the excitement returned.  Except that of course then you need something to manage Kubernetes, but fortunately we already had OpenStack, so we could just use that!  And so Magnum was born.  And since Kubernetes is so awesome, we realised that we could also use it as the basis for deploying OpenStack.  At <a href="https://www.openstack.org/summit/sydney-2017/">the recent OpenStack Summit in Sydney</a>, we saw <a href="https://www.openstack.org/summit/sydney-2017/summit-schedule/global-search?t=kubernetes">the continued rise in popularity of running both Kubernetes on OpenStack, and OpenStack on Kubernetes</a>. </p>
</div>
</div>
<div id="outline-container-org3c2e3c9" class="outline-2">
<h2 id="org3c2e3c9">Looking to the future</h2>
<div class="outline-text-2" id="text-org3c2e3c9">
<p> But that still leaves the pesky job of managing raw hardware to put all this stuff on top.  Fortunately there are services you can pay for so that other people do that for you, and they even have APIs you can hook into!  This is called public cloud.  And even better, many companies use OpenStack to drive their public clouds. </p>
<p> So now we&#8217;re running Kubernetes on OpenStack on Kubernetes on OpenStack.  And now we&#8217;re done!  Right? </p>
<p> Well &#x2026; if we&#8217;re to learn anything from this history, it should be that we&#8217;ll always find more good reasons for new abstraction layers.  I mean, there&#8217;s already a huge amount of work going into things like Cloud Foundry on the PaaS layer, NFV in the telco space, serverless computing, &#x2026;  And I hear that Kubernetes is a great platform for running Cloud Foundry, just like it is for OpenStack.  And wouldn&#8217;t OpenStack be a cool platform to provide inside Cloud Foundry, e.g. for people who just want to quickly try it out?  So who knows, maybe in the next few years we&#8217;ll have OpenStack on Cloud Foundry on Kubernetes on OpenStack on Kubernetes on OpenStack. </p>
</div>
</div>
<div id="outline-container-org462e47e" class="outline-2">
<h2 id="org462e47e">A proposal to make things simpler</h2>
<div class="outline-text-2" id="text-org462e47e">
<p> Of course this starts getting a bit unwieldly.  Every time we introduce a new abstraction layer there&#8217;s extra complexity to deal with.  But that&#8217;s OK, because <b>we can always deal with complexity by abstracting it away!</b> It&#8217;s a bit like the cyber-equivalent of delegating difficult tasks to someone else.  So I&#8217;d like to propose a new concept, and corresponding meta-component of the overall architecture: </p>
<p> Whenever we realise we need a new abstraction layer, rather than having to deal with the complexity of deploying and managing this layer, we could just invoke APIs to a central service which takes care of this complexity for us.  We could call this new concept (drum roll, please&#x2026;) <b>Abstraction As A Service, or AaaS.</b> (If you&#8217;re British or Australian you may prefer to pronounce this as if there was an &#8220;r&#8221; in the middle, to distinguish from similar-sounding existing words such as &#8220;as&#8221;.  Or maybe we should call it <i>Sweeping Stuff Under The Carpet As A Service</i>?  Or SSUtCaaS for short, which can be pronounced &#8220;suitcase&#8221; (thanks to <a href="https://www.hastexo.com/who/florian/">Florian</a> for pointing this out). </p>
<p> With AaaS, if we wanted say, NFV on serverless on CF on Kubernetes on OpenStack on Kubernetes on OpenStack on public cloud on COBOL, we could simply write some declarative YAML or JSON describing the stack we want, push it to the AaaS REST API endpoint via an HTTP POST, and it would set the whole thing up for us automatically.  We could build any number and combination of abstraction layers we would possibly need, so at this point the job could be considered well and truly done, once and for all! </p>
<p> Except, ya know, we&#8217;d need a way to deploy and manage our AaaS service, of course.  Maybe we could build an AaaSaaS service for that &#x2026; </p>
</div>
</div>
<div id="outline-container-org8b61ca6" class="outline-2">
<h2 id="org8b61ca6">Sheepish postscript / disclaimer</h2>
<div class="outline-text-2" id="text-org8b61ca6">
<p> P.S. I know, it&#8217;s a terrible joke if you have to explain it, but based on <a href="https://blog.adamspiers.org/2011/11/29/linux-desktop-community-outraged-by-latest-torvalds-comments/">previous experiences</a> of my dry British humour being misunderstood (especially given the inevitably international audience), I feel the need to point out that this blog post was intended as nothing more than poking a bit of gentle fun at the cloud software industry.  I&#8217;m a huge fan of all the technologies mentioned here, and yes, I&#8217;m even in favour of multiple abstraction layers, despite occasionally wondering if we&#8217;ve all gone a bit insane 😉  Thanks to <a href="https://www.hastexo.com/who/florian/">Florian</a>, <a href="http://blog.clusterlabs.org/">Andrew</a>, and <a href="https://launchpad.net/~dmllr">Dirk</a> for reviewing an earlier draft, but I take responsibility for any mistakes or any offence unintentionally caused! </p>
</div>
</div>
<p><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fblog.adamspiers.org%2F2017%2F12%2F19%2Fabstraction-as-a-service%2F&#038;title=Abstraction%20As%20A%20Service" data-a2a-url="https://blog.adamspiers.org/2017/12/19/abstraction-as-a-service/" data-a2a-title="Abstraction As A Service"><img src="https://static.addtoany.com/buttons/share_save_171_16.png" alt="Share"></a></p><p>The post <a href="https://blog.adamspiers.org/2017/12/19/abstraction-as-a-service/">Abstraction As A Service</a> appeared first on <a href="https://blog.adamspiers.org">Structured Procrastination</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.adamspiers.org/2017/12/19/abstraction-as-a-service/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Announcing OpenStack&#8217;s Self-healing SIG</title>
		<link>https://blog.adamspiers.org/2017/11/24/announcing-openstacks-self-healing-sig/</link>
					<comments>https://blog.adamspiers.org/2017/11/24/announcing-openstacks-self-healing-sig/#respond</comments>
		
		<dc:creator><![CDATA[Adam]]></dc:creator>
		<pubDate>Fri, 24 Nov 2017 15:15:00 +0000</pubDate>
				<category><![CDATA[front page]]></category>
		<category><![CDATA[geek]]></category>
		<category><![CDATA[architecture]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[OpenStack]]></category>
		<guid isPermaLink="false">https://blog.adamspiers.org/?p=1577</guid>

					<description><![CDATA[<p>One of the biggest promises of the cloud vision was the idea that all infrastructure could be managed in a policy-driven fashion, reacting to failures and other events by automatically healing and optimising services. In OpenStack, most of the components required to implement such an architecture already exist, and are nicely scoped, for the most [&#8230;]</p>
<p>The post <a href="https://blog.adamspiers.org/2017/11/24/announcing-openstacks-self-healing-sig/">Announcing OpenStack&#8217;s Self-healing SIG</a> appeared first on <a href="https://blog.adamspiers.org">Structured Procrastination</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p> One of the biggest promises of the cloud vision was the idea that all infrastructure could be managed in a policy-driven fashion, reacting to failures and other events by automatically healing and optimising services. </p>
<p> In OpenStack, most of the components required to implement such an architecture already exist, and are nicely scoped, for the most part without too much overlap: </p>
<ul class="org-ul">
<li><a href="http://monasca.io/">Monasca</a>: monitoring</li>
<li><a href="https://docs.openstack.org/aodh/latest/">Aodh</a>: alarming</li>
<li><a href="https://docs.openstack.org/congress/latest/">Congress</a>: policy-based governance</li>
<li><a href="https://docs.openstack.org/mistral/latest/">Mistral</a>: workflow</li>
<li><a href="https://docs.openstack.org/senlin/latest/">Senlin</a>: clustering service</li>
<li><a href="https://docs.openstack.org/vitrage/latest/">Vitrage</a>: root cause analysis</li>
<li><a href="https://docs.openstack.org/watcher/latest/">Watcher</a>: optimization</li>
<li><a href="https://wiki.openstack.org/wiki/Masakari">Masakari</a>: compute plane HA</li>
<li><a href="https://docs.openstack.org/freezer/latest/">Freezer-dr</a>: compute plane HA</li>
<li><a href="https://docs.openstack.org/heat/latest/">Heat</a>: orchestration (normally used for cloud applications, but could also potentially <a href="https://github.com/openstack/heat-templates/tree/master/hot/autohealing">auto-heal</a> cloud infrastructure via <a href="https://wiki.openstack.org/wiki/TripleO">TripleO</a>)</li>
<li><a href="https://www.opnfv.org/community/projects/doctor">Doctor</a>: fault management and maintenance for OPNFV</li>
<li><a href="https://wiki.openstack.org/wiki/Fault_Genes_Working_Group">Fault Genes Working Group</a>: Fault classification &amp; Recovery Strategy</li>
<li><a href="http://craton.readthedocs.io/en/latest/readme.html">Craton</a>: Fleet management (currently stalled)</li>
</ul>
<p> However, there is not yet a clear strategy within the community for how these should all tie together.  (The OPNFV community is arguably further ahead in this respect, but hopefully some of their work could be applied outside NFV-specific environments.) </p>
<div id="outline-container-orgd7eb223" class="outline-2">
<h2 id="orgd7eb223">Designing a new SIG</h2>
<div class="outline-text-2" id="text-orgd7eb223">
<p> To address this, I organised <a href="https://etherpad.openstack.org/p/self-healing-queens-ptg">an unofficial kick-off meeting</a> at the <a href="https://www.openstack.org/ptg/">PTG</a> in <a href="https://wiki.openstack.org/wiki/PTG/Queens/Etherpads">Denver</a>, at which it became clear that there was sufficient interest in this idea from many of the above projects in order to create a new &#8220;Self-healing&#8221; <a href="https://wiki.openstack.org/wiki/OpenStack_SIGs">SIG</a>.  However, there were still open questions: </p>
<ol class="org-ol">
<li>What exactly should be the scope of the SIG?  Should it be for developers and operators, or also end users?</li>
<li>What should the name be?  Is &#8220;self-healing&#8221; good enough, or should it also include, say, non-failure scenarios like optimization?</li>
</ol>
<p><span id="more-1577"></span></p>
<p> In an attempt to answer these, I formally <a href="http://lists.openstack.org/pipermail/openstack-sigs/2017-September/000054.html">proposed the creation of the SIG</a>, asking the community to fill in <a href="https://docs.google.com/forms/d/e/1FAIpQLSekIFAFYc1mpBkQHgZwIVLOj-rQQPjw9Di3-hXL03ilhI80rg/viewform">a short survey</a> to vote on its creation, and to provide their feedback regarding the name and scope. Unfortunately whilst everyone unanimously supported its creation, opinions were split more or less 50%-50% on the name and the scope! So on advice from <a href="https://ttx.re/">Thierry</a>, I listed the SIG as &#8220;forming&#8221;, created <a href="https://wiki.openstack.org/wiki/Self-healing_SIG">the corresponding wiki page</a>, and <a href="http://forumtopics.openstack.org/cfp/details/26">proposed</a> a session for <a href="https://wiki.openstack.org/wiki/Forum/Sydney2017">the Sydney Forum</a>, which was subsequently <a href="https://www.openstack.org/summit/sydney-2017/summit-schedule/events/20508/self-healing-and-optimization-sig">accepted</a>. </p>
</div>
</div>
<div id="outline-container-org8dad8c6" class="outline-2">
<h2 id="org8dad8c6">A SIG is born!</h2>
<div class="outline-text-2" id="text-org8dad8c6">
<p> We had around 30 people attend the Sydney Forum session, which was extremely encouraging!  You can read more details in <a href="https://etherpad.openstack.org/p/self-healing-rocky-forum">the etherpad</a>, but here is the quick summary &#x2026; </p>
<p> Most importantly, we resolved the naming and scoping issues, concluding that to avoid biting off too much in one go, it was better to be pragmatic and start small: </p>
<ul class="org-ul">
<li>Initially focus on cloud infrastructure, and not worry too much about the user-facing impact of failures yet; we can add that concern whenever it makes sense (which is particularly relevant for telcos / NFV).</li>
<li>Not worry too much about optimization initially; <a href="https://docs.openstack.org/watcher/latest/">Watcher</a> is possibly the only project focusing on this right now, and again we can expand to include optimization any time we want.</li>
</ul>
<p> So now that the naming and scoping issues are resolved, I am excited to announce that the Self-healing SIG is officially formed! </p>
<p> Discussion went beyond mere administravia, however: </p>
<ul class="org-ul">
<li>We collected a few initial use cases.</li>
<li>We informally decided the governance of the SIG.  I asked if anyone else would like to assume leadership, but noone seemed keen, dashing my hopes of avoiding extra work 😉 But <a href="https://www.openstack.org/summit/sydney-2017/summit-schedule/speakers/9844">Eric Kao</a>, <a href="https://docs.openstack.org/project-team-guide/ptl.html">PTL</a> of <a href="https://docs.openstack.org/congress/latest/">Congress</a>, generously offered to act as co-chair.</li>
<li>We discussed health check APIs, which were mentioned in at least 2 or 3 other Forum sessions this time round.</li>
<li>We agreed that we wanted an IRC channel, and that it could host bi-weekly meetings.  However as usual there was no clean solution to choosing a time which would suit everyone ;-/  I&#8217;ll try to figure out what to do about this!</li>
</ul>
</div>
</div>
<div id="outline-container-org78400a8" class="outline-2">
<h2 id="org78400a8">Get involved</h2>
<div class="outline-text-2" id="text-org78400a8">
<p> You are warmly invited to join, if this topic interests you: </p>
<ul class="org-ul">
<li>Ensure you are <a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-sigs">subscribed to the <code>openstack-sigs</code> mailing list</a>, and watch out for posts tagged <code>[self-healing]</code>.</li>
<li>Bookmark <a href="https://wiki.openstack.org/wiki/Self-healing_SIG">the wiki page</a> which is the SIG&#8217;s official home.</li>
</ul>
</div>
</div>
<div id="outline-container-org9c6bac0" class="outline-2">
<h2 id="org9c6bac0">Next steps</h2>
<div class="outline-text-2" id="text-org9c6bac0">
<p> I have sent out <a href="http://lists.openstack.org/pipermail/openstack-sigs/2017-November/000170.html">a similar announcement to the mailing list</a>, and next will set up the IRC channel, and see if we can make progress on agreeing times for regular IRC meetings. </p>
<p> Other than this administravia, it is of course up to the community to decide in which direction the SIG should go, but my suggestions are: </p>
<ul class="org-ul">
<li>Continue to collect use cases.  It makes sense to have a very lightweight process for this (at least, initially), so Eric has created <a href="https://docs.google.com/document/d/13N36g2RlUYs8mw7hbfRXw6y2Jc-V2XGrXgfPXPpUvuU/edit?usp=sharing">a Google Doc</a> and populated it with a suggested template and a first example.  Feel free to add your own based on this template.</li>
<li>Collect links to any existing documentation or other resources which describe how existing services can be combined.  This <a href="https://www.openstack.org/videos/sydney-2017/advanced-fault-management-with-vitrage-and-mistral">awesome talk on Advanced Fault Management with Vitrage and Mistral</a> is a perfect example, and <a href="https://www.openstack.org/videos/barcelona-2016/building-self-healing-applications-with-aodh-zaqar-and-mistral">here is another</a>, but we need to make it easier for operators to understand which combinations like this are possible, and easier for them to be set up.</li>
<li>Finish <a href="https://docs.google.com/drawings/d/1kEFtVpQ4c8HipSp34EVAkcSGmwyg1MzWf_H5oGTtl-Y/edit?usp=sharing">the architecture diagram drafted in Denver</a>.</li>
<li>At a higher level, we could document reference stacks which address multiple self-healing cases.</li>
<li>Talk more with the OPNFV community to find out what capabilities they have which could be reused within non-NFV OpenStack clouds.</li>
<li>Perform gaps analysis on the use cases, and liase with specific projects to drive development in directions which can address those gaps.</li>
</ul>
</div>
</div>
<div id="outline-container-orgb5fad4d" class="outline-2">
<h2 id="orgb5fad4d">The origin of the idea for the SIG</h2>
<div class="outline-text-2" id="text-orgb5fad4d">
<p> In case you&#8217;re interested in the history &#x2026; </p>
<p> I first became aware of the need for this SIG while working upstream within the community on OpenStack HA &#8211; specifically on compute plane HA, where failures of compute nodes or hypervisors are automatically handled by resurrecting affects VMs on other compute nodes.  I saw many groups independently trying to solve the same problem, so I <a href="http://lists.openstack.org/pipermail/openstack-dev/2015-October/077735.html">created the <code>#openstack-ha</code> IRC channel</a>, <a href="http://lists.openstack.org/pipermail/openstack-dev/2015-November/079127.html">organised weekly meetings</a>, and <a href="http://lists.openstack.org/pipermail/openstack-dev/2016-June/096820.html">tried to bring all stakeholders together to converge on a single upstream solution</a>.  Progress was gradually made, which we presented in <a href="https://www.openstack.org/videos/video/high-availability-for-pets-and-hypervisors-state-of-the-nation">Austin</a>, <a href="https://www.openstack.org/videos/boston-2017/high-availability-for-instances-moving-to-a-converged-upstream-solution">Boston</a>, and most recently in Tel Aviv at <a href="https://youtu.be/uMCMDF9VkYk">OpenStack Day Israel 2017</a>. </p>
<p> After the talk I had a great conversation with Ifat Afek, who is the <a href="https://docs.openstack.org/project-team-guide/ptl.html">PTL</a> of OpenStack <a href="https://docs.openstack.org/vitrage/latest/">Vitrage</a>, which is an awesome project providing RCA (Root Cause Analysis) of faults within OpenStack.  Since Vitrage can do things like receive an alert about a fault on a compute node (e.g. from <a href="https://docs.openstack.org/aodh/latest/">Aodh</a>) and then automatically determine all affected VMs and call out to another service like <a href="https://docs.openstack.org/mistral/latest/">Mistral</a> to enact appropriate remediation, there was obvious synergy between our work. </p>
<p> However Vitrage goes much further than just compute HA: since it can receive various alerts from multiple types of data source, model relationships between many types of resource, and trigger external services to take action, this kind of combination has tremendous potential for building automatically self-healing cloud infrastructure.  And as shown above, there are several other OpenStack projects operating in the same space, which could take this approach further; for example, <a href="https://docs.openstack.org/congress/latest/">Congress</a> can be used to specify policies regarding how failures should be handled. </p>
<p> Talking with Ifat resulted in the idea to create a new <a href="https://wiki.openstack.org/wiki/OpenStack_SIGs">SIG</a> with the goals of identifying self-healing use cases, establishing and documenting what can already be achieved by combining existing OpenStack services, and enhancing collaboration between the projects and with operators to fill in any remaining gaps.  And now you know the rest of the story 🙂 </p>
</div>
</div>
<p><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fblog.adamspiers.org%2F2017%2F11%2F24%2Fannouncing-openstacks-self-healing-sig%2F&#038;title=Announcing%20OpenStack%E2%80%99s%20Self-healing%20SIG" data-a2a-url="https://blog.adamspiers.org/2017/11/24/announcing-openstacks-self-healing-sig/" data-a2a-title="Announcing OpenStack’s Self-healing SIG"><img src="https://static.addtoany.com/buttons/share_save_171_16.png" alt="Share"></a></p><p>The post <a href="https://blog.adamspiers.org/2017/11/24/announcing-openstacks-self-healing-sig/">Announcing OpenStack&#8217;s Self-healing SIG</a> appeared first on <a href="https://blog.adamspiers.org">Structured Procrastination</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.adamspiers.org/2017/11/24/announcing-openstacks-self-healing-sig/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
