Tell me more ×
Answers OnStartups is a question and answer site for entrepreneurs looking to start or run a new business. It's 100% free, no registration required.

So I guess the follow-on question for this will be to jump into some of the specifics, but I have never worked on a software development team in a professional capacity and am building a web startup.

How do I structure my entire development environment on a bootstrapped/startup budget? What are the things I will need? There will be two coders and 1 designer (all cofounders including myself).

I know I will need a Version Control System, for us to manage the development, but from there what next?

Do I need a development, staging & production server. If so, how do I setup all of those on one server without having to rent/buy 3 different servers? Even better yet, how do I setup that sort of environment on a cheaper cloud offering like the grid hosting solution from www.mediatemple.net . Is that possible/desirable?

Do I have to worry about server monitoring with tools like Nagios from now, and where can I learn about architectures that will scale - because I keep reading about people making the wrong choices early and it being a huge headache when they need to scale. How do I avoid those types of mistakes?

Ideally, I would like to release early & release often - like the guys at www.getdropbox.com do so wonderfully.

Thanks.

[Edit]

Thanks guys for all the great feedback.

share|improve this question

7 Answers

up vote 3 down vote accepted

The setup you need is entirely dependent on the development model you intend to start with, and how you plan to manage scaling. From a high level, the specific technology needed is irrelevant until you're nearing a production release. The absolute important components are:

  • Communication/tracking: How likes/dislikes/improvements/features/bugs/goals for the product are made available and tracked. Bug/Ticketing systems (Jira, Trac, etc.) are the typical method. Early integration with using an actual system will make everyone's life easier, rather than relying on individual to-do lists, notes from meetings and emails.

  • Collaboration: How do the developers and designer work on all aspects of the system simultaneously. This is the revision control system. Let the developers decide, just start with one early on and you'll save a ton of heartache later on (the only time I've had hard drives crash completely is when there is data on them that is not available anywhere else).

  • Progress: A method for each member of the team to be able to quantify what is done versus what still needs to be done. There are many approaches, from milestones with tickets assigned to it, to a checklist of features to ad-hoc reporting based on functionality levels (I know those all sound similar, but it's the approaches from completely detailed to general overview).

A staged buildup of equipment is what I would go with. Start with someone's spare/old computer (laptop or desktop, anything that can get a server load on it) and let the developers set up your initial tracking platform. Once you have something real to show (ie, the machine is definitely not the right resource or you need a good, everyone can see it setup), compare costs of hosted vs. purchased. There are several companies that provide VPS setups for very good prices (my personal favorite the base package is $10 a month and every facet is upgradable and doubles each increment at $5 increments, look for flexible providers that let you up the parts you need (memory independent of CPU time independent of bandwidth).

Once you're ready for the first showing, the developers can provide the best feedback for the setup you really need. After the initial rush, I would strongly suggest finding a reasonably priced consultant or an associate with an extensive systems administration background. Have them look at your architecture and go through with the developers where the most painful scalability and management issues will be at. Don't have them do any of the work, this is to get an understanding of what your problem areas will be before you get there. You can then plan for when, where, how and why you'll change the underlying system.

share|improve this answer

It is usually best to delay moving onto the cloud until you have your tech down. Its not necessarily any less complicated. Since you're asking this, you know enough to get by but you probably need a proper CTO who knows this stuff in and out.

You can setup multiple servers on a single machine using virtual machines. If you do end up going cloud, I recommend either Rackspace or if you go to EC2 (pay for the reserved instances as they are over 50% cheaper).

For you, I suggest doing it in house at first, with a cheap <600$ linux box to test out your ideas. That's if you're at least serious enough to buy one of those (you could use someone else's computer but unless they have multiple hard drives, disk contention will ruin their day). If its not worth spending 600$, if you plan it, you could use say EC2 for a few hours and test without spending more than a few hundred.

Google things like Continuous Integration, version control hooks, and TDD (slow but may be worth it for you, it depends).

share|improve this answer
Thanks for this advice. We can't afford a CTO for now, and I have a first degree in Computer Science - it's just that I have never used it. I am a pretty technical guy, so I can figure this stuff out. Which is why I am here trying to put the pieces of this puzzle together :) Have been reading about Continuous Integration, will look up the others. – marcamillion Oct 10 '09 at 7:04
Not being able to afford one is fine, but it sounds like you're in the right position to learn how to fill the position though! Good luck! – Van Nguyen Oct 11 '09 at 4:05

Try hosting your development code in-house on a cheap server and set-up a low-cost account online. Also, look at frameworks like Zend to get development right from the outset.

share|improve this answer
Thanks Julie. We will be working with Rails from the get-go, I was more looking for structures outside of IDEs. – marcamillion Oct 10 '09 at 7:06
One of my mentors has cautioned against doing that, hosting in-house on a cheap server. Host where you plan on deploying, EC2 or whatever. My startup is using EC2. My server bills are less than my beer bills. – Paul Cezanne Dec 8 '11 at 17:59

For a basic proper development platform, you will need the followings

  1. a source code version control system
  2. a platform for development
  3. a platform for testing
  4. a platform for integration test (if system involved interfacing others system)
  5. a team development platform (like Visual Studio 2008 with Team Foundation Server)

As a startup on a budget, you use Virtual environment like Virtual PC or VMware. You only need one powerful server.

share|improve this answer
So for the first 4, do you think it is wise to have all 4 running on the same server hosted at say Rackspace or some Managed Hosting company? I would have one server, with 3 or 4 different folders (dev, staging, production, VCS) and dbs associated with each of the folders. Or would it be better to have one server with 4 virtual machines running on the server, and each VM instance be a separate system. E.g. VM 1 = Subversion Repository, VM 2 = Dev, VM 3 = Staging, etc.? Thanks. – marcamillion Oct 10 '09 at 7:09
I would recomend put database in a physical server and the rest in VM like you have there. Make duplicate copies of VM so you can scale the whole thing when you need to. – drchang Oct 10 '09 at 8:11

You can try eApps hosting. They offer complete linux server (with root access) for under $20/mo. I've been using it for last 4 months without any issues.

share|improve this answer
Hrmm....will check them out. Thanks. – marcamillion Oct 10 '09 at 7:55

Try to host everything on the cloud. Avoid the hassle of doing admin.
You can find some great solutions that are free to start with, and will only cost you (a little) once your project grows.

Some tools:
Google apps for collaboration - email, calendar, docs etc. all for free (and everybody on your team probably uses gmail already anyway). Can't wait to put my hands on wave...
Skype is a great for free voice if you don't all work in the same space.
I highly recommend Pivotal Tracker (pivotaltracker.com) for agile project management, ticketing etc.
We use beanstalk (beanstalkapp.com) for version control (svn) and they're OK.

Hosting:
I'd like to join the other answers here - absolutely use Amazon (EC2, S3 etc.). Don't even think of spending money on buying or even leasing dedicated servers elsewhere.
AppEngine is also an option, but then you're pretty much stuck on their platform.

Regarding staging production etc., you don't need that if you use EC2 (or some other cloud provider). Check this out: http://hivetech.wordpress.com/tag/staging/

Finally, do not spend any time on serious monitoring solutions etc. - until you actually have some traffic... Getting traffic (=customers) in the first place is much more difficult then making sure you can service them later. Take Twitter as an example - if the product is compelling enough, you'd be able to fix your performance failures later.

share|improve this answer
Thanks Elad. This advice is very useful. We already use Google Apps - in some sort of way. I hadn't heard about Pivotal Tracker, but will definitely look at them now. That advice about monitoring is timeless - runs in line with the advice you hear from Paul Graham, etc. 'Just get to product/market fit'. – marcamillion Oct 10 '09 at 14:41

Just to throw some real-world examples out there from a bootstrapped startup, here's what we use:

  • redmine (http://redmine.org) for issue tracking and wiki, couldn't live without it!
  • git through github (http://github.com/tribily for version control. No hassle having an in-house code repository and super easy management of users and teams. If you pay 20$ you also get private repo's, so worth it!
  • puppet for structured system administration, makes every change transparent and accountable, as well as making scaling very easy.
  • physical servers at www.hetzner.com. Our product stores a lot of historical data in teh database that needs to be instantly accessible at any time, so we need large disks. We use Hetzner because they are cheap, environmentally friendly and they allow us to reserve rackspaces adjacent to the ones we use. You can reserve as many as you want for as long as you want for 10EU/1U/month, totally worth it. We have three physical servers there that just run the production environment, I don't want testing or development environments anywhere near our production environment :)

Hope this helps :)

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.