Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

From alestic.com

>> Both EBS boot and instance-store AMI ids are listed, but I recommend you start with EBS boot AMIs.

Why two opposite recommendations from alestic.com [authority on AWS] and practitioners?

Not a flame - I am planning my AWS deploy strategy and need to make a decision between these two approaches.



As a bit of background: a lot of the performance pain around EBS is the inconsistency in performance between IOs. Many times you'll get a nice fast op, but sometimes IOs will get slow suddenly, or even stuck. You can imagine that internally, this is EBS seeking on magnetic disks or getting blocked by a clogged network. Regardless, inconsistent performance is nearly as bad (or perhaps worse) than consistently bad performance in certain cases:

Thus, most of the time, performance issues with EBS bite you when you have application data on an EBS volume. If you're constantly hitting the volume to serve data to customers, you'll be seeing the hiccups in EBS performance and passing them right on to customers. Clearly this is a suboptimal experience, and can lead to other failure modes; a slow/stuck bunch of ops can get an application to completely stall.

It's important to note here that EBS has no error reporting system or timeouts; common operating systems aren't very good at handling disk IO errors, so EBS will never produce them, even when its having issues. This lack of transparency can make handling/working around stuck EBS operations nigh impossible.

So, having experienced these pains, people generally say "Don't constantly use EBS if you care about your application performance/stability," and they aren't wrong.

That said, if you use EBS as a boot volume only, you are likely not hitting that volume enough to feel the pain of slow-IOs; once booted you won't touch it much. At the same time, using EBS as a boot volume has all kinds of conveniences: the ability to start and stop the instance without loosing data, snapshots and AMI creation, persistent machine-specific configuration, etc.

I hope that's useful. EBS is not a perfect service, but it definitely has its uses. EBS as a boot volume has made using AWS quite a bit friendlier.

Note: I worked on the EBS team at AWS a few years ago. I currently use EBS in my startup's infrastructure. If you have further questions, feel free to reach out to me.


As you say, the real trouble with EBS is when serving application data. We run a lot of databases, and EBS was just not good enough for them even when there were no system-wide issues.

Our problem with EBS as a boot device was that occasional system logs, etc. would go it, and when EBS was down the inability to reach the disk (the block-store abstraction problem) would lock up the whole OS.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: