Developing Perspective

#33: Hosting for Indies


00:00:00   (upbeat music)

00:00:05   Hello and welcome to Developing Perspective.

00:00:06   Developing Perspective is a podcast discussing news of note,

00:00:09   in Apple, iOS, and the like.

00:00:12   I'm your host, David Smith.

00:00:13   I'm an independent iOS developer.

00:00:15   I'm based in Herndon, Virginia,

00:00:16   which is just outside of Washington, D.C.

00:00:18   And today I'm gonna be talking about hosting,

00:00:20   about hosting if you're a small independent business,

00:00:23   an independent iOS developer, independent Mac developer,

00:00:27   those types of things.

00:00:26   and walk through some of the options, what I do and why I do that.

00:00:30   So at a high level, I was going to start off by talking about

00:00:34   the three or four different options for what you can do

00:00:38   if you ever need a server, if you need to host a website, if you need to

00:00:42   host a web service, anything like that.

00:00:46   To start off with, I guess there's the crazy, expensive thing that I'm not really

00:00:50   even going to go into very much because for small indie it's just often a little

00:00:54   little overblown unless the core of your service is your server.

00:00:59   That would be dedicated hosting.

00:01:04   That's where you rent or buy a rack of servers in a data center somewhere.

00:01:06   You run your servers off there and go from there.

00:01:10   That's only really appropriate or necessary for someone who really needs availability,

00:01:15   really needs uptime, really needs the performance that you get by being that close to the metal.

00:01:21   For most people though, that's probably a bit overblown if you're just hosting a small web service,

00:01:26   something to sync things back and forth, or hosting your own website or those types of things.

00:01:31   If you're going to do something like that, you're going to be going to Rackspace, Digital One, people like that.

00:01:37   But like I said, it's a bit overblown.

00:01:43   Then the next level down is something called virtual private servers.

00:01:46   And this is basically where rather than buying a server, you buy space on a server.

00:01:50   And so you have full control over that server

00:01:55   in the sense that you can install whatever you want,

00:01:59   you run whatever you want.

00:02:01   It's run in a hosted managed data center,

00:02:02   and you have quite a lot of control.

00:02:05   And from an external perspective,

00:02:08   you have almost the best control

00:02:11   as if you had a dedicated machine,

00:02:12   but your costs are a lot lower

00:02:14   at the expense of non-deterministic behavior sometimes.

00:02:16   in terms of you're sharing a machine,

00:02:21   someone else could be doing a lot of things

00:02:23   that could slow you down.

00:02:25   Of course, on the flip side,

00:02:26   you also have the benefit of getting more machines

00:02:27   at times than you're paying for.

00:02:29   And so it's kind of a good balance,

00:02:32   and that's what I use for most of what I do.

00:02:35   And I'll talk about that further.

00:02:37   And then the next level down,

00:02:40   you can do cloud computing.

00:02:41   This is in EC2 or Heroku,

00:02:42   or any of those types of systems where you,

00:02:47   rather than even to the extent of buying a VPS,

00:02:51   it's like you're buying part of a machine.

00:02:54   Cloud computing is like you're buying

00:02:56   some kind of ephemeral, vague concept and notion of a machine.

00:02:58   It's not really something that you own or control

00:03:02   or even know what's going on.

00:03:05   You just have a machine one, machine two,

00:03:06   and you can spin them up and spin them down.

00:03:08   The best examples of this are the ones most widely used,

00:03:13   is certainly something like EC2 by Amazon Web Services,

00:03:15   which is pretty good.

00:03:19   And then you have Rackspace, I think, has a similar product.

00:03:21   And you have people who wrap up EC2,

00:03:25   for example, Engine Yard Cloud, which I use as well,

00:03:27   and I'll talk about in a minute,

00:03:31   is takes EC2 and wraps it up

00:03:33   in something that's a little easier to work with.

00:03:33   So that's sort of, and then I guess you can go all the way

00:03:38   to the extent of shared hosting, where it's like a dream host,

00:03:41   or one-to-one, or one of these kind of people who do,

00:03:43   you're sharing a logical machine with other people,

00:03:49   which is only really good for a really light traffic website

00:03:54   or something like that.

00:03:57   It's not something you'd want to run a big system on.

00:03:58   Maybe it's like if you're playing with something,

00:04:00   after you register your domain, you just want to throw up

00:04:00   a holding page or something maybe, but in general that's probably not what you want

00:04:05   to be hosting actual enterprise or performance-critical applications.

00:04:12   So now, stepping back, I'm going to talk about the things that I do and why I do them.

00:04:18   So, if you're doing anything for web hosting, so hosting a website, hosting a blog, hosting

00:04:26   a podcast, something like this.

00:04:31   And to some degree, even hosting files.

00:04:34   I really recommend using something like Linode.

00:04:37   That's who I use.

00:04:40   I'll have a link in the show notes to them,

00:04:41   which is actually a referral link,

00:04:42   but I've been using them for probably about four or five years,

00:04:43   and they're fantastic.

00:04:47   I've had, I actually can't think of an outage

00:04:48   that I knew of that I've ever had with them.

00:04:50   So they're a virtual private server company.

00:04:53   I lease a fraction of a Linux machine somewhere.

00:04:54   I think mine are in Newark, New Jersey, but who doesn't even really matter.

00:04:58   And they do a great job of providing a virtual server.

00:05:01   So essentially, from my perspective, I can SSH into a Linux box and run it and play with it

00:05:06   and do whatever I want with it, and it works great.

00:05:09   I don't need to worry about hard drives going out, about weird things happening.

00:05:14   In my experience, if a hard drive dies, they're doing something transparently behind it

00:05:19   something in the RAID array or however they're doing it, and it works really well.

00:05:24   And the great thing about Linode, or hosting on something like Linode, is that you have

00:05:29   the benefit of not needing...

00:05:34   you don't have to pay very much for quite a lot of performance.

00:05:39   So Linode starts their pricing at

00:05:41   $20 a month, and that gets you a machine with

00:05:45   512 megabytes of RAM, 200 gigabyte hard drive, and 200 gigabytes of outbound data transfer,

00:05:52   which you can do quite a lot with. For example, I host my blog, davidsmith.org, on a Linode

00:06:01   machine that I have actually for something else. I primarily use it to host a client's

00:06:06   web application using passenger and Rails, but I just throw my blog on there in Apache,

00:06:13   and it's just an Apache serving out of a static directory that I do with Octopress.

00:06:18   And you can do a tremendous amount of traffic and performance out of that.

00:06:23   I've been hit by Daring Fireball.

00:06:29   See all kinds of other people.

00:06:34   See, those are my big spikes.

00:06:36   I had Daring Fireball.

00:06:37   I was retweeted by Michael Lop.

00:06:38   I've been linked to by Sean Blanc or Marco.org.

00:06:40   I have to toot my own horn about that, but just to say, I've had some pretty large incoming

00:06:44   traffic sources pointing to this, and it's just this tiny little, you know, VPS running

00:06:48   Apache and it, I think the highest I ever got was like 4 or 5 percent CPU load, you

00:06:53   know, serving thousands of requests in a pretty short period.

00:06:58   And so it's a great way to serve something like that.

00:06:59   You know, if you've run a static blog, I highly recommend just spinning up a pretty cheap

00:07:04   Linode machine.

00:07:05   machine. And the great thing too is the transfer pricing is pretty cheap in the sense of once you have

00:07:11   it up, if you're 20 bucks a month, you can

00:07:16   basically, the way I've seen it, I've never come anywhere close to the transfer pricing.

00:07:23   And so for file hosting it's pretty cheap. I host the MP3 as you're listening to right now

00:07:28   on the node so that I don't have to pay S3 transfer prices or anything like that. In some ways

00:07:34   because it's kind of like a sunk cost.

00:07:39   I'm paying them the 20 bucks more for the machine

00:07:40   than for the bandwidth, but I get the bandwidth

00:07:43   is available to me, and so I host all manner

00:07:45   of static resources on my Linux box.

00:07:48   Apache serves them super fast, and I found that

00:07:51   to be really an effective and good thing.

00:07:53   And like I said, this is also a great place

00:07:56   to host web services.

00:07:59   I wouldn't necessarily put,

00:08:03   If you're running a highly dynamic web service,

00:08:08   I'd probably go to what I'll talk about next.

00:08:10   But if you're just doing a simple static,

00:08:13   or a fairly simple website, it works great to just throw

00:08:15   a passenger by Fusion into your Apache environment,

00:08:18   run MySQL on the same machine, and you're off to the races.

00:08:25   You have a pretty high-performance Rails machine

00:08:28   that works pretty well.

00:08:30   So that's what I do for the VPS side.

00:08:35   And then on the other side,

00:08:38   that I thought would be interesting to talk about,

00:08:39   is what I do for my cloud computing options.

00:08:40   And specifically for this, like I said earlier,

00:08:44   I use Engine Yard.

00:08:46   Engine Yard is a provider,

00:08:47   they do dedicated hosting and all kinds of things,

00:08:49   and they're primarily focused on Rails

00:08:51   or Rails-like things,

00:08:53   like you can do Rack and Sinatra and stuff like that.

00:08:54   But mostly it's that genre of web applications.

00:08:55   And what they do is they provide more managed hosting.

00:08:58   And I specifically use their product called Engine Yard Cloud,

00:09:01   which allows you to more dynamically scale and play with,

00:09:07   from a pricing perspective, the cost of your machine.

00:09:10   And I use them for all of my user-critical web services.

00:09:16   So for example, for my audiobooks application,

00:09:19   I do some of my file management and content management systems

00:09:23   that's hosted on there.

00:09:28   And I also host the data parser for my recipe book on there.

00:09:30   And those things are services that need to be up 24/7.

00:09:35   They're critical for my applications to function correctly.

00:09:38   And so I put them on a managed hosting environment

00:09:41   rather than on my own, VPS,

00:09:44   primarily because they know what they're doing.

00:09:46   They have a team of people who are really working on

00:09:48   making sure everything's working great, everything looks nice.

00:09:50   And they have worked out some of the rough edges

00:09:51   that I probably could have hosted them on a VPS,

00:09:56   but if something goes wrong, I don't have the backup.

00:09:58   I don't have the support.

00:10:01   They have a nice stack and management tools

00:10:03   and monitoring and things all built in.

00:10:05   And so it just saves me peace of mind,

00:10:08   or I'm paying for the peace of mind of knowing that

00:10:10   someone who knows a lot more than I do about hosting

00:10:13   is taking care of things.

00:10:16   So I'd recommend using them if you're hosting a Rails app.

00:10:17   It's certainly not as cheap. I think I find that I spend somewhere about $100 a month or so

00:10:22   hosting on Engine Yard for fairly simple web applications.

00:10:28   And that's one of the downsides of EC2-based computing, is that it's much more expensive than a VPS, typically.

00:10:32   Even if you just did it directly from Amazon and rolled your own, it just costs more to host something

00:10:39   and you're paying by the hour.

00:10:43   In theory it's good because you can scale up and down, but for my purposes I never really scale up.

00:10:50   It's like I'm kind of at the low end of size and performance anyway, so that works pretty well.

00:10:57   And so that's kind of how I host things.

00:11:01   Like I said, I'd really recommend looking at something like Linode for anybody to have.

00:11:06   It's also really useful. It's often found to just have a machine that you can do stuff on.

00:11:11   Often, for example, if I have to do some data intensive

00:11:16   operations or run some big batch scripts,

00:11:18   I just have a machine, I have these Linux boxes

00:11:21   sitting in a nice high performance data center

00:11:24   with a good internet connection that I can just run stuff on.

00:11:26   And even as an example right now, I work in an office

00:11:30   that it was cheaper and more effective for me to use

00:11:33   a 4G hotspot rather than paying for an internet connection.

00:11:36   And so sometimes when I'm doing bandwidth intensive operations

00:11:37   actually just SSH into the machine and run them there,

00:11:42   where I'm hitting this crazy big bandwidth machine

00:11:45   that is right on the backbone of the internet.

00:11:49   It lets me do data processing operations really quickly.

00:11:52   So anyway, that's just some thoughts

00:11:57   that I thought would be helpful

00:11:59   to lay out the spectrum there.

00:12:00   And like I said, it works well for me,

00:12:02   especially since moving a lot of my static resources

00:12:03   onto a Linode box running Apache.

00:12:08   It saved me a lot of money on S3 hosting,

00:12:12   because I used to put everything on S3.

00:12:14   And the tricky thing there is,

00:12:16   I mean, you pay both for the storage

00:12:18   as well as for the transfer of all your things.

00:12:19   Whereas with this, once I have a machine,

00:12:22   I pay my 20 bucks a month,

00:12:26   I can do all manner of things with that

00:12:28   and never have a problem.

00:12:30   I've never really had reliability problems

00:12:28   or availability problems, with something like Apache,

00:12:33   it's industrial grade for a reason.

00:12:36   It really does a great job of serving static resources

00:12:40   with high availability.

00:12:44   All right, so that's kind of today's show.

00:12:46   Hope you enjoy it.

00:12:48   Like I said, today is kind of the first day

00:12:49   that I'm back focusing on my own things.

00:12:50   I'm kind of not doing consulting as much,

00:12:53   and so I expect to probably be able to do a lot more shows.

00:12:54   If you have any thoughts or suggestions,

00:12:54   that you're interested about in terms of as an iOS developer, as a Mac developer, developer

00:13:00   in general, kind of anything that you think I would like my feedback on, please do let

00:13:05   me know.

00:13:06   Like I said, I'm going to have a lot more availability to do these shows.

00:13:08   So any ideas, things that you're interested in, I would love to be able to kind of cater

00:13:11   toward that.

00:13:12   The easiest ways to get ahold of me are to hit me up with an @ reply on Twitter.

00:13:17   I am @_DavidSmith.

00:13:21   You can email me, I'm david@david-smith.org.

00:13:27   And those are really the two ways to get a hold of me.

00:13:30   I'd love to hear from you if you have any thoughts, suggestions, things that you're

00:13:32   curious on.

00:13:33   Like I said, I've been doing iOS and app store development for a long time, so if you're

00:13:37   starting out or have questions about things that you're interested in, please do let me

00:13:40   know.

00:13:41   Otherwise, have a good day, happy coding, and I will probably talk to you tomorrow.

00:13:45   Bye.

00:13:45   [BLANK_AUDIO]