tag:blogger.com,1999:blog-934985301455705990.post8420097466413685534..comments2022-03-27T03:01:10.217-04:00Comments on Lusis: Operational Primitiveslusishttp://www.blogger.com/profile/15354716270000450238noreply@blogger.comBlogger7125tag:blogger.com,1999:blog-934985301455705990.post-61216598748676474172011-04-16T10:21:12.597-04:002011-04-16T10:21:12.597-04:00I'll comment on both you and Wes here. The ORI...I'll comment on both you and Wes here. The ORIGINAL intention was this:<br /><br />Hosts have Services<br />Applications have Configurations<br /><br />Hosts are obvious (I think). The difference between Applications and Services is subtle but important. A service is "apache" where as Application is the web app running on Apache.<br /><br />I like the think of it in terms of the OSI model:<br /><br />Host L2<br />Service L3<br />Application L7<br /><br />Recently I removed the binding of Configuration from just Application in the Noah primitives. As for tying it all together, there's no inherent relationship in Noah between the 4 primitives as a whole. In fact, I could just as easily remove all the relationships and have them be distinct models with no inter-model deps. It's something I've considered.<br /><br />So Wes, in the case you're describing, the way I might model it in Noah like this:<br /><br />https://gist.github.com/9a12afcde524198a5b1a<br /><br />As I said, there's no real inherent relationship between anything in the system. You could just as easily model all of the above under the Ephemeral objects with custom JSON as the data. In the system you described, The Application object sort of stands alone. There's no mechanism, though I've considered it, for creating a Watch on an endpoint that actually updates another object in Noah. So your registered watch endpoint might be noah://noahserver:port/path/to/object?field=blah. That would actually be pretty handy to have.<br /><br />Where watches really shine is in the same places with ZooKeeper. Who is my current database master? Who are all the hosts available to service X request? What is the value of the Configuration object? When any of those items change, a Watch can fire to callback into your application saying "hey, this changed".John E. Vincenthttp://lusislog.blogspot.comnoreply@blogger.comtag:blogger.com,1999:blog-934985301455705990.post-35900351575022701542011-04-15T19:37:23.481-04:002011-04-15T19:37:23.481-04:00Looking through the wiki, it seems like Applicatio...Looking through the wiki, it seems like Application is a bit higher level than Process. An Application would be something like "My Blog." The Service primitive might map closer to something like a mysql process that your blog pulls the blog posts from. Services seem to have a Host object and a state where as Application's are just basically a place to store configuration information. <br /><br />What I'm a bit unclear on is how you tie Application objects and Service objects together. Let's say I've got one simple application with a loadbalancer, 2 apache app servers and 1 DB backend. Since they're separate servers, each would have a different Host and each would seem to be be a separate Service, but how does my Application object coordinate which services it cares about?Wes Winhamhttp://devblog.policystat.comnoreply@blogger.comtag:blogger.com,1999:blog-934985301455705990.post-22822980025921636882011-04-15T17:37:22.879-04:002011-04-15T17:37:22.879-04:00Does "Application" encompass "Proce...Does "Application" encompass "Process"? I've racked my brain good now, and that's the only other thing I can think of.Jeff Blainehttp://www.kickflop.net/noreply@blogger.comtag:blogger.com,1999:blog-934985301455705990.post-80249666043063855632011-04-15T10:49:18.490-04:002011-04-15T10:49:18.490-04:00Wes,
I think that rolling your own will be a rite...Wes,<br /><br />I think that rolling your own will be a rite of passage for every programming SA person. Kind of like every developer writing his own cms or blogging engine.<br /><br />Your tool sounds pretty damn sexy too. Would love to hear more about it. I also hadn't considered health as being distinct from state. Interesting take. I want to think on that one a bit more.<br /><br />I haven't enabled it yet but I'm adding metadata support to all the objects in Noah. That would be one place and enduser could store fuzzy information like health.John E. Vincenthttp://lusislog.blogspot.comnoreply@blogger.comtag:blogger.com,1999:blog-934985301455705990.post-6553984500416471752011-04-15T10:45:46.943-04:002011-04-15T10:45:46.943-04:00That's an interesting idea. Currently in Noah,...That's an interesting idea. Currently in Noah,relationship is handled either via tagging or linking. Tags are exactly what they sound like. Linking is a bit more flexible in that it let's you aggregate a bunch of disparate objects in the system under a custom hierarchy.<br /><br />Dependency is something I hadn't yet considered because it's a rabbit hole I'm not ready to head down just yet. <br /><br />As for being primitives, I'll have to give it a noodle.John E. Vincenthttp://lusislog.blogspot.comnoreply@blogger.comtag:blogger.com,1999:blog-934985301455705990.post-4068071620882505322011-04-14T12:23:09.026-04:002011-04-14T12:23:09.026-04:00I hadn't seen Noah before (or Doozer or riak_z...I hadn't seen Noah before (or Doozer or riak_zab), but we built something internally to solve basically the exact same problem. Ours is based around Fabric (with Chef solo) for actual interaction and uses Amazon's SimpleDB to store all of the configuration data and state.<br /><br />I hadn't thought about it, but we also used a kind of "state" primitive. We only use up/down though and a separate "health" state (healthy/unhealthy). Pending up and pending down seem like useful concepts though. <br /><br />I can't wait for the time when rolling your own tools in this area will be like rolling your own web framework. Redundant :)Wes Winhamhttp://devblog.policystat.comnoreply@blogger.comtag:blogger.com,1999:blog-934985301455705990.post-42219859528197826532011-04-14T09:26:40.027-04:002011-04-14T09:26:40.027-04:00Dependency (or Relationship) might be worth consid...Dependency (or Relationship) might be worth considering extracting from Configuration (assuming it was intended there)?Jeff Blainehttp://www.kickflop.net/noreply@blogger.com