<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>New Relic Blog</title>
	<atom:link href="http://newrelicblogs.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://newrelicblogs.wordpress.com</link>
	<description></description>
	<lastBuildDate>Thu, 27 Jan 2011 16:36:42 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='newrelicblogs.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://1.gravatar.com/blavatar/92ddebb8b86fd499eec9b9ae97846049?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>New Relic Blog</title>
		<link>http://newrelicblogs.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://newrelicblogs.wordpress.com/osd.xml" title="New Relic Blog" />
	<atom:link rel='hub' href='http://newrelicblogs.wordpress.com/?pushpress=hub'/>
		<item>
		<title>How do you move more than 6000 customers in 2 hours? (Hint: plan ahead)</title>
		<link>http://newrelicblogs.wordpress.com/2011/01/26/how-do-you-move-more-than-6000-customers-in-2-hours/</link>
		<comments>http://newrelicblogs.wordpress.com/2011/01/26/how-do-you-move-more-than-6000-customers-in-2-hours/#comments</comments>
		<pubDate>Wed, 26 Jan 2011 18:10:03 +0000</pubDate>
		<dc:creator>New Relic, Inc.</dc:creator>
				<category><![CDATA[Case Study]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[datacenter]]></category>
		<category><![CDATA[Engine Yard]]></category>
		<category><![CDATA[New Relic]]></category>
		<category><![CDATA[Percona]]></category>

		<guid isPermaLink="false">http://blog.newrelic.com/?p=2964</guid>
		<description><![CDATA[As many of you know, we undertook a major data center move last November. The move went quite smoothly, and we thought a blog post or two about how we did it might be useful to the community. We cajoled our IT Director Bayard Carlin into writing two posts that discuss the planning and execution [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=newrelicblogs.wordpress.com&amp;blog=6857754&amp;post=2964&amp;subd=newrelicblogs&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.newrelic.com"><img class="alignleft size-full wp-image-2992" title="New Relic" src="http://newrelicblogs.files.wordpress.com/2011/01/nr-120x1201.png?w=550" alt="New Relic"   /></a>As many of you know, we undertook a major data center move last November. The move went quite smoothly, and we thought a blog post or two about how we did it might be useful to the community. We cajoled our IT Director Bayard Carlin into writing two posts that discuss the planning and execution of our effort to move live production performance data for 6000+ customers. This post covers the efforts that went into planning the move and the second post will detail events as they unfolded the night of the move. Without further ado…</p>
<h3>Egads, I wish I could sleep but how am I going to move the data? (Part 1)</h3>
<p>by Bayard Carlin</p>
<p><strong>First, a huge thanks to those involved</strong></p>
<p>The move was a pretty complex project with a lot of planning, evaluation and testing. We did a lot of rehearsing before the actual cutover. Many thanks to the folks in our engineering department who contributed to the project. We also also want to thank the folks at <a title="Percona" href="http://www.percona.com/" target="_blank">Percona</a> as well as Tyler Poland at <a title="Engine Yard" href="http://www.engineyard.com/" target="_blank">Engine Yard</a>. They played a big part in our success.</p>
<p><strong>The challenge</strong></p>
<p>One of the most difficult problems to solve was how to move several terabytes of hot data across the country without significant downtime or gaps in data collection. This was keeping me up at night. The official company target was a 6 hour maintenance window. I wanted to be collecting customer data within one hour. We almost made it&#8211;I think the actual Collector outage was about one hour and 10 minutes. It took us about 2 hours to get the UI up.<span id="more-2964"></span></p>
<p>We had two viable options to move the data across: move customers programmatically a batch at a time or use MySQL replication. Some of us were a bit skeptical that we could replicate across the Internet because of the amount of rows we write (1.4 billion a day). Moving the customer data programmatically was pretty complex and fraught with its own issues.</p>
<p>I am an Ops guy, I understand replication, I have used it before and I trust it. Replication would be cleaner as we could do a knife-switch cutover, so it was my preferred method.</p>
<p>The general steps for replication are: Get an image of the database, start a mysql instance from that image and enable replication. Most times mysqldump/restore is used to get the image.</p>
<p><strong>A bit about the New Relic database architecture</strong></p>
<p>New Relic uses MySQL 5.0. We have sharded database architecture for our metric data and a central database for all the account data. Customers are mapped to specific shards, which are around 500 GB each. As mentioned above, we insert around 1.4 billion rows a day across all our shards. We have a multi-tenant application and each customer gets their own set of tables. We have *lots* of tables, at least 120,000 per shard.</p>
<p>The tables that contain data for the last hour are getting written to. These tables are extremely hot and tend to be large. Every hour we roll them over, create a new set and drop the tables that are no longer necessary.  The tables containing historical data are static unless we are processing them.  Every night we also purge tables that have expired.</p>
<p>These factors make it very difficult to use normal methodologies to back up and restore the databases. We delete tables every hour and mysqldump takes greater than an hour to run, plus mysqldump will fail if tables are dropped during a backup.</p>
<p>Another issue that prevents us from doing a normal dump is that the metric tables that are getting written to are way too hot to lock. I tried Xtrabackup but it failed because we were dropping tables. We have a way to back up our shards but that is out of scope for this posting. Essentially we don&#8217;t back up the hot tables and have a wrapper that keeps mysqldump from borking when tables are dropped. Our backups unfortunately are not suitable for replication.</p>
<p>Replicating the accounts DB was a no brainer. I used Xtrabackup to dump the DB, copied the file across and executed xtrabackup with the &#8211;prepare option. The Xtrabackup output gave me the correct binlog and log position and I was off to the races. Xtrabackup is orders of magnitude faster than mysqldump. You can find information on Xtrabackup <a title="Xtrabackup" href="http://www.percona.com/docs/wiki/percona-xtrabackup:start" target="_blank">here</a>.</p>
<p><strong>Proof of concept</strong></p>
<p>Our first step was a proof of concept to see if replication was actually possible. We decided to test things out with one shard.</p>
<p>In most cases <code>mysqldump/restore</code> is used for replication but as explained above this would not work for us. In the end we decided that LVM snapshots were the best option and we would rsync the data across to the new data center. If you do a snapshot of a running database you need do a flush tables with read lock before you snap or you have to dump/restore prior to replication. For a variety of reasons the flush tables may have been problematic with our app and we didn&#8217;t want to risk it. I also didn&#8217;t want to take the time for a dump and restore so I stopped the DBs prior to the snapshot. Having a sharded architecture made it possible for us to do this without affecting all our customers at once. The outages were generally sub 5 minutes per shard, the first snaps (ahem) took longer because we hit some snags.</p>
<p>Here is an outline of the steps we used. This is not meant to be a complete tutorial on replication. I would strongly recommend reading up on replication or use a consulting service like Percona to help you out. Having a data center migration go sideways would not be career enhancing. Docs on replication can be found <a href="http://dev.mysql.com/doc/refman/5.0/en/replication.html">here</a>.</p>
<p><strong>Some prereqs</strong></p>
<p>Set up ssh keys on the master and replica hosts. This is necessary for passwordless rsync and since we are replicating over the Internet we need an ssh tunnel pass data back and forth securely.</p>
<p>Make sure the MySQL root passwords match on the master and slave (this is done for you if you rsync the entire MySQL directory across)</p>
<p>Edit the my.cnf on the master to enable binlogging and set a unique server ID. If binlogging is already enabled and you are not replicating to another DB you will want to delete all the binlogs after shutting mysql down and prior to doing the snapshot.</p>
<p>We do not use localhost or bind our mysql instances to the server&#8217;s IP address, we have a unique IP per instance. The first thing we needed to do is add the correct permissions for root so the remote DB can be administered.</p>
<p>On the master in the mysql client<br />
<code>#grant all on *.* to 'root'@'&lt;hostname_of_replica&gt;' identified by '&lt;somepassword&gt;' with grant option; flush privileges;</code></p>
<p>Then stop mysql<br />
<code>#/etc/init.d/mysql stop</code></p>
<p>Do the snap<br />
<code>#lvcreate -L &lt;size&gt; -s /dev/&lt;original-device&gt; -n &lt;new-device&gt;</code></p>
<p>Mount it<br />
<code># mount -o nouuid,ro /dev/&lt;new-device&gt; /mnt/backup</code></p>
<p>Check the snapshot. You will want to have an idea of whether the correct files are there so you need to do a compare. Since MySQL is down we wanted to make it quick.<br />
<code>#rsync -avz --dry-run &lt;source_directory&gt; /mnt/backup</code></p>
<p>If there is no output you are golden.</p>
<p>Start mysql again<br />
<code>#/etc/init.d/mysql start</code></p>
<p>Now do the rsync. We used screen as the rsyncs took a long time. We also wanted to have notifications when the syncs were finished. I also wanted to look at how things were going so I logged the screen output.<br />
<code># screen -S rsync -L</code><br />
<code>#rsync -avz s/mnt/backup &lt;destination_host&gt;:&lt;destination_directory&gt; &amp;&amp; echo "Snapshot copy done" | mail -s "`hostname` snapshot copy is done" &lt;your_email@your_domain.com&gt;</code></p>
<p>If bandwidth or disk IO is an issue you can use the <code>--bwlimit</code> flag.</p>
<p>Now it is time to eat dinner, go to a movie and get a good night&#8217;s sleep. With 500 GB and 120,000 files over the Internet this is going to take awhile.</p>
<p>Next we want to allow the slave to replicate from the master. On the master in the mysql client:<br />
<code>#grant replication client, replication slave on *.* to &lt;'replication_user&gt;'@'&lt;hostname_of_replica&gt;' identified by '&lt;replication_password&gt;';</code></p>
<p>When the rsync is finished log into the slave and execute:<br />
<code>/etc/init.d/mysql start &amp;&amp; tail -f &lt;path_to_logs&gt;/mysql.err</code></p>
<p>Assuming there are no errors in the log you are ready to start replication. Set up the bidirectional SSH tunnel. We set up the tunnel on the remote server and decides to use port 13306 on both ends. It is a good thing to script this into a loop<br />
<code>ssh -N -v -L13306:127.0.0.1:3306 -R13306:127.0.0.1:3306 &lt;remote_host&gt;</code></p>
<p>On the slave in the MySQL client: (You need to use the same <code>&lt;replication_user&gt;</code> and <code>&lt;replication_password&gt; </code>as you did with the master.)<br />
<code>#change master to master_host=&lt;hostname_of_master&gt;', master_port=13306, master_user='&lt;replication_user&gt;', master_password='&lt;replication_password&gt;', master_log_file='&lt;name_of_first_binlog&gt;', master_log_pos= &lt;correct_log_position&gt;;<br />
#start slave;</code></p>
<p>Also, you will want to make sure nothing is writing data to the slave or replication will get borked. Yes, I speak from experience.<br />
<code>#set global read_only = on;</code></p>
<p>Now you can see how replication is doing:<br />
<code>#show slave status \G;</code></p>
<p>For an exact explanation of the output please see MySQL documentation <a href="http://dev.mysql.com/doc/refman/5.0/en/show-slave-status.html">here</a>.</p>
<p>The initial test went well. It took about 25 hours to sync all the data across. Having a large number of small files did not help us any. I brought up the new instance and enabled replication without issue. I think it took about 8 hours for all the changes to catch up.</p>
<p><strong>Rinse, lather, repeat</strong></p>
<p>We were very encouraged with the results. We kept replication going for a couple of weeks without issue. Replication for the most part kept current and when it fell behind it caught up rather quickly. Once we proved this method would work we set it up on the rest of our shards. We did 2 a night. We kept replication running for a week or so prior to the cutover to make sure everything was stable.</p>
<p>Nic Benders one of our Dev/Ops guys cooked up a script that would check replication status across a number of databases. A slightly modified (to protect the innocent) version is at the bottom of the post. We later wrapped this into a ruby script that sent alerts if <code>seconds &gt; 0</code> for a couple of iterations and put it into a cron job. We wanted to know about replication errors as soon as possible because redoing everything would slip the date.</p>
<p>The steps for the cutover were all scripted but the process looked like this::</p>
<p>Shut down the app.</p>
<p>Make sure replication was up to date on all the shards:<br />
<code># show slave status \G</code></p>
<p>Shut down the master.<br />
<code>#/etc/init.d/mysql stop</code></p>
<p>On the accounts database and each of the slaves:</p>
<p>Turn off replication.<br />
<code># stop slave;</code></p>
<p>Turn off mysql and do a snapshot just in case we need to fail back. If we have an image we can start replication right where it left off. Karsten Self another Dev/Ops guy scripted this with a bunch of trimmings as we had some unique issues we needed to solve.<br />
<code>/etc/init.d/mysql stop</code><br />
<code>#lvcreate -L &lt;size&gt; -s /dev/&lt;original-device&gt; -n &lt;new-device&gt;</code><br />
<code># mount -o nouuid,ro /dev/&lt;new-device&gt; /mnt/backup</code><br />
<code>#rsync -avz --dry-run &lt;source_directory&gt; /mnt/backup</code><br />
.<br />
Make the DB read/write.<br />
<code># set global read_only = off;</code></p>
<p>Make the DB it&#8217;s own master.<br />
<code># change master to master_host=' ',</code></p>
<p>Tighten up security a bit by removing the permissions for the old master:<br />
<code>#revoke all on *.* from 'root'@'&lt;hostname_of_old_master&gt;'; flush privileges;</code></p>
<p>Now the data was production ready on all the new servers.</p>
<p>Be sure to stay tuned for the next exciting episode where we discuss creating the playbook and the actual execution of the switchover.</p>
<p><strong>Voila!</strong></p>
<p>The next steps were bringing up the different tiers of the application.</p>
<p>All in all I was delighted with the results.  The cutover was smooth easy and efficient.</p>
<p>Nic&#8217;s check replication across multiple hosts script:<br />
<code>#!/bin/bash</code><br />
<code><br />
for db in A B C; do<br />
case "$db" in<br />
"A")<br />
hostname="&lt;hostname A&gt;"<br />
;;<br />
"B")<br />
hostname="&lt;hostname B&gt;"<br />
;;<br />
"C")<br />
hostname="&lt;hostname C &gt;"<br />
;;<br />
esac<br />
printf "%-16s " $hostname<br />
status=''<br />
status=`mysql -h $hostname -u &lt;replication_user&gt; --password='&lt;replication_password&gt;' mysql -e 'show slave status' -E 2&gt;/dev/null | grep Seconds_Behind_Master | awk '{sub(/^[ \t]+/, "")};1'`<br />
if [ "$?" == "0" ]; then<br />
echo -en "$status"<br />
seconds=0<br />
seconds=`echo $status | awk '{print $2}'`<br />
if [ -z $seconds ]; then<br />
echo<br />
elif [ "$seconds" == "NULL" ]; then<br />
echo -e "\t--:-- (hh:mm)"<br />
elif [ $seconds -lt 60 ]; then<br />
echo -e "\tCURRENT"<br />
elif [ $seconds -gt 0 ]; then<br />
minutes=$(($seconds / 60))<br />
hours=$(($seconds / 3600))<br />
minutes=$(($minutes - $(($hours * 60))))<br />
printf "\t%d:%02d (hh:mm)\n" $hours $minutes<br />
else<br />
echo -e "\t???"<br />
fi<br />
else<br />
echo<br />
fi</code></p>
<p>echo<br />
done</p>
<br />Filed under: <a href='http://newrelicblogs.wordpress.com/category/case-study/'>Case Study</a>, <a href='http://newrelicblogs.wordpress.com/category/testing/'>Testing</a> Tagged: <a href='http://newrelicblogs.wordpress.com/tag/datacenter/'>datacenter</a>, <a href='http://newrelicblogs.wordpress.com/tag/engine-yard/'>Engine Yard</a>, <a href='http://newrelicblogs.wordpress.com/tag/new-relic/'>New Relic</a>, <a href='http://newrelicblogs.wordpress.com/tag/percona/'>Percona</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/newrelicblogs.wordpress.com/2964/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/newrelicblogs.wordpress.com/2964/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/newrelicblogs.wordpress.com/2964/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/newrelicblogs.wordpress.com/2964/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/newrelicblogs.wordpress.com/2964/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/newrelicblogs.wordpress.com/2964/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/newrelicblogs.wordpress.com/2964/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/newrelicblogs.wordpress.com/2964/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/newrelicblogs.wordpress.com/2964/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/newrelicblogs.wordpress.com/2964/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/newrelicblogs.wordpress.com/2964/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/newrelicblogs.wordpress.com/2964/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/newrelicblogs.wordpress.com/2964/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/newrelicblogs.wordpress.com/2964/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=newrelicblogs.wordpress.com&amp;blog=6857754&amp;post=2964&amp;subd=newrelicblogs&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://newrelicblogs.wordpress.com/2011/01/26/how-do-you-move-more-than-6000-customers-in-2-hours/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/8dc851fc3aa0116952c5ced60e8ca828?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">newrelicblogs</media:title>
		</media:content>

		<media:content url="http://newrelicblogs.files.wordpress.com/2011/01/nr-120x1201.png" medium="image">
			<media:title type="html">New Relic</media:title>
		</media:content>
	</item>
		<item>
		<title>Wow! PHP Fog offers free New Relic RPM to all its customers</title>
		<link>http://newrelicblogs.wordpress.com/2011/01/25/php-fog-offers-free-new-relic-rpm/</link>
		<comments>http://newrelicblogs.wordpress.com/2011/01/25/php-fog-offers-free-new-relic-rpm/#comments</comments>
		<pubDate>Tue, 25 Jan 2011 16:10:10 +0000</pubDate>
		<dc:creator>New Relic, Inc.</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Partners]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://blog.newrelic.com/?p=2970</guid>
		<description><![CDATA[Since we announced our support for monitoring and managing PHP web apps, the pace of PHP community-related activity for us has been brisk. It continues today with our announcement of a new partnership with PHP Fog, a platform-as-a-service provider for PHP web apps. The best part of this news is that PHP Fog will be [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=newrelicblogs.wordpress.com&amp;blog=6857754&amp;post=2970&amp;subd=newrelicblogs&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://newrelicblogs.files.wordpress.com/2011/01/phpfog_nr.png"><img class="alignleft size-medium wp-image-2972" title="PHP Fog and New Relic" src="http://newrelicblogs.files.wordpress.com/2011/01/phpfog_nr.png?w=144&#038;h=144" alt="PHP Fog and New Relic" width="144" height="144" /></a>Since we announced our support for monitoring and managing PHP web apps, the pace of PHP community-related activity for us has been brisk. It continues today with our announcement of a new partnership with<a title="PHP Fog" href="http://www.phpfog.com/" target="_blank"> PHP Fog</a>, a platform-as-a-service provider for PHP web apps. The best part of this news is that PHP Fog will be giving <a title="RPM" href="http://www.newrelic.com/web-app-monitoring-features.html" target="_blank">New Relic RPM</a> Bronze to all it&#8217;s customers free of charge! <span id="more-2970"></span></p>
<p>PHP Fog provides simple one-click installations of some of the most popular PHP applications and frameworks, including <a title="Drupal" href="http://drupal.org/" target="_blank">Drupal</a>, <a title="Wordpress" href="http://wordpress.org/" target="_blank">WordPress</a>, <a title="Zend" href="http://www.zend.com/en/" target="_blank">Zend</a> and more. PHP Fog handles deployment, failover, database maintenance, scaling, and all the other plumbing that can take an army of programmers and systems administrators to handle. For organizations deploying apps on PHP Fog&#8217;s robust platform, RPM is a valuable enhancement that can help them better ensure the success of their online apps.</p>
<p>PHP Fog founder Lucas Carlson said today “More than ever before, organizations are building and deploying PHP web applications that deliver essential online services and must meet very high standards for performance and availability. As these companies turn to PHP Fog for reliable and scalable hosting services, the addition of RPM’s monitoring and troubleshooting capabilities offers unbeatable advantages for ensuring their applications are meeting business and performance goals.”</p>
<p><strong>PHP Fog customers, start using RPM today!</strong><br />
For organizations deploying applications on PHP Fog’s platform, taking advantage of free New Relic RPM Bronze is simple. Customers can simply log onto<a title="PHP Fog Login" href="http://www.phpfog.com/login" target="_blank"> phpfog.com</a>, deploy any PHP application and a New Relic account will be automatically created for them. The implementation process takes about 15 seconds. Customers are encouraged to contact PHP Fog through the <a title="PHP Fog Live Chat via Home Page" href="http://www.phpfog.com/" target="_blank">live chat</a> or <a title="PHP Fog Support Desk" href="http://help.phpfog.com/" target="_blank">support desk</a> for additional details.</p>
<br />Filed under: <a href='http://newrelicblogs.wordpress.com/category/news/'>News</a>, <a href='http://newrelicblogs.wordpress.com/category/partners/'>Partners</a>, <a href='http://newrelicblogs.wordpress.com/category/php/'>PHP</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/newrelicblogs.wordpress.com/2970/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/newrelicblogs.wordpress.com/2970/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/newrelicblogs.wordpress.com/2970/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/newrelicblogs.wordpress.com/2970/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/newrelicblogs.wordpress.com/2970/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/newrelicblogs.wordpress.com/2970/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/newrelicblogs.wordpress.com/2970/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/newrelicblogs.wordpress.com/2970/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/newrelicblogs.wordpress.com/2970/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/newrelicblogs.wordpress.com/2970/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/newrelicblogs.wordpress.com/2970/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/newrelicblogs.wordpress.com/2970/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/newrelicblogs.wordpress.com/2970/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/newrelicblogs.wordpress.com/2970/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=newrelicblogs.wordpress.com&amp;blog=6857754&amp;post=2970&amp;subd=newrelicblogs&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://newrelicblogs.wordpress.com/2011/01/25/php-fog-offers-free-new-relic-rpm/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/8dc851fc3aa0116952c5ced60e8ca828?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">newrelicblogs</media:title>
		</media:content>

		<media:content url="http://newrelicblogs.files.wordpress.com/2011/01/phpfog_nr.png?w=300" medium="image">
			<media:title type="html">PHP Fog and New Relic</media:title>
		</media:content>
	</item>
		<item>
		<title>What should I set my Apdex goal to?</title>
		<link>http://newrelicblogs.wordpress.com/2011/01/21/what-should-i-set-my-apdex-goal-to/</link>
		<comments>http://newrelicblogs.wordpress.com/2011/01/21/what-should-i-set-my-apdex-goal-to/#comments</comments>
		<pubDate>Fri, 21 Jan 2011 16:00:59 +0000</pubDate>
		<dc:creator>Brian Doll</dc:creator>
				<category><![CDATA[Did You Know]]></category>
		<category><![CDATA[Performance Tuning]]></category>
		<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">https://newrelicblogs.wordpress.com/?p=2960</guid>
		<description><![CDATA[One of the first metrics a new customer often notices is our Apdex scoring. Response time and throughput are immediately relatable, but what is this Apdex stuff? The essence of Apdex is in measuring customer happiness. How frequently are my customers happy with the performance of my application? How frequently are they tolerating slow performance [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=newrelicblogs.wordpress.com&amp;blog=6857754&amp;post=2960&amp;subd=newrelicblogs&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>One of the first metrics a new customer often notices is our <a href="http://www.newrelic.com/web-app-monitoring-features.html#ApdexScoring">Apdex scoring</a>.  Response time and throughput are immediately relatable, but what is this Apdex stuff?</p>
<p><img src="http://newrelicblogs.files.wordpress.com/2011/01/apdex-formula.jpg?w=270&#038;h=72" alt="" title="" border="0" width="270" height="72" style="float:left;" />The essence of Apdex is in measuring customer happiness.  How frequently are my customers happy with the performance of my application?  How frequently are they tolerating slow performance and how often are they frustrated?  These levels: <em>satisfied, tolerating and frustrated</em>, are derived from a performance goal that you set.  To learn more, check out <a href="http://blog.newrelic.com/2010/02/17/new-relic-ceo-lew-cirne-discusses-how-apdex-reveals-user-frustration-with-your-web-experience/">How Apdex Reveals User Frustration with Your Web Experience</a>.<span id="more-2960"></span><br />
<h3>So what should my Apdex goal be?</h3>
<p>Your Apdex goal represents the ideal response time for your application.  When customers are using your application, they don&#8217;t care what your technology stack is.  They don&#8217;t care what language you write code in, and they certainly don&#8217;t care which database you use.  What matters is perceived value per transaction.  Broadly speaking, the leader board for a mobile game needs to be much faster than submitting an order for a flying car online.  Ideally, your application is among the top performers in your category.</p>
<h3>Setting Apdex too low</h3>
<p>It can be tempting to want to put a low Apdex goal in place, and work for several releases to speed up the app to see if you can make your goal.  If you found out that a competitor had really low response times, for example, it might be tempting to use Apdex as a way to benchmark against the goal of catching up.  The problem with setting Apdex too low in comparison to your current average response time is that the Apdex breakdown loses a lot of value in the mean time.</p>
<p>Let&#8217;s say, for example, your average response time was 1,000ms.  If you set your Apdex goal to be 500ms (0.5s), you&#8217;ll get an overwhelming majority of requests in the bottom tiers and it won&#8217;t help you see performance outliers.  </p>
<h3>Setting Apdex too high</h3>
<p>Following our earlier example, let&#8217;s say we set our Apdex goal to 2.0 seconds with an average response time of 1 second.  With this configuration, we would see an artificially high and consistent Apdex score.  Setting Apdex too high or too low can both result in hiding your performance outliers.</p>
<h3>The ideal Apdex score for your app is&#8230;</h3>
<p>If you set your Apdex goal to match your average response time, you&#8217;ll get a lot more value out of it.  The benefit of Apdex in practice is that it highlights discrepancies in response time that are otherwise hidden by an average.</p>
<h4>1. Set your Apdex goal near your average response time</h4>
<p><img src="http://newrelicblogs.files.wordpress.com/2011/01/apdex-vs_-response-time_.jpg?w=151&#038;h=46" alt="" title="" border="0" width="151" height="46" style="float:left;" /> As an example, this customer has an average response time of 140ms and has set their Apdex goal to 200ms (0.2s).</p>
<h4>2. Focus on application performance, as indicated by customer happiness</h4>
<p><img src="http://newrelicblogs.files.wordpress.com/2011/01/apdex-score_.jpg?w=494&#038;h=122" alt="" title="" border="0" width="494" height="122" /></p>
<p>By setting a relevant and achievable goal, this customer immediately sees fluctuations in customer satisfaction that are otherwise hard to spot.  If customers experience an increasing number of slower than ideal responses, you&#8217;ll see this reflected immediately in the Apdex chart, while the average response time may not change much.</p>
<h4>3. Lower your Apdex score to your new, faster response time average</h4>
<p>As you improve the performance of your application, lower your Apdex score so it stays relevant.</p>
<h4>4. Profit!</h4>
<p>While we&#8217;ve heard many customer stories of how increasing application performance increases sales, we&#8217;ve yet to hear the opposite.  Feel free to enjoy those additional profits while your customers enjoy your improved performance!  It&#8217;s on us!</p>
<br />Filed under: <a href='http://newrelicblogs.wordpress.com/category/did-you-know/'>Did You Know</a>, <a href='http://newrelicblogs.wordpress.com/category/performance-tuning/'>Performance Tuning</a>, <a href='http://newrelicblogs.wordpress.com/category/tutorials/'>Tutorials</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/newrelicblogs.wordpress.com/2960/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/newrelicblogs.wordpress.com/2960/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/newrelicblogs.wordpress.com/2960/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/newrelicblogs.wordpress.com/2960/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/newrelicblogs.wordpress.com/2960/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/newrelicblogs.wordpress.com/2960/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/newrelicblogs.wordpress.com/2960/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/newrelicblogs.wordpress.com/2960/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/newrelicblogs.wordpress.com/2960/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/newrelicblogs.wordpress.com/2960/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/newrelicblogs.wordpress.com/2960/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/newrelicblogs.wordpress.com/2960/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/newrelicblogs.wordpress.com/2960/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/newrelicblogs.wordpress.com/2960/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=newrelicblogs.wordpress.com&amp;blog=6857754&amp;post=2960&amp;subd=newrelicblogs&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://newrelicblogs.wordpress.com/2011/01/21/what-should-i-set-my-apdex-goal-to/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/39803055f0a866d533c0ef045ed5da69?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">briand0ll</media:title>
		</media:content>

		<media:content url="http://newrelicblogs.files.wordpress.com/2011/01/apdex-formula.jpg" medium="image" />

		<media:content url="http://newrelicblogs.files.wordpress.com/2011/01/apdex-vs_-response-time_.jpg" medium="image" />

		<media:content url="http://newrelicblogs.files.wordpress.com/2011/01/apdex-score_.jpg" medium="image" />
	</item>
		<item>
		<title>From the wild west to the cloud: a concise overview of PHP</title>
		<link>http://newrelicblogs.wordpress.com/2011/01/20/from-the-wild-west-to-the-cloud-a-concise-overview-of-php/</link>
		<comments>http://newrelicblogs.wordpress.com/2011/01/20/from-the-wild-west-to-the-cloud-a-concise-overview-of-php/#comments</comments>
		<pubDate>Thu, 20 Jan 2011 18:05:50 +0000</pubDate>
		<dc:creator>New Relic, Inc.</dc:creator>
				<category><![CDATA[Partners]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://blog.newrelic.com/?p=2931</guid>
		<description><![CDATA[If you’ve ever seen HBO’s hard-edged docudrama Deadwood, then you have an idea what daily life may have been like on a frontier settlement: unruly, unpredictable, vibrant, opportunistic, promising, perilous, sepia-toned. It&#8217;s portrayed as a generally lawless yet ordered environment fueled by an egalitarian mindset that everyone could have a hand in driving progress. Believe [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=newrelicblogs.wordpress.com&amp;blog=6857754&amp;post=2931&amp;subd=newrelicblogs&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://newrelicblogs.files.wordpress.com/2011/01/deadwoodposter.jpg"><img class="alignleft size-full wp-image-2933" title="Deadwood" src="http://newrelicblogs.files.wordpress.com/2011/01/deadwoodposter.jpg?w=550" alt="Deadwood"   /></a>If you’ve ever seen HBO’s hard-edged docudrama <a title="Deadwood" href="http://www.hbo.com/deadwood/index.html" target="_blank">Deadwood</a>, then you have an idea what daily life may have been like on a frontier settlement: unruly, unpredictable, vibrant, opportunistic, promising, perilous, sepia-toned. It&#8217;s portrayed as a generally lawless yet ordered environment fueled by an egalitarian mindset that everyone could have a hand in driving progress. Believe it or not, the dawn of wild west society in Deadwood has strange similarities to the genesis of an open source scripting language. The beginnings are humble, often focused on a single fixed goal, and yet characterized by virtually unlimited potential. <span id="more-2931"></span></p>
<p>This is certainly true in the case of <a title="PHP" href="http://www.php.net/" target="_blank">PHP</a>, which first appeared in 1995. The creation of pioneering young developer <a title="Rasmus Lerdorf" href="http://en.wikipedia.org/wiki/Rasmus_Lerdorf" target="_blank">Rasmus Lerdorf</a>, it leaned heavily on syntax from C, Java and Perl. While his larger vision was to produce dynamic web pages quicker and easier, the initial intent was simply to track hits to his online resume. He dubbed the original exploration “Personal Home Page Tools,” then expanded its functionality to include database interaction and some application development capabilities and released it for public use. By 1997, PHP/FI was being used by about 50,000 domains – around 1% of total internet properties at that time. And that’s when the popularity of this new development language outpost really exploded.</p>
<p><a title="Zeev Suraski" href="http://en.wikipedia.org/wiki/Zeev_Suraski" target="_blank">Zeev Suraski</a> and <a title="Andi Gutmans" href="http://en.wikipedia.org/wiki/Andi_Gutmans" target="_blank">Andi Gutmans</a> came along and completely rewrote the language to better suit the e-commerce app they were building and in 1998 they created PHP 3.0, the closest predecessor to the modern version. Word spread quickly, and it grew to encompass installations on hundreds of thousands of websites and up to 10% of web servers. Gutmans and Suraski decided to rewrite PHP’s core entirely and their creation became known as the <a title="Zend Engine on Wikipedia" href="http://en.wikipedia.org/wiki/Zend_Engine">Zend Engine</a>, and now, essentially, there was new sheriff in town. PHP 4.0, built on Zend and released in 2000, is still the most commonly used version of the language. <a title="PHP 5" href="http://php.net/ChangeLog-5.php" target="_blank">PHP 5.0</a> came out in 2004 with features that give developers shorter, cleaner, more flexible code to work with.</p>
<p>PHP is now used on 75% of all web servers and is the foundation of some of the best-known apps and frameworks, including <a title="Facebook" href="http://www.facebook.com/" target="_blank">Facebook</a>, <a title="Wordpress" href="http://wordpress.org/" target="_blank">WordPress</a>, <a title="Wikipedia" href="http://www.wikipedia.org/" target="_blank">Wikipedia</a>, <a title="Drupal" href="http://drupal.org/" target="_blank">Drupal</a> and <a title="Digg" href="http://digg.com/news" target="_blank">Digg</a> . And that&#8217;s why New Relic got into the PHP app management business. We had heard &#8220;I wish there was New Relic for PHP&#8221; enough times to realize that 1) our customers and their peers are building more business-critical PHP-based apps than ever before and 2) there was real and growing need for 24&#215;7 monitoring and troubleshooting.</p>
<p>Social gaming apps are a perfect example of trend. PHP is used extensively by Facebook and iPhone game developers. The success of a game is unpredictable: it can be a flop or an instant hit. What is predictable is that if the game takes off and you&#8217;re not prepared to scale rapidly, it&#8217;s a good idea to have monitoring in place so you can diagnose issues at the earliest moment and take immediate corrective measures.</p>
<p>Many of the leading PHP platform providers are offering application management to their customers as an added value. As we mentioned in a <a title="PaaS meets SaaS APM" href="http://blog.newrelic.com/2011/01/13/platform-as-a-service-meets-saas-application-performance-management/" target="_blank">previous post</a>, this strategy lets the vendor work more collaboratively with customers as they share visibility into apps deployed on their platform, and gives a new level of control to the customer who is ultimately responsible for application performance. New Relic is teaming with several top platform providers to integrate RPM into their solutions. Here’s just a short list of our PHP partners:</p>
<ul>
<li> <a title="Acquia" href="http://acquia.com/" target="_blank">Acquia</a> enables organizations to build and deploy social publishing websites quickly and easily by leveraging the Drupal platform.</li>
<li> <a title="cloudControl" href="http://cloudcontrol.com/" target="_blank">cloudControl</a> is a leading PHP cloud hosting platform provider based in Potsdam with a managed solution that eliminates the administrative hassles.</li>
<li> <a title="Joyent" href="http://www.joyent.com/" target="_blank">Joyent</a> provides cloud computing software and service  designed  specifically to enable Service Providers and Enterprises to  deliver cloud services to clients or within enterprises.</li>
<li> <a title="Morphlabs" href="http://www.mor.ph/" target="_blank">Morphlabs</a> provides a cloud computing platform that converts commodity hardware into a cloud environment, allowing companies to easily create their own private cloud.</li>
<li> <a title="Network Redux" href="http://www.networkredux.com/" target="_blank">Network Redux </a>develops, deploys and manages custom cloud-computing solutions and web-hosting environments, including virtual servers and complex enterprise platforms.</li>
<li> <a title="PHP Fog" href="http://www.phpfog.com/" target="_blank">PHP Fog</a> offers platforms for PHP-based applications – like WordPress, Drupal, Shopify, Zend Framework and more – that help companies take full advantage of cloud computing.</li>
</ul>
<p>We will continue working with new partners to ensure on-demand APM is soon accessible to PHP developers. <a title="RPM for PHP" href="http://newrelic.com/php-app-performance.html" target="_blank">Visit us here</a> to learn more about New Relic RPM for PHP.</p>
<br />Filed under: <a href='http://newrelicblogs.wordpress.com/category/partners/'>Partners</a>, <a href='http://newrelicblogs.wordpress.com/category/php/'>PHP</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/newrelicblogs.wordpress.com/2931/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/newrelicblogs.wordpress.com/2931/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/newrelicblogs.wordpress.com/2931/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/newrelicblogs.wordpress.com/2931/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/newrelicblogs.wordpress.com/2931/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/newrelicblogs.wordpress.com/2931/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/newrelicblogs.wordpress.com/2931/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/newrelicblogs.wordpress.com/2931/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/newrelicblogs.wordpress.com/2931/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/newrelicblogs.wordpress.com/2931/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/newrelicblogs.wordpress.com/2931/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/newrelicblogs.wordpress.com/2931/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/newrelicblogs.wordpress.com/2931/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/newrelicblogs.wordpress.com/2931/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=newrelicblogs.wordpress.com&amp;blog=6857754&amp;post=2931&amp;subd=newrelicblogs&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://newrelicblogs.wordpress.com/2011/01/20/from-the-wild-west-to-the-cloud-a-concise-overview-of-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/8dc851fc3aa0116952c5ced60e8ca828?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">newrelicblogs</media:title>
		</media:content>

		<media:content url="http://newrelicblogs.files.wordpress.com/2011/01/deadwoodposter.jpg" medium="image">
			<media:title type="html">Deadwood</media:title>
		</media:content>
	</item>
		<item>
		<title>Engine Yard offers RPM Bronze to its customers free of charge</title>
		<link>http://newrelicblogs.wordpress.com/2011/01/18/engine-yard-makes-rpm-bronze-available-to-customers-free/</link>
		<comments>http://newrelicblogs.wordpress.com/2011/01/18/engine-yard-makes-rpm-bronze-available-to-customers-free/#comments</comments>
		<pubDate>Tue, 18 Jan 2011 14:10:43 +0000</pubDate>
		<dc:creator>New Relic, Inc.</dc:creator>
				<category><![CDATA[Partners]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[RPM in the News]]></category>
		<category><![CDATA[Armadealo]]></category>
		<category><![CDATA[Engine Yard]]></category>
		<category><![CDATA[RPM Bronze]]></category>

		<guid isPermaLink="false">http://blog.newrelic.com/?p=2916</guid>
		<description><![CDATA[We&#8217;ve got some really great news for folks with apps deployed on Engine Yard! Today Engine Yard announced that New Relic RPM Bronze is now available free of charge to all Engine Yard customers. Now, organizations deploying business-critical Ruby on Rails web applications on Engine Yard AppCloud and xCloud can use RPM Bronze at no [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=newrelicblogs.wordpress.com&amp;blog=6857754&amp;post=2916&amp;subd=newrelicblogs&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://newrelicblogs.files.wordpress.com/2011/01/engineyard-newrelic.png"><img class="alignleft size-full wp-image-2917" title="engineyard-newrelic" src="http://newrelicblogs.files.wordpress.com/2011/01/engineyard-newrelic.png?w=550" alt="engineyard-newrelic"   /></a>We&#8217;ve got some really great news for folks with apps deployed on <a title="Engine yard" href="http://www.engineyard.com/" target="_blank">Engine Yard</a>! Today Engine Yard announced that New Relic RPM Bronze is now available free of charge to all Engine Yard customers. <!-- @font-face {   font-family: "Lucida Grande"; }@font-face {   font-family: "ヒラギノ角ゴ Pro W3"; }p.MsoNormal, li.MsoNormal, div.MsoNormal { margin: 0in 0in 0.0001pt; font-size: 10pt; font-family: "Times New Roman"; color: black; }div.Section1 { page: Section1; } --> Now, organizations deploying business-critical Ruby on Rails web applications on Engine Yard <a title="AppCloud" href="http://www.engineyard.com/products/appcloud" target="_blank">AppCloud</a> and <a title="xCloud" href="http://www.engineyard.com/products/xcloud" target="_blank">xCloud</a> can use RPM Bronze at no charge to monitor app performance 24&#215;7 and proactively troubleshoot potential issues. Additionally, RPM Silver and Gold subscriptions are available to Engine Yard customers at special discounted pricing. This is a significant extension of New Relic&#8217;s and Engine Yard&#8217;s existing partnership and we are thrilled that Engine Yard has made this outstanding offer to it customers.<span id="more-2916"></span></p>
<p><!-- @font-face {   font-family: "Lucida Grande"; }@font-face {   font-family: "ヒラギノ角ゴ Pro W3"; }p.MsoNormal, li.MsoNormal, div.MsoNormal { margin: 0in 0in 0.0001pt; font-size: 10pt; font-family: "Times New Roman"; color: black; }div.Section1 { page: Section1; } --> The Engine Yard platform-as-a-service offerings provide a curated and optimized Ruby on Rails stack, a set of best-of-breed deployment and management tools, and access to Engine Yard support and professional services. New Relic <a title="New Relic RPM" href="http://newrelic.com/web-app-monitoring-features.html" target="_blank">RPM</a> is the leading on-demand application performance management service for Ruby on Rails. It allows teams to monitor applications in production, proactively identify performance issues, and drill down for root-cause diagnosis.</p>
<p>Matt Greer, CEO of <a title="Armadealo" href="http://www.armadealo.com/" target="_blank">Armadealo</a>, a leading provider of location-based marketing services, talked about the combined advantages of the Engine yard and New Relic solutions. “Our customers are shoppers who want instant access to discount and coupon information on their iPhones, so we need to deliver quick service and 100% uptime. We rely on Engine Yard because they are experts in deploying Ruby on Rails applications, and we have confidence that we can scale quickly to respond to large traffic spikes, up to 300%, on weekends and holidays. We chose New Relic because we can optimize our application response times during development and then monitor performance after we deploy to make sure we’re providing the best user experience. Using the combination of Engine Yard AppCloud and New Relic RPM frees me to focus on growing my business and serving customers.”</p>
<p>Tom Mornini, Engine Yard co-founder and CIO said today that &#8220;Over 1,800 Engine Yard customers have chosen to build their mission-critical applications in Ruby on Rails and deploy to the cloud. As fast-growing web companies and enterprises continue to build innovative products and services, they want to provide maximum uptime and the best user experience for their customers. New Relic and Engine Yard are delivering an enterprise-class platform and service that allows companies to easily deploy their apps and get a critical view into production application performance.”</p>
<h3>Engine Yard customers get started with RPM today!</h3>
<p>New Relic RPM installs in about 2 minutes and is easy to get up and running. Engine Yard AppCloud and xCloud customers can easily start using RPM Bronze by contacting their Engine Yard sales representative for details. Additionally, RPM Silver and Gold subscriptions are available to Engine Yard customers at special discounted pricing. For more information about using New Relic RPM on Engine Yard, please visit <a href="http://pages.engineyard.com/NewRelicOffer.html">http://pages.engineyard.com/NewRelicOffer.html</a>.</p>
<br />Filed under: <a href='http://newrelicblogs.wordpress.com/category/partners/'>Partners</a>, <a href='http://newrelicblogs.wordpress.com/category/rails/'>Rails</a>, <a href='http://newrelicblogs.wordpress.com/category/rpm-in-the-news/'>RPM in the News</a> Tagged: <a href='http://newrelicblogs.wordpress.com/tag/armadealo/'>Armadealo</a>, <a href='http://newrelicblogs.wordpress.com/tag/engine-yard/'>Engine Yard</a>, <a href='http://newrelicblogs.wordpress.com/tag/rpm-bronze/'>RPM Bronze</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/newrelicblogs.wordpress.com/2916/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/newrelicblogs.wordpress.com/2916/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/newrelicblogs.wordpress.com/2916/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/newrelicblogs.wordpress.com/2916/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/newrelicblogs.wordpress.com/2916/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/newrelicblogs.wordpress.com/2916/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/newrelicblogs.wordpress.com/2916/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/newrelicblogs.wordpress.com/2916/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/newrelicblogs.wordpress.com/2916/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/newrelicblogs.wordpress.com/2916/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/newrelicblogs.wordpress.com/2916/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/newrelicblogs.wordpress.com/2916/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/newrelicblogs.wordpress.com/2916/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/newrelicblogs.wordpress.com/2916/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=newrelicblogs.wordpress.com&amp;blog=6857754&amp;post=2916&amp;subd=newrelicblogs&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://newrelicblogs.wordpress.com/2011/01/18/engine-yard-makes-rpm-bronze-available-to-customers-free/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/8dc851fc3aa0116952c5ced60e8ca828?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">newrelicblogs</media:title>
		</media:content>

		<media:content url="http://newrelicblogs.files.wordpress.com/2011/01/engineyard-newrelic.png" medium="image">
			<media:title type="html">engineyard-newrelic</media:title>
		</media:content>
	</item>
		<item>
		<title>New and Noteworthy: Product and REST API Updates</title>
		<link>http://newrelicblogs.wordpress.com/2011/01/14/noteworthy-features-and-rest-api-updates/</link>
		<comments>http://newrelicblogs.wordpress.com/2011/01/14/noteworthy-features-and-rest-api-updates/#comments</comments>
		<pubDate>Fri, 14 Jan 2011 16:00:56 +0000</pubDate>
		<dc:creator>Brian Doll</dc:creator>
				<category><![CDATA[New & Noteworthy]]></category>

		<guid isPermaLink="false">https://newrelicblogs.wordpress.com/?p=2909</guid>
		<description><![CDATA[We love the fact that as a SaaS company we can ship new features and product enhancements every single week. The pace of development is so quick though, that we sometimes forget to mention new and interesting features by the time the next batch is ready to go. Consider this our belated New Years resolution: [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=newrelicblogs.wordpress.com&amp;blog=6857754&amp;post=2909&amp;subd=newrelicblogs&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img style="float:left;margin:10px;" src="http://newrelicblogs.files.wordpress.com/2011/01/ship_it_closeup1.jpg?w=100&#038;h=100" border="0" alt="Buy this awesome card from http://candyspotting.com/index.php/artists/sarah-holbrook/geeky-cards/pixel-ship-it-card.html" width="100" height="100" />We love the fact that as a SaaS company we can ship new features and product enhancements every single week.  The pace of development is so quick though, that we sometimes forget to mention new and interesting features by the time the next batch is ready to go.  Consider this our belated New Years resolution: to post more juicy product updates here on the blog!<br />
<span id="more-2909"></span></p>
<h3>New Availability Monitoring Features</h3>
<p><a href="http://blog.newrelic.com/2010/11/23/new-availability-monitoring-feature/">Availability monitoring</a> has several new features. In configuring Ping URLs, you can now specify a substring to match in the response content. If the string is not found, a failure is recorded. You can also disable the SSL certificate validation for a site if you are using a self signed certificate or a non-host matching certificate.</p>
<p><img src="http://newrelicblogs.files.wordpress.com/2011/01/ping_targets_-_new_relic_rpm_normal.jpg?w=600&#038;h=413" border="0" alt="" width="600" height="413" /></p>
<h3>REST API now uses an API key</h3>
<p>Our REST API now uses a generated API key for authorization. Previously, the account license key was used. For accounts which are currently using their license key for API access, the API key will be set initially to the license key so your applications will continue to work without modification. However, for extra security you can now go in and generate a new API key to use, revoking the use of the license key in API calls.</p>
<p><img src="http://newrelicblogs.files.wordpress.com/2011/01/rest_api_normal.jpg?w=600&#038;h=157" border="0" alt="" width="600" height="157" /></p>
<p>You can now temporarily disable pinging on your site using REST calls to disable and re-enable pinging during maintenance windows. Details of the API are specified on the Availability Monitoring configuration page.</p>
<p><img src="http://newrelicblogs.files.wordpress.com/2011/01/rest-api_normal.jpg?w=600&#038;h=202" border="0" alt="" width="600" height="202" /></p>
<h3>REST API on Github</h3>
<p>Our <a href="https://github.com/newrelic/newrelic_api#readme">REST API</a> is now fully documented with Active Resource examples in the <a href="http://www.github.com/newrelic/newrelic_api">New Relic API gem on github</a>.</p>
<p><img src="http://newrelicblogs.files.wordpress.com/2011/01/newrelic_api_on_github_normal.jpg?w=333&#038;h=167" border="0" alt="" width="333" height="167" /></p>
<h3>Unsubscribe links on weekly email reports and incident emails</h3>
<p>We have simplified your ability to unsubscribe from certain emails from New Relic by adding unsubscribe links at the bottom of several types of email messages.</p>
<p><img src="http://newrelicblogs.files.wordpress.com/2011/01/unsubscribe_link_normal.jpg?w=600&#038;h=92" border="0" alt="" width="600" height="92" /></p>
<br />Filed under: <a href='http://newrelicblogs.wordpress.com/category/new-noteworthy/'>New &amp; Noteworthy</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/newrelicblogs.wordpress.com/2909/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/newrelicblogs.wordpress.com/2909/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/newrelicblogs.wordpress.com/2909/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/newrelicblogs.wordpress.com/2909/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/newrelicblogs.wordpress.com/2909/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/newrelicblogs.wordpress.com/2909/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/newrelicblogs.wordpress.com/2909/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/newrelicblogs.wordpress.com/2909/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/newrelicblogs.wordpress.com/2909/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/newrelicblogs.wordpress.com/2909/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/newrelicblogs.wordpress.com/2909/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/newrelicblogs.wordpress.com/2909/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/newrelicblogs.wordpress.com/2909/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/newrelicblogs.wordpress.com/2909/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=newrelicblogs.wordpress.com&amp;blog=6857754&amp;post=2909&amp;subd=newrelicblogs&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://newrelicblogs.wordpress.com/2011/01/14/noteworthy-features-and-rest-api-updates/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/39803055f0a866d533c0ef045ed5da69?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">briand0ll</media:title>
		</media:content>

		<media:content url="http://newrelicblogs.files.wordpress.com/2011/01/ship_it_closeup1.jpg" medium="image">
			<media:title type="html">Buy this awesome card from http://candyspotting.com/index.php/artists/sarah-holbrook/geeky-cards/pixel-ship-it-card.html</media:title>
		</media:content>

		<media:content url="http://newrelicblogs.files.wordpress.com/2011/01/ping_targets_-_new_relic_rpm_normal.jpg" medium="image" />

		<media:content url="http://newrelicblogs.files.wordpress.com/2011/01/rest_api_normal.jpg" medium="image" />

		<media:content url="http://newrelicblogs.files.wordpress.com/2011/01/rest-api_normal.jpg" medium="image" />

		<media:content url="http://newrelicblogs.files.wordpress.com/2011/01/newrelic_api_on_github_normal.jpg" medium="image" />

		<media:content url="http://newrelicblogs.files.wordpress.com/2011/01/unsubscribe_link_normal.jpg" medium="image" />
	</item>
		<item>
		<title>Platform as a Service meets SaaS application performance management</title>
		<link>http://newrelicblogs.wordpress.com/2011/01/13/platform-as-a-service-meets-saas-application-performance-management/</link>
		<comments>http://newrelicblogs.wordpress.com/2011/01/13/platform-as-a-service-meets-saas-application-performance-management/#comments</comments>
		<pubDate>Thu, 13 Jan 2011 17:10:09 +0000</pubDate>
		<dc:creator>New Relic, Inc.</dc:creator>
				<category><![CDATA[Hosting]]></category>
		<category><![CDATA[Partners]]></category>
		<category><![CDATA[Blue Box Group]]></category>
		<category><![CDATA[Brightbox]]></category>
		<category><![CDATA[Engine Yard]]></category>
		<category><![CDATA[Eucalyptus]]></category>
		<category><![CDATA[GigaSpaces]]></category>
		<category><![CDATA[GoGrid]]></category>
		<category><![CDATA[Grid Gain]]></category>
		<category><![CDATA[Heroku]]></category>
		<category><![CDATA[Joyent]]></category>
		<category><![CDATA[Morphlabs]]></category>
		<category><![CDATA[Network Redux]]></category>
		<category><![CDATA[PHP Fog]]></category>
		<category><![CDATA[RightScale]]></category>
		<category><![CDATA[SpeedyRails]]></category>
		<category><![CDATA[Stax Networks]]></category>

		<guid isPermaLink="false">http://blog.newrelic.com/?p=2880</guid>
		<description><![CDATA[A few companies in the platform as a service (PaaS) space have been making news lately and we have enjoyed watching all the positive reports come in, as they invariably involve our close friends and partners. The Heroku/Salesforce news has been a popular topic&#8211;Heroku was one of our early supporters and partners and we wish [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=newrelicblogs.wordpress.com&amp;blog=6857754&amp;post=2880&amp;subd=newrelicblogs&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://newrelicblogs.files.wordpress.com/2011/01/paas_cloud_partners1.png"><img class="alignleft size-medium wp-image-2887" title="PaaS + APM" src="http://newrelicblogs.files.wordpress.com/2011/01/paas_cloud_partners1.png?w=300&#038;h=206" alt="PaaS + APM" width="300" height="206" /></a>A few companies in the platform as a service (PaaS) space have been making news lately and we have enjoyed watching all the positive reports come in, as they invariably involve our close friends and partners. The <a title="Salesforce Acquires Heroku" href="http://tcrn.ch/fCKx3Y" target="_blank">Heroku/Salesforce news</a> has been a popular topic&#8211;<a title="Heroku" href="http://heroku.com/" target="_blank">Heroku</a> was one of our early supporters and partners and we wish them all the best as they help bring developers to <a title="salesforce.com" href="http://www.salesforce.com/">Salesforce.com&#8217;s</a> platform. <a title="PHP Fog" href="http://www.phpfog.com/" target="_blank">PHP Fog</a> and <a title="cloudControl" href="http://cloudcontrol.com/" target="_blank">cloudControl</a> were both mentioned recently in an <a title="PHP Fog raises new round of funding" href="http://tcrn.ch/e5yXaH" target="_blank">article about PHP Fog&#8217;s new funding</a>. Both are partners of ours and we&#8217;ve had an outstanding experience working with them so far. In the midst of all this great news, we&#8217;re seeing a new trend emerge.<br />
<span id="more-2880"></span><br />
Though it&#8217;s still early days, a transformation is occurring wherein PaaS + SaaS APM are combining to create a meaningful shift in web app deployment, delivery and management. This new ecosystem is enabling new businesses to be faster-more productive and more responsive to changes. And it&#8217;s gaining traction with developers by providing the best developer tools “out of the box” so developers can be super productive.</p>
<p>Three years ago when we started the company, we felt that broad adoption of Platform as a Service offerings would include services beyond just a basic platform for customers deploying business-critical apps. We believed the Platform as a Service vendors would start adding value higher and higher in the stack. First a strong platform, then easy deployment, then tools to make the deployed apps the most successful.  This is proving more true than even we believed it would be.</p>
<h4>Flashback warning: You will now be transported back in time to the   era before cloud computing. Please do not adjust your computer screen.</h4>
<p>Remember when the &#8220;Cloud&#8221; was just beginning to take off?  Seems like ancient history now&#8230;the earth’s crust was cooling and dinosaurs were roaming about. Back then, in reality just a couple of years ago, there were far fewer cloud platform vendors in the market then than there are today, with most of them supporting Ruby on Rails. At that time, we began working with folks like Heroku and <a title="Engine Yard" href="http://www.engineyard.com/" target="_blank">Engine Yard</a>, organizations that were pioneering the new Cloud Platform concept. They quickly expressed a desire to provide their customers with real-time app monitoring. They saw the fundamental utility of allowing their support teams to share visibility inside the customer apps running on their platform when potential performance-related issues popped up. This way,  support staff and the customer could efficiently troubleshoot the app together. Not only that, but by giving their customers production monitoring capabilities, visibility and control for apps deployed on their platform transferred back to the rightful owner: the customer.</p>
<h4>This concludes the flashback portion of this post. Please remain calm and continue reading.</h4>
<p>Fast forward to the present&#8211;we are working with most of today&#8217;s leading  PaaS (and several IaaS) providers, many of whom are standardizing on  New Relic as their monitoring tool of choice for their support staff and  for their customers. Most are building New Relic RPM into their  platform as a critical feature, and providing it for free for all their  customers. The list of New Relic partners reads like a who’s who of  Platform as a Service companies and includes <a title="Blue Box Group" href="http://www.blueboxgrp.com/" target="_blank">Blue Box Group</a>, <a title="Brightbox" href="http://www.brightbox.co.uk/" target="_blank">Brightbox</a>, <a title="Engine Yard" href="http://www.engineyard.com/" target="_blank">Engine Yard</a>, <a title="Eucalyptus" href="http://open.eucalyptus.com/" target="_blank">Eucalyptus</a>, <a title="GigaSpaces" href="http://www.gigaspaces.com/" target="_blank">GigaSpaces</a>, <a title="GoGrid" href="http://www.gogrid.com/" target="_blank">GoGrid</a>, <a title="GridGain" href="http://www.gridgain.com/" target="_blank">GridGain</a>, <a title="Heroku" href="http://heroku.com/" target="_blank">Heroku</a>, <a title="Joyent" href="http://www.joyent.com/" target="_blank">Joyent</a>, <a title="Morphlabs" href="http://www.mor.ph/" target="_blank">Morphlabs</a>, <a title="Network Redux" href="http://www.networkredux.com/" target="_blank">Network Redux</a>, <a title="PHP Fog" href="http://www.phpfog.com/" target="_blank">PHP Fog</a>, <a title="RightScale" href="http://www.rightscale.com/" target="_blank">RightScale</a>, <a title="SpeedyRails" href="http://www.speedyrails.com/" target="_blank">SpeedyRails</a>, <a title="Stax Networks" href="http://www.stax.net/" target="_blank">Stax Networks</a> (Cloudbees), and <a title="Webbynode" href="http://www.webbynode.com/" target="_blank">Webbynode</a> (And we have forged relationships with IaaS providers as well including <a title="Amazon AWS" href="http://aws.amazon.com/" target="_blank">Amazon AWS</a> and <a title="Windows Azure" href="http://www.microsoft.com/windowsazure/windowsazure/" target="_blank">MSFT Windows Azure</a>, <a title="Rackspace" href="http://www.rackspace.com/index.php" target="_blank">Rackspace</a>, and <a title="VMware" href="http://www.vmware.com/" target="_blank">VMware</a>).</p>
<h3>Benefits of of adding app management to cloud platforms</h3>
<p>Real-time visibility into apps deployed on these platforms has several advantages:</p>
<ul>
<li>Reduces support calls by empowering customers with application management capabilities  to understand and tune their own app.</li>
<li>When support calls do occur, it enables support staff with shared realtime visibility into the customer&#8217;s app , making their support calls fast, efficient, clear and effective,  thus driving down the cost of supporting the customer.</li>
<li>Provides visibility that proves the performance of the Platform, and helps the customer optimize their app to make best use of the Platform Resources, which we all know often have different requirements than “in-house” hardware.</li>
<li>Helps drive overall customer application success, making the customer a happy camper, which in turn, drives PaaS provider&#8217;s success as customer&#8217;s traffic increases and they increase deployments.</li>
<li>Adds functionality to the Platform, enabling the PaaS provider to continue to add features higher and higher in the stack, without necessarily hiring a team of people to learn the complicated Application Management space.</li>
</ul>
<p>As the sun continues to rise on the Cloud (wait, what?), we all believe that more and more organizations will migrate their business-critical apps to the Cloud.  The cloud and the platforms on which companies are deploying their apps, provide tremendous advantages. Adding shared insight into the health and availability of these apps gives PaaS providers and their customers a common language for collaboratively managing and maintaining successful apps.  In the immortal words of Microsoft (and we can’t believe we&#8217;re saying this): “To The Cloud!”</p>
<br />Filed under: <a href='http://newrelicblogs.wordpress.com/category/hosting/'>Hosting</a>, <a href='http://newrelicblogs.wordpress.com/category/partners/'>Partners</a> Tagged: <a href='http://newrelicblogs.wordpress.com/tag/blue-box-group/'>Blue Box Group</a>, <a href='http://newrelicblogs.wordpress.com/tag/brightbox/'>Brightbox</a>, <a href='http://newrelicblogs.wordpress.com/tag/engine-yard/'>Engine Yard</a>, <a href='http://newrelicblogs.wordpress.com/tag/eucalyptus/'>Eucalyptus</a>, <a href='http://newrelicblogs.wordpress.com/tag/gigaspaces/'>GigaSpaces</a>, <a href='http://newrelicblogs.wordpress.com/tag/gogrid/'>GoGrid</a>, <a href='http://newrelicblogs.wordpress.com/tag/grid-gain/'>Grid Gain</a>, <a href='http://newrelicblogs.wordpress.com/tag/heroku/'>Heroku</a>, <a href='http://newrelicblogs.wordpress.com/tag/joyent/'>Joyent</a>, <a href='http://newrelicblogs.wordpress.com/tag/morphlabs/'>Morphlabs</a>, <a href='http://newrelicblogs.wordpress.com/tag/network-redux/'>Network Redux</a>, <a href='http://newrelicblogs.wordpress.com/tag/php-fog/'>PHP Fog</a>, <a href='http://newrelicblogs.wordpress.com/tag/rightscale/'>RightScale</a>, <a href='http://newrelicblogs.wordpress.com/tag/speedyrails/'>SpeedyRails</a>, <a href='http://newrelicblogs.wordpress.com/tag/stax-networks/'>Stax Networks</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/newrelicblogs.wordpress.com/2880/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/newrelicblogs.wordpress.com/2880/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/newrelicblogs.wordpress.com/2880/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/newrelicblogs.wordpress.com/2880/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/newrelicblogs.wordpress.com/2880/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/newrelicblogs.wordpress.com/2880/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/newrelicblogs.wordpress.com/2880/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/newrelicblogs.wordpress.com/2880/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/newrelicblogs.wordpress.com/2880/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/newrelicblogs.wordpress.com/2880/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/newrelicblogs.wordpress.com/2880/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/newrelicblogs.wordpress.com/2880/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/newrelicblogs.wordpress.com/2880/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/newrelicblogs.wordpress.com/2880/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=newrelicblogs.wordpress.com&amp;blog=6857754&amp;post=2880&amp;subd=newrelicblogs&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://newrelicblogs.wordpress.com/2011/01/13/platform-as-a-service-meets-saas-application-performance-management/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/8dc851fc3aa0116952c5ced60e8ca828?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">newrelicblogs</media:title>
		</media:content>

		<media:content url="http://newrelicblogs.files.wordpress.com/2011/01/paas_cloud_partners1.png?w=300" medium="image">
			<media:title type="html">PaaS + APM</media:title>
		</media:content>
	</item>
		<item>
		<title>App Management Anti-Pattern: Monitoring a subset of hosts</title>
		<link>http://newrelicblogs.wordpress.com/2011/01/12/app-management-anti-pattern-monitoring-a-subset-of-hosts/</link>
		<comments>http://newrelicblogs.wordpress.com/2011/01/12/app-management-anti-pattern-monitoring-a-subset-of-hosts/#comments</comments>
		<pubDate>Wed, 12 Jan 2011 16:00:10 +0000</pubDate>
		<dc:creator>Brian Doll</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Performance Tuning]]></category>

		<guid isPermaLink="false">https://newrelicblogs.wordpress.com/?p=2873</guid>
		<description><![CDATA[Working with customers to solve support issues is a great learning experience for our engineers. Not only do we get valuable feedback on features that shapes our product roadmap, but we also get insight into how our customers use New Relic in their unique environments. And that&#8217;s also how we learn about application management anti-patterns. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=newrelicblogs.wordpress.com&amp;blog=6857754&amp;post=2873&amp;subd=newrelicblogs&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Working with customers to solve support issues is a great learning experience for our engineers. Not only do we get valuable feedback on features that shapes our product roadmap, but we also get insight into how our customers use New Relic in their unique environments. And that&#8217;s also how we learn about application management anti-patterns.  </p>
<p><span id="more-2873"></span></p>
<h3>Anti-Pattern: Monitoring a subset of hosts</h3>
<p>We occasionally work with customers who are monitoring a subset of hosts in production, rather than all of their production hosts. How do we know they&#8217;re not monitoring all of their hosts? Several specific issues tend to crop up when you only manage parts of your application.</p>
<h3>Missing Transactions</h3>
<p>Murphy&#8217;s law says that critical business transactions are bound to happen on the unmanaged hosts. <a href="http://www.newrelic.com/web-app-monitoring-features.html#Error-Tracking">Errors</a>, <a href="http://www.newrelic.com/web-app-monitoring-features.html#Transaction-Traces">slow requests</a> and <a href="http://www.newrelic.com/web-app-monitoring-features.html#Transaction-Traces">poorly performing queries</a> are all invisible when they happen on unmanaged hosts. By monitoring all hosts, you’ll never miss another poorly performing transaction. </p>
<h3>Seeing only parts of the whole picture</h3>
<p><img src="http://newrelicblogs.files.wordpress.com/2011/01/host-delta_.jpg?w=291&#038;h=130" alt="" title="variability within hosts" border="0" width="291" height="130" style="float:right;" /> By only monitoring a subset of hosts, virtually all of the metrics you see in New Relic would be skewed. Instead of seeing the <a href="http://www.newrelic.com/web-app-monitoring-features.html#ApplicationOverview">throughput of your entire application</a>, you see the throughput of activity on just a few hosts.  Even with &#8220;fair&#8221; load balancing across a number of hosts, distribution is not typically equal.  We consistently see a level of variability in response time and throughout across hosts supporting a given application.</p>
<h3>Scalability and Optimization features work best with a complete picture</h3>
<p><img src="http://newrelicblogs.files.wordpress.com/2011/01/scalability-analysis1.jpg?w=300&#038;h=190" alt="" title="how scalable is this service?" border="0" width="300" height="190" style="float:right;" /> Our <a href="http://newrelic.com/web-app-monitoring-pricing.html">Gold</a> level of service includes <a href="http://www.newrelic.com/web-app-monitoring-features.html#Capacity-Analysis">capacity</a> and <a href="http://www.newrelic.com/web-app-monitoring-features.html#Scalability-Analysis">scalability reporting</a> for optimizing application performance.  These features are incredibly valuable in helping you scale an application over time and proactively manage performance.  These features work best, however, with a complete picture of your application&#8217;s performance.  It&#8217;s very difficult to extrapolate capacity analysis, for example, with only a limited amount of information.</p>
<h3>Gathering performance metrics in pre-production environments</h3>
<p>We believe managing performance in production is essential.  Real performance data comes from real customers using your application every day.  For highly performance-sensitive environments with very large amounts of traffic, we often see customers also deploying to QA and or load testing environments before releasing to production.  In these environments they may run synthetic load tests, specific stress tests or other forms of quality assurance that aim to find the &#8220;low hanging fruit&#8221; for functional and performance related issues.</p>
<p>We recommend that customers include the name of the non-production environment in the application name, so they are able to track the performance of these environments separately.  For example, for a production application named &#8220;My Application&#8221;, you might configure the application name in your load testing environment to &#8220;My Application (load testing)&#8221;.</p>
<h3>Spread the love of New Relic everywhere!</h3>
<p>Having performance management available across your entire application is the best way to mitigate application problems while optimizing for long-term scalability.  <a href="https://rpm.newrelic.com/signup/18">Sign up for New Relic today</a> or <a href="https://rpm.newrelic.com/subscriptions">upgrade your existing service</a> to cover your entire environment.  You&#8217;ll be glad you did!</p>
<br />Filed under: <a href='http://newrelicblogs.wordpress.com/category/agile/'>Agile</a>, <a href='http://newrelicblogs.wordpress.com/category/performance-tuning/'>Performance Tuning</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/newrelicblogs.wordpress.com/2873/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/newrelicblogs.wordpress.com/2873/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/newrelicblogs.wordpress.com/2873/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/newrelicblogs.wordpress.com/2873/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/newrelicblogs.wordpress.com/2873/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/newrelicblogs.wordpress.com/2873/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/newrelicblogs.wordpress.com/2873/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/newrelicblogs.wordpress.com/2873/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/newrelicblogs.wordpress.com/2873/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/newrelicblogs.wordpress.com/2873/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/newrelicblogs.wordpress.com/2873/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/newrelicblogs.wordpress.com/2873/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/newrelicblogs.wordpress.com/2873/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/newrelicblogs.wordpress.com/2873/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=newrelicblogs.wordpress.com&amp;blog=6857754&amp;post=2873&amp;subd=newrelicblogs&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://newrelicblogs.wordpress.com/2011/01/12/app-management-anti-pattern-monitoring-a-subset-of-hosts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/39803055f0a866d533c0ef045ed5da69?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">briand0ll</media:title>
		</media:content>

		<media:content url="http://newrelicblogs.files.wordpress.com/2011/01/host-delta_.jpg" medium="image">
			<media:title type="html">variability within hosts</media:title>
		</media:content>

		<media:content url="http://newrelicblogs.files.wordpress.com/2011/01/scalability-analysis1.jpg" medium="image">
			<media:title type="html">how scalable is this service?</media:title>
		</media:content>
	</item>
		<item>
		<title>Which web transactions are the slowest, and why are they so slow?</title>
		<link>http://newrelicblogs.wordpress.com/2011/01/07/which-web-transactions-are-the-slowest-and-why-are-they-so-slow/</link>
		<comments>http://newrelicblogs.wordpress.com/2011/01/07/which-web-transactions-are-the-slowest-and-why-are-they-so-slow/#comments</comments>
		<pubDate>Fri, 07 Jan 2011 16:00:31 +0000</pubDate>
		<dc:creator>Brian Doll</dc:creator>
				<category><![CDATA[Did You Know]]></category>
		<category><![CDATA[Performance Tuning]]></category>
		<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">https://newrelicblogs.wordpress.com/?p=2860</guid>
		<description><![CDATA[Improving application performance is an ongoing process. The easiest way to prioritize performance work is by focusing on the slowest piece first. Once we&#8217;ve improved performance there, we can look to the next slowest thing, chipping away at each successive bottleneck. Does it really matter which transaction is the “slowest”? Maybe not. Every app tends [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=newrelicblogs.wordpress.com&amp;blog=6857754&amp;post=2860&amp;subd=newrelicblogs&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Improving application performance is an ongoing process.  The easiest way to prioritize performance work is by focusing on the slowest piece first.  Once we&#8217;ve improved performance there, we can look to the next slowest thing, chipping away at each successive bottleneck.</p>
<h3>Does it really matter which transaction is the “slowest”?</h3>
<p>Maybe not. Every app tends to have a few administrative pages that are usually reserved for internal use. These tend to be reporting type pages that may take quite a long time to process. While these pages might be the <em>slowest</em>, they are not the most impactful to your customers.</p>
<p><span id="more-2860"></span></p>
<h3>Which transaction is the slowest for the majority of users?</h3>
<p>Our <a href="http://www.newrelic.com/web-app-monitoring-features.html#Web-Transaction-Analysis">Web Transaction Analysis</a> feature displays transactions sorted by the most <em>time consuming</em> by default.  A transaction&#8217;s time consumption is measured by the product of its response time and the number of times it is called within a period of time.</p>
<p><img style="display:block;margin-left:auto;margin-right:auto;" src="http://newrelicblogs.files.wordpress.com/2011/01/web-transactions.jpg?w=488&#038;h=213" alt="" title="" border="0" width="488" height="213" /></p>
<p>Here we see that this app spends 14% of its time in the <code>Admin::OrdersController#index</code> transaction.  This may not be the most frequently called transaction, nor the slowest transaction. By considering both factors, however, we can see that improving its performance would be the best place to start for this app.</p>
<p>Your web transactions can also be sorted in other ways.  We currently offer sorting by &#8220;Slowest Average Response Time&#8221;, &#8220;Apdex most dissatisfying&#8221;, &#8220;Highest Throughput&#8221; and &#8220;Standard Deviation&#8221;.</p>
<h3>Transaction Details</h3>
<p>For any web transaction, we get an overview and detailed breakdown of how that transaction performs.</p>
<p>We see that his transaction has a reasonable <a href="http://www.newrelic.com/web-app-monitoring-features.html#ApdexScoring">Apdex</a> score of 0.77, with an average response time of 293 ms.</p>
<p><img style="display:block;margin-left:auto;margin-right:auto;" src="http://newrelicblogs.files.wordpress.com/2011/01/transaction-overview.jpg?w=600&#038;h=60" alt="" title="" border="0" width="600" height="60" /></p>
<p>We can also see how this transaction has performed within the current time window (set to the last 30 minutes).  While throughput stayed relatively consistent, response time shows nearly a tripling from fastest to slowest.  This is reflected in the Apdex score, which dips into the &#8220;poor&#8221; region briefly.</p>
<p><img style="display:block;margin-left:auto;margin-right:auto;" src="http://newrelicblogs.files.wordpress.com/2011/01/transaction-overview-details.jpg?w=600&#038;h=402" alt="" title="" border="0" width="600" height="402" /></p>
<p>As we continue down the page, we see a breakdown of performance for this transaction type.  We can quickly see how much time is being spent in each component or service used in this transaction.  In this case, 61% of our time is being spent processing the Rails controller action itself, while around 30% of the time is spent in the database.</p>
<p><img style="display:block;margin-left:auto;margin-right:auto;" src="http://newrelicblogs.files.wordpress.com/2011/01/transaction-breakdown.jpg?w=600&#038;h=434" alt="" title="" border="0" width="600" height="434" /></p>
<h3>Review</h3>
<p>With New Relic, it&#8217;s incredibly easy to find performance bottlenecks in your web applications.  We&#8217;ll guide you right to the slowest parts of your app, so you can improve response time making every customer a happier customer.</p>
<br />Filed under: <a href='http://newrelicblogs.wordpress.com/category/did-you-know/'>Did You Know</a>, <a href='http://newrelicblogs.wordpress.com/category/performance-tuning/'>Performance Tuning</a>, <a href='http://newrelicblogs.wordpress.com/category/tutorials/'>Tutorials</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/newrelicblogs.wordpress.com/2860/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/newrelicblogs.wordpress.com/2860/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/newrelicblogs.wordpress.com/2860/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/newrelicblogs.wordpress.com/2860/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/newrelicblogs.wordpress.com/2860/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/newrelicblogs.wordpress.com/2860/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/newrelicblogs.wordpress.com/2860/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/newrelicblogs.wordpress.com/2860/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/newrelicblogs.wordpress.com/2860/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/newrelicblogs.wordpress.com/2860/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/newrelicblogs.wordpress.com/2860/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/newrelicblogs.wordpress.com/2860/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/newrelicblogs.wordpress.com/2860/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/newrelicblogs.wordpress.com/2860/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=newrelicblogs.wordpress.com&amp;blog=6857754&amp;post=2860&amp;subd=newrelicblogs&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://newrelicblogs.wordpress.com/2011/01/07/which-web-transactions-are-the-slowest-and-why-are-they-so-slow/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/39803055f0a866d533c0ef045ed5da69?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">briand0ll</media:title>
		</media:content>

		<media:content url="http://newrelicblogs.files.wordpress.com/2011/01/web-transactions.jpg" medium="image" />

		<media:content url="http://newrelicblogs.files.wordpress.com/2011/01/transaction-overview.jpg" medium="image" />

		<media:content url="http://newrelicblogs.files.wordpress.com/2011/01/transaction-overview-details.jpg" medium="image" />

		<media:content url="http://newrelicblogs.files.wordpress.com/2011/01/transaction-breakdown.jpg" medium="image" />
	</item>
		<item>
		<title>The Fallacies of Distributed Computing Reborn: The Cloud Era</title>
		<link>http://newrelicblogs.wordpress.com/2011/01/06/the-fallacies-of-distributed-computing-reborn-the-cloud-era/</link>
		<comments>http://newrelicblogs.wordpress.com/2011/01/06/the-fallacies-of-distributed-computing-reborn-the-cloud-era/#comments</comments>
		<pubDate>Thu, 06 Jan 2011 16:00:33 +0000</pubDate>
		<dc:creator>Brian Doll</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[Performance Tuning]]></category>

		<guid isPermaLink="false">http://blog.newrelic.com/?p=2807</guid>
		<description><![CDATA[Seventeen years ago, long before Sun Microsystems was putting the &#8220;dot in dot-com&#8221;, L. Peter Deutsch, then a Fellow at Sun, wrote The Fallacies of Distributed Computing, a classic and often quoted list of assumptions that programmers may falsely believe when building distributed systems. The fallacies are: The network is reliable Latency is zero Bandwidth [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=newrelicblogs.wordpress.com&amp;blog=6857754&amp;post=2807&amp;subd=newrelicblogs&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img src="http://newrelicblogs.files.wordpress.com/2011/01/dc.jpg?w=550" alt="" title="Photo by: Robert Scoble"   class="alignright size-full wp-image-2831" />Seventeen years ago, long before Sun Microsystems was putting the <em>&#8220;dot in dot-com&#8221;</em>, <a href="http://en.wikipedia.org/wiki/L._Peter_Deutsch">L. Peter Deutsch</a>, then a Fellow at Sun, wrote <a href="http://blogs.sun.com/jag/resource/Fallacies.html">The Fallacies of Distributed Computing</a>, a classic and often quoted list of assumptions that programmers may falsely believe when building distributed systems.  </p>
<p>The fallacies are:</p>
<ol>
<li>The network is reliable</li>
<li>Latency is zero</li>
<li>Bandwidth is infinite</li>
<li>The network is secure</li>
<li>Topology doesn&#8217;t change</li>
<li>There is one administrator</li>
<li>Transport cost is zero</li>
<li>The network is homogeneous</li>
</ol>
<h3>TL;DR</h3>
<p>The Fallacies of Distributed Computing applies directly to web applications, and is especially important when developing applications hosted in the cloud.  Read on to see just how relevant they are today.<span id="more-2807"></span><br />
<h3>What is a Distributed System?</h3>
<blockquote><p>A collection of independent computers that appears to its users as a single coherent system<br />&nbsp;&nbsp;- Tanenbaum and Steen: <a href="http://www.cs.vu.nl/~ast/books/ds1/">Distributed Systems: Principles and Paradigms</a></strong>
</p></blockquote>
<blockquote><p>You know you have a distributed system when the crash of a computer you’ve never<br />
heard of stops you from getting any work done.<br />
&nbsp;&nbsp;- Leslie Lamport : <a href="http://www.cl.cam.ac.uk/~rja14/book.html">Security Engineering: A Guide to Building Dependable Distributed Systems</a>
</p></blockquote>
<blockquote><p>A distributed system is an application that executes a collection of protocols to coordinate the actions of multiple processes on a network, such that all components cooperate together to perform a single or small set of related tasks.<br />
&nbsp;&nbsp;- <a href="http://code.google.com/edu/parallel/dsd-tutorial.html">Introduction to Distributed System Design &#8211; Google Code University</a>
</p></blockquote>
<h3>Web Apps Are Distributed Systems</h3>
<p>Web applications are composed of multiple systems working closely together.  Proxy servers, cache servers, load balancers, web servers, application servers and databases are all likely to be involved in processing a single web request.  Many web applications also leverage other web-APIs. An application may show your <a href="http://developers.facebook.com/">friends on Facebook</a>, allow you to <a href="http://apiwiki.twitter.com/w/page/22554648/FrontPage">post to Twitter</a>, or store some files on <a href="http://aws.amazon.com/s3/">Amazon&#8217;s S3 storage service</a>. </p>
<h3>Web Apps in The Cloud</h3>
<p>Ignore the fallacies at your own peril.  For a little while, you might pretend that some of the fallacies don&#8217;t apply to you when you host applications in datacenters with your own hardware.  Hosting applications in the cloud provides no such grace period.  Failure will happen.  Hosting in the cloud, while being the easiest way to scale a web application, means facing up to these fallacies immediately.</p>
<p>When Netflix moved to the cloud, they were <a href="http://techblog.netflix.com/2010/12/5-lessons-weve-learned-using-aws.html">quick to realize that they could not ignore the fallacies</a>:</p>
<blockquote><p>
&#8220;I knew to expect higher rates of individual instance failure in AWS, but I hadn’t thought through some of these sorts of implications.&#8221;</p>
<p>&#8220;AWS networking has more variable latency. We’ve had to be much more structured about “over the wire” interactions, even as we’ve transitioned to a more highly distributed architecture.&#8221;</p>
<p>&#8220;Co-tenancy can introduce variance in throughput at any level of the stack. You’ve got to either be willing to abandon any specific subtask, or manage your resources within AWS to avoid co-tenancy where you must.&#8221;</p>
<p>&#8220;We’re designing each distributed system to expect and tolerate failure from other systems on which it depends.&#8221;</p>
<p>&nbsp;&nbsp; &#8211; John Ciancutti, Vice President of Personalization Technology at Netflix, Inc
</p></blockquote>
<h3>The Cloud vs. The Fallacies</h3>
<p>The Fallacies of Distributed Computing are even more important to consider when building web applications in the cloud.  While it seems obvious that the cloud highlights these fallacies more than ever (as Netflix noted recently), not everyone agrees.  <a href="http://www.tbray.org/ongoing">Tim Bray</a> is currently an Android Developer Advocate at Google, former Director of Web Technologies at Sun and editor of the W3C XML specification.  I was surprised to find a post from 2009, <a href="http://www.tbray.org/ongoing/When/200x/2009/05/25/HTTP-and-the-Fallacies-of-Distributed-Computing">&#8220;The Web vs. the Fallacies&#8221;</a>, where Tim suggests that the Fallacies are much less important to systems built on the web.    I was even more surprised that he <a href="http://twitter.com/timbray/status/15548456986742784">still agrees with that assertion</a> when <a href="http://twitter.com/briandoll/status/15496214912966656">I asked him</a>.   Let&#8217;s see if I can change Tim&#8217;s mind.</p>
<h2>Disputing The Fallacies: The Cloud Era</h2>
<h3>1. The network is reliable</h3>
<p>When you consume web APIs from <a href="http://developers.facebook.com/">Facebook</a>, <a href="http://apiwiki.twitter.com/w/page/22554648/FrontPage">Twitter</a> or <a href="http://aws.amazon.com/">Amazon</a>, &#8220;the network&#8221; is the internet.  How reliable, within a given performance window, is the aggregate of all the web services you interact with?  Tim Bray suggests &#8220;if a <code>GET</code> gets a network blowup, just do it again&#8221;.  Sure, we all do that.  If a page loads really slowly and appears to hang, we just refresh. Do you do that with each of your services and API calls?</p>
<p>The network is not reliable.  When you add up all the points of failure for all the various services and APIs you use, the odds of failure are not just high, they are a given.  Instead, build an app that can function at reduced capacity when a given service is offline.</p>
<h3>2. Latency is zero</h3>
<p>Try as we might, there just isn&#8217;t a way to improve the speed of light.  Serving customers half-way around the globe affects performance in big ways.  Moving services closer to your customers via cloud availability zones and content delivery networks can help tremendously.  Ignore latency online and you&#8217;re likely throwing away customers from half the globe.</p>
<h3>3. Bandwidth is infinite</h3>
<p><img src="http://newrelicblogs.files.wordpress.com/2011/01/chart_att_mobile.gif?w=550" alt="" title=""   class="alignright size-full wp-image-2814" />Not long ago everyone had high-speed internet access at home. (Not everyone, of course.  The <a href="http://en.wikipedia.org/wiki/Digital_divide">digital divide</a> is real.) Wireless hotspots filled every home and apartment and the web felt fast.  A few years ago this started to change.  Starting with the iPhone, web applications were being used not just over high-speed internet connections, but over phone networks.  Using web apps on mobile devices and tablets reminds us that bandwidth problems did not disappear with the dial-up modem.  Stay mindful of how much data you&#8217;re shipping across the wire and all your users will be grateful.  For a great read on how The Fallacies apply to mobile development, check out this great series of posts by our friends at <a href="http://blog.carbonfive.com/2010/11/17/fallacy-1-the-network-is-reliabl/">Carbon Five on iPhone Distributed Computing Fallacies</a>.</p>
<h3>4. The network is secure</h3>
<p>Network security can be a full-time job for a prominent web business.  <a href="http://en.wikipedia.org/wiki/Transport_Layer_Security">Transport layer security</a> is great, except when we leak security tokens over insecure connections.  <a href="http://codebutler.com/firesheep">Firesheep</a> brought some necessary attention last year to the prevalence of private security tokens littering insecure connections, ripe for snooping by the guy in the corner of your favorite coffee shop sipping chai.  The network is not secure, and the more we move our lives online the higher the risk of exposure.  Keep a <a href="http://www.schneier.com/blog/archives/2008/03/the_security_mi_1.html">security mindset</a>  when developing your apps and keep your users safe.</p>
<h3>5. Topology doesn&#8217;t change</h3>
<p>One of the biggest benefits of moving applications to the cloud is the ability to change topology at will.  Add new app servers.  Upgrade (and possibly change the architecture of) the CPU on your database server in the middle of the day.  Add reverse proxy servers, cache servers, change CDN providers, migrate availability zones.  Topology changes all the time.  Depending on a static infrastructure design not only limits your ability to respond to change, it increases the likelihood of site-wide outages.</p>
<h3>6. There is one administrator</h3>
<p>Of course there isn&#8217;t just one administrator.  Even with applications hosted in your own private datacenter, your applications are likely interacting with systems outside your administrative control.  These systems may have performance, availability or security issues that you have no direct influence over.  Staying mindful that these systems are beyond your control can help you ensure they have minimal impact on your services when they are unresponsive.</p>
<h3>7. Transport cost is zero</h3>
<p>Not only is transport cost not zero, it&#8217;s priced like any other commodity and can be purchased per transaction, per gigabyte, per compute hour, etc.  Cloud storage costs (and transport of that storage) are a major component of application hosting costs, just ask anyone doing video streaming online how close to zero their transport costs are.</p>
<h3>8. The network is homogeneous</h3>
<p>This fallacy was added to the original seven by James Gosling, creator of Java, in 1997.  The best part of this fallacy is that it might actually be true.  Almost.  Between <a href="http://en.wikipedia.org/wiki/Representational_State_Transfer">REST</a> and <a href="http://en.wikipedia.org/wiki/Json">JSON</a> <a href="http://en.wikipedia.org/wiki/API">APIs</a>, have you ever had to think about the implementation of an external service, beyond satisfying your curiosity?  You&#8217;re much more likely to see <a href="http://www.google.com/#sclient=psy&amp;q=invalid+json">libraries producing invalid messages</a> than you are operating systems playing a role.</p>
<h3>Building performant distributed web applications is hard</h3>
<p>The Fallacies were coined 17 years ago, but they apply just as well today.  Back then folks might have been fooled into actually believing them, but we&#8217;re smarter than that, right?  Knowing what gotchas await our web applications, most notably those hosted in the cloud, can help us build better, faster and more performant applications.  Isn&#8217;t that what we all want?</p>
<br />Filed under: <a href='http://newrelicblogs.wordpress.com/category/agile/'>Agile</a>, <a href='http://newrelicblogs.wordpress.com/category/cloud-computing/'>Cloud Computing</a>, <a href='http://newrelicblogs.wordpress.com/category/performance-tuning/'>Performance Tuning</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/newrelicblogs.wordpress.com/2807/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/newrelicblogs.wordpress.com/2807/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/newrelicblogs.wordpress.com/2807/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/newrelicblogs.wordpress.com/2807/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/newrelicblogs.wordpress.com/2807/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/newrelicblogs.wordpress.com/2807/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/newrelicblogs.wordpress.com/2807/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/newrelicblogs.wordpress.com/2807/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/newrelicblogs.wordpress.com/2807/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/newrelicblogs.wordpress.com/2807/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/newrelicblogs.wordpress.com/2807/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/newrelicblogs.wordpress.com/2807/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/newrelicblogs.wordpress.com/2807/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/newrelicblogs.wordpress.com/2807/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=newrelicblogs.wordpress.com&amp;blog=6857754&amp;post=2807&amp;subd=newrelicblogs&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://newrelicblogs.wordpress.com/2011/01/06/the-fallacies-of-distributed-computing-reborn-the-cloud-era/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/39803055f0a866d533c0ef045ed5da69?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">briand0ll</media:title>
		</media:content>

		<media:content url="http://newrelicblogs.files.wordpress.com/2011/01/dc.jpg" medium="image">
			<media:title type="html">Photo by: Robert Scoble</media:title>
		</media:content>

		<media:content url="http://newrelicblogs.files.wordpress.com/2011/01/chart_att_mobile.gif" medium="image" />
	</item>
	</channel>
</rss>
