Skip to content

Portability layer

Andrew Spyker edited this page Sep 14, 2013 · 22 revisions

While this project already shows portability and cross-cloud capabilities realized by the changes to port to SoftLayer and RightScale, it doesn't in all cases introduce a portability layer. In some cases, the NetflixOSS technology was changed to support the SoftLayer/RightScale IaaS instead of the Amazon IaaS. We see value in this, but do realize it is sub-optimal long term strategically. This page talks about ways we have experimented with NetflixOSS changes that could allow NetflixOSS to work across multiple IaaS layers without code changes to NetflixOSS for each IaaS layer.

API vs. Domain Model

Various aspects of the NetflixOSS platform have ties to both the Amazon IaaS API's and the Amazon IaaS domain model returns and passed to API calls. In most NetflixOSS projects both the API access and domain model is provided by the Amazon Java SDK library.

There are NetflixOSS projects where the IaaS API is the key dependency and very little is done with the domain model. An example of this is the Chaos Monkey that needs to implement basic query for an instanceid to kill followed by a terminate call to that instance.

There are other NetflixOSS projects where there are very deep ties to and usage of the Amazon domain model. An example of this is the Asgard management console. Asgard not only makes extensive use of the Amazon API's but every screen shown in the console is a view of the model defines by the Java objects in Asgard caches that come from the Amazon Java SDK domain model classes.

Looking across the three different IaaS API's important within this project (Amazon, SoftLayer, and RightScale) it is obvious that each provides a different API, domain model and availability of Java library for access.

See the following table for an example using the IaaS "Image" domain model and API's.

Cloud | Image domain model | Image domain attributes | Image access API | Java access libraries ----------|--------------------|------------------|---------------------- SoftLayer | model | 0 | API | Direct REST (no Java library) RightScale | model | 0 | API | Direct REST (no Java Library) Amazon EC2 | model | 0 | API | Amazon Java SDK

Clone this wiki locally