Your company, Acme Corp, has decided to stand up a brand-new, web-accessible service. The service will involve a web front-end and a big database server back-end. This is an entirely new service, so Acme is planning to buy all new hardware to make this work. The expectation is that the service will, during business hours, be dealing with about 1,000 requests per minute. It will be accessible the world over (unless censored by a location). An average request will require 5 database operations involving, on average, about 100 Mbytes of data. 1. What are some of the performance considerations for this site? 2. How much hardware / computing power do you need? 3. What duty cycle must you support, i.e., out of 168 hours a week, for how many do you expect high demand? 4. When do you schedule down time for maintenance and upgrades? 5. What OS, web server and database software to you recommend? Why? As this is a fantasy, assume there is infinite money in the budget … but provide some costing information with your recommendation.
Answer:
- Performance considerations for this site:
- Network Latency and Bandwidth: As the service will be accessible globally, the network latency and bandwidth should be fast and reliable to ensure seamless user experience.
- Scalability: The system should be scalable to handle fluctuations in demand, both in terms of web server and database capacity.
- Availability and Redundancy: High availability and redundancy of the system components should be ensured to avoid downtime.
- Performance Optimization: The web server and database should be optimized for performance to ensure quick response times, even during periods of high demand.
- Security: The system should be secure to protect the data and ensure the privacy of the users.
- Computing Power: To handle 1,000 requests per minute with an average of 5 database operations per request, the system needs to be able to handle 5,000 database operations per minute. The size of 100 MB per operation means a total of 500 GB of data per minute, which requires a substantial amount of computing power. A high-performance server with multiple CPU cores, large amounts of RAM, and high-speed storage would be suitable for this service.
- Duty Cycle: As the service will be available globally and accessible 24/7, it is expected to have high demand throughout the week. It is recommended to design the system with a high level of redundancy and availability to ensure that it can handle the load at all times.
- Maintenance and Upgrades: Maintenance and upgrades should be scheduled during periods of low demand, typically during off-peak hours, to minimize disruption to users.
- Recommendation: For the OS, I would recommend using a Linux distribution, such as Ubuntu or CentOS, as they are widely used and have a large community of developers, which makes it easier to find support and troubleshoot any issues that arise. For the web server, I recommend using Apache or Nginx, both of which are widely used, have a strong track record of performance, and offer a range of features and extensions to customize the server to meet specific needs. For the database, I recommend using a relational database management system (RDBMS) like MySQL or PostgreSQL, as they are well-suited for managing large amounts of structured data and offer a range of features to optimize performance and ensure data consistency.
For hardware, the cost can vary widely depending on the specific requirements and the chosen components. On average, a high-performance server can cost anywhere from $10,000 to $100,000 or more. It is also worth considering cloud-based solutions, such as Amazon Web Services or Google Cloud Platform, which can provide scalable and flexible infrastructure without the need for upfront investment in hardware. The cost of using cloud-based solutions can range from a few hundred to several thousand dollars per month, depending on the usage and the chosen service level.