<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Windisch Wide Web</title>
  <id>http://eric.windisch.us</id>
  <updated>2012-02-06</updated>
  <author>
    <name>ewindisch</name>
  </author>
  <entry>
    <title>My candidacy for the OpenStack Foundation Board</title>
    <link rel="alternate" href="http://eric.windisch.us/2012/08/20/my-candidacy-for-the-openstack-foundation-board/"/>
    <id>http://eric.windisch.us/2012/08/20/my-candidacy-for-the-openstack-foundation-board/</id>
    <published>2012-08-20</published>
    <updated>2012-08-20</updated>
    <author>
      <name>ewindisch</name>
    </author>
    <summary type="html">&lt;p&gt;The elections have started! If you&amp;rsquo;re eligable to vote, you should have
already received an email containing a link to make your vote.&lt;/p&gt;

&lt;p&gt;You can vote for one or many candidates, but the fewer candidates you&lt;/p&gt;
</summary>
    <content type="html">&lt;p&gt;The elections have started! If you&amp;rsquo;re eligable to vote, you should have
already received an email containing a link to make your vote.&lt;/p&gt;

&lt;p&gt;You can vote for one or many candidates, but the fewer candidates you
vote for, the stronger your support.&lt;/p&gt;

&lt;p&gt;I&amp;rsquo;m running. I&amp;rsquo;m not only running because it would be
an interesting thing to do, or because I believe in the mission, but I
really believe I can be a valuable asset to the Board. Not only have I
been a long-standing contributor to Openstack, I have a background in
business and brand ownership/management, event management, and pro se
trademark / copyright law.&lt;/p&gt;

&lt;p&gt;If I may have your support, it would be
graciously appeciated, both in the elections and by word of mouth, too.&lt;/p&gt;

&lt;h2&gt;About Eric Windisch&lt;/h2&gt;

&lt;p&gt;Eric has a decade of experience in building web hosting and billing
automation, and has been automating virtualization and storage since
2006. Currently with Cloudscaling, his previous position was as founder
and operator of a small hosting/cloud services provider where he was
involved in the management and legal affairs of business processes,
trademarks, and copyrights. He has been a user of OpenStack since Austin
and a contributor since Cactus. Furthermore, he has been a champion of
open processes and transparency for OpenStack, both on and off the
mailing lists.&lt;/p&gt;

&lt;h2&gt;What is your relationship to OpenStack, and why is its success important to you and/or your company? What would you say is your biggest contribution to OpenStack&amp;rsquo;s success to date?&lt;/h2&gt;

&lt;p&gt;Years before OpenStack entered the picture, I operated a small hosting
operation where I felt our long-term success pinned on an open cloud
solution. Today, while I&amp;rsquo;m no longer the owner/operator of a hosting
firm, I remain resolved to help others build cloud computing solutions
on open technologies. I became a contributor to OpenStack and joined
Cloudscaling to achieve these personal goals.&lt;/p&gt;

&lt;p&gt;My employer, Cloudscaling, is also vested in Openstack with it being the
core foundation on which their product stands.&lt;/p&gt;

&lt;h2&gt;Describe your experience with other non profits or serving as a board member. How does your experience prepare you for the role of a board member?&lt;/h2&gt;

&lt;p&gt;I have nearly 10 years of experience operating a for-profit business.
While I understand that non-profits are laden with many rules,
regulations, and other differences to for-profits, I hope that many of
my skills will transfer. For example, I already have experience in the
registration and protection of trademarks, event and brand management,
and as a developer myself, will be suited to understanding and
emplowering develoepr needs.&lt;/p&gt;

&lt;h2&gt;What do you see as the Board&amp;rsquo;s role in OpenStack&amp;rsquo;s success?&lt;/h2&gt;

&lt;p&gt;The Board is essential to seeing that the growth and continues success
of the community. Businesses need amiable terms for use of trademarks,
copyrights, and a strong brand for OpenStack. Besides interesting
puzzles, contributors are attracted and retained by a strong and healthy
community online and off-line. The Board must see that contributor needs
are met, that the community is maintained and strengthed, that each
contributor&amp;rsquo;s voice is heard.&lt;/p&gt;

&lt;h2&gt;What do you think the top priority of the Board should be during the OpenStack Foundation&amp;rsquo;s first year?&lt;/h2&gt;

&lt;p&gt;I believe it is important not to make too many changes too quickly.
However, there are serious problems with the current trademark
agreements that must be resolved in due haste. I know that trademarks
are not very exciting, but they&amp;rsquo;re very important to the adoption and
use of OpenStack.&lt;/p&gt;

&lt;p&gt;For example, the policy only allows commercial use of the trademark per
written agreement. The standard written agreement requires that all
products &amp;ldquo;Built for OpenStack&amp;rdquo; pass a FITS test, but this test does not
exist. The PPB was responsible to provide a solution to the community by
January 1st, 2012, but this has remained incomplete and undefined. The
newly elected board will need to seek the creation of a FITS test or
eliminate this requirement.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>RPC Guarantees in OpenStack</title>
    <link rel="alternate" href="http://eric.windisch.us/2012/07/06/rpc-guarantees-in-openstack/"/>
    <id>http://eric.windisch.us/2012/07/06/rpc-guarantees-in-openstack/</id>
    <published>2012-07-06</published>
    <updated>2012-07-06</updated>
    <author>
      <name>ewindisch</name>
    </author>
    <summary type="html">&lt;h1&gt;OpenStack RPC Guarantees&lt;/h1&gt;

&lt;p&gt;Here, we describe the required guarantees of OpenStack RPC implementations.&lt;/p&gt;

&lt;p&gt;The statements made here are made through logical analysis and&lt;/p&gt;
</summary>
    <content type="html">&lt;h1&gt;OpenStack RPC Guarantees&lt;/h1&gt;

&lt;p&gt;Here, we describe the required guarantees of OpenStack RPC implementations.&lt;/p&gt;

&lt;p&gt;The statements made here are made through logical analysis and
hypothesis. Experiments have not been conducted. I might have made
mistakes, I welcome critism through the comments&amp;hellip; and better yet, I
welcome proof that anything I say here is wrong (or right!)&lt;/p&gt;

&lt;h2&gt;Missing Messages&lt;/h2&gt;

&lt;p&gt;OpenStack utilizes two messaging primitives, &lt;code&gt;CAST&lt;/code&gt; and &lt;code&gt;CALL&lt;/code&gt;.  A &lt;code&gt;CAST&lt;/code&gt; is sent and is not expected to return a value; the message is sent out into the ether and will succeed or fail.  A &lt;code&gt;CALL&lt;/code&gt; message is more complex, and a reply is expected.&lt;/p&gt;

&lt;p&gt;A &lt;code&gt;CALL&lt;/code&gt; is received by the RPC driver, a message is sent, and the RPC driver blocks until it returns.  As messaging occurs asynchronously, the blocking is entirely performed on the client/publisher.  If the thread is blocked too long, and no reply is received, a Timeout &lt;code&gt;Exception&lt;/code&gt; is raised. If the remote &lt;code&gt;CALL&lt;/code&gt; generates an &lt;code&gt;Exception&lt;/code&gt;, it is serialized over the wire and re-raised by the RPC driver, back to the &lt;code&gt;CALL&lt;/code&gt;ER. Each caller is responsible for properly handling any &lt;code&gt;Exception&lt;/code&gt; that might be raised.&lt;/p&gt;

&lt;h2&gt;Service Availability&lt;/h2&gt;

&lt;p&gt;It is necessary to expect failure. Drivers should always attempt to reconnect to their broker and/or peers.  Messages destined for any consumer/worker are superfluous if they cannot be delivered within a reasonable time frame. This applies to both &lt;code&gt;CAST&lt;/code&gt; and &lt;code&gt;CALL&lt;/code&gt;. A timeout is set globally and can be manipulated per-message to adjust the TTL of messages. Best efforts to ensure delivery should be made, until the expiration of the TTL. If delivery fails, a Timeout &lt;code&gt;Exception&lt;/code&gt; should be raised.
Atomic actions and Idempotency&lt;/p&gt;

&lt;p&gt;The RPC driver does not seem to be the place to implement atomic actions. The RPC drivers should simply raise &lt;code&gt;Exception&lt;/code&gt;s; idempotency and/or atomic-operations should be performed by the caller.&lt;/p&gt;

&lt;h2&gt;Surviving Restarts / Durability&lt;/h2&gt;

&lt;p&gt;If a publisher is sending a &lt;code&gt;CALL&lt;/code&gt; or &lt;code&gt;CAST&lt;/code&gt;, but the message has not been received by a consumer, upon restart of said consumer, that message should still be pending delivery until said consumer should consume that message; Except and unless said message has reached the expiration of its TTL, and the publisher has received a Timeout &lt;code&gt;Exception&lt;/code&gt;. Failing to implement such TTLs is dangerous.  For example, instance launches that cannot be succeed due to a failure of nova-scheduler should not be queued until the return of the scheduler (beyond a reasonable timeout), as this will inhibit the operation of autoscaling applications which may continuously attempt to launch new machine images. Currently, the AMQP-based drivers in OpenStack do not sufficiently support this TTL mechanism.&lt;/p&gt;

&lt;p&gt;If a publisher attempts to send a &lt;code&gt;CAST&lt;/code&gt;, but the message has not been received by a consumer, upon restart of the publisher, attempts to deliver said message should continue upon restoration of the publisher process. Alternatively, messages may be independently queued and guaranteed delivery by a third-party, as in the case of a centralized AMQP broker. The ZeroMQ driver does not currently provide this guarantee.&lt;/p&gt;

&lt;p&gt;If a publisher attempts to send a &lt;code&gt;CALL&lt;/code&gt;, but the message has not been received by a consumer, upon restart of the publisher, it is recommended that no attempts to deliver said message should be made upon restoration of the publisher process. This is because the purpose of the &lt;code&gt;CALL&lt;/code&gt; was either to receive a return value from the consumer, or to block in a chain of events to prevent a race-condition. In the former, the return value of the call will be lost, as the state of the publisher has been discarded and the operational stack no longer exists.  In the latter case, the chain of events will be broken, regardless, due to the loss of state and stack. Those looking for better guarantees should utilize an event-actor based model around &lt;code&gt;CAST&lt;/code&gt;. While supporting a guarantee here is not recommended, it does not appear to be particularly dangerous. Instead, it is unnecessary and inefficient. Currently, the AMQP implementations in OpenStack guarantee delivery of a &lt;code&gt;CALL&lt;/code&gt;, even if the publisher has expired.&lt;/p&gt;

&lt;h2&gt;Conclusion&lt;/h2&gt;

&lt;p&gt;RPC in OpenStack is doing fairly well, but it could do better. This
applies to the ZeroMQ, Qpid, and RabbitMQ drivers. Hopefully, having
documents/blogs like this will help drive improvements and innovations
in these drivers, and assist those that might seek to write a new
driver.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>OpenStack Nova Distributed RPC with Zeromq</title>
    <link rel="alternate" href="http://eric.windisch.us/2012/04/18/openstack-nova-distributed-rpc-with-zeromq/"/>
    <id>http://eric.windisch.us/2012/04/18/openstack-nova-distributed-rpc-with-zeromq/</id>
    <published>2012-04-18</published>
    <updated>2012-04-18</updated>
    <author>
      <name>ewindisch</name>
    </author>
    <summary type="html">&lt;p&gt;I just gave this speech at the OpenStack design summit. We lost the
original audio, so this is a fresh voice-over against the slide deck.&lt;/p&gt;

&lt;object style="height: 390px; width: 640px"&gt;&lt;param name="movie"

</summary>
    <content type="html">&lt;p&gt;I just gave this speech at the OpenStack design summit. We lost the
original audio, so this is a fresh voice-over against the slide deck.&lt;/p&gt;

&lt;object style="height: 390px; width: 640px"&gt;&lt;param name="movie"
value="http://www.youtube.com/v/jFP6WGtugiE?version=3&amp;feature=player_detailpage"&gt;&lt;param
name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess"
value="always"&gt;&lt;embed
src="http://www.youtube.com/v/jFP6WGtugiE?version=3&amp;feature=player_detailpage"
type="application/x-shockwave-flash" allowfullscreen="true"
allowScriptAccess="always" width="640" height="360"&gt;&lt;/object&gt;

</content>
  </entry>
  <entry>
    <title>A new blog</title>
    <link rel="alternate" href="http://eric.windisch.us/2012/02/06/a-new-blog/"/>
    <id>http://eric.windisch.us/2012/02/06/a-new-blog/</id>
    <published>2012-02-06</published>
    <updated>2012-02-06</updated>
    <author>
      <name>ewindisch</name>
    </author>
    <summary type="html">&lt;p&gt;I&amp;rsquo;m no longer with GrokThis.net and am now with &lt;a
href="http://www.cloudscaling.com"&gt;Cloudscaling&lt;/a&gt;, architecting cloud
computing solutions.&lt;/p&gt;

&lt;p&gt;This was a bold step for me, which I actually embarked upon a full year&lt;/p&gt;
</summary>
    <content type="html">&lt;p&gt;I&amp;rsquo;m no longer with GrokThis.net and am now with &lt;a
href="http://www.cloudscaling.com"&gt;Cloudscaling&lt;/a&gt;, architecting cloud
computing solutions.&lt;/p&gt;

&lt;p&gt;This was a bold step for me, which I actually embarked upon a full year
ago. Yet, until this month, I maintained my connections to GrokThis.net,
not necessarily as a safety-net, but because I knew it had to be
transferred or shutdown correctly. It pains me to say that the ultimate
decision was to terminate services rather than transfer them. However,
it seemed the &lt;strong&gt;right&lt;/strong&gt; thing to do, if possibly
controversial. (Certainly, many would have preferred we sold, and we
could have)&lt;/p&gt;

&lt;p&gt;It seems ironic to associate employment versus business ownership as a
new-found freedom, but it feels this way. Business ownership is a weight
on one&amp;rsquo;s soul, one&amp;rsquo;s life, and their family. I&amp;rsquo;m planning to exercise
this freedom by getting to better understand some the providers which
were once competitors. I need that perspective.  I&amp;rsquo;ll be blogging about
some of the things I&amp;rsquo;ve seen along the way in running my business,
trends I see happening, and so forth.&lt;/p&gt;

&lt;p&gt;If I say things that sound stupid, they might be, but I&amp;rsquo;ve found that
most often, I&amp;rsquo;m just well ahead of the curve (GrokThis was)&amp;hellip; but I&amp;rsquo;ll
explain that in more detail, later.&lt;/p&gt;
</content>
  </entry>
</feed>
