When you start a new project, there is a tendency to try and do all the infrastructure work up front, before you begin shipping features. I call this "feature nirvana" and I don't think it ever works. My assertion is that each feature you ship will inform your infrastructure needs, therefore you should only build the infrastructure necessary to ship the feature you're currently working on.