I'm Alex, CTO at Cloudsoft, a firm that specializes in application
mobility. We've been using jclouds for provisioning an overlay network
for our Monterey platform across multiple clouds. jclouds is fantastic
but then you already knew that.
I'm writing because there is one area where we'd like to help.
Internally we've built and been using quite a rich concept of
"location", which we use to figure out where app components should be
moved. We think migrating this work to the jclouds community would make
the concept better and also make jclouds even better. For example in
jclouds, while the Location API is placement specific (ex. which
datacenter, region, etc), it doesn't expose details such as coordinates,
jurisdiction, security, qos, network topology, which we require and
which we think will become increasingly more important at least
somewhere in the provisioning process.
Of course right now most us of this data isn't available (none of it for
some providers), and it's premature to try to represent all of this in
the API day one, but there is plenty to get started with. We see
jclouds as the best way to do this because it can be made relevant very
quickly and of course because it's open.
So if it would be welcomed, we'd be pleased to contribute effort and
design to enriching the Location API in jclouds. We'll start the ball
rolling, pretty much immediately, with discussions on the mailing list,
irc, and in-person. If you want to get involved, please raise your hand
and let us know.
Many thanks,
Alex
--
You received this message because you are subscribed to the Google Groups "jclouds-dev" group.
To post to this group, send email to jclou...@googlegroups.com.
To unsubscribe from this group, send email to jclouds-dev...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/jclouds-dev?hl=en.
I think this is an important consideration at this stage - the fact
that there unfortunately isn't enough good-quality data available yet
to support the very valid use cases (certainly from an enterprise
perspective!) Alex mentioned.
Cloudharmony and others are trying to provide some of this, and of
course we should try to use these sources in a smart way, as Adrian
said. Still, I can't see this being more than a short-term fix:
merging, translating, reconciling, checking for staleness etc. of this
data is always a huge challenge.
Put another way, until this data is largely made available by the
providers themselves, it's going to be tough.
Is there any way to start a dialogue amongst the Amazons, Rackspaces
etc. to see what's cooking here? Perhaps something for OpenStack [1]
or SINA [2]?
ap
Pleased to have your support. I don't usually subscribe to the "build
it and they will come" school of thought but in this case I think it
just might work.
On the content side, to begin with for sure we will have to seed this,
using information from providers where they will tell us (it is worth
asking, we've already done so with a few) -- and otherwise either
leaving it blank or limited to information we can deduce with
certainty. In other words, the easy path. (Which within Cloudsoft
we've done for a few and will contribute.)
For me the more interesting part -- initially -- is getting a mechanism
by which this can easily be both described and consumed. Have OpenStack
or CloudHarmony (or SNIA) done anything on this? I haven't seen
anything deep or "machine readable".
I agree completely, by the way, that in the longer term this information
has to come from the providers. It should be in their interest to do
so, once someone (like us) has a good mechanism. As a practical
implementation would it make sense for the location metadata API to
support references to URLs, ie to allow a static location file to refer
to providers to get full/updated info?
Best,
Alex
I haven't looked at the branch yet but would initially think that it'd
be good to make this an external (REST?) service which jclouds
consumes. That way it should be easier to merge in new providers' data
without touching jclouds and hopefully, in the medium-to-long term,
hand this over to providers to maintain...
Also a good opportunity to get involved with other potential consumers
of this data who are not in the Java space, perhaps?
ap
I see your point about the external dependency. I think what this
ultimately boils down to is whether we consider *collating* location
information from providers functionality that jclouds provides. As
opposed to simply making location information available that is
provided by a service.
Basically, I guess what I'm saying is that if the providers offered
good location info through their APIs we'd simply be exposing it in
jclouds. And while they're not we're trying to supplement their info
with more stuff from an additional source. But I'm not sure whether
jclouds *should* be that source.
For now? Fat and mean is fine by me ;-)
ap
Plump in the right places! When providers expose the data is the right
time to shed the weight.
Am working on JSON support in my branch ATM -- so REST is natural extension.
--A
ap
The wiki includes several questions which we could use some help on!
--Alex
> <mailto:jclou...@googlegroups.com>.
> To unsubscribe from this group, send email to
> jclouds-dev...@googlegroups.com
> <mailto:jclouds-dev%2Bunsu...@googlegroups.com>.
Perhaps a "Motivations" section would be useful? If we can describe
the use cases we're interested in this should give some guidance as to
what types of data will be required. Especially if we can prioritize
the use cases in some way ;-)
ap
Alex,
This wiki does relay a plan of action, but doesn't do justice to
introducing the topic and why.
What do you think about posting the latest version presentation on
motivations and background we reviewed at the riviera jug, cloudcamp
london, and with terremark?
Here's the last one I've updated:
http://www.slideshare.net/jclouds/location-matters-even-in-the-cloud-cloudcamp-london
Since a lot of folks are remote, maybe even a recorded screencast
could be useful (just an ask.. I'm sure you're busy).
Cheers, and keep the feedback running!
-Adrian
> --
> You received this message because you are subscribed to the Google Groups
> "jclouds-dev" group.
> To post to this group, send email to jclou...@googlegroups.com.
> To unsubscribe from this group, send email to
> jclouds-dev...@googlegroups.com.
2-4. are certainly important from a business perspective but (unless I'm
missing something) have nothing to do with location. If we include these
kind of things I have a feeling what we're getting into is no longer a
location API but an attempt to try to "normalize" all business-relevant
aspects of different cloud providers' offerings.
Personally, I definitely see the need for this but feel that it would be
a couple of bridges too far at this point - certainly in the context of
issue 418.
Of course, businesses need to weigh lots of different concerns when
choosing a cloud provider. However, I think that, until the providers
themselves come up with a common service model description, a tradeoff
will remain between the ability to seamlessly move your application
across multiple clouds and the guarantees you can expect with regards to
performance SLAs etc.
Currently, if you have strict business needs in terms of location, SLA,
price etc. you already have the option of determining which provider(s)
meet those criteria (also factoring in human judgements like trust which
are tricky to automate). With jclouds you could then decide to launch on
only those providers.
> Examples in discussion included the need to be near stock exchange from
> a <5ms latency perspective. Near a datacenter from a physical
> drive-time perspective.
"Pinning down the cloud: real-life considerations in virtualized
environments" - I can almost see the article in front of me ;-) Jokes
aside, these examples made me take a step back and think: isn't part of
the concept of many cloud providers that they are able to deliver their
services precisely *because* they don't restrict themselves in this way?
How would EC2 look if Amazon *guaranteed* to have your AMI hosted within
so-and-so many minutes of a certain physical location? Of course, they
already offer you a regional choice, but how much more granular are they
likely to get?
Getting back to this issue, I think there are two things worth taking
into account:
- we should aim to build the location model to include mainly data that
cloud providers could/would feasibly provide themselves. That implies
some tough second-guessing, but thankfully the right people are involved ;-)
- physical contraints could be modelled with some probabalistic
component, i.e. not "the server must be within X km of this point" but
"it must be within X km Y percent of the time" or "the chance of it
being within X km should be at least Y percent". Setting Y to 100
recovers the simple "yes/no" case, too.
ap
2-4. are certainly important from a business perspective but (unless I'm missing something) have nothing to do with location. If we include these kind of things I have a feeling what we're getting into is no longer a location API but an attempt to try to "normalize" all business-relevant aspects of different cloud providers' offerings.Richard has the following suggestions that would help make the API relevant:
1. expose location from legal purposes. Ex know that one is in UK, not just in EU-WEST. This could be exposed via ISO-3166
2. expose means of measuring latency. For example, expose a representative edge ip address or hostname for measuring tools such as http://www.ris.ripe.net/cgi-bin/lg/index.cgi
3. expose a normalized price per hour model. ex VM with 2 cores at 2GHz each, 2GB RAM, 100GB disk.
4. expose SLA normalized in results basis. ex. what percentage return will one receive based on a standard VM being down for a number of hours.
Personally, I definitely see the need for this but feel that it would be a couple of bridges too far at this point - certainly in the context of issue 418.
Of course, businesses need to weigh lots of different concerns when choosing a cloud provider. However, I think that, until the providers themselves come up with a common service model description, a tradeoff will remain between the ability to seamlessly move your application across multiple clouds and the guarantees you can expect with regards to performance SLAs etc.
Currently, if you have strict business needs in terms of location, SLA, price etc. you already have the option of determining which provider(s) meet those criteria (also factoring in human judgements like trust which are tricky to automate). With jclouds you could then decide to launch on only those providers.
"Pinning down the cloud: real-life considerations in virtualized environments" - I can almost see the article in front of me ;-) Jokes aside, these examples made me take a step back and think: isn't part of the concept of many cloud providers that they are able to deliver their services precisely *because* they don't restrict themselves in this way? How would EC2 look if Amazon *guaranteed* to have your AMI hosted within so-and-so many minutes of a certain physical location? Of course, they already offer you a regional choice, but how much more granular are they likely to get?
Examples in discussion included the need to be near stock exchange from a <5ms latency perspective. Near a datacenter from a physical drive-time perspective.
Getting back to this issue, I think there are two things worth taking into account:
- we should aim to build the location model to include mainly data that cloud providers could/would feasibly provide themselves. That implies some tough second-guessing, but thankfully the right people are involved ;-)
- physical contraints could be modelled with some probabalistic component, i.e. not "the server must be within X km of this point" but "it must be within X km Y percent of the time" or "the chance of it being within X km should be at least Y percent". Setting Y to 100 recovers the simple "yes/no" case, too.
"JSON array of JSON strings, each containing a geopolitical identifier specifying a region where the object is permitted to or not permitted to be stored.
Geopolitical boundaries are a list of ISO-3166 country codes.
A "!" in front of a country code excludes
that country from the previous list of geopolitical boundaries."
-- mark
--
- ISO 3166-1 and -2 alpha codes for country and subdivision ("region")
- cloudaudit repository root URL field (cloudaudit.url ?)
- Map<String,Object> properties space, though i would call it "custom"
or customProperties
most of this is in ahgittin/jclouds at present (not cloudaudit url yet
but that will come soon).
FYI it also contains:
- postal address
- coordinates (latitude and longitude)
should these be hard-baked at present or left as experimental? or
changed or junked altogether?
(for cloudsoft's purposes, coordinates and region have been the two most
useful.)
//follow up on wider discussion of purpose of location API to follow
--A
On geocoordinates as a top-level item in location [1], should we allow
multiple geocodes?
gut feeling is that postcode is a bit less available and generalizable
across cloud services such as the above.
I'm wondering if the universe of properties are really bound to a
specific scope, as this stuff makes more sense when in a context such
as datacenter
thoughts?
-Adrian
[1] Typically, inside jclouds, construction of things like Location,
Node, etc. are not exposed to the users. I appreciate the Builder
stuff though :)
http://code.google.com/p/jclouds/wiki/LocationMetadataDesign
If you have strong opinions on items in the Open Questions section,
please make note, or let me know, if you don't have write access.
Also, please let us know who else you'd like to involve!
Cheers,
-Adrian
Thanks for the offer wrt SLA. Certainly a lot of folks are interested
in this. I'm also keenly interested in the OCCI translation of some
of this work.
Based on cumulative feedback, I'm starting to feel we should take care
to support (i.e. make visible and/or possible to integrate) things
like Jurisdiction and SLA as top-tier concerns, but not necessarily
couple them to Location. I'm readying a summary from Rich Miller on
the topic, as I think it has helped me understand a need to not
conflate concepts.
So, in short, we have a universe of concepts important to decision
making including audit results, pricing, jurisdiction, stewardship,
sla, catalogue. Some are quite large and probably better pushed
outside jclouds, yet with clear integration paths from within it.
Some are also directly derived from location, and others location is
just a piece of input data. This continues to be quite an exciting
discussion.
Cheers,
-Adrian
P.s. do you have time interview on the concepts that interest you, so
that we have better context of SLA and location? You're clearly a
good source here.
Sorry, coming in a bit late on this one - just catching up with jclouds
developments after a long week ;-)
From what I remember we have a couple of main use cases:
- displaying the location of servers to users, e.g. in a Google Maps mashup
- using the location data to perform calculations such as "how far is
this server from me/a given point/city etc."
That would seem to imply that we would want to be able to *get* the
location in
- formats that are convenient to calculate with (e.g. radians)
- formats that popular map display APIs accept
From the point of view of how to *set* the data (i.e. Alex' examples)
the only thing I can think of is that we probably want to support what
e.g. Google Maps comes up with, such as "55.944584,-3.18701" [1].
As far as I can see that's not yet covered by the proposal (I mean, the
latitude part 55.944584, of course), but maybe I'm missing something.
ap
Comments in-line.
On 11/12/2010 17:39, Andrew Phillips wrote:
> From what I remember we have a couple of main use cases:
> - displaying the location of servers to users, e.g. in a Google Maps mashup
> - using the location data to perform calculations such as "how far is
> this server from me/a given point/city etc."
>
> That would seem to imply that we would want to be able to *get* the
> location in
> - formats that are convenient to calculate with (e.g. radians)
Is there anything convenient about spherical coordinates? :)
I favour convenience methods for things like distance (and I think there
are only a handful at most)
rather than radians on the API.
> - formats that popular map display APIs accept
I think it is worth having an API method to return _signed_ latitude
(e.g. negative)
is good for Google compat etc. Any other APIs or thoughts?
Currently on the getter side it then looks like this:
double getLatitudeMagnitude() //always non-negative
enum getLatitudeDirection() // N or S
double getLatitudeNorth() // may be negative
> From the point of view of how to *set* the data (i.e. Alex' examples)
> the only thing I can think of is that we probably want to support what
> e.g. Google Maps comes up with, such as "55.944584,-3.18701" [1].
> As far as I can see that's not yet covered by the proposal (I mean, the
> latitude part 55.944584, of course), but maybe I'm missing something.
You can say withLatitude(55.944, NORTH).withLongitude(-3.187, EAST)
currently.
There isn't anything like withLatitudeLongitude(55.94, -3.187), whas
that what you were suggesting?
--A
Oh, sure - I was just referring to a previous comment in this thread
that you'd probably want to go to radians for calculations, but maybe
I didn't recall that correctly.
> You can say withLatitude(55.944, NORTH).withLongitude(-3.187, EAST)
> currently.
> There isn't anything like withLatitudeLongitude(55.94, -3.187), whas
> that what you were suggesting?
Maybe ;-) Or perhaps even withLatLong(String lat, String long)...I
don't really know. I'm just thinking that, if common APIs return
Strings and everyone will have to convert them to doubles, checking
for exceptions etc. and catching them, we could also offer that in the
API.
But perhaps a helper utility would indeed be a better place for that
sort of convenience methods....
ap
Thanks to Rich Miller from Telematica, Inc [1]. The interview with
him last week definitely helped clarify concepts, and we are indebted
to him for typing up his notes in such an easy to understand way.
Please have a look at the updated link, as it really shows Location in
context in a rather clear way. If you feel otherwise, do speak up!
http://code.google.com/p/jclouds/wiki/LocationMetadataDesign#Rich_Miller,_Telematica_Inc.
Cheers,
-Adrian
[1] http://www.telematica.com/about-rhm/