{"id":879,"date":"2012-07-01T22:04:10","date_gmt":"2012-07-02T04:04:10","guid":{"rendered":"http:\/\/www.mooreds.com\/wordpress\/?p=879"},"modified":"2012-06-20T22:35:03","modified_gmt":"2012-06-21T04:35:03","slug":"review-of-emergent-one","status":"publish","type":"post","link":"https:\/\/www.mooreds.com\/wordpress\/archives\/879","title":{"rendered":"Review of Emergent One"},"content":{"rendered":"<p>A few weeks ago I sat down with some folks at <a href=\"http:\/\/www.emergentone.com\/\">Emergent One<\/a>\u00a0and got a demo of their product. \u00a0The reason I reached out to them is because I heard great things about their demo at <a href=\"http:\/\/gluecon.com\/2012\/\">GlueCon<\/a>. \u00a0My company is considering building a mobile app (who isn&#8217;t, right!) and I thought that what EmergentOne offered was a great way to accelerate the server side development of that app.<\/p>\n<p>We are slightly outside of their target market&#8211;our API would be solely for internal use of a small team, while it seems like they are aiming at companies who want to make an API available to a larger audience (either external or a larger internal development staff).<\/p>\n<p>Regardless of target market, they have a slick product. \u00a0They have a self service web application which can generate APIs directly from database tables. \u00a0You allow the app select access to your database. \u00a0(I believe only mysql and postgresql are supported at the moment, but I know things are moving fast over there as well.) \u00a0You then work within the app to build an API based on the tables in your database. \u00a0You can have derived fields as well as fields that map to columns in your database directly. \u00a0You can filter your data (so if you only want to expose a subset of your data, you can create an endpoint that only displays that: &#8220;users over 40&#8221;, for example). \u00a0You can also add comments to fields.<\/p>\n<p>After you define as many API endpoints as you want, you can manage access to them with application keys or usernames and passwords. \u00a0Automatic documentation with datatypes and whatever comments you have added is generated, and there is a developer portal where it is easy to play around with the APIs and see what you missed.<\/p>\n<p>What they showed me is great, but this product is still in private beta. \u00a0That means there are some rough edges. \u00a0The biggest hole (a fix for which the demoer promised was coming very soon in their development plan) is that you can&#8217;t search against the API. \u00a0So, if you have an API exposing your pets table, you can create an endpoint to retrieve all pets, and you can retrieve one pet based on id. \u00a0You can create a &#8216;dogs-only&#8217; endpoint, and get all dogs or one dog. \u00a0But you can&#8217;t query the dogs-only endpoint for dogs that weigh over 25 pounds and have short hair (or any other type of querying). \u00a0I only played with read-only APIs, so I&#8217;m not sure how the write-access APIs work.<\/p>\n<p>There&#8217;s also always the issue of introducing another vendor into the system. \u00a0Since we are looking at this for mobile apps, performance is very important. \u00a0It seemed like the demoer was well aware of this issue. \u00a0He mentioned an SLA would be likely when they went public, and also talked about some of the steps they are taking to make sure their app uses indexes and other metadata about the tables being exposed to execute as quickly as possible.<\/p>\n<p>I haven&#8217;t built an API with any of the other tools out there, so I can&#8217;t compare the ease of Emergent One with, say, tools like\u00a0<a href=\"http:\/\/www.jboss.org\/resteasy\">jboss resteasy<\/a>\u00a0that work with a java layer, or <a href=\"http:\/\/apigee.com\/about\/products\/usergrid\/\">usergrid<\/a>, which autogenerates an API but requires moving data into it. \u00a0But I can say that this was a very easy way to go database to API in less than an hour (with iptables troubleshooting mixed in!). \u00a0If they get searching right&#8211;making it easy to use and performant&#8211;this will be a fantastic product.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>A few weeks ago I sat down with some folks at Emergent One\u00a0and got a demo of their product. \u00a0The reason I reached out to them is because I heard [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[39,7,33],"tags":[],"class_list":["post-879","post","type-post","status-publish","format-standard","hentry","category-cloud-computing","category-mobile-technology","category-useful-tools"],"_links":{"self":[{"href":"https:\/\/www.mooreds.com\/wordpress\/wp-json\/wp\/v2\/posts\/879","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mooreds.com\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.mooreds.com\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.mooreds.com\/wordpress\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.mooreds.com\/wordpress\/wp-json\/wp\/v2\/comments?post=879"}],"version-history":[{"count":2,"href":"https:\/\/www.mooreds.com\/wordpress\/wp-json\/wp\/v2\/posts\/879\/revisions"}],"predecessor-version":[{"id":882,"href":"https:\/\/www.mooreds.com\/wordpress\/wp-json\/wp\/v2\/posts\/879\/revisions\/882"}],"wp:attachment":[{"href":"https:\/\/www.mooreds.com\/wordpress\/wp-json\/wp\/v2\/media?parent=879"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.mooreds.com\/wordpress\/wp-json\/wp\/v2\/categories?post=879"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.mooreds.com\/wordpress\/wp-json\/wp\/v2\/tags?post=879"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}