InfoQ

Interview

Dan Farino On MySpace’s Architecture

Interview with Dan Farino by Ryan Slobojan on Nov 18, 2008

Community
.NET,
Architecture
Topics
Enterprise Architecture ,
Performance & Scalability ,
Configuration Management ,
.NET Framework
Tags
PowerShell ,
MySpace ,
IIS
Summary
In this interview taken by InfoQ’s Ryan Slobojan, Dan Farino, Chief Systems Architect at MySpace, talks about the system architecture and the challenges faced when building a very large online community. Because MySpace is built almost entirely on the .NET Framework, Dan explains how a .NET product scales on hundreds of servers.

Bio
Dan Farino is the Chief Systems Architect at MySpace.com where he is responsible for designing and implementing the infrastructure required to maintain the site's thousands of servers. Dan has designed and implemented many of MySpace.com's custom performance-monitoring, profiling and live-debugging tools.

About the conference
Hi, my name is Ryan Slobojan, I am here with Dan Farino at MySpace. Can you describe for us what your role at MySpace is?
And can you explain for us what are some of the challenges of debugging and troubleshooting in such a large site?
Interesting. And can you explain for us what the general architecture of MySpace is from a technology prospective?
What were some of the challenges around scaling the website? You mentioned you started off the ColdFusion server and that now there is somewhere in the neighborhood five hundred billion IIS servers. So how do you get from A to B? Do you just add servers?
So it sounds like a lot of what you have been doing has involved extensions on top of the existing tool set that you use. How has the process with Microsoft been?
Excellent. One of the questions which I am sure you've heard before is what led to the decision to use the Microsoft technology stack as opposed to some of the other choices that are available?
One of the other things you have mentioned was that you have a mix of .Net 2.0 and .Net 3.5. How do those interact and is there a plan to migrate fully to 3.5?
So the core website is based on 2.0 and 3.5, and the tools that you are involved with, they are based on PowerShell and one other thing that is in there. How is this whole system of debugging tools interact?
You mentioned C++, and I recall you also mentioned VB, VB script?
What is the breakdown of the language usage inside of MySpace?
Will you be migrating to all of the new .Net 3.5 features such as LINQ?
Are there any approaches or plans for the developer tools recently released to be available with more different languages, even C# or something like that, or would those remain only based on scripting languages like JavaScript or VB Script?
So with a large website such as MySpace, when you have a problem such as a peak load overloading your servers, is there a way to create a fix which makes this miraculously go away or do you just have to keep adding incremental changes and taking small pieces of the issue one at a time?
How does this process of troubleshooting and understanding the scaling and adapting to the scaling and figuring out the difference between the theory and production, how does that affect the system architecture?
This may be kind of a two or three years old question, but how do you respond to people that say that .Net doesn't scale?
Are you using any of the other enterprise Microsoft products for servers and scalability?
Can you give us an example of areas where you actually went completely against the grain of what is in .Net and what Microsoft was saying you should do?
Can tell us a little bit about the cache tier. I am very interested in hear some standard caching issues you had to deal with, like updates and that sort of thing.
show all  show all
Weird... by Branden Root Posted Nov 19, 2008 12:01 PM
Re: Weird... by Abel Avram Posted Nov 20, 2008 9:00 AM
Re: Weird... by Jason Gleason Posted Dec 10, 2008 11:35 AM
How do you test it? by Pavel Veller Posted Nov 21, 2008 2:36 PM
Re: How do you test it? by Andre Sobotovych Posted Nov 27, 2008 7:34 AM
  1. Back to top

    Weird...

    Nov 19, 2008 12:01 PM by Branden Root

    I could have sworn the site was written in Coldfusion, given that all the URLs are .cfm, and they even have fuseactions in them. I guess there's a .net middle layer.

    MySpace is comparable to Twitter in my mind - the site's really slow, doesn't really do much complicated actions, and has a tendency to break a lot.

    So, listen to this and learn what not to do ;)

  2. Back to top

    Re: Weird...

    Nov 20, 2008 9:00 AM by Abel Avram

    As Dan says in the interview, the site started on ColdFusion/Win2k but then introduced IIS and .NET.

  3. Back to top

    How do you test it?

    Nov 21, 2008 2:36 PM by Pavel Veller

    Dan,

    listening to you (or similarly Dan Pritchet talking about eBay architecture) I have same questions in my mind:

    how do you test new features before you roll them out? how do you test them scale? you don't have test lab with same level of scale as your production farm, do you? that makes me think you can't guarantee or knowingly predict exact level of performance until real users hit the new feature in real time. how do you deal with that and what did you have to build into your system to support new features deployment, as well as rolling features back quickly if apparently they did not work out as you had expected?

    and another question is what did you have to do to support existence of "practical" development environments that behave as your production system but do not require each develop to work on dozens of servers, partitioned databases, and cache instances. How did this change your system's architecture?

  4. Back to top

    Re: How do you test it?

    Nov 27, 2008 7:34 AM by Andre Sobotovych

    Pavel,

    you might be surprised how many companies don't have proper development/QA setups that replicate production environment well.
    I witnessed number of scenarios when code passed developer and QA testing with flying colors but utterly failed in production environment. The failure was caused (as you already guessed it) by difference in development/QA vs production environment setups. Developers were writing code for one environment while being completely oblivious (no fault of their own) to the production environment pains and hazards.

    Now, this might not be the case with MySpace. However, I certainly agree with you on the fact that Dan didn't say a word about testing their 'hydra'. But on the other hand, he wasn't asked that question.

    NOTE to Ryan: It certainly would be great to hear from MySpace on how they test the code.

  5. Back to top

    Re: Weird...

    Dec 10, 2008 11:35 AM by Jason Gleason

    Myspace uses a product called "Blue Dragon" that switches out the cf server to use a .net middle tier. It's a very cool option to migrate from cf to .net. (the .cfm pages you see are actually being handled by .net).

Educational Content

Brian Marick on 4 Challenges and 5 Guiding Values of Agile Software Development

Brian Marick takes us through a quick tour of the most important values and challenges to adopting Agile successfully (they aren't the typical challenges and values we hear in the community).

Are You a Software Architect?

The line between development and architecture is tricky. Does it exist at all? Is an ivory tower actually needed? There's a balance in the middle, but how do you move from developer to architect?

Agile – A Way of Life and Pragmatic Use of Authority

The word 'authority' sometimes produces an allergic response in hard-line agilists. Freedom and authority – both are bad if misused and both are good if used in right spirit for a noble cause.

Getting Started with Grails, Second Edition

"Getting Started with Grails" brings you up to speed on this modern web framework. Companies as varied as LinkedIn, Wired, and Taco Bell are all using Grails. Are you ready to get started as well?

Using ITIL V3 as a Foundation for SOA Governance

Those familiar with only ITIL V2 often scoff at the thought that ITIL could serve as a governance framework for SOA. With ITIL V3, the focus of the framework shifted towards service-orientation.

Adrian Colyer on AspectJ, tc Server and dm Server

SpringSource CTO Adrian Colyer discusses AspectJ, SpringSource's dm Server and tc Server products, OSGi and Scrum.

Adam Wiggins on Heroku

Heroku's Adam Wiggins talks about Rails, Background Jobs, Add-Ons, Ruby, and how Heroku manages to work around Ruby's inefficiencies using Erlang and other languages.

SOA as an Architectural Pattern: Best Practices in Software Architecture

For Grady Booch the foundation of a good architecture is patterns, SOA being just one of many patterns. In this Second Life presentation, Booch attempts to bring more clarity on what architecture is.