I'm almost flabbergasted that you approach the subject like you're well versed in the space - smiting the Docker project and LXC in general - and yet haven't heard of the widely adopted Apache Mesos project.
"Project X is horseshit!" type posts appear every-so-often, and many have the same fatal flaw in that the author, though highly opinionated, is definitely not as well versed in the project space as they would lead you to believe.
It was fleet then Mesos. RIP both of these.
Neither of them had explicit Nix support but for fleet I had a [email protected]
that would download and pin a path. Then I could just mark a service as Requires=nix-path@/nix/store/....service
and it would be pinned for the life of the service. For Mesos I would generate a startup script that downloaded a store path and pinned it via symlink into the working directory of the task.
It was fleet then Mesos. RIP both of these.
Neither of them had explicit Nix support but for fleet I had a [email protected]
that would download and pin a path. Then I could just mark a service as Requires=nix-path@/nix/store/....service
and it would be pinned for the life of the service. For Mesos I would generate a startup script that downloaded a store path and pinned it via symlink into the working directory of the task.
# Let's go threaded changelogs_tuples = [] futures = {} failed = False with concurrent.futures.ThreadPoolExecutor(16) as executor:
for changelog_entry in parsed_changelogs: # Iterates over <li>, two <a> here: # First contains release version # Second contains link to changelog in its href version, changelog_href = changelog_entry.find_all('a') version = version.text.strip() # Adding url param styleName=Text returns a plain text version changelog_url = changelog_href['href'] + '&styleName=Text' # Submit in executor futures[executor.submit(get_changelog, changelog_url, version)] = (version, changelog_url)
# Wait for result and get it for future in concurrent.futures.as_completed(futures): try: changelogs_tuples.append(future.result()) print('Retreived changelog for release %s at %s' % (futures[future][0], futures[future][1])) except Exception as e: print('Retreiving changelog for version %s at %s FAILED: %s: %s' % (futures[future][0], futures[future][1], e.class.name, e)) failed = True
# Is there any future that failed ? if failed: print('RETREIVING CHANGELOG FROM http://mesos.apache.org/downloads/ failed, this is FATAL') time.sleep(5) sys.exit(1)
​
I'm actually seeing something different. Mesos and containers. I see with VMs a lot of people go down the SR-IOV route but you also give up some things. In a lot of cases VMs are unnecessary IMO with all the other tools that already exist. At the end of the day you have choices and you can do something like Mesos with VMz and have containers but at what point are there too many layers of abstraction?
Can't answer your question becuase I don't know a lot about Mesos, but I found this Mesos Con playlist from the Mesos-presentations page of Mesos. Looks like a lot of useful information.
I completely agree and although I currently like Amazon, it's a shitty situation to be in.
From what I've seen the last year or so, the best way currently to become cloud hosting provider agnostic, is to just use a layer on top like Apache Mesos / Mesosphere, Fleet ...etc.
Just more and more visualization like Vagrant or "containerization" like Docker and generic configuration with stuff like Ansible, Puppet and Chef.