+1 on this. Implementing adapter style code may also introduce additional state maintenance within the proxy/adapter to the eventual target API and if not at a minimum more complexity. Also care would be needed to avoid leaky abstractions [1]. However, I don't necessarily agree that a REST endpoint (esp. stateless ones like OSAPI) can't be scaled easily.<div>
<br><div>Justin makes a very interesting point with regard to the non-extensible nature of the EC2 API (unlike that of OSAPI or OCCI). Perhaps it is an 'API parity' challenge ( i.e. where API X is functionally equivalent to OSAPI) and solution (having the ability and maintaining parity) that is key to the discussion?</div>
<div><div><br></div><div>.2c</div><div><br clear="all">Andy<br><a href="http://andy.edmonds.be" target="_blank">andy.edmonds.be</a><br>
<div class="gmail_extra"><br></div><div class="gmail_extra">[1] <a href="http://www.joelonsoftware.com/articles/LeakyAbstractions.html" target="_blank">http://www.joelonsoftware.com/articles/LeakyAbstractions.html</a><br>
<br><div class="gmail_quote">
On Mon, Apr 23, 2012 at 19:01, Eric Windisch <span dir="ltr"><<a href="mailto:eric@cloudscaling.com" target="_blank">eric@cloudscaling.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div>
<span style="font-size:12px">Creating a contract on the private API will allow the external APIs to be created and tested without needing a translation layer, even if contributory APIs were developed outside of the project (such as in AWSOME).</span></div>
<div><span style="font-size:12px"><br></span></div><div><span style="font-size:12px">It is clearly better, architecturally, if the EC2/OCCI apis can access the internal apis directly. The RPC and database can be made to scale in Nova, but a REST endpoint won't be as reliable or scale as well.</span></div>
<span><font color="#888888">
<div><div><br></div>-- <br>Eric Windisch<div><br></div></div></font></span><div><div>
<p style="color:#a0a0a8">On Monday, April 23, 2012 at 11:15 AM, Justin Santa Barbara wrote:</p>
</div></div><blockquote type="cite" style="border-left-style:solid;border-width:1px;margin-left:0px;padding-left:10px">
<span><div><div><div><div><div><div><blockquote type="cite"><div>What's the advantage of replacing the native EC2 compatibility layer with AWSOME from a user / operator point of view?<br>
</div></blockquote><div><br></div><div>Although I wasn't able to attend the design summit session, right now we have two "native" APIs, which means we have two paths into the system. That is poor software engineering, because we must code and debug everything twice. Some developers will naturally favor one API over the other, and so disparities happen. Today, both APIs are effectively using an undocumented private API, which is problematic. We also can't really extend the EC2 API, so it is holding us back as we extend OpenStack's capabilities past those of the legacy clouds. </div>
<div><br></div><div>With one native API, we can focus all our energies on making sure that API works. Then, knowing that the native API works, we can build other APIs on top through simple translation layers, and they will work also. Other APIs can be built on top in the same way (e.g. OCCI)</div>
<div><br></div><div>Which is a long way of saying the external approach will result in _all_ APIs (OpenStack, EC2, OCCI etc) becoming more reliable, more secure and just more AWSOME.</div><div><br></div><div>Justin</div>
<div>
<br></div></div></div>
</div></div></div><div><div><div>_______________________________________________</div><div>Mailing list: <a href="https://launchpad.net/~openstack" target="_blank">https://launchpad.net/~openstack</a></div><div>
Post to : <a href="mailto:openstack@lists.launchpad.net" target="_blank">openstack@lists.launchpad.net</a></div><div>Unsubscribe : <a href="https://launchpad.net/~openstack" target="_blank">https://launchpad.net/~openstack</a></div>
<div>More help : <a href="https://help.launchpad.net/ListHelp" target="_blank">https://help.launchpad.net/ListHelp</a></div></div></div></div></span>
</blockquote>
<div>
<br>
</div>
<br>_______________________________________________<br>
Mailing list: <a href="https://launchpad.net/~openstack" target="_blank">https://launchpad.net/~openstack</a><br>
Post to : <a href="mailto:openstack@lists.launchpad.net" target="_blank">openstack@lists.launchpad.net</a><br>
Unsubscribe : <a href="https://launchpad.net/~openstack" target="_blank">https://launchpad.net/~openstack</a><br>
More help : <a href="https://help.launchpad.net/ListHelp" target="_blank">https://help.launchpad.net/ListHelp</a><br>
<br></blockquote></div><br></div></div></div></div>