Ultimate way to host webapplications [closed] - performance

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 9 years ago.
Improve this question
I know this topic was widely discussed all over the Internet, but as an amateur in these matters I dare to ask my question.
I am looking for a flexible solution to host my webapplications. Flexible means that it would be sufficient for any kind of project - small website and Reddit-scale giant.
So far, I was thinking this way: I start with shared hosting, then my website get more and more popular so I buy a VPS, then dedicated server, then people finally notice how amazing my idea is and I have to build my own datacenter.
Currently, I am in the stage when I am moving my webapps from several shared hostings to VPS and it got me thinking - is there a better, more comfortable solution? I do not want to move to another hosting, constantly upgrade my hosting plan and still be worrying about performance.
But there is a service like Amazon AWS (and some others), which promise to provide me with comfortable solution to the problem. They say I will be charged only for what I have used and, by enabling auto-scaling, my apps will be growing with (almost) no limits. But most importantly, I would not have to worry about building my own infrastructure etc.
Of course, service like this still requires management, but as far as I am concerned it would be a task to rather small team or even one person. (Right?)
Reddit is a great example of what I am talking about. One of the most popular website on the Internet is 100% hosted by AWS.
So my question is: Is service like AWS the dream platform for entrepreneurs who are willing to create "something big"? Is it the most flexible and the most comfortable solution there is? What are disadvantages I do not see?

In my experience a dedicated server gives you a lot of wiggle room, I use it for big webapps that do a lot of data crunching, but also small websites.
If you have a decent multi cpu server with a lot of RAM and large high speed sata 3 SSD's and fiberoptic network for top speed, your server will be blazing away.
If you use a linux based server it will become easy to cluster them.
Then when you need even more speed you can just put the SQL server in an own dedicated server and you will have doubled your speed instantly.
SQL servers cluster easily among multiple computers so there will be room to grow, and linux servers also cluster easily(at least for people who know what they are doing).
I totally recommend having your own dedicated service where you decide how it grows, then to be stuk on someone elses turf and to get pinched in speed when a high paying customer needs premium speed.
Just my 2 cents

Related

Multi-platform social networking application development architecture [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 9 years ago.
Improve this question
I was thinking on some social media applications like facebook or linkedin. I read lots of articles on websites like http://highscalability.com/ and didn't find the correct answer.
Because, the biggest apps of now, use their custom systems. They use custom file systems or customized db-engines or customized web servers. They don't use the original iis, apache, mssql, mysql, windows or linux. They use lots of programming language for different problems. It's OK for them because of their load. They have to calculate every bit or something. They started on some small enviroments and they encountered problems and saw bottlenecks. So they founded new solutions.
Now, we can find some articles about their current systems. But we have no answer about what is the best start.
I need to learn the answer of "What kind of architecture is a correct start?"
I have some ideas on it but we need to be sure about it.
We think,
Use mysql for relational database. And a caching mechanism like memcached over mysql. And a rest api for business layer. We think using python for codding of rest api. And all systems run on a suitable linux distro. After all of these enviroments is ok, we can use any language or system for UIs. It can be a PHP site for web or a native application for IOS or Android.
We need your advice. Thank you so much.
(I am a good reader but it's my first question. I hope there's no problem.)
Following a similar question last year I compiled the techniques and technologies used by some of the larger social networking sites.
The following architecture concepts are prevalent among such sites:
Scalability
Caching (heavily, across multiple tiers and layers)
Data Sharding (preferrably by data-locality criteria)
In-Memory DBs for often referenced data
Efficient wire-level protocols (as opposed to what an enterprise typically considers state of the art)
asynchronous processing
Flexibility
service oriented architecture as a baseline principle
decoupled and layered components
asynchronous processing
Reliability
asynchronous processing
replication
cell architecture (independently operated subsets, e.g. by geographical criteria)
NB: If you start a new site, you are unlikely to have the kind of scaling or reliability requirements that these extremely large sites face. Hence the best advice is to start small but keep it flexible. One approach is to use an application framework that starts out simple but has flexibility to scale later, e.g. Django.

Measuring Web Application Performance (Stress-Testing) and Bandwidth Requirements [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 7 years ago.
Improve this question
I am in the process of measuring the bandwidth requirements and how a Web application behaves in terms of response time and memory requirements when the number of users is increased.
Is there a particular good tool that can help us here? I believe JMeter is the standard tool. But are there other tools considering that the site is IE only.
Your answer is extremely appreciated.
Well, the question is how do you want to profile? Do you want to simulate real-world activity? Or do you just want to bombard the heck out of the site?
Load Testing Individual Pages
I don't think you can go wrong with using Apache Bench (ab). It's dirt simple to use, and can really stress your application. My typical usage is:
ab -c 10 -n 1000 http://www.example.com/path/to/page
The -c parameter is the number of simultaneous requests to issue. I would suggest starting low (like 5 to 10) and working your way up. Watch the output for failed requests and falling response rate. You're limited to about 1000 connections on most linux machines, so don't go too crazy.
The -n parameter is how many requests to issue. I would suggest doing at least 100 times the number of concurent requests to get a good average...
Another great use for apache bench is to benchmark individual database queries. Just create a simple script that runs the query, and load away. This can be a really good way to detect fast but expensive queries that will take your server down in production yet seem fine in testing.
Load Testing The Whole Application
I've had good luck with WebLoad. There's an Open Source version if you don't have a good budget that will get you started. But I'd suggest springing for the pro version. With it, you can setup a distributed test environment (as simple as installing the client on every machine in the office, as complex as spinning up a bunch of VMs for it).
The cool thing, is that you can program it in javascript. So you can tell it to take random click paths through the site with random delays. This should simulate a user far better than you could do manually. Then, once you have it setup, push the tests to the distributed engine and hit go.
It supports many different load profiles (stair-step where it adds load little by little for the duration of the test, etc). So you can simulate a slashdot-effect profile, normal day-to-day usage, etc.
The reports it generates are immensely useful. It shows you the slow urls, where the bottlenecks are, etc.
There are plenty of other test platforms and systems out there. This was just one that I found that I felt worked pretty well at the time (I did a comparison about 2 to 3 years ago). I am not affiliated with the company in any way.
Load Testing parts of the application
This is a really useful technique called profiling. The how to and tools are fairly language specific, so I won't go into too much detail here (since you don't have a language tag on your question). But the point is that once you find a slow page, you'll need to profile it to figure out what's slowing it down. Then fix the low hanging fruit (the parts that are the slowest). Then re-test to see if you made a difference or not...
Conclusion
Since it's almost impossible to simulate real-world load, this is really more of an art than a science. Have at it, and have fun. Don't take the results to seriously though, even with the best testing, you're likely to miss something... So I wouldn't take them as gospel and go telling the CEO that you tested that it's capable of 100k concurent users. Since when the day it crashes happens (and if you are lucky it will crash), he will blame you since you told him it would work...
Just a thought, you say IE only so is it hosted on IIS? if so then you might want to look at Microsft's WCAT (Web Capacity Analysis Tool), more information is available here:
http://support.microsoft.com/kb/231282
Although it isn't open source but it is free - do you need the source.

Best practices and literature for web application load testing [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 6 years ago.
Improve this question
As a web developer I've been asked (a couple of times in my career) about the performance of sites that we've built.
Sometimes you'll get semi-vague questions like "will the site continue perform well, even during product launch week?", "can the site handle a million users?", and even "how is the site doing?"
Of course, these questions are very legitimate, and I have always tried to answer these questions to the best of my ability, using a combination of
historic data (google analytics / IIS logs)
web load test tools
server performance counters
experience
gut feeling
common sense
a little help from our sysadmins
my personal understanding of the software architecture in question
I have usually been able to come up with reasonable answers to these questions.
However, web app performance can be influenced by many things (database dependencies, caching strategies, concurrency issues, etcetera, user behaviour).
I'm a programmer and not a statician, and my approach to this problem has always felt deeply unscientific. So I did a little more research... and all of my google results seem to focus on tools and features and metrics (and MORE metrics) when I am really looking for a way to make sense of these things.
The question:
What are some good resources (books?) to read on the best practices for a developer to read on the subject of web load testing, that will help me answer these types of questions?
First your question proves you do understand the problem. It can sometimes be tricky enough creating the tools, scripts etc. to generate the load but the real challenge lies in evaluating the results and what to monitor.
A very easy answer to your question could be to Generate load on a production-like environment that is similar to current or expected usage. If it runs ok without any crashes or slow performance that is usually good enough. After that, increase load to see where your limits are.
When you reach your limit my experience is that this is purely a project budget question. Will we invest more time/money/resources etc to evaluate the cause.
I work as a test professional and I do recommend respect load testing as a vital part of the development process but unfortunately that is not always in line of what management decides.
So the answer to your question is that almost everyone needs to be involved in this process:
developers to monitor their code; system admins need to monitor CPU, memory usage etc.; DBA; networking guys; and so on. They all probably need their own source of knowledge to be able to get all this info recorded and analysed.
A few book tips:
The Art of Application Performance Testing: Help for Programmers and Quality Assurance
http://www.amazon.com/exec/obidos/ASIN/0596520662/
The Art of Capacity Planning: Scaling Web Resources
http://www.amazon.com/exec/obidos/ASIN/0596518579/
Performance Testing Guidance for Web Applications
http://www.amazon.com/exec/obidos/ASIN/0735625700/
Have you seen:
Performance Testing Guidance for Web Applications by J.D. Meier, Carlos Farre, Prashant Bansode, Scott Barber, and Dennis Rea
It's even available on the web for free.
http://msdn.microsoft.com/en-us/library/bb924375.aspx
You could emulate typical user behaviour and use one of the cloud services to simulate a huge number of users on the website to see how well your website handles with huge numbers of users. I heard Amazon's service is decent
I can recommend two books published in 2010:
The first is "ASP.NET SITE PERFORMANCE SECRETS" by Matt Perdeck, was published in late fall 2010. It is written more from performance optimization standpoint, but also has detail material on load testing. It is a free pdf eBook.
The second book is ".NET Performance Testing and Optimization - The Complete Guide", by Paul Glavich, Chris Farrell". It is pretty complete source on performance / load testing

Axosoft OnTime vs Countersoft Gemini [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 3 years ago.
Improve this question
We are "upgrading" the systems at the company, moving from SourceSafe/BugNet/... (yeahy!) to some more serious systems. TFS is too expensive. We have come down to comparing OnTime vs Gemini. They both seem OK with an "OK" price-tag. We will of-course download and try them out both, but it would be nice with comments from experienced users. To me, they seem quite equal.
Has anyone used both, and can compare the two against each-other?
If you would recommend one of these, which one, and why?
Any other experiences with these systems? (Especially Gemini, seems hard to find reviews regarding this-one..?)
(We are talking about a smaller dev-team, max 8 dev in a project at a time, a couple of testers and some stakeholders/managers etc... Several projects running simultaneously. Need to be able to integrate to Visual Studio, Subversion with feed-back to the issue tracker etc)
Thanks for your time!
We use OnTime here - it has a good workflow environment but be warned that it does not scale well at all. We currently have 35 licenses with only 10 to 15 users online at any one time and it struggles.
Also be careful of the sales pitch for using the web or "remote" servers for distributed environments - it works fine with the demo/eval database but slows to a crawl once you start getting a decent amount of items in the database. All you have to do is look at a SQL profiler and you'll see the number of calls made to the DB.
If you profile the web services you'll also see that the web and remote environments have not been optimized at all to batch calls, so as soon as you move to an environment where there is any kind of communication latency it crawls.
Axosoft's support has been less than helpful on this as well - they strangely do not view these as bugs and instead view this as something we should expect in these environments. We have contacted their support over a number of other things as well and it is surprising how poor it is over other things as well.
Axosoft's excuse is that we should have found these things out in the eval period, but I don't know how they expected us to scale the data to production environment levels within a 30 day eval period...
We have been forced to revert to using the WinForm client over Citrix for our distributed teams.
Overall - it is a nice application if you have a small team in a single location. But if you have larger teams or people spread out in multiple locations I would avoid it at all costs.
Gemini is great, we selected gemini over many other bug tracking systems...
main features we liked:
user interface
extensibility (API's, REST based)
addon products (visual studio, outlook plugins)
source control integration (subversion)
source code available (asp.net c#), easy to setup and great support.
For a broader comparison with Gemini bug tracker and others in the same space, wikipedias Bug tracking comparison page might be of use. Although I don't know of a direct, in depth Gemini / OnTime comparison.
Take a look at Project Kaiser (short demo available). It is fast, web-based, supports embedded wiki, forums and chats. And it is free for 5 users :)

Why such a disparity in pricing between Windows and Linux hosting services [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 2 years ago.
Improve this question
I'm a .Net developer for pay, but I have my personal web site hosted on a LAMP stack with a shared hosting provider. I've been looking for a while to switching to a Windows with .Net hosting provider, but what really turns me off is the price. The reason that I want to switch is that I find .Net much more enjoyable to develop on, and I'm much more in practice with using .Net as opposed to PHP.
With my current Linux hosting provider, for a measly $10 a month, I get more bandwidth and disk space than I could ever want to use on a personal site. I'm currently allocated 380 GB of space, and 7700 GB of transfer. While I realize that I could never possibly get to those limits, especially with the CPU usage limits put in place, it's nice to be about to have a bunch of pictures up on my website without worrying about running out of space.
However, with the offerings I see from the Windows hosts, as an example, for $17 a month, I would only get 2 GB of disk space and 200 GB of transfer. The transfer limits seem well within what I would use in a month, but the 2 GB of disk space seems extremely low. Especially since only 400 MB could be used for SQL Server databases.
So enough background, on to the question, is the difference in pricing tied solely to the costs paying for licenses for Windows and SQL Server, or is there something else that I'm not considering coming into the cost of the Windows hosting plan. I get great service with my Linux host, so I don't think it's a problem of quality people that run the various hosting sites. Does the cost of the software licensing really make that much of a difference?
If the pricing is due to licensing costs, why don't you see more host with Windows and .Net, but with alternative databases such as PostgreSQL or MySQL available to keep the pricing to a minimum, which providing basically the same functionality.
I think this has to do with 2 major issues:
1) Licensing, this is an obvious one, the host will charge you more cause he has to pay for windows and SQLServer.
2) Hardware, running windows requires higher resources there for fewer virtual hosts, and vps can be run on the same amount of hardware as a linux server.
Because Windows Server and SQL Server licenses cost a lot of money, per CPU Core (and not just per machine), and so your hosting provider needs to recuperate costs for the license.
This is on top of the usual operating overhead (which is the only thing Linux servers cover).
I also feel your pain, because I maintain a site for my wife's business, and while I'm not done with her front end customer facing application being written in ASP.NET, I have to stick to LAMP hosting first, which suffices at the moment.
Aside from the cost of licences, think about the sysadmins. You probably need less sysadmins to maintain a whole bunch of linux servers than you do for windows. That cost is passed on to you.
The Mosso Cloud Sites product can switch between LAMP and .NET without changing the price. Switching from MySQL to MS SQL is $5/month price difference but .NET can obviously work with MySQL if price is a concern. I mention this product because your requirements (disk space and bandwidth) do not vary based on the technology.
Disclaimer: I'm a Rackspace employee and Mosso is a Rackspace company.
This question is most probably more appropriate for ISP vendors instead of programmers. This question could easily flare up the usual holy wars over Microsoft vs OSS. My own observation parallels with yours. ISPs prefer LAMP over Windows.
I have worked with both stacks and, IMHO, and looking at the big picture, it appears to me that Microsoft technology and licensing was designed to target the Intranet development market. So, the TCO doesn't look so favorable for Internet applications.
I'm not saying that you can't write a really great Internet application using the .NET application stack. Of course you can. It's just that LAMP is better positioned, from a TCO perspective, for the kinds of workload that ISPs encounter.
This is not a criticism of Microsoft. They have shareholders' interests to protect. The profit margins for so-called enterprise development are higher than the type of clients that ISPs best serve.
"because they can"
seriously, it's called the "Free Market". check it out!
EDIT:
[sigh] it's a shame that so many drive-by downvoters have no sense of humor...and no grasp of economics. So let me explain:
one theory is "linux is free, windows costs money." While true, that doesn't explain the difference, since windows is a fixed cost.
what does explain the difference is the free market. -
One could argue that the typical linux user is a cheapskate is unwilling to pay much for hosting services because they know the software being used for hosting didn't cost the host anything, while the typical windows user is a sucker is willing to pay more for hosting services because they know the software being used for hosting costs the host money.
but in reality, since the cost of the hardware, software, and typically even the bandwidth capacity is a fixed cost, the above just doesn't hold water - the relative fixed costs of the hosts is irrelevant for larger-scale hosting companies
so the price becomes whatever the target market is willing to pay, balanced by how good the host is at presenting their quality and other 'added value' propositions.
For example, i used to host my site on a cheap LAMP host because it was just some static html. When the site went to e-commerce I researched the 'free' e-commerce packages offered by the inexpensive host and discovered that they all had serious security flaws and so decided to use asp.net and write my own e-commerce code since (a) I know asp.net, (b) I needed to learn how to do that anyway, and (c) i trust my code more than anyone else's [or at least if there is a flaw in my code I have someone easily accessible to blame!].
The difference is hosting plans was a few dollars a month. The new host's uptime seems to be better, but some of their tech support is lame and they are missing some obvious features but nothing i can't work around (without paying more somewhere else) so in the end i'm happy to pay a bit more. The host i chose is not the cheapest, and they're not the most expensive. And i spent about ten minutes doing the research because for my site it just wasn't that important.
which brings up the next economic point: if the average programmer costs $50/hour, how cost-effective is it to use said programmer's time to complain about $7/month in hosting fees?
in summary, the answer is: the free market.
EDIT 2:
Here are some windows server license prices
These certainly look like one-time fixed costs to me, but even if this was a yearly fee it still pales in comparison to the cost of the hardware and bandwidth for a hosting service.
The relationship between license cost and hosting cost is indirect at best, and is essentially irrelevant compared to market pressures.
But please don't take any programmer's word for it, ask a hosting provider.
cost breakdown for hosting services
Addendum:
MS-SQL licenses do cost additional $$$ so that may be a factor
This isn't really an answer to your question (other folks have done a good job of that), but have you thought of offloading your static resources, which are likely to take up the bulk of your disk space, to something like Amazon's S3? That way, only your application code and database would be stored on the Windows host.
Pretty much echoing what other people have said here. But is $7 difference a month really that big a difference. I know you get less disk space and bandwidth but $7 isn't really a lot to cover the costs of licensing.

Resources