we deferred the specific processing to Drupal’s waiting line system. That nicely avoided competition conditions around being able to access nodes during node salvage and kept an individual screen quick and responsive.
There was clearly one other criteria: Since the incoming facts was often incomplete we needed to in addition transfer data from RottenTomatoes.com. Regarding we created a two level system: One is a general PHP package utilizing the Guzzle library that conveyed Rotten Tomatoes contents as PHP items, whilst the some other next bridges that program generate Drupal nodes populated from Rotten Tomatoes information. We then harmonized Rotten Tomatoes films and critiques using the customer’s provider information and let editors to decide to make use of data from Rotten Tomatoes in favor of their particular where appropriate. That data had been joined in throughout indexing procedure as well, thus as soon as data is in Elasticsearch it does not matter in which it originated in. We also subjected Critic ratings to Elasticsearch as well to make certain that clients software could discover studies of flicks and user scores before buying.
Incoming needs from client programs never strike Drupal. They only ever before hit the Silex software servers.
The Silex app doesn’t have even doing much. For the wire format we selected the Hypertext Application Language, or HAL. HAL try a simple JSON-based hypermedia style utilized by Drupal 8, Zend Appagility, yet others, and it is an IETF draft specs. Additionally keeps a very powerful PHP library available that we could actually need. Since Elasticsearch already stores and profits JSON it absolutely was trivial to map items from Elasticsearch into HAL. The heavy lifting was actually only in deriving and attaching the appropriate hypermedia hyperlinks and embedded prices. Keywords alongside browse questions happened to be simply passed right through to Elasticsearch additionally the results regularly stream the right reports.
Finally, we covered the HAL item up in Symfony’s impulse object, put our very own HTTP caching parameters and ETags, and sent the content on its way.
A big advantage of the split-architecture is that rotating up a Silex case is trivial. There isn’t any meaningful arrangement beyond distinguishing the Elasticsearch machine to use, and the majority of rule is actually pulled down via author. It means spinning up numerous cases of the API machine for redundancy, high-availability, or performance is which has no operate. We don’t must stress, however; the API try read-only, therefore with appropriate using HTTP headers and a basic Varnish server before they the API are remarkably snappy.
A big element of Drupal’s maturity as a CMS try realizing that it isn’t the be-all end-all response to all trouble.
For Ooyala and its particular people, Drupal got just the thing for dealing with content, however for offering an internet API. Happily, Palantir’s familiarity with the coming Drupal 8 release as well as its reliance from the Symfony pipeline why don’t we pair Drupal with Silex – that’s perfect for offering a Web API not all that hot for managing and curating contents. In the long run, Palantir find the correct software for the task, and venture benefited out of this greatly.
Ooyala now has a powerful and dependable API this is certainly able to provide customer applications we never also touched our selves; Ooyala’s clients see what they need; end users has a fast and responsive Web solution powering her media programs. On top of that, Palantir had the opportunity to bring our hands dirty with another person in the Symfony household – a good investment which will pay long-lasting with Drupal 8 in addition to developing popularity of Symfony inside the PHP environment.
Great for Ooyala; great for Palantir; ideal for the community.
Graphics by Todd Lappin “Above Suburbia” under CC BY-NC 2.0, changed with greeen overlay and the choice of arrows.