Slashdot Mirror


Amazon's Werner Vogels on Large Scale Systems

ChelleChelle writes "When it comes to managing and deploying large scale systems and networks, discipline and focus matter more than specific technologies. In a conversation with ACM Queuecast host Mike Vizard, Amazon CTO Werner Vogels says the key to success is to have a 'relentless commitment to a modular computer architecture that makes it possible for the people who build the applications to also be responsible for running and deploying those systems within a common IT framework.'"

49 comments

  1. Good Computing by Anonymous Coward · · Score: 3, Funny

    Best question in the interview (page 3):

    "MV: Given the size and scope of Amazon, there's a lot of talk in the industry about good computing. Most of the talk is around scientific applications. Do you see good computing playing a role at Amazon in the future?"

    Actually, no... Amazon likes bad computing.

    1. Re:Good Computing by aevans · · Score: 1

      Yeah. I realized that it was a transcription error, though, from the answer. It should have read "grid" not "good."

  2. scale? by lecithin · · Score: 4, Informative


    "When it comes to managing and deploying large scale systems and networks, discipline and focus matter more than specific technologies.

    How about:

    When it comes to DOING ANYTHING, discipline and focus matter more than specific technologies.

    If you are at a 'small scale' environment and are limited to specific technologies, discipline and focus matter even more. Your choice is less with technologies and more with how you use them.

    "the key to success is to have a 'relentless commitment to a modular computer architecture that makes it possible for the people who build the applications to also be responsible for running and deploying those systems within a common IT framework.'"

    We have a BINGO!!!!!

    --
    It could be worse, it could be Monday.
    1. Re:scale? by qyiet · · Score: 1

      scale? (Score:5, Informative)

      Oh dear, and here was me thinking it was merely insightful, but apparently most people here at slashdot didn't already know this.

      -Qyiet

    2. Re:scale? by kfg · · Score: 2, Funny

      . . .apparently most people here at slashdot didn't already know this.

      They're all busy trying to integrate Java and XML.

      KFG

    3. Re:scale? by syousef · · Score: 2, Interesting

      "the key to success is to have a 'relentless commitment to a modular computer architecture that makes it possible for the people who build the applications to also be responsible for running and deploying those systems within a common IT framework.'"

      This works well sometimes. The developer supporting their own application. For other things it makes more sense to divide the role. My experience is that the more complex and customised the software, and the more quickly it is changing, the more important you have people who know the internals as they are currently. However in other circumstances, having ex-developers or professional support staff is often preferable. eg. if there's no current development work, you're going to need support staff (preferably ex-developers, but this may not be an option).

      --
      These posts express my own personal views, not those of my employer
  3. Got two words for you: by Anonymous Coward · · Score: 0
    1. Re:Got two words for you: by Anonymous Coward · · Score: 0

      Naw, what you really need is a Beowulf Cluster!

      http://en.wikipedia.org/wiki/Beowulf_cluster

    2. Re:Got two words for you: by megaditto · · Score: 1

      You probably mean http://en.wikipedia.org/wiki/VMScluster

      Sure the rolling reboots/upgrades do give you 100% uptime. But for e-commerce, a linux cluster's 99.99% uptime is good enough for quarter the cost.

      Also note that OpenVMS is actually closed source

      --
      Obama likes poor people so much, he wants to make more of them.
    3. Re:Got two words for you: by Anonymous Coward · · Score: 0

      A Beowulf cluster of VAXes
      three Alphas, Two 11/780s, a 11/730 and four microvaxes

      Get the best of both worlds!

  4. Tug of war. by Anonymous Coward · · Score: 0

    So who has the bigger system? Amazon, or Google?

    1. Re:Tug of war. by stonecypher · · Score: 1

      In terms of software complexity, Amazon, by several orders of magnitude. In terms of hardware deployment, Google, by several orders of magnitude. The bulk of google's hardware is a huge replicated cluster performing parallel work.

      So, it depends a lot on how you define "bigger."

      --
      StoneCypher is Full of BS
  5. his comments are only 1/2 true by Anonymous Coward · · Score: 3, Interesting

    Werner's comments are only 1/2 true. While many of the things he deals with are website centric, there is a whole world behind the website. No one buys from Amazon because of the website necessarily, they buy because the fulfillment is (mostly) accurate and fast. These backend systems are not nearly as clean as werner indicates.

    Myopic vision on his behalf imo.

    1. Re:his comments are only 1/2 true by stonecypher · · Score: 1

      Myopic vision on his behalf imo.

      The thing I find more amazing than an anonymous coward claiming to know Amazon's backend better than Amazon's chief technologist does, and saying "omg your system isn't nearly as clean as you say it is," is that other people at Slashdot are actually moderating him up.

      I've actually seen Amazon's backend codebase, and it's remarkably cleanly modular. Whereas I suspect that cleanliness has been built progressively over the years, it becomes quite clear that Amazon believes deeply that seperating modules has an extreme importance; they've gone so much further with modularization than anything I've ever seen that it just boggles my mind to see some AC claiming otherwise.

      I'm calling BS.

      --
      StoneCypher is Full of BS
    2. Re:his comments are only 1/2 true by Anonymous Coward · · Score: 0

      I've worked at Amazon longer than the "CTO" has - more hands on experience with large sets of backend softwares.

      Now I don't know what you call backend, but if it has anything to do with the website, then it's not back-end.

      Additionally, while you can talk about modules, shared code is pretty evil - after all I just heard a live build of *CommonTypes has been put forward, should take them about a week.

  6. Share nothing architecture? by QuantumFTL · · Score: 3, Interesting

    I've been programming for many years now, but I'm new to web-app development. I've been learning Ruby on Rails (for various reasons) and one of the points the book I'm reading makes (Agile Development with Rails) is that good scalability is best achieved through the use of a "share nothing" architecture - basically reduction of chokepoints by reduction of shared content in a system.

    I'm studying this as I'm looking at scalability concerns in an app I'm putting together, and I did a google search on the topic, but the only thing of interest I could find was this article, which doesn't really go into the downsides of this approach. What does slashdot think about this?

    1. Re:Share nothing architecture? by killjoe · · Score: 2, Interesting

      If I were you I would not worry about scalibility too much. At this point ROR is in production taking 3 million hits a day in at least one production environment. Worrying about scalibility at this stage is premature optimization. You may find that once your application gets to be so popular that ROR can't cut it anymore. More likely you will never even come close to hitting that wall.

      Just code using the ROR conventions and you should be fine.

      --
      evil is as evil does
    2. Re:Share nothing architecture? by Anonymous Coward · · Score: 0

      Actually, share nothing architecture is hinted at by the Go4 design patterns, by their insistence on making the objects do the work. Getters and setters are bad. Why use them, when you could pass the info needed by the object, and let the object that knows the information do the work?

    3. Re:Share nothing architecture? by Anonymous Coward · · Score: 0

      which production environment would that be? All RoR-deployments I've seen have choked horribly under load when the database hits its limits.

    4. Re:Share nothing architecture? by stonecypher · · Score: 1

      Do yourself a favor and investigate other methodologies than RoR. There's a reason that the same people who called ASP.Net an unimportant flash in the pan, who called ColdFusion a dead technology and who laughed when Oracle said the Web would make them the new Microsoft are yawning in the faces of RoR, Python and Nails. Sure, it's possible that RoR is the next big thing, but if you look at the track record of the people being unimpressed, it seems likely that being familiar with traditional, proven methodologies is a good safety net, in case these people turn out to be correct about Rails.

      I'm still waiting to see the big thing that wouldn't have been reasonable without Rails. Right now, I don't see anything big running on Rails at all, let alone something that would have been unreasonably difficult in other languages.

      --
      StoneCypher is Full of BS
    5. Re:Share nothing architecture? by QuantumFTL · · Score: 1

      For me right now, RoR is a great prototyping system... I'd probably use J2EE in real life, but it's also possible that RoR will pan out. If nothing else, it's great for internal webapps that need set up quickly and don't need to scale.

    6. Re:Share nothing architecture? by phallstrom · · Score: 1

      What has the database got to do with RoR. Doesn't matter what you use on the front end if your database can't handle the load.

    7. Re:Share nothing architecture? by Breakfast+Pants · · Score: 1

      Im' almost 100% sure he's talking about penny-arcade; which incedentally serves probably 99% cached data.

      --

      --

      WHO ATE MY BREAKFAST PANTS?
    8. Re:Share nothing architecture? by killjoe · · Score: 1

      If the database hit it's limits maybe you should get a better database. Failing that more RAM and CPUs couldn't hurt.

      --
      evil is as evil does
  7. Specific technologies do matter. by Anonymous Coward · · Score: 0

    It's incorrect to suggest that specific technologies don't matter, as some have done. They matter very much, and can often be the difference between a complete failure and a brilliant success.

    There was recently a topic here at Slashdot about how Amazon gives their developers a lot of freedom to choose their own languages and implementation tools. There was some speculation that much of their success has been due to their use of languages like Common Lisp and Standard ML. It's widely known that the use of Standard ML, for instance, will directly lead to improved program quality due to its functional nature, garbage collection, and strong typing. Common Lisp offers the developer a power unmatched to extend the language, which can often decrease the time it takes to get a piece of software implemented.

    Had Amazon built their infrastructure around PHP, it is doubtful that they would be the leader that they are today. Based on PHP's past (rather awful) security performance, Amazon would likely have run into many, many problems and vulnerabilities. But they chose wisely, and used languages that promote solid application design.

    So in the end, the tools and specific technologies used are quite important. It doesn't matter how organized you are, or what process you follow, if the technology you're using isn't sufficient for the task at hand.

    1. Re:Specific technologies do matter. by AuMatar · · Score: 4, Informative

      I work at Amazon. While we'd certainly be allowed to use SML, Lisp, etc, nobody does. 99%+ of development is in Perl (or Mason), C++, and Java. Probably at least one extra 9 there. If someone did write a production service in something other than C++ or Java, they'd probably see a push to rewrite it immediately to something more maintainable- something more than a tiny percent of our devs know. What little might be done in odd languages like that are probably one off or personal scripts used by devs and not in production. Anyone who suggested that our success is from procedural or niche languages has no idea whats really going on at the company.

      --
      I still have more fans than freaks. WTF is wrong with you people?
  8. Dupe by HTMLSpinnr · · Score: 1

    This is a dupe of a story run in May:

    http://slashdot.org/article.pl?sid=06/05/17/045320 8

    I was RTFA and thought it looked mighty familiar - that or DeJaVu.

    --
    $ man woman *
    -bash: /usr/bin/man: Argument list too long
    1. Re:Dupe by DrPepper · · Score: 1

      It's not a dupe. This is a new article, although some of the information will be familiar to those who read the earlier article.

    2. Re:Dupe by HTMLSpinnr · · Score: 1

      Then it was DeJaVu - some of Werner's responses are so similar, I knew I had seem them before.

      --
      $ man woman *
      -bash: /usr/bin/man: Argument list too long
  9. 'Duh' by Dryanta · · Score: 1, Insightful
    Even after RTFA, the whole thing seemed like the guy sucking himself off.

    WV: Yeah. So, I think there are two answers to your question there. The first part addresses autonomic computing, which is I think just like Web services or service-oriented architecture, one of those buzzwords, you know?


    One of those 'buzzwords, you know?' was your entire interview buddy. Imagine that? Scalability is achieved through many different technologies with many different engineers? I would never have thought that. I guess you have won that argument.

    Jeez, I'm glad this guy is just the CTO, not somebody important.
    1. Re:'Duh' by stonecypher · · Score: 1

      Even after RTFA, the whole thing seemed like the guy sucking himself off.

      He didn't seem that way to me, though you rather do. Your post seems to be there essentially to make you feel smarter than him.

      Scalability is achieved through many different technologies with many different engineers? I would never have thought that.

      That's not actually what he said. What he really said was that the specific path to scalability during constant change which had worked well for Amazon was to maintain absolute modularity whenever possible. He didn't say it was the only path, just that that was what had worked for them. He didn't say it was about scalability, he said it was about scalability during change.

      Those two differences are enormous. Consider RTFA again.

      Jeez, I'm glad this guy is just the CTO, not somebody important.

      Yeah, because if there's one thing you can say about Amazon, it's that their technology isn't impressively extensible. (cough) Remind me your impressive work again? Or are we just sitting in our glass house, warming up our pitching arm?

      --
      StoneCypher is Full of BS
    2. Re:'Duh' by Anonymous Coward · · Score: 0

      Stonecypher is an emotional troll. Please don't feed the trolls. This is obvious with his whining here in his journal:

      "I just got more down mods in three hours than I've gotten in the rest of my eight years on slashdot put together. Most of them don't even make sense; I'm getting flamebait on two-page long posts where the person I'm actually responding to said "I enjoyed this conversation."

      It's fairly clear that I'm being stalked by an out of control abuser. Pity of the problem is that Slashdot doesn't allow me to say "ah, it's this person who set *all* of my down mods.""

      Stonecypher, it is called being an asshat. That is why you get marked down.

  10. Yep: you support what you wrote by Anonymous Coward · · Score: 2, Informative

    Under normal circumstances, at Amazon you'll have to support what you wrote. That means if your code crashes all the time, you'll get paged in the middle of the night.

    Now, even if you get rid of some incompetent programmer (say by moving him to another team), the rest of the team will still get bogged down with supporting the code he wrote. And since engineers now have to do support for the other teams using their service, their productvity eventually grinds down to a halt and new development becomes extremely hard. Things will also stick around forever.

    Posted amazonymously.

    1. Re:Yep: you support what you wrote by SanityInAnarchy · · Score: 1

      In theory, the looming threat of what you've described should be enough to motivate people to get it right the first time.

      In practice, I wonder what the alternative looks like?

      --
      Don't thank God, thank a doctor!
    2. Re:Yep: you support what you wrote by sgt_doom · · Score: 1

      Just another Amazon commercial --- please move along.

  11. He's endorsing DBMS2. He just doesn't know it. by CurtMonash · · Score: 1

    Just as Amazon was using SOA long before it was named, the same is true of DBMS2. Add that to SAP's adoption, and we're getting somewhere. :)

    --
    To err is human. To forgive is good system design.
  12. "Shared Nothing" by shaneh0 · · Score: 1

    You'll be able to find a lot more about this technique if you search google for the (quoted) term "shared nothing"

    1. Re:"Shared Nothing" by QuantumFTL · · Score: 1

      Wow, alright that fixed me up good and fast, thanks!

      P.S. Shouldn't it be "nothing shared"?

  13. Shared nothing is useful but overhyped by Stu+Charlton · · Score: 3, Informative

    The best resource (though getting dated) on the origins and meaning of shared nothing v. shared-something archticture is Greg Pfister's In Search of Clusters, 2nd ed..

    There's "degenerate" shared nothing, which is what I find most people referring to today -- you have web server farm and you don't store session state, or if you do, you "pin" it to a particular server. Or you just rely on the database. It's degenerate because, sure, it's scalable (memory isn't as directly linked to concurrent users), but it really just shifts the burden to the database, which tends to be 1 big box.

    So the question becomes, how do you scale the database horizontally?

    In the database world, the term has become somewhat overloaded. Originally it meant physically shared disks and/memory vs. using network interconnectivity. But with the rise of I/O shipping technologies over networks (iSCSI, high speed NFS/NAS, SAN fibre-channel), this isn't really true anymore. So now, it comes down to how your data is partitioned and how you ship a read/write function to that node. Does a node "own" it's data (or a replica)? Or can any node touch any data? That's the debate.

    In short, it works well in some cases: read-mostly parallel queries and/or search, which is why Google's using it, or why you see it with data warehouses (Teradata, DB2 UDB). It works OK if you have mostly have transactional data updates within a well-defined partitionable set of data (such as the TPC-C benchmark). It works less well when dealing with transactional updates spread across the entire data set (assuming a normal distribution), as you'll need to update replicas with a two-phase commit. The load balancing of your data across nodes also requires care in picking the appropriate partitioning key: sometimes a hash works well, sometimes range-values work well. If you need to re-partition your data for whatever reason, it's going to be a big job.

    Commercially, Oracle 10g's Real Application Clusters is an example of a shared disk database, though they use an interconnect between nodes for cache coherency. Microsoft SQL Server, DB2, Teradata, MySQL, etc. are all "shared nothing".

    --
    -Stu
    1. Re:Shared nothing is useful but overhyped by QuantumFTL · · Score: 1

      Excellent, this is precisely the kind of answer I was hoping for. I've done some fairly interesting things with databases in the past (including a rather odd sort of partial replication - for security purposes), and while I'm up on much of the theory of these things, I don't have much practical experience. Do you have any books you can reccommend that would cover the issues of access to redundant databases, and this partitioning (which from what you said seems to be a method of load balancing, akin to how items in a hash table are "balanced" through the use of a good hash).

      The reason that I think many of the "share-nothing" architectures that really just push all the sharing/bottlenecks into the database are so popular is that the people writing databases like Oracle/DB2 tackle those kinds of critical issues so much better than some random webapp developer under a strict deadline, and the fact that a lot of this "scalability" is often limited to low enough numbers of machines that there's little problem with this, but you're right, it doesn't really "solve" the scalability problem, but merely delays it.

    2. Re:Shared nothing is useful but overhyped by aevans · · Score: 1

      I don't think "shared nothing" means "everything shares the same thing." If it is a buzzword used to sell databases, sorry, I didn't know. But the whole idea of "autonomous" systems, at least in the sense that Amazon (refusing to accept the label) does, is that even databases aren't shared. App 1 might collect user data and store it in a postgres database. App 2 might collect order data and store it in an oracle database. App 3 might keep track of referers in a flat file (perhaps apache's access.log) App 4 might do analytics on all this information by using a perl script to parse App 3's log and put it into a DB, replicating App 2's db in real time, and querying App 1's DB as needed. The point is, that they avoid the monstrous single point of failure database. Sure it takes more work to mirror and query, but that's the tradeoff you make for scalability. Undoubtably there is a database in existence big enough to handle all of Amazon's data, but they've found it cheaper, and more agile to separate it out.

    3. Re:Shared nothing is useful but overhyped by stonecypher · · Score: 1

      but it really just shifts the burden to the database, which tends to be 1 big box. // So the question becomes, how do you scale the database horizontally?

      There really aren't any major databases which don't cluster, and some architectures like Mnesia and KDb are built specifically to handle being the generic workhorse behind data requests. That said, what you're discussing isn't shared nothing - it isn't even degenerate shared nothing. If it was, then there wouldn't be any state to share. Moving the shared state into the database doesn't make it degenerate shared nothing; it just means you've moved the sharing. This would be like looking at the US Rail system before the connection at promontory point, calling it a degenerate shared rail network, then pointing out that you still can't get from New York to Los Angeles.

      There are, in short, cases where 99% isn't most of 100%. Shared nothing doesn't "degenerate." Nothing isn't gradated. Either you're sharing nothing, or you aren't. In the case you describe, you aren't. The people who referred to the system you described as "shared nothing" bought into a methodology, weren't willing to do it right, and ended up with a system that didn't scale. The reason it didn't scale isn't because it creates a chokepoint; the chokepoint was generated by their not doing it correctly. Shared nothing, when done correctly, scales better than almost any other methodology (transparent clustering like Erlang can be argued to scale better because it has fewer problems with resource allocation.)

      Microsoft SQL Server, DB2, Teradata, MySQL, etc. are all "shared nothing".

      Er, no, they aren't. Shared nothing is about keeping no state outside the query. Read-write databases accessable by more than one point are by definition never part of this methodology. They cannot be.

      --
      StoneCypher is Full of BS
    4. Re:Shared nothing is useful but overhyped by Stu+Charlton · · Score: 1

      That said, what you're discussing isn't shared nothing - it isn't even degenerate shared nothing. If it was, then there wouldn't be any state to share.

      This was partially my point, though I was wrong in saying it was "degenerate". What I meant to say is that few actually implement shared nothing -- they say they do, but they really don't. And the reason is mostly due to the tradeoffs between fault tolerance and concurrency management that make it difficult to use for transactional data management.

      Microsoft SQL Server, DB2, Teradata, MySQL, etc. are all "shared nothing".

      Er, no, they aren't. Shared nothing is about keeping no state outside the query. Read-write databases accessable by more than one point are by definition never part of this methodology. They cannot be.


      Pfister refers to the first three of these as "shared nothing" in his book, and I'm sure there's literature going back 15+ years that refer to DB2 UDB (the parallel edition originally on RS/6000) as a 'shared nothing' database architecture -- perhaps wrongly, but that would be news to me.

      I extrapolated this in noting that each of the above databases use "function shipping" as their implementation approach to clustering -- state is shared at the query level, and each node owns its own patch of data, so no piece of data is accessible by more than one point. Replicas, for fault tolerance, exist outside of the database architecture and is delegated to the storage subsystem (RAID, EMC Symmetrix, etc.).

      --
      -Stu
  14. i think you missed the point by Stu+Charlton · · Score: 2, Insightful

    Vogels was a distinguished academic in distributed systems prior to Amazon. Read his blog some time. He is quite insightful, and this queuecast was a great one. Yours is the first comment I've seen in many forums over the past few months that seems to think it was tripe, so I find it curious.

    His point is that Amazon has found that a decentralied archtiecture that can work reliably but still respond to new demands with agility. That's a huge deal, considering the contortions, pain, and centralized bottlenecks that most large IT shops have to deal with. Not to mention over-obsession with technological buzzes instead of looking at the business architecture of the firm.

    Perhaps that's obvious, but perhaps it's important to restate the obvious when most people don't follow it.

    --
    -Stu
  15. Seeing as Bezos just invested... by tcopeland · · Score: 1

    ...in 37 signals (the guys who made Ruby on Rails), I wouldn't be suprised to see some more RoR happening there as some commenters here have suggested. Good times...

  16. No Stu by Dryanta · · Score: 1
    I think YOU missed the point Stu.
    Yours is the first comment I've seen in many forums over the past few months that seems to think it was tripe, so I find it curious.
    I'm not saying that his commentary is 'tripe' as you say, so much as bonehead obvious and not news-worthy. He managed to talk for three pages about how 'varied technologies and disciplines with a varied engineering staff makes Amazon worx lawlz!' I believe he is scholarly - otherwise he would not be able to ramble on about nothing for so long.
    His point is that Amazon has found that a decentralied archtiecture that can work reliably but still respond to new demands with agility. That's a huge deal, considering the contortions, pain, and centralized bottlenecks that most large IT shops have to deal with. Not to mention over-obsession with technological buzzes instead of looking at the business architecture of the firm. Perhaps that's obvious, but perhaps it's important to restate the obvious when most people don't follow it. -- -Stu
    My enterprise is not even 1/100th the size of Amazon and I could ramble on with the same amount of detail about their technical engineering problems and solutions. That is the point I am making - Blogging + Interviews == NEWS FOR THE SAKE OF NEWS THAT IS ACTUALLY NOT NEWS BECAUSE IT IS NOT ENTERTAINING OR INFORMATIVE
  17. Ebay by LarsWestergren · · Score: 1

    At Java One this year there was a pretty interesting talk by a guy from Ebay, talking about "creating an object model that spans the world". If you join the Sun Developer Network (for free) you can get the slides, and even audio/video I believe.

    --

    Being bitter is drinking poison and hoping someone else will die

  18. Amazon's data warehouse by Stu+Charlton · · Score: 1

    Amazon, interestingly enough, uses a LInux/Oracle RAC data warehouse, for data analysis. It is one of the larger deployments in the world, at over 15 terabytes. I found this article, but there have been many over the years, some on Oracle's site.

    And, to re-iterate, Oracle RAC is shared-disk... ;-)

    --
    -Stu
  19. BTW by Stu+Charlton · · Score: 1

    Thanks for the pointer Mnesia, great reading.

    --
    -Stu