Best hardware to buy for a small startup web php/mysql web development team?
we are given some funds to renew our IT infraestructure (about 20000$). We are a small team of 5 coders, working primarily with Ubuntu / PHP-Drupal / MySQL.
One of the first things w开发者_运维百科e want to buy is a brand new server with lots of gigs or ram (64 at least) to allocate all the local databases, svn repos, shared directories, etc. One of our primary bottlenecks is MySQL performance, which hope to solve with this server.
We have pretty low experience with these big machines. Do you think is worth it´s value?
Without knowing the scale of your work it's extremely hard to answer this. Lots of things to consider, it sounds, at least like your software costs will be very low.
Things to consider:
- One machine (web + app + db) vs multiple machines.
- Data backups (a must have IMHO), be that external service, external hardware, or a dedicated machine. Also relevant: offsite copies regularly maintained.
- Redundancy - multiple network cards/server, multiple power supplies/server, lights-out abilities of servers if they're not easily accessed, multiple connections in the network (if that's key to your application)
- Power - you'll want clean power for a server - not only does a UPS keep the system running for a few minutes during a brown out or blackout, but the higher level ones condition the power coming out.
- Cooling & noise - server hardware generates some serious heat, and some systems generate some serious noise - you need somewhere to put these things with good airflow + cooling that isn't going to drive anyone crazy.
- Networking - if you're building a multi-computer setup (eg. 1 DB server, 2 app servers, 1 load balancer) you'll also need good networking between them - ideally on a separated network (for security and performance).
- is this for a production system, a test system, a development system, all three?
Solutions:
- One large machine: big ram, big/fast drives, large processor. Pros: Simplicity. Cons: Expensive, different services require different components but you have to get the best of all, doesn't scale - will have to switch to another format if you need more later.
- A machine of reasonable size for each service: db machine - large ram, as fast drives as possible/affordable, app machine - good processor, reasonable ram, some hd. You may also want to split out file storage into a SAN (which both the app and DB machine can use) Pros: Buy the best for the task, save where it's not needed. Cons: multiple machines to support, it's easy enough to just buy two large machines - so 2x #1 cost
- Machine cluster - a load balancer up front, several app servers behind that, with several database machines behind this. Pros: scales well, can use commodity hardware (eg. $500 desktops) to be quite inexpensive Cons: Every part has to be built with possibility or expectation of failure (not a bad idea), administration can be high, networking could become key
There are lots of choices and options, and there are lots of configuration examples on the web. The cloud services (Amazon's AWS for example) have some excellent case studies of companies requirements and the cloud services they use to provide their solution - there's a real world hardware analogue of these setups.
The amount of money you have (depending on the currency ;)) seems like more than enough for now - you can even get into the cluster setup depending on the chosen hardware. You're trying to solve a bottleneck but you don't say where it is right now - if it's a db server running on a desktop machine, there maybe other processes (including virus scanners, defrag processes, indexing) that are interfering, it could even be something as simple as the configuration is very restrictive (low threadcount, memory usage). The scale of what you're working on is really key here, but last couple of generations of server hardware may well be powerful enough for your needs.
You really need to tell us more about your current working environment and projects.
Spending money because you have it is rarely a good policy, but if you need upgrades, figure out specifically what is holding your team back and upgrade that first.
Given your question, I assume you're talking about upgrading production infrastructure that is also used for development. Unless you're dealing with a very busy site, you probably don't need to spend anywhere near that much money on a new server.
What makes you think you need that much ram?
Have you looked at other ways to improve your MySQL performance?
Systems of this budgetary scale are not usually something that you just select from a catalog. You need to figure out precisely what you need and why you need it before you go ordering lots of hardware.
Depending on what you'll need for your apps - we don't know how big are your projects. I think that for medium sized projects that cash would be fair enough and you should have still many money in pocket after all. ;]
I work at a similar company.
We all have strong laptops (mostly MacBook Pros and ThinkPads [Linux]), where we have a development environment. We prefer laptops over desktops, because it is no problem if we have to work from home or we can't be in the office for some reason.
We have a test server at Linode, where we also store our shared repositories (some old SVN stuff, but now mostly Git).
Our development sites run either on Hot Drupal (if it is a smaller site) or on EC2.
The development plan for us:
- develop the module/theme on localhost
- integrate it on the test server
- show the page on the test server to the customer
- deploy to live
I know you have many answers. However, no one mentioned virtualization. I'm not just throwing around a buzzword here. This is how I set up my development environment, and I wouldn't do it any other way. All services are on virtual machines.
The main benefit: flexebility
You can add more hardware to be able to take on new projects with barely any software changes. You can backup your systems easily. You can upgrade your systems easily.
I can't list everything, but you'll find it much more flexible, cheap, and reliable.
Disclaimer: You will not get all those benefits if you do not set up your virtual machines / network / etc in an inteligent manner.
精彩评论