A year later, Amazon still haven’t fixed a fundamental problem with their load balancing product (Amazon ELB).
Amazon don’t provider customers with a fixed IP for a ELB, only a CNAME.
Since a CNAME can’t be the root of your domain (it must be an A record) – you can’t fully balance traffic to your domain.
At the moment, customers have to forward all traffic to a CNAME, from http://example.com to http://www.example.com, to load balance their domains. This introduces a single point of failure. If the server you allocate to serve traffic from the root of your domain goes down, nobody gets forwarded.
In addition, this root server isn’t load balanced, so it receives all the initial traffic to your site. This defeats ELB’s purpose somewhat.
There’s a post that’s been on Amazon’s ELB forums for about a year – with about 60 replies, this clearly is a popular ‘feature’ (or I would argue requirement). It’s a deal breaker for some.
Amazon’s response is this:
Thanks for all the feedback. We understand your concerns and supporting this feature is on our roadmap. Unfortunately, we do not have a specific timeline for its availability.
As one commentator puts it:
Serving HTTP traffic off your root domain out of your core stack is really a basic thing that any load balancing solution needs to support.
Amazon, when do you expect to launch this feature?
This is going to be a fairly technical post about the technologies behind Machsend and using P2P over TCP rather than UDP. I’v written a lot of context to the problem, so if you want to skip to the juicy protocol details look for the set of bullet points.
We recently launched Machsend, which enables people to send unlimited amounts of data from inside the browser. You literally drag a file onto the site, send the recipient a link, and they can download it straight away. Machsend uses TCP P2P connections to transfer data between clients.
I’ve been fairly overwhelmed in the amount of coverage my last post on Bowline got, more than 10,000 hits and in the top 50 Delicious links for the day – it’s great to see the Ruby community’s support for building desktop applications. This post is just to put out a brief roadmap and show any potential contributers how to get involved.
Currently I’m working on getting Ruby Threads working, Bowline would be a bit useless if it locked up every time you called out to Ruby. This involves upgrading upgrading Titanium’s Ruby version to 1.9, and using a rather obscure API for blocking the threads when Titanium calls Ruby (since Ruby isn’t thread safe). You can find the ticket here – if you’ve any experience with C++ please feel free to weigh in and help. This is the one major bottleneck to Bowline development – once it’s resolved we can get on with more interesting things.
I’m also working on closing the tickets – most of them to do with Windows support. At the moment I don’t have a Windows environment, just Linux and OSX – so more testers are welcomed.
I’ll be writing more documentation, tutorials, and a website. You can also expect a “twitter client in 5 minutes” screencast.
I’ve started up a Google Group for Bowline development here. This is one of the best times to contribute since the project is fairly young and can accommodate API changes without any issues.
Recently I’ve been working on a Ruby GUI framework called Bowline.
Bowline is built on top of Titanium, a desktop SDK which essentially provides a Webkit window (and loads of useful APIs). The fact that Titanium uses Webkit (and a fairly edge version at that) means that you can take advantage of all those nice CSS3 and HTML5 features, and you can design for one browser.
On top of Titanium, Bowline provides:
- A way of binding up Ruby and HTML
- MVC development
- Helpers, Models etc
- Gem packaging
- Generators, console & more
In a desktop app you don’t have the request/response cycle that web frameworks, like Rails, are built around. So, to replace that, Bowline has the idea of ‘Binders’ – Ruby classes that you can bind HTML to – so when the Ruby class changes, the HTML automatically updates.
Using Titanium’s Developer tool, you can package your applications up for all three OSes, it’ll be sent up to the cloud and built.
Twitter clients are truly the new ‘Hello World’.
It’s early days for both Bowline and Titanium, but progress is quick and I hope we’ll have a fully fledged desktop framework soon.