Should a Web Startup Go Straight To the Cloud? 442
Javaman59 writes "I am a one person company developing a web site from home. The site is hoped to attract millions of accounts and daily hits (just to give an idea of the scale of things, as its important to the question). My infrastructure is currently Visual Studio 2010 on a PC. To progress the site I need to set up version control, continuous integration, and staging. I have a Win2008 server VM, with all the Windows software (free and legal) to do this. However, I am only just competent as a Win admin, and I foresee each step of the way (setting up a domain; SQL-Server, etc) as a slow, risky process, and a big disruption to development. Should I forget my VM server (it will make a nice games machine!) and just go straight to the cloud for all my infrastructure?"
Hmm... (Score:2, Insightful)
You're not going anywhere running windows unless you had shit loads of cash behind you.
Re: (Score:3)
The idea behind starting a company is to have shit loads of money coming towards you...
Re: (Score:3, Insightful)
The reality is that for most companies, particularly startups, you have shit loads of money going away from you... That is why so many fail in their first year.
Re:Hmm... (Score:5, Informative)
Sorry, this is BS. I am a one-person company that has been around for several years (growing soon to a more-than-one-person company) and we are MS partners and use their SPLA (Software Provider Licensing Agreement) to get our clients access to things like SQL on the cheap. We use the Web edition of Win Server 2008 on our two servers and our annual expenses for MS products with maybe ten clients needing SQL licenses are maybe $700, which we collect back in the form of hosting fees.
We started out with MS just because SQL Server did a few things that we needed that MySQL didn't do back in '03/'04, and that's no longer the case -- so I'm not saying this to knock OSS. But MS software does not require 'shitloads of cash,' at least, not for a web shop.
Re: (Score:3)
Re: (Score:3, Insightful)
Re:Hmm... (Score:5, Insightful)
And if he has money he should buy managed hosting, cloud or otherwise. An ideal, but expensive, solution for his situation is a managed Rackspace server. For a few hundred a month he won't have to deal with system maintenance, OS upgrades, or emergencies. He would be able to focus on his applications.
Re: (Score:3)
Or he should just get a Rackspace/Amazon/Azure cloud instance for $10 a month (Rackspace, don't know about the others) plus additional bandwidth use and have basically all the same things. He's not going to start with millions of user. Frankly, this whole thing "millions of users" seems a bit cavalier and kind of pie-in-the-sky without knowing what it is and who is backing it. I remember saying similar things to myself when I was a teenager - oh yeah, no problem, we'll have millions of users. Sigh.
Whatever
Re:Hmm... (Score:4, Insightful)
Anyone who says "I foresee each step of the way (setting up a domain; SQL-Server, etc) as a slow, risky process" really isn't going to be comfortable even with a managed server - they need to find a partner with at least a bit of experience.
That said, this whole thing sounds like pie-in-the-sky. No, your groupon clone or whatever is not going to get millions of hits a day. Ever.
Re:Hmm... (Score:5, Interesting)
For my websites, I have a PC in my garage, running on my DSL box. It works perfectly. I have some downtimes, sure. Just this morning, my kid found my router's plug and thought it was fine to unplug it because his DSi was out of battery... It lasted 5 minutes.
When I'll have bandwidth issues (which will come before HW issues - 1.5Mbps up) we'll see. For now, I have about 1000 hits/day and my DSL box is doing fine. It is most likely that my outage of 5 minutes went completely unnoticed.
That said, to do this, you'll have to be comfortable running a PC, administering a database, managing backups, etc. But you get the liberty of your own house.
Re: (Score:3)
FTFY.
Re: (Score:3)
> See why most stuff on the internet and cloud run Linux yet?
Because it's more stable and secure;
and because unixes has a longer history doing large-scale networking stuff;
and it's easier to develop for;
etc.
The guys running serious servers could afford whatever they wanted if it actually were a better technology; so whatever you're hinting at probably isn't the main reason.
Re: (Score:3)
Re:Hmm... (Score:4, Informative)
So, you have a CAL for everyone that is going to connect to IIS? or a special Web license for IIS (I forget what that is called).. Do you have processor licenses for SQL Server? or one CAL for each user that might use the site? (and remember, its one Processor License for processor in the physical machine, not how many you expose to the VM, at about $6K per processor). Do you have the Machine CALs for each machine that is going to connect to Active Directory? Do you have a proper MSDN Development license?
See why most stuff on the internet and cloud run Linux yet?
Your data on the licensing is incorrect. Here is where you can read about it. http://www.microsoft.com/windowsserver2008/en/us/licensing-R2.aspx [microsoft.com] For example, windows web server is $469 USD list and requires NO cal's. http://www.microsoft.com/windowsserver2008/en/us/pricing.aspx [microsoft.com]
If you can't be bothered to read, you could even call their sales line and just ask. Voice: 1-800-Microsoft (642-7676)
I'm no Microsoft fanboy, but if you're going to argue about stuff like this you should get your facts straight first.
Re:Hmm... (Score:5, Informative)
Web Server 2008 R2 is severely limited. You have to run your database under the same OS instance as the web server, for example, and you are not allowed to access that database from any other machine. This means that you can't, for example, poll data from your database for processing -- that's against the license terms, and you need to change to a CAL license.
Oh, and of course, the database is not included. If you want to use MSSQL, Microsoft does have a web edition, but it lacks a couple of much used features, and costs $3500 per processor + $876 per year in software assurance. And you can't even buy it unless you're a volume license customer.. And it too has the strange requirement that you can't hook any other applications up to the database, even if it is to make use of the data you get from web users. A CRM system? Specifically forbidden.
If you can't live with that restriction, or don't have volume licensing, MSSQL standard might be the cheapest alternative.at $7171 per CPU, plus $1793 yearly software assurance.
The price of the OS then becomes rather irrelevant.
In pure license costs, LAMP is cheaper. Even if you go with the most expensive solution, Red Hat Enterpris Linux.
However, it can be much harder to get someone competent to admin LAMP systems (and much easier to get someone incompetent).
tl;dr: If you wnat to play, be prepared to pay. Either in license costs and downtime, or salaries.
TANSTAAFDBA+SADM
Re: (Score:3)
You don't need Windows Server CALs for websites exposed to the internet [provided they don't use NTLM security]. Provided you're using Web Edition you don't even need the External Connector License. Same applies for SQL Server.
As an aside, it costs maybe $10-$20 per month to run Windows on a dedicated server/VPS, provided the datacenter has a SPLA.
If you actually plan (and know what you're doing), you don't have to pay thousands or even tens of thousands (well, maybe you will over the lifetime of the proj
cloud does not imply scalability (Score:3, Insightful)
The reality is that a "just competent" person is far from qualified to make this choice. It is easy to think that "the cloud" is an easy answer to scaling problems, but if you do not design your service/software with horizontal scaling in mind, you may find that your service does not scale up on "the cloud" any more effectively than it could on your own servers. "Cloud" does not imply scalability, it implies out-sourced infrastructure which is accounted for as an OpEx, rather than a CapEx. You still must plan for scaling up.
Re: (Score:3)
No matter how much infrastructure and BW you purchase, it won't be enough to meet your launch date's advertising draw (assuming you have paid advertising / viral-ware). And it's ungodly expen
Re: (Score:3)
"if you do not design your service/software with horizontal scaling in mind, you may find that your service does not scale up on "the cloud" any more effectively than it could on your own servers."
Absolutly true. But then, once you learn your design is pure bullshit, what do you prefer? Just close your accounts with your cloud provider and start anew or being there with a lot of useful-for-nothing hardware that you still have to pay for?
""Cloud" does not imply scalability, it implies out-sourced infrastruc
Haha. (Score:5, Insightful)
Re:Haha. (Score:4, Insightful)
A lot of knowledgable people hang out here, and I'm sure there are many others interested in the advice.
Re:Haha. (Score:5, Insightful)
Re:Haha. (Score:5, Funny)
Well, now that you put it that way, it's a perfect question for slashdot!
Re: (Score:2)
That's why it's good he came here. We can tell him he needs to hire a system administrator or purchase a completely managed hosting package.
Re:Haha. (Score:5, Insightful)
I have no idea why you've been modded insightful on either of your posts. We should have a tag for "Unhelpful".
The question is valid -- the proper answer isn't a technical one, nor is it just to dismiss it. His options:
1) Take some classes, do some reading, play around a lot with all the technologies he's learning about. Check back in a year or two.
2) If his site is really expected to explode (millions of accounts), he should hire a company to build and host his infrastructure while he does development.
Developers aren't always sys admins the same way physicists aren't mechanical engineers. They might know enough to ask a question like: "I want to measure gravity waves. I know I need something like an oscilloscope to display output and something to sense the wave. Any ideas?" You can shake your head, or you can tell them that it just isn't that easy, and they should hire a mechanical engineer.
Re:Haha. (Score:5, Insightful)
Indeed, I come here for the comments. Often I learn something here. Nobody knows everything.
Re:Haha. (Score:5, Funny)
and the rest come for what? To read the articles?
I just read Slashdot for the pictures.
Re: (Score:2)
It reads like the "business plan" of a 14-year-old who wrote this really cool song (well, the lyrics so far, plus the guitar hook) that he knows will be a bit hit, and he wants to know if he'll become a millionaire faster by signing a deal with a big record company or by releasing it on his own label.
Maybe (Score:2)
A bit of alpha testing with a few friends from your home box is definitely OK. But if your app is going to be as popular as you think it is, get it running where you can scale it up fast. Or you may end up pissing off your customers with poor performance and they'll just leave.
Getting your app configured properly for 'The Cloud' is going to be a prerequisite for the production version. Work those bugs out now rather than having to patch the 1.0 version.
What sort of a question is that? (Score:2, Insightful)
Why would you want to host your website on an MS OS anyway, let alone one you don't even know how to administer properly.
My advice, look around for a good hosting deal (with good backups etc.) on shared hosting. Buy a hosting plan that can easily be upgraded to something dedicated as and when (and if) needed. Use your machine as a developer machine with all that entails (backups, version control etc.).
Forget about "the cloud". You're dreaming at this point. "The cloud" is something for when you actually nee
Re: (Score:2)
What sort of a question is that?
Well, what sort of a question is that?
Re:What sort of a question is that? (Score:4, Insightful)
Re:What sort of a question is that? (Score:5, Informative)
Reality is in the big picture, there is no difference between MS OSs and anyone else.
Except that adding another server to handle more load will cost a couple grand per seat on Windows (Hardware plus licensing) where on an OSS platform you only pay for the hardware.
Your argument that it is possible to do is beside the point, since no one is saying Windows can't scale. The point is the cost of doing so.
The poster stated he is using the Microsoft route since that is what he is familiar with. And there is nothing wrong with that, as long as you have firmly in the front of your mind that is what you are doing, and there will be huge costs involved to do that.
Since his question was about costs, specifically keeping them down, you can not expect people to not recommend tools that perform the same function just as well yet are free.
If he wasn't willing to change from what he is familiar with, he wouldn't have asked for cheaper options, and would have just accepted the fact he must pay a lot of money to stay with the familiar.
Re:What sort of a question is that? (Score:4, Insightful)
You need to look at the bigger picture.
Let's face it, unless you've seriously screwed up the application design a modern server is plenty powerful enough to cope with a good number of users on a website. Provided you can monetize those users somehow, the extra cost of another Windows license is going to be a drop in the ocean next to the other costs a startup faces.
If your server can't keep up when you've got hardly any visitors and you can't figure out some way of getting money out of the few visitors you do get, you have far greater problems than "can I afford another Windows license?"
Windows web server (Score:5, Informative)
Re: (Score:2)
I think he mentioned it's because that's what he's familiar with.
Re:Windows web server (Score:4, Insightful)
Love or hate Windows, what you said is representative more of an anti-Microsoft meme than anything closely resembling fact.
Personally I'd go LAMP too, but I disagree that LAMP is easier to manage, and anymore portable to the cloud. On the contrary, from personal experience with this sort of thing I think Windows is easier to manage for sure and with Azure is definitely more easily portable to the cloud. The reason I wouldn't go Windows though is because for example if a critical security flaw in the web server or OS comes around then with FOSS you can get a fix quickly, whereas with Microsoft you're potentially left with a choice of being vulnerable, or taking your site offline, that's a disadvantage of proprietary in general for this kind of thing- you're too dependent on an external company to ensure your service is rock solid.
Why? (Score:5, Insightful)
Re:Why? (Score:5, Informative)
You can use BizSpark and avoid any licensing costs until you are a viable business.http://www.microsoft.com/bizspark/
They also have a ton of support for startups, including funding if they really like you.
Licensing costs are nominal! (Score:3)
Listen, we're a LAMP shop, RHEL and/or CENTOS all the way! We've been in business for a decade, and currently have a 20-node cluster for our $2 million/year niche software company, averaging about 20%/year growth, even with the down economy.
And although we're a LAMP shop, I can tell you that hardware/licenses are a tiny part of the costs of our business if the application is structured correctly. ONE of our clients had a dozen servers before switching to our system. Our cluster of (at the time) 6 nodes didn
Re: (Score:3)
And quite frankly, it's not the licensing costs. If it were, and the quality were really there, you'd see tons of people pirating Winodws and setting up their own webservers on it, but AFAICT, the exact opposite is true: people largely setup webservers on Linux or FreeBSD because they work so much better at serving than Windows. Frankly, the only place I've seen people use Windows for w
Wrong question (Score:5, Insightful)
What you really need to do is find an entity who can help you with the tech mechanics. That entity could be a friend you promise to reward later, a business partner you legally go 50/50 with, an independent consultant you hire, a company (large or small) you hire. But you're asking really basic questions about stuff, so you obviously need some help. Moving to the cloud just moves the problem to some place you can't touch; it doesn't address it.
(If you're offended by the suggestion that you need help, you need to adjust your thinking significantly, or abandon the idea of going into business for yourself. No one person can do everything, and any successful business person will need to realize that early on.)
I call shenanigans. His username is "javaman" (Score:5, Interesting)
I call shenanigans. The username of this "Windows developer" is "javaman". He names the major Windows dev and SQL Server brands but doesn't mention Azure. He refers to "continuous integration" but pretends that setting up SQL Server is hard. Methinks this is a plant...though I'm not sure for what.
Re: (Score:2)
"Java" could refer to Coffee indicating a complete lack of knowledge about software which aligns well with the post
Are you shitting me!? Java Man is FAMOUS! Everyone knows who he is, even has a Wikipedia page! [wikipedia.org]
WTF? (Score:5, Insightful)
Your 'infrastructure', Visual Studio on a PC, is not infrastructure. That is merely a basic dev box.
Staging? Needs to be a small scale duplicate of production.
Do you have any clue? Apparently not. If you did, you'd hire someone else that actually knows how to do this. Because you clearly do not.. You have an 'idea'. An idea that you apparently cannot bring to the public.
Sorry, but that the truth.
Re: (Score:2)
'The cloud' does not set up your infrastructure. It does not design or enforce your version control. It does not harden against SQL injection attacks.
Actually there are providers that do, now granted they charge a lot to handle the entire process, but they do exist. A good Platform as a Service (PaaS) provider that handles windows apps (I don't know of any offhand, I'm a Linux/UNIX guy) is what he needs, I'm sure Google can find them.
Re: (Score:3)
That's the best joke I've heard in a long time.
GoDaddy can afford to offer unlimited space & bandwidth at $14.99 (about £9)/month for the exact same reason your broadband supplier can afford to advertise 24Mb ADSL with no bandwidth caps for £15/month when a 20Mb leased line would cost twenty or thirty times that amount.
They work on the assumption that 90% of their users will use hardly any bandwidth or space, and so over-sell their servers horrendously while providing little to no support if
Use the cloud... (Score:2)
Yes. Don't take on anything more than your core skills, or the other stuff will eat into your time and stop you doing what you aim to develop. When starting up you might even find free cloud hosting whilst you develop.
You will want to move from Microsoft products as a one-man band, as this will make your cloud choices cheaper and more varied. Look into PostgreSQL or MySQL, and PHP, Java, Python or any one of the myriad other Linux web server languages.
But do put some thought into how you are going to scale
Wrong approach (Score:2)
You should totally be looking to do FORTRAN on z/VM... It's the only way you will be able to handle the "millions" of accounts you will be creating to pump your own image.
Reality Check (Score:2)
1. Get used to the idea that your development and production environments are two distinct animals to be kept apart on purpose. Using one machine to develop and to host the production service is a recipe for disaster.
2. Stop using the cloud as a magical entity that holds everything that is online. You can go to many web hosts and pick up a decent IIS and SQL Server hosting plan for just a few bucks per month. If you build your solution so it can allow multiple server instances, you can always move it to the
Assuming you're serious... (Score:5, Insightful)
The guy above said you're not qualified, but the young and inexperienced have come up with plenty of new and innovative stuff, so:
I think the question is: If not cloud, what?
In no case would I run the site from home. You'll probably get your home Internet yanked.
Cloud usually implies the ability to instantly increase/decrease the size of your server. I don't think you need that at the start.
You could go with a cheap VPS [google.com]. In fact, I think that's what you should do. You should be able to take a stock Windows VPS and install your application, and have everything working. Either write an installation how-to, or reduce the steps to a script (PowerShell or whatever).
After you're able to do that, you could start looking into cloud provisioning, separate database server, database replication, DNS proxying, round-robin DNS, backups/rsync, https and SSL certificates.
You'll need to run email on the server, too, if only to send notification messages to your users (or to yourself). So you need to learn about how to administer and email server. Or rent and Exchange Server.
You also need to learn about CANSPAM requirements.
You'll need to have some kind of monitoring service to alert you to problems with your server. collectd is great for this on Linux.
You also need to look into which ad service you'll be using. Or alternatively, which payment service. Don't keep credit card numbers on your site, don't manage subscriptions by yourself. Let the payment processor do it.
Re: (Score:2)
Well, if you get two VPS's from the same provider, you can back each of them up on the other. The private bandwidth is/should be fast and free.
Granted, you should still have backup aside from a single provider, but the route to that provider, again, will have faster pipes than you probably have to your house.
Assuming you go with a halfway decent provider, their hardware will probably be better than yours. It seems easier to let them worry about the hardware. Yeah, their hardware might go down too. The diffe
Re: (Score:3)
The most obvious ones are:
- Your upload speed is the outside world's maximum download speed from your site. How many visitors will be using it at any given point in time?
- Hosting companies generally have half-decent HVAC, power, spare parts onsite and the spare equipment available that if something goes horribly wrong with a server they can get everything back up fast. If you go to that level of expense for just one server, it very quickly becomes much cheaper to pay a hosting firm for several years.
Hate to say it... (Score:2)
...but you're in way over your head. Or at least, you will be if you get even a fraction of the hits you are planing on.
Some simple advise:
1. Start small, and grow slowly. Don't start off with the cloud. That being said, look to see what services the cloud has to offer, and run similar services on your desktop. You'll notice that a lot of the clouds offer LAMP with ssh access (or something similar). Do the same at home.
2. Go with a free software stack, so you can afford the mistakes. (LAMP, or someth
Re: (Score:2)
What utterly useless information/advice.
The truth is, you can deploy a cheap/effective website, scale it affordably, and meet all of your client's needs on a windows platform just as with any other. The idea that You need Linux/Apache/MySQL/PHP to do it isn't eating your own dogfood, it's drinking your own kool-aid.
Here's some advic
Yes (Score:2)
Actual Entrepreneur Here (Score:2, Informative)
However this is the plan and the reasoning.
- Windows Server 2008 R2: - ASP.Net + MVC3 + Entity Framework 4.1 w/ POCO + C# is simply a fantastic development platform. You are a single person which likely means your time is the optimizing factor, NOT cost. Otherwise use Linux + Apache as it will save you in the long term.
- MySQL over MSSQL: MySQL is a nearly identical engineering experience for a site of your scale and will save you 10s of thousands of licensing costs in the long run. See the MySQL .Net co
Good Question (Score:2)
Back-of-the-envelope calculations (Score:2)
You say "millions of ... daily hits". For simplicity, let's say that you get about 1 million hits per day; that's about 10 hits per second, and that's if they're spread out evenly throughout the day. If it's fairly business-centric and USA-centric, then let's say that you get about 90% of those hits during a period of about 10 hours; that's more like 25 hits per second. Now how long will it take your server, on average, to process one hit (taking multiple processes/threads/etc. into account)? The diffe
Couple of items... (Score:2)
A couple of items jump out at me...
- "a one person company developing a web site from home" that "is hoped to attract millions of accounts and daily hits..."
- "I am only just competent as a Win admin..."
No way this is a real question !
Re: (Score:2)
Or it could just be a young guy, perhaps still at school, who simply has no idea of the knowledge required. A lot of people here are bashing him, but I think he should be encouraged to learn the sort of issues involved. And one of the best ways to do that is to try building his own web business. If no one took any risks or blind leaps of faith, we'd get nowhere.
Cloud (Score:2)
Depends.
I would use something like cloud services to minimize startup costs if it made sense.
I would not use the cloud though if:
1) Your startup requires security. Cloud services you have to remember own your data. If they decide to give it out with or without your permission, you have no control over the outcome. In fact, you may not even have any legal recourse either.
2) Lots of storage. It is not clear what the track record is on Cloud Storage. I may be cheaper for sure, but it may not be very reli
Look at Azure (Score:4, Informative)
Re: (Score:2)
It integrates with both, and your web application should take less to run.
By "less to run", I don't mean money; I mean less configuration and tweaking. I'm writing a web app on a LAMP stack right now, which essentially disqualifies Azure (I'd need to re-develop it for MS products).
Google App Engine (Score:5, Informative)
I'd recommend you drop Visual Studio and Windows and "go to the cloud" on an environment that is already scaled out. There are a few options, but I think one of the easiest to set up and get going on is Google's App Engine system. I don't know what your preferred programming language is, and if it's not Java or Python (or Go), then you're going to have to switch, but all of those are easy languages to learn and the time required to learn them will be trivial compared to the rest of what it's going to take you to build a significant site. The App Engine SDKs are pretty easy to work with and provide a lot of powerful tools, and your site will be running on Google's infrastructure so you know it'll scale as far as you need it to. The free quota will allow you approximately 5 million pageviews per month, so there's plenty of room for initial growth. When you get to where you need more than that you should also have some cash flowing in to allow you to buy more quota.
If you're concerned about being tied to Google (a valid concern), I'd also recommend that you put some thought into placing a layer between your business logic and Google's APIs. I wouldn't make a huge investment in that, because it's the sort of thing that can soak up a LOT of time, so much that you never actually get your site off the ground, but a little thought up front will make it much easier to migrate to your own platform when you have the revenue to justify hiring all the people you need to do that (because it's a BIG job).
The nice thing is that you can start small, for free (other than your time, of course), and have plenty of room to test your ideas and your approach on the small-to-medium scale before it actually costs you anything, other than your time. Then by the time you're ready to scale up, you should know what you need, and hopefully have the cash to fund it. Or, if it doesn't work out, at least you minimized your sunk cost.
(Disclaimer: I'm a Google employee. That actually has little to do with my recommendation, other than that my employment has motivated me to play with App Engine and I've been impressed with what I've seen, but I feel it should be mentioned.)
Re:Google App Engine (Score:4, Insightful)
I'd recommend you drop Visual Studio and Windows and "go to the cloud" on an environment that is already scaled out. There are a few options, but I think one of the easiest to set up and get going on is Google's App Engine system.
Yeah, drop everything you've created and move it to a completely different platform. One that is is proprietary so you're locked into that one vendor forever unless you want to rewrite your app.
Or, since you are already familiar with and comfortable with Windows development tools you can pick and choose from dozens of hosting providers that will provider a Windows VM or physical machine and if they change their price or terms of use to something you don't like, you can easily move everything to another hosting provider.
Re:Google App Engine (Score:5, Interesting)
I'd recommend you drop Visual Studio and Windows and "go to the cloud" on an environment that is already scaled out. There are a few options, but I think one of the easiest to set up and get going on is Google's App Engine system.
Yeah, drop everything you've created and move it to a completely different platform. One that is is proprietary so you're locked into that one vendor forever unless you want to rewrite your app.
Or, since you are already familiar with and comfortable with Windows development tools you can pick and choose from dozens of hosting providers that will provider a Windows VM or physical machine and if they change their price or terms of use to something you don't like, you can easily move everything to another hosting provider.
None of which will be able to scale your application to the levels that the guy mentioned. Scalability like that comes from architecture, not hardware, and Google has an extremely scalable distributed storage and processing architecture.
Of course, the odds that the OP will actually need that kind of scale are almost negligible, but it's what he asked for. As for the "Google lock-in"... that's manageable with a little up-front thought, as I suggested. Keep your business logic separate and you should be able to port easily to other environments. And, actually, most of the App Engine infrastructure is based on fairly standard stuff -- in Java you're writing Servlets and JSPs and in Python you can actually write most of your app as Django plugins. The main area you end up "tied" to Googel's APIs is around storage and task management, and around user identity/account management, should you choose to use Google's APIs rather than something else (there are lots of options) and it's not difficult to introduce a small abstraction layer to allow you to break those connections when required. If you grow to the point that it really makes sense to get off of Google, making the move will cost you a lot of effort and a lot of money, but it's just the effort and money required to build the scalable infrastructure, and you have to pay for that at some point, regardless.
The bottom-line reason for my suggestion was that it allows you to start small, almost ignoring issues of scalability, but to be able to scale up to massive volumes almost trivially. The Visual Studio and VMs approach doesn't provide that scalable, highly-available infrastructure out of the box, you have to build it, which takes time and effort which could be better spent on building the meat of the app.
Cloud++ @Javaman59 (Score:4, Informative)
P.S. 2nd vote for Azure if you're sticking with a M$ platform.
Sagely Advice for the One Person Company (Score:2)
Stick to what you know (Score:3)
All those comments about using LAMP may be true, but when you're comfortable with Windows and not with Linux, stick with Windows. When the application you're going to run *can* run on Linux, then you may want to keep it that way, so you can move to Linux later on. When you're making money you could hire a Linux admin and then move. It may be cheaper in the end.
What is "the cloud" for you? I would think of Azure or Amazon EC2. I don't know of the fees that Azure has, but I believe Amazon has reasonable small servers (micro instances) that can be "scaled" (moved to larger instances) quite easily. At work we use Amazon, and I think it is great with the instant backup snapshots and all options that you have. But do you need it, and do you need it now?
My advice is this. Stay on your server at home, and use that as long as possible, unless you know that it's more expensive because of power and internet and license costs. In the mean time, start up an instance at Amazon. Configure it, get used to it. Run it, test your application on it. Set it up like another staging environment. Then shut it down, and start it up when you need to test more.
The most important thing about Amazon is that you need to set it up right. If you do it right, a big problem like Amazon had last month (4 days down) won't be a problem for you. If you mess up, it can mean disaster. So stick to what you know, and what works for you.
Learn to do it yourself (Score:2)
Learn to do it yourself.
Get it running reliably.
Troubleshooting is easier on equipment you control.
There is no substitute for knowledge and experience.
Once it is running smoothly, if the expected traffic actually happens, decide where to go from there.
It's too bad you're getting flamed so hard (Score:5, Interesting)
Because it's not a bad question. You're getting answers from a lot of people who are either so buried in the deeply technical side of things or locked into the past that they don't really understand it. Having shepherded a couple of dreamy startups through this phase, though, I don't think you are either crazy or necessarily under-qualified to make a successful site. To be honest, it no longer takes the hardcore technical skills that it once did, if in fact it ever did. Technical competency is over-rated by technical people; there are super-successful web businesses out there that started out (and sometimes even continued) with really shoddy coding and infrastructure setup. Craigslist and PlentyOfFish come to mind as examples. I know several others without such name recognition but which nonetheless did quite well for their owners, who slipped along with very basic programming skills and almost no hardware competency whatsoever.
Having the ability to outsource your infrastructure makes it even easier to do this today. I'm going to stay away from the "C" word because it's so shot through with marketing dross and misunderstanding now. But it's entirely possible to effectively do away with almost all the Windows admin if that's not your strength by going with hosted services. You are probably a long, long way from having to worry about Windows/LAMP stack comparisons even at your stated traffic goals, and using a hosted service will abstract that to the point where you aren't going to need to worry about it anyway. I wish you the best, but the reality is also that few sites make it big anyway, so while scalability is certainly something to consider at this stage, you shouldn't allow it to hobble your choices excessively. If you actually get there, it's almost certain you are going to have both the resources and the need to rip everything up and re-do the entire site from scratch once or twice along the way anyhow. You can re-tool then if you must.
Abstracting hardware doesn't absolve you from making other design choices that will afford scalability, and you should have some understanding of what's going on under the hood so you can make those appropriately. But you don't need all that to get started. I don't know anyone, at any skill level, who actually correctly made all the right choices on their first pass. You'll be learning along the way. That's actually an advantage; tech is filled with people who found their comfort levels and can't adjust to newer models.
It sounds like you are asking as much about your dev environment as production. I would say "yes," move it all to a hosted environment. At this stage, you don't need to be worrying about the underlying nuts and bolts. Get up and running quickly and easily. Be flexible and make adjustments along the way. You probably don't even need to go with a full-on PaaS provider right now, either; get a cheap hosting plan with a company that will help you scale when you need to. Depending on your service requirements, you can go with best of breed hosting to find the most efficient solutions for your various problems... use a SaaS vendor for version control, use a CDN for content hosting, and so on. It's cheap, it's fast, and it reduces the time and cost of failure. Failure is undoubtedly something you will run into a few times along the way. That's going to happen whether you are a technical genius or just some schmoe with a good idea. Build it in to your plans; don't over-invest (whether in time or money) in things until you can see better how things are working out.
If you have a good idea, don't be too afraid if you don't know what you are doing. A lot of the best people don't. One of the most valuable lessons you can learn is what not to spend time on, and a lot of things that certain folks here on Slashdot hold dear are things that you don't necessarily need to spend a lot of time on right now. Prove your concepts first. If you turn into the next Facebook, you can worry about infrastructure then. Until then, don't let the idea that you need a Facebook-worthy infrastructure before getting started to hold you back. Re-format that VM server into a games machine and go rent time elsewhere.
Re: (Score:3)
Re-format that VM server into a games machine and go rent time elsewhere.
Why do you have a killer GPU in your VM server?
Bandwidth alone will push you to the cloud (Score:4, Insightful)
The bandwidth needs alone will push you to the cloud (or to a coloc).
You say you're expecting milions of hits/day - if each user pulls down 50KB of content, and you get a million of those hits over a 10 hour period:
50KB/hit * 1 M hits/day / 10 hours / 3600 seconds/hour = 1388 KB/second
It'll take at least a 15Mbit/second upstream connection to handle that bandwidth which is hard to get on a residential connection in most areas of the USA. Plus the mean-time-to-repair on a residential connection can reach days, so if you have an outage, your site will be offline for a long time. And you probably don't have a generator (and even if you do, there's no guarantee that the equipment that serves your internet connection is also on generator), backup cooling (if needed in your climate), or someone to reboot your server or swap a failed drive when you're on vacation.
You can certainly get that much bandwidth delivered to your house, but you'll likely end up paying more than the cloud hosting costs and still won't have the uptime and reliability you'd get from the cloud provider.
AppHarbor (Score:2)
Look at appharbor.com [appharbor.com]. Their slogan is Azure done right: you get ASP.NET 4.0 hosting, a Git repository, continuous integration and unit testing upon deployment, SQL Server instances, etc.. Basically everything you're asking for. Their backend is 'the cloud': Amazon EC2.
Their rates start at 'free', so there is no cost while you're busy getting your millions of accounts and hits. When that happens move to one of their paid tiers and go nuts.
Yes, Start at the Cloud (Score:5, Interesting)
(My background: I've been doing IT for the last 18 years or so; for the last two years, I've been working at Netflix, one of the highest-visibility cloud consumers out there. Until two weeks ago, I was on the IT side, focusing on the datacenter; about two weeks ago I moved over to Cloud Operations, focusing on the cloud (duh) and monitoring, specifically. The following is my opinion only, and does not necessarily represent the opinions of my employer).
In my opinion, the cloud is the easiest way to launch a new service with reasonable redundancy and growth potential. It's how I would start off any new business. Have there been failures? Sure. But largely, cloud failures have only impacted cloud consumers who engineered their environments in a non-fault-tolerant way, in the mistaken belief that "the cloud never fails." The cloud fails. It fails all the time. But following good design principles (ideally, be in multiple regions; at minimum, be in multiple availability zones; test what happens when an AZ dies an ugly death) will give you better uptime, with better cost, than you would achieve for a reasonable amount of money running your own datacenter systems.
And then, once you've got a significant enough size with a big enough ongoing consumption of cloud resources, you can look at creating your own DC environment.
Author's response (Score:5, Interesting)
Thanks for all the comments.
I put on a very thick skin before posting, so the "you can't be serious" and "you are obviously not qualified" comments have not bothered me.
Having been on Slashdot for some 10 years, I expected that (if my question was posted) that I would get some useful ideas from left field, and also some useful direct comments, and that is what has happened, and I am especially grateful to all who took my question seriously and shared of their highly valuable expertise.
One bit of info was unfortunately omitted from my question, because of finger trouble while I was editing it. Obviously I am using Microsoft products, but it's not just because it's all I know (it isn't) but because I have used .Net for 8 years, and find myself always enjoying the latest stuff (now Linq, ASP.NET MVC, and F#) and, as a developer, this enjoyment is central to my productivity. I would never tell a RoR developer to stop enjoying his stuff, and I give myself the same license.
A brief comment on the useful Win vs Linux comments. There has been some advice that, were I to switch to Linux, that I would find a Linux network easier to manage, as well as obviously saving money. I am also "barely competent" as a Linux admin, but I can see the wisdom in that, and I have found Linux administration much more enjoyable than Windows. If I had time to spare, then I would probably go with Mono, for the "best of both worlds", but that's not realistic.
A lot of the advice relates to the cost of scaling if the application takes off, with warnings about the costs then of Windows. That is a factor I had not considered. I am, because of my free Windows infrastructure, immune to the costs for development, but I will have to look at the costs for scaling. I had thought that, if I'm getting many hits, then I would also being generating sufficient revenue to pay for servers, or that I would have sufficiently proven my concept to get investor funding, and possibly switch to Mono then. IOW, that would be a problem I would like to have. The comments here have suggested that I reconsider this optimism
I haven't yet processed all the most helpful comments, and I will certainly be taking my time to do so, but there does seem to be some repeated advice that Azure is the way to go. This will, hopefully, provide a uniform environment for development, staging and scalable hosting.
Some advice to young people out there. Don't be afraid to ask stupid questions. The chances are that your question and the answer will save you a lot of time.
Thanks again, Slashdot
And, a quick comment on my username. I adopted "Javaman59" when I moved to modern OO development in 2001. I have kept it, with some fondness for those roots in Java, Linux, and the GOF patterns.
Javaman59
Re: (Score:2)
Astroturfing
You may be right - Look at all that MS name dropping, and this guy is running this out of his home? He must be one rich guy to pay all the licensing fees, especially if he expects to scale to "millions of accounts and daily hits". Either itâ(TM)s pure Astroturf, or this guy just isnâ(TM)t living in reality.
Re: (Score:2)
Re:Your not qualified (Score:4, Informative)
I think you are right, but he's probably taking on this challenge because no one else can dedicate the time or effort he can. At least not for free.
In his situation what should he do? Just give up before he has even started? A more proactive approach is to admit there is a lot to learn, but it is by no means insurmountable. It will just take a lot longer.
Sometimes that is the only realistic option available to people. I admire his can-do attitude. It will be one hell of a learning experience!
Re: (Score:3)
This is just FUD. Microsoft has the BizSpark program and similar programs for exactly this type of start-up. He can run MS for five years and not pay a dime in license fees. If he has millions of users in 5 years, getting the money to run any stack will not be an issue.
Stack overflow serves something like 100mm pages a month on 1 rack of Windows servers.
That said, if he doesn't know how to set up a Web server and wants to focus on building a product, hosted and managed cloud is the way to go.
Re: (Score:2)
Exactly. You need to be able to load balance the spam and requests to the hosted malware, so normal business will not be interrupted.
Re:Your not qualified (Score:5, Insightful)
Re: (Score:3)
Zuckerberg also had no idea what he was doing technically, but was spot on with his idea about Facebook. You can always file a patent or trademark, talk to VC and hire a server engineer..
Actually Zuckerberg was technically competent and a geek. Most people's problem with him does not revolve around his social skills, but rather that he was perceived as an asshole who thinks Facebook users are morons.
Re:Your not qualified (Score:5, Insightful)
I'm sorry, but if you need to ask Slashdot on something like this than your not qualified to do what you want to do.
I get the impression you have never worked for a small startup. In small startup businesses often the best thing they have going for them is a single good idea. These good ideas do not often come from the best technical brains, who can implement something in the ideal way.
Nothing personal but your only going to have hours to days before your website is hosting malware or gets turned into a spam relay.
Not necessarily. If he goes with the cloud solution I would in fact be very surprised if this happened since Amazon or whoever would be responsible for protecting him from everything other than coding errors and those are very hard to find via automated means. That means it takes an actual human being to hear about his site and take an interest in hacking it, if you are not taking credit card or other personal details from people or doing anything to irk the hacker community this may never happen.
None of this is to say that doing things badly is a good idea, but sometimes it is necessary in order to bring something to market quickly and test its commercial viability. Once an idea has proven itself you can invest the extra cash in doing it right. This is where the cloud really comes into its own since it scales up very easily to cope with a horrible mess of bloated, thrown together code.
In version 2 of the product you then build it the way it should have been built originally but with the benefit of more planning time and learning from your previous mistakes. There is no point in trying to make version 1 perfect since you do not know everything you need to in order to accomplish that aim from a business perspective and never will without some experience. You just make sure you factor the short lifespan of the initial version into your costs.
An excellent blog covering these sorts of issues is here: http://www.softwarebyrob.com/ [softwarebyrob.com]
Disclaimer: I have nothing to do with Rob :)
Re: (Score:3)
I'm sorry, but if you need to ask Slashdot on something like this than your not qualified to do what you want to do. Nothing personal but your only going to have hours to days before your website is hosting malware or gets turned into a spam relay.
Thank you. I knew that I would get that exactly that response from at least one person, if not the first 10 responders!
I had not expected though that the response would be based on a misinterpretation of my question. I am only talking about developmental infrastructure. I thought that was obvious, but it would have been better if I had added that word.
I didn't think that anyone would even consider hosting a commercial web site from home in 2010. Of course I'm going to use commercial hosting. The reason t
Re: (Score:2)
No, he's saying that a man that obviously hasn't mastered building his own infrastructure is nowhere near qualified to be asking someone else to be the infrastructure for him.
It is also pretty obvious that the Submitter never bothered to do any basic research on cloud services, otherwise he'd have never posted this question in the first place.
Re: (Score:2)
No, he's saying that a man that obviously hasn't mastered building his own infrastructure is nowhere near qualified to be asking someone else to be the infrastructure for him.
as AC pointed out, that doesn't make any sense.
It is also pretty obvious that the Submitter never bothered to do any basic research on cloud services, otherwise he'd have never posted this question in the first place.
research is looking for information. surely he has done (is doing) solo research. regardless, what crime is being committed by asking peers their experiences on a matter? i think i would actually include that as a necessary step in any preliminary research.
truly, if you have no experiences worth contributing, keep it to yourself, instead of getting mad at some guy for using the Ask Slashdot feature as it was intended.
Re: (Score:2)
"all you need to do is just ask the /.'ers here to take a look at your web site and test it for vulnerabilities. Your system will go down in seconds!"
Last time I asked /. to do that they failed MISERABLY in getting my system offline or to even lag.
Can't trust /. anymore for decent advice or testing. The majority of them know nothing about technology beyond the LOIC anyways.
Re: (Score:2)
logic is trumping tradition [slate.com].
welcome to the future.
Re: (Score:2)
Don't use MS products if you want to scale.
Google App Engine. Steep learning curve but worth it.
Tell that to the StackExchange/StackOverflow guys. I've been a straight *nix developer and sysadmin for ages, and I prefer that over MS products. But even I can see through this type of bullshit (regarding MS products not scaling.)
As for Google App Engine, you gotta be joking. You can't upload a straight/stander JEE app on it, and there is a substantial amount of effort to make sure your code is not completely dependent to GAE's specific architecture. For that, it's much better to go to Amazon EC, or a tr
Re: (Score:3)
MS systems can scale as much as you like, if you have the money for licensing, hardware, MS support, and system administration. It's not ideal, but technically it can work.
Re: (Score:2)
"Don't use MS products if you want to scale."
Never heard of Azure, have you?
While I hate MS, guess what? It actually scales.
Re: (Score:2)
eBay runs on Windows.
Re: (Score:2)
But the point with stackoverflow is that it was a small company that did it (obviously not on a big budget) and it worked out fine. If you were most familiar with Windows stuff, would you really feel better going with Linux for your web project?
Re: (Score:3, Interesting)
"Uh, he specifically wants to spend more time on developing and not worrying about the hosting part."
Considering the problems cloud services have had this past year, he's sorely mistaken if he thinks he'll be spending more time developing.
The cloud was not even viable for our small business - not reliable enough, and the people running the cloud are just about as clueless.
Watching Reddit go down hardcore because of cloud failures was even more of an eye-opener.
If you can't be responsible for every part of y
Re: (Score:3)
"If you can't be responsible for every part of your business, you don't need to be in business, PERIOD."
So a person making widgets should know how to run a server? Bullshit. He said he's creating a web site for his business, not that he's becoming a web site designer/host. He never said what his business was (presumably he thinks he's invented the next mousetrap.) That would have been helpful to give some sort of idea at least if this was a service or a widget you sell out of an online store.
To the question
Re: (Score:2)
This is ridiculous. You know absolutely nothing about the application itself, yet you're telling him what tools to use to build it.
Re: (Score:2)
Agreed, if you're looking for a good hosing environment The Cloud(TM) is likely a good choice.
Re: (Score:3)
Like many, you completely misunderstand the Netcraft numbers.
Netcraft's survey does not represent market share. It represents how many hostnames (ie domain names) point to an Apache server, and how many point to IIS and a few others. Hostnames != servers. Hostnames != sites either. Netcraft does not say exactly what they consider a "host" to be. For example, take a site like SourceForge or CodePlex. Do each project.sourceforge.com or project.codeplex.com domain names count as seperate sites with Netc