Building Scalable Web Sites 124
briandon writes "It's not a step-by-step guide (and doesn't claim to be one), but Building Scalable Web Sites is the closest thing available to a nuts-and-bolts look at managing the technical aspects of doing a Web-based startup. There's lots of code inside, but the book isn't built around a single, extremely contrived, case study like an online wine store. Instead, most of the chapters follow a general pattern: a topic (like bottlenecks in your application and platform, scaling, or monitoring) is addressed and some rules of thumb that describe the way that the author feels things should be done are set forth and explained, with lots of very specific hints and factoids mixed in along the way. Tools for other languages (in most cases, Perl) are mentioned in passing, nearly all of the code snippets are in PHP. MySQL 4.1 is the basis for most of the database-centered material." Read the rest of Brian's review.
Building Scalable Web Sites : Building, Scaling, and Optimizing the Next Generation of Web Applications | |
author | Cal Henderson |
pages | 330 |
publisher | O'Reilly Media, Inc. |
rating | 9/10 |
reviewer | Brian Donovan |
ISBN | 0596102356 |
summary | If you've been kicking around the idea of doing a Web startup, then you should definitely give this book a read. |
Henderson's resume, which can be found on his personal website, indicates that he joined Ludicorp about a year before they shut down GNE, their Web-based roleplaying game, to focus on Flickr (which had originally begun as an ofshoot of the game) and it's his role as web development lead at Ludicorp that led to the inclusion of the "The Flickr Way" sub-subtitle that runs diagonally across the upper right corner of the book's front cover.
The five-page-long first chapter sets the stage for the rest of the book with section headings that are all questions: "What is a Web application?", "How do you build Web applications?", "What is architecture?", and "How do I get started?".
Chapter two, "Web Application Architecture", begins with Henderson drawing an analogy between a web app and a type of multi-tiered dessert known as a trifle - the sponge cake at the bottom of the dish is the database, the next layer up, jell-o, is the business logic, and so on. The black and white image in the text is identical to the color image included in a slide from an eight-hour workshop that the author gave in San Francisco titled "How We Built Flickr". Having read the book and some reviews of his workshops and looked at the list of talks on Henderson's site (some with Powerpoint decks for download), it seems likely that a lot of the ideas expressed in the book were developed over an extended period of time through repeated presentations.
Next up are the considerations around development environments, beginning with a 3-point list of guidelines for building small-scale web apps up into big ones: use source control, have a one-step build process (literally, if possible, a single button), and track bugs (as well as non-bug items like features and support requests). Readers get to feast their eyes on a cropped screenshot of Flickr's build control panel (two buttons, "perform staging" and "perform deployment", to match the last two steps in the release sequence in an HTML form). For small teams, the author is in favor of allowing multiple developers to trigger releases and he suggests several ways of trying to keep that workable. In version control, Subversion gets the nod and, though no bugtracking tool is singled out as the best, FogBugz garners the highest praise ("extremely effective") and has the shortest list of "cons". The author never comes out and says what the Flickr / Flickr-Yahoo team uses in either area, however.
Chapter four is the most readable introduction to internationalization, localization, and Unicode that I've seen up to this point. MySQL's currently incomplete implementation of UTF-8, sarcastically referred to by some as "UTF-7½" (Google for it), is mentioned in enough detail that a reader can decide whether or not it's likely to be an issue for their app. The book as a whole is packed with little nuggets of information like that - things you might not have otherwise been even peripherally aware of until they bit you.
Input filtering and strategies for avoiding building cross-site-scripting and SQL injection vulnerabilities into your app are addressed in a chapter on data integrity and security that shows the same attention to detail as the rest of the book. The section on UTF-8 filtering, for example, features a three-way benchmark of UTF-8 validation techniques (using regular expressions, iconv, and ord()) and the merits of each approach are considered.
The coverage of handling emails programmatically in chapter six is also quite good. Henderson does the basics and then delves into a number of possible pitfalls in considerable detail. The salient aspects of the TNEF (media type application/ms-tnef) format, used by MS Outlook for attachments and metadata, for instance, are explained and pointers are given to open source TNEF parser implementations. I also got a lot out of the section on dealing with email from wireless devices like mobile phones, titled "Wireless Carriers Hate You" (there's that dry British wit again).
The second half of the book (chapters seven through eleven) focuses more on scalability. It's also where you'll find the most material on using MySQL, including but not limited to query profiling and optimization, a discussion of the merits of denormalizing once you begin to reach a certain scale, and a comparison of the different MySQL backends. There's an entire chapter devoted to finding and dealing with bottlenecks - how to determine whether your app is CPU-bound, I/O-bound, or context-switching-bound and what to do about it. The chapter on scaling begins by debunking the "scaling myth" (but he actually tackles several misconceptions at once - namely that scalability is synonymous with speed, that scalability is a byproduct of having written your app in Java, etc.) before getting into vertical vs. horizontal scaling (buying more powerful and expensive servers vs. adding more cheap cheap servers), load balancing, and more. Monitoring (both of web stats and your application itself) and APIs (RSS/RDF/Atom feeds, mobile content delivery formats like WAP and XHTML mobile, and REST/XML-RPC, and SOAP Web services) both get chapters of their own.
Henderson's sense of humor is evident throughout the book, but not in the annoying overly cutesey way that made me want to toss "Extreme Programming Installed" into the circular filing drawer. In the section on software interface design (where he means the interfaces between the layers of the trifle), for example, there's a "Web Application Scale of Stupidity" that places "sanity" in the center and OGF (one giant function) and OOP at the extremes. The process of separating web app logic from presentation is broken down into 3 steps: separating logic code from markup, splitting the markup into per-page files, and moving to a templating system. He closes out the chapter with a breakdown of the hosting, hardware, and networking issues involved in serving up web apps.
Technically, I think that Building Scalable Web Sites is 100%. There were just a few niggling flaws. Two dates given (both on page 155), 1990 for the creation of libxml and 1995 for the design of XML-RPC, are incorrect and I spotted a handful of grammatical mistakes (probably proportionately fewer than in this review) that I've already submitted, along with the date mistakes, as errata through the form linked from the O'Reilly catalog page for the book.
Additionally, though the cover does say "The Flickr Way", you won't find many sentences that begin "At Flickr, we [...]". Aside from the "Rolling Your Own" section in chapter seven describing some custom middleware and a protocol that they whipped up for moving files around within their system, there aren't a lot of explicit details about the way that Flickr operates in the book. You'll actually get more insider info from Tim O'Reilly's "Database War Stories" entry regarding Flickr, which is based on Henderson's answers to questions posed by O'Reilly, than from this book.
If you'd like to get a feel for Henderson's style, chapter five ("Data Integrity and Security") is available as a PDF on the O'Reilly catalog page for the book and Henderson has also put some articles online (all PDFs, not much overlap with the material in BSWS) at his website.
You can purchase Building Scalable Web Sites : Building, Scaling, and Optimizing the Next Generation of Web Applications from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.
It's not a real... (Score:5, Funny)
"Preparing for Slashdotting: Burn, Baby, Burn"
Re:It's not a real... (Score:1)
Re:It's not a real... (Score:5, Funny)
"Preparing for Slashdotting: Burn, Baby, Burn"
Cisco inferno?
Re:It's not a real... (Score:2, Funny)
Re:It's not a real... (Score:2, Funny)
To mass flames, yes! One hundred servers high
Nerds gettin' loose y'all gettin' down on the root - Do you hear?
(the geeks are flaming) Users were screamin' - out of control
It was so entertainin' - when the server started to explode
I heard somebody say
Burn, baby burn! - Cisco inferno!
Burn baby burn! - Burn that motherboard
Burn, baby burn! - Cisco inferno!
Burn baby burn! - Burn that motherboard
Burnin'!
Re:It's not a real... (Score:1)
PHP and Industry (Score:4, Insightful)
I really enjoy working with PHP but...do a search on any tech job board and you will find all two job openings for people with LAMP experience. Embarrassed to say it but I went out and learned ASP.Net/C# so I could make a living.
I realize there are VERY large PHP/MySQL site out there but I haven't had that many opportunities to scale a PHP app in a commercial environment. I wonder how many full time PHP developers there are out there and how many of those work on enterprise level websites. Can't be that many can it?
(Perhaps we never see these types of openings(LAMP) because developers are so happy with their job that new positions rarely open - heh)
Re:PHP and Industry (Score:5, Insightful)
One of the reasons that you don't find openings specifically looking LAMP experience is probably because of "the right tool for the right job" and large scale sites aren't going to use strictly LAMP or any specific architecture, instead a mix of tools. Also, large scale sites will probably want people for specific tasks (each aspect of LAMP indivudually) instead of a jack of all trades.
Re:PHP and Industry (Score:1)
Re:PHP and Industry (Score:1)
And the Microsoft stuff is not made to be portable. Of course you have things like Mono, but PHP, Perl, and Python are designed with portability.
Re:PHP and Industry (Score:5, Insightful)
you do realize that for most people, non-OO vs. OO largely boils down to replace(mystring, "foo", "bar") vs. mystring.replace("foo", "bar"). (Whether that's actually correct syntax in any language is another discussion.) You don't have to program in an OO manner just because you're using an OO-capable language.
With that said, why wouldn't you want to do OO? It's highly useful in a web environment, especially since we tend to think in terms of objects on pages anyway, even if we mean something slightly different by "object".
Re:PHP and Industry (Score:2, Insightful)
I forgot about that. Maybe it's good for small things like that, but with web sites (unless you decide to use Javascript and make it interactive) you generally don't have the need for objects (i.e.,
Re:PHP and Industry (Score:1)
Re:PHP and Industry (Score:1)
Re:PHP and Industry (Score:1)
Re:PHP and Industry (Score:2)
Re:PHP and Industry (Score:1)
session objects for example. used to store things across pages. request objects, used to retrieve properties from the client (ie user agent) and for retrieving parameters. it all boils down to: what is your preferred kind of abstraction? for only dynamic pages, the paradigm does not really matter, but when it comes to real server applications where the html s
Re:PHP and Industry (Score:2)
This is oposite of the truth. OO gains more and more value for larger sites because you benefit from resusable code more and more. All "business logic" is best encased in objects.
Re:PHP and Industry (Score:1)
What about using plain-old functions for the business logic and putting those functions in their appropriate library files? How is OO on a web site any better than this, besides possible naming conflicts?
For example: security-specific functions could go into a "security" library file, generic functions could go into a "general" library file, page-specific functions could go into a "pages" library file. Then you could do the same with business logic functions that do all your calculations.
Do you
Re:PHP and Industry (Score:1)
No, this is not the same. First thing's first, objects are based on classes. What this means is that you can have several objects running in your program, sharing the same code. Second, the internal state of the objects can be very complex, however, you do not need to worry about it when using the object, since you are presented with a simple interface. Third, since having an internal state means it is completely isolated from the rest of the program, management and maintenance of complicated abstraction is
Re:PHP and Industry (Score:2)
Not necessarily. Object-oriented languages do not necessarily have any concept of "class". For example, you can use JScript for server-side scripting with ASP. JScript is an ECMAScript (JavaScript) implementation, and as such, is a prototype-based object-oriented language not a class-based object-oriented language.
Re:PHP and Industry (Score:2)
Re:PHP and Industry (Score:1)
Well that's some good info. I will keep those things in mind. I bought a JSP book a couple months ago thta I haven't looked at too much yet, so I'll look at that.
How long, might I ask, does it take on average for you - using JSP in the way you said - to develop a basic web site, say one like this one [advancedairnow.com] where, in addition to the normal company content, it lets you fill out an order form or send emails via a form (it has about 10 - 12 pages)?
Re:PHP and Industry (Score:3, Insightful)
Re:PHP and Industry (Score:2)
Re:PHP and Industry (Score:1)
Re:PHP and Industry (Score:2)
If that is the case, it is a depressing statement about the current quality of developers.
The advantages of OOP have been very well researched and understood for nearly 30 years. It is unquestionably a major advance in software development, with relevance to all areas, including websites, allowing re-use, encapsulation, isolation and testing of code (such as, for exam
Re:PHP and Industry (Score:2)
Well, the so-called "advantages" of OOP have at least been well propagandised for at least some of the last 30 years. :)
None of those concepts you mention have anything in particular to do with OOP. And you shouldn't really be terribly surp
Re:PHP and Industry (Score:2, Insightful)
While your comment about OO for front-end stuff is true most of our business is back-end processing. The website itself is just a pretty front for all the work that is being done behin
Re:PHP and Industry (Score:1)
Re:PHP and Industry (Score:2)
huh?!
flickr, slashdot, google, myspace, amazon, delicious, youtube, ebay... all unix.
who uses MS? microsoft.com?
Re:PHP and Industry (Score:1)
Every airline, every bank, every govenrment agency, every healthcare org, every big company you can think of uses proprietary software and languages instead of OSS.
(yes, it is a generalization, just like the one in the parent assuming 8 web companies comprise "most large companies")
Re:PHP and Industry (Score:2)
Well, most large corps do indeed use Windows in some areas. Usually on Desktops.
But "every big company you can think of uses proprietary software and languages instead of OSS." is just wrong.
Hardly anyone uses windows for critica
Re:PHP and Industry (Score:1)
Re:PHP and Industry (Score:2)
Re: (Score:1)
Re:PHP and Industry (Score:2)
Re:PHP and Industry (Score:5, Informative)
My company creates very large sites with LAMP. We also do Python, Flash, etc. so it's not because we only know PHP. If you don't see the job postings it's for one of 2 reasons: you're looking in the wrong places; or the jobs are largely found by networking and other methods.
Large financial companies will find developers through job posting sites and head hunters. These companies usually develop on commercial platforms (.NET, websphere, etc.). But large web sites are usually owned by relatively small companies who use more networking and direct contact with open source developers.
PHP and MySQL are quite capable of running large web sites. They were not created with large scale in mind, however, so there are special considerations you need to keep in mind. I don't recommend it for every lage site, but in the right situations it works.
Re:PHP and Industry (Score:3, Interesting)
We are about to move from a LAMP environment (which we are happy with, I made it!) to a Java enviroment. Why? Because we are about to start developing a VERY complex product that would be unpleasant to manage in PHP. There is nothing wrong with PHP, there is nothing wrong with perl. Heck, there is nothing wrong with running BASIC programs and naming them with a
That's ki
depends on where you look Re:PHP and Industry (Score:3, Interesting)
Heh. Funny that you should say that, given that my last two jobs involved (among other things) building Really Big web apps using LAMP for places like Dell (internal but vast amounts of data and traffic) and Dun and Bradstreet (publically facing information service that was frequently in the top 500 busiest sites according to alexa, for what their stats are worth). I know we weren't alone in those projects, either. It really depends on where you are looking, different cities have vastly different charact
Re:PHP and Industry (Score:1)
Alright, I know this may be flamebait... (Score:4, Insightful)
No doubt there will be multiple posts following to tell me how wrong I am, but that's how I see it.
Re:Alright, I know this may be flamebait... (Score:3, Insightful)
Re:Alright, I know this may be flamebait... (Score:3, Interesting)
Well, you're not alone (Score:3, Insightful)
Your opinion is shared by many... but see this other post on Slashdot [slashdot.org] for my response.
Re:Alright, I know this may be flamebait... (Score:2)
Look, you're either going to use PHP or you're not. If you are going to use it then this book probably will come in handy. Hey, it's not like the author is talking out of his ass on this one. Flickr is bigger than probably anything you or I will ever work on. My biggest problem with PHP is the
Re:Alright, I know this may be flamebait... (Score:2)
My problem with it is that it has no reason to exist. It's basically a fucked over version of perl, down to some of the syntax, but since it's an exceptionally pathetic replacement for perl, I have to wonder what they were thinking. Instead of writing the Zend script engine, they could have been using perl.
It's not that perl is the ultimate language or anything, but websites are text, and perl is good at mangling text. Plus, CPAN makes PEAR lo
Re:Alright, I know this may be flamebait... (Score:2)
I guess the main reason everybody uses PHP is because, well, everybody else uses PHP.
Perl just doesn't have the ease of "just drop your
"build a website in 3h" framework like ruby-on-rails.
To get decent results with perl you need not only some intimate knowledge of the perl-language itself
but also a pretty good idea of how a webapp (or even "servlet engine") smells from
the i
And yet you shouldn't. (Score:2)
2) FastCGI
3) FastCGI or a daemon process using Apache2::* to integrate with Apache as a in-any-capacity servlet engine.
You use these to create idioms for how your cgis handle requests.
Then you move on to your Object persistance, Session handling... (may I suggest memcached?)
And you have choices there.
I guess that's what makes Perl nice in this sense... you can pick and choose from all different parts and put it together how you feel comfortable.
You can use HTML::Inline or Mason or SimpleTemplates
Re:Alright, I know this may be flamebait... (Score:4, Informative)
There's lots missing still... and the long focus on unicode, localization, etc is a bit tedious to get through... but overall, it's a book that I wish that people at $WORK were forced to read.
Re:Alright, I know this may be flamebait... (Score:3, Insightful)
Re:Alright, I know this may be flamebait... (Score:1)
Flickr is the 41st most used website [alexa.com] in the world, so scoff at your peril. And I say that as a heavy OO guy who does a lot of Java work.
I've seen Cal's day-long presentation that appears to have been turned into this book. He's very smart, and has done great work making the technologies suit their ne
Apache's mod_cache (Score:2)
Re:Apache's mod_cache (Score:2)
That's an excellent point... I was thinking about the front page of RubyForge [rubyforge.org], and caching that for 30 seconds or so shouldn't inconvenience anyone. Maybe I'll give that a whirl. Thanks for posting!
Nothing about Caching? (Score:3, Insightful)
Re:Nothing about Caching? (Score:1)
Don't be silly. Everyone knows LAMP stands for "Linux, Apache, Machine code, and PostgreSQL". You aren't going to tell me my hand-assembled Apache module is a bottleneck, are you?
Re:Nothing about Caching? (Score:2)
In all likelihood, yes it is. Doing assembly by hand means that you're forced to use your time for dealing with low-level optimizations, and therefore don't as much time to perform high-level ones than you would if you'd use a higher level language.
Apart from this, a hand-assembled module myst be re-optimized for a new proces
Here's an article on actual scalability (Score:1, Insightful)
PHP just can't cut it.
Here's an article ACTUALLY MENTIONING PHP (Score:5, Informative)
Um, care to explain just what in the hell that statement is based on, since the article you linked doesn't even mention PHP? It compares different webservers and cache settings. Differences in programming languages don't even enter into it.
Here's an article on scalability that's actually relevant to PHP, a case study about Digg [oreillynet.com].
Conclusion:
"It turns out that it really is fast and cheap to develop applications in PHP. Most scaling and performance challenges are almost always related to the data layer, and are common across all language platforms. [...] There is simply no truth to the idea that Java is better than scripting languages at writing scalable web applications. [...] it just isn't true to say that PHP doesn't scale, and with the rise of Web 2.0, sites like Digg, Flickr, and even Jobby are proving that large scale applications can be rapidly built and maintained on-the-cheap, by one or two developers."
Re:Here's an article ACTUALLY MENTIONING PHP (Score:1, Informative)
You can't blame the hardware. Scalability is about not needing to keep throwing hardware at the problem...
Re:Here's an article ACTUALLY MENTIONING PHP (Score:2, Insightful)
Well, as clearly identified in both the article and the quote I provided, all the scalability issues they encountered were related to their DATABASE LAYER. So my first guess (based on this case study) would be that Digg's database architecture is still inferior to Slashdot's, instead of a knee-jerk condemnation of PHP. YMMV.
"Scalability is about not needing to keep throwing hardware at the problem..."
Wrong... scalability is precisely about the abilit
Re:Here's an article ACTUALLY MENTIONING PHP (Score:1)
platform. Making a roundhouse remark like that is, well, painful.
I've had no trouble at all tweaking an Apache/PHP install so that 450 requests
per second, including a db handle to mysql for each, doesn't even pop top over
20% overhead.
I've seen tons of LAMP installs where PHP was compile with every bloody extension
under the sun when only a handful were needed. Slow 7200 rpm ide disks. Lack of
ram. Poorly tweaked apache installs. Literally, a
Re:Here's an article ACTUALLY MENTIONING PHP (Score:1)
Exactly... PHP itself is rarely, if ever, any sort of bottleneck. I've never really seen a webapp that wasn't I/O bound in some form or another, unl
Re:Here's an article ACTUALLY MENTIONING PHP (Score:2)
kashani
Re:Here's an article on actual scalability (Score:2)
Prepare for massive PHP bashing in 3, 2, 1, ... (Score:4, Interesting)
I've had enough of the eternal Dimwits constantly bashing this or that with "MySQL not scalable" "PHP not scalable", blablabla.
PHP has arrived in the enterprise market. That's a fact. Yes, I know, Java has been there for 8 years, PHP is messy and quirky (so is Perl), MySQL isn't a DB, we've heard it all before.
In case you haven't noticed: PHP 5 is out. It's a full blown, mature PL and arguably the 400 pound gorilla of SSI solutions with a long history. MySQL 5 is out aswell. It's a full blown DB and comes with tons of free x-platform admin and design tools that make building the outline of a large webapp a walk in the park and thus scares the living daylights out of Oracle and IBM. You may have noticed IBM virtually giving their DB2 away for free (beer) since just a few months ago. Guess how that happend.
Imagine someone would come along and tell you that large-scale webapps in Perl are a pipedream. Not to far-fetched in this context, no? And what about slashdot and kuro5hin?
PHP is as good a technology as any other in use when it comes to building large webapps (point in case: www.rubyonrails.org/index.php/ ). Industry strength PHP Frameworks are poping up left [symfony-project.com], right [cakephp.org] and center [zend.com] and other places [binarycloud.com] like mushrooms after the rain. And as for MySQL "not being ready for large, scalable apps" - you're being silly [mysql.com].
Re:Prepare for massive PHP bashing in 3, 2, 1, ... (Score:2)
And the two of them together [caucho.com] are even better.
Re:Prepare for massive PHP bashing in 3, 2, 1, ... (Score:3, Informative)
That may be, but when they release MySQL 12, I still won't be using it if it's still written by the same developers that claimed for years that adding referential integrity to a database just slows it down and programmers should be handling that in their application code, implem
Re:Prepare for massive PHP bashing in 3, 2, 1, ... (Score:1)
They get
It's not the best in the world but ..... (Score:2)
Netspeed (Score:1)
Re:Netspeed (Score:2)
No, it isn't. From personal experience, many commercial websites require pretty complex queries for each customer, which may require significant calculations and searching of many thousands (or hundreds of thousands) of records (all within a single transaction). If this is the case, and you have many thousand active users, the database is the slowest factor. Really high-load websites often use com
Re:Netspeed (Score:2)
No, I am not. Pure PHP does not have application-scope cacheing. You can't do this kind of stuff simply with session scope.
However it is beyond the capabilities of the average PHP "programmer".
Why should it be? This is trivial in other web development languages, such as Cold Fusion.
Re:Netspeed (Score:2)
No it isn't, and if you assume it is you are going to end up with a slow system if you want to really deal with very high traffic. All serious modern high-end web development assumes that you should only drop down to the database when absolutely necessary, and cache data in the middle tier. Take a look at approaches like the very widely used Tangosol Coherence to see what I mean.
PHP and MySQL (Score:2)
Security: PHP isn't the problem, poor implementation is the problem (the coder) PHP's only hand in that is easily giving you the ability to do it. All languages are dangerous to the security ignorant.
Slow: PHP can be slow. So can straight C. If you know what your doing, PHP can be blazing fast. There is a reason that so many large companies are picking it up. IBM, Oracle, Yahoo, etc...
MySQL gets the same treatment sometimes.
Both of these
Well, that was that then (Score:1)
I somehow thought that this was about building serious webapps for serious companies (i.e. the ones with the money to create scalable infrastructure). The semi-last sentence in the write-up killed all that. I have a title for other editions in the same series: 'Using legos to build skyscrapers', or 'Building scalable rocke
Re:I know they get kickbacks, but... (Score:3, Insightful)
Re:I know they get kickbacks, but... (Score:1, Interesting)
Re:I know they get kickbacks, but... (Score:1)
Re:I know they get kickbacks, but... (Score:1)
Third rule of scalable, reliable, websites: (Score:5, Informative)
I can write you a scalable, reliable website using MS-Access. It will be slower and require a lot more code, but it will scale and remain up.
The whole "You use platform X, so your app won't scale" has been proven wrong by many large companies running large apps for almost every platform.
To reply to your flames, I'm currently finishing up an educational web app using PHP 5 and MySQL/Cluster 5. Redundant servers in the datacenter with load balancing, backup datacenter with a valid dataset always within a minute of the primary (specs allowed this), and it is *very* scalable. We hammered this with all manner of stress tools, very rarely had a problem. Added another server to the cluster, and went 5x beyond our max projected usage.
I prefer PHP/MySQL, have done ColdFusion, ASP, JSP, Postgres, MSSQL, and Oracle. Each has a cost/benefit that needs to be evaluated. Most projects, though, the platform just doesn't matter so much. PHP/MySQL examples are generally easy to read by everyone and work well for examples in this book.
Re:Third rule of scalable, reliable, websites: (Score:4, Informative)
You're absolutely correct. However, the easiest way to build a scalable website with MS-Access would be to start caching the entire contents of the database in the application layer. At this point, you might as well be using a flat text file for a database, since the database engine is not solving any problems for you. It's not contributing to developing your application. It's not useful.
Any good discussion of building scalable websites should start with discussing tools. You can make do with a heavy rock, but when you have the choice to use a hammer instead...
Just as an example, let's take your educational web application. Kudos for getting it working well. Would you like to port it to Access, with the same availability requirements? If there was an ideal DatabaseDbSQLServer software that could meet the same requirements with half the hardware, would you consider using it?
The point I'm trying to make is that the underlying architecture does matter. It won't matter to the user when the application is done, but it does matter to people who are Building Scalable Web Sites, the title of this book.
Re:Third rule of scalable, reliable, websites: (Score:2)
Is that true? I ask not to be snarky, but because of my ignorance of Access. To scale past one machine, it would have to have replication, which I thought was the point at which MS wanted you to move to SQL Server?
-Bill
Re:Third rule of scalable, reliable, websites: (Score:2)
Re:Third rule of scalable, reliable, websites: (Score:2)
Not neccessarily. Not all solutions require a single coherent database where all changes are instantly visible to everyone. An online shop, for example, could have multiple database machines serving the catalog and simply have the catalog manager propagate any changes to them all. This means that some of the machines are serving the new catalog a few minutes earlier th
Re:Second rule of scalable, reliable, websites: (Score:4, Funny)
It's amazing how many people break these rules (Score:3, Insightful)
Re:It's amazing how many people break these rules (Score:2, Insightful)
I work in Perl (mod_perl), PHP, and Java on a daily basis. For simple one-shot applications or very narrow focused projects (see your examples) PHP works fine and is a fairly speedy tool to use. When you introduce an enviroment like and Intranet or interacting with non-mysql database, complex procesess, interacting with (SHOCK!) non-web applications, Java has a huge advantage due to it's rigid structure. For complex, larger team applications or groups of applications, PHP falls short very q
Re:It's amazing how many people break these rules (Score:1)
PHP(PHP(PHP(PHP(PHP...: Hypertext Preprocessor): Hypertext Preprocessor): Hypertext Preprocessor): Hypertext Preprocessor)
[infinity]
</RecursiveLoop>
Re:It's amazing how many people break these rules (Score:2)
Re:It's amazing how many people break these rules (Score:1)
Re:It's amazing how many people break these rules (Score:2, Insightful)
Re:It's amazing how many people break these rules (Score:2)
Well, the wolves have yet to blow down wikipedia.
Re:It's amazing how many people break these rules (Score:1)
And here I am, speedy-deleting stuff every day! Thanks, I was kind of wondering why I was compelled to do that... =)
Re:It's amazing how many people break these rules (Score:2)
Re:You are stupid. (Score:2)
If people can make high-traffic sites that run on a single machine, then why on earth would they want to add the complexity of making it run off of several machines? I fail to see how simplicity and ease of use are design flaws.
Re:You are stupid. (Score:2)
Because otherwise your game will end once your load exceeds the capacity of the biggest single machine that you can afford.
Get a quote from Sun/IBM for one of their bigbabies and you'll know what I mean.
Re:You are stupid. (Score:2)
Re:You are stupid. (Score:2)
Re:Wait, FLICKR? (Score:1)
Better throw away your 14.400 analog modem...