<?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/"
	>

<channel>
	<title>Gojko Adzic &#187; qcon</title>
	<atom:link href="http://gojko.net/tag/qcon/feed/" rel="self" type="application/rss+xml" />
	<link>http://gojko.net</link>
	<description>Building software that matters</description>
	<lastBuildDate>Tue, 31 Jan 2012 09:07:39 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>QCon London 2009: Final thoughts</title>
		<link>http://gojko.net/2009/03/17/qcon-london-2009-final-thoughts/</link>
		<comments>http://gojko.net/2009/03/17/qcon-london-2009-final-thoughts/#comments</comments>
		<pubDate>Tue, 17 Mar 2009 17:16:32 +0000</pubDate>
		<dc:creator>gojko</dc:creator>
				<category><![CDATA[articles]]></category>
		<category><![CDATA[qcon]]></category>
		<category><![CDATA[qconlondon]]></category>

		<guid isPermaLink="false">http://gojko.net/?p=819</guid>
		<description><![CDATA[QCon London 2009 took place last week at the Queen Elisabeth II conference centre, reconfirming QCon&#8217;s place as the undisputed champion of IT conferences in the UK. With a really fantastic line-up of speakers and very strong technical content at the bleeding edge of software development today, the conference managed...]]></description>
			<content:encoded><![CDATA[<p>QCon London 2009 took place last week at the Queen Elisabeth II conference centre, reconfirming QCon&#8217;s place as the undisputed champion of IT conferences in the UK. With a really fantastic line-up of speakers and very strong technical content at the bleeding edge of software development today, the conference managed to attract quite a large audience. I don&#8217;t know the official figures but my impression was that 400-500 people were constantly there, which is a real achievement especially since very few companies have money to spend this year on conferences.<span id="more-819"></span></p>
<p>Although there was no central theme of the conference, web as an enterprise platform and scaling out systems seemed to be the topics that attracted most people. Apart from that, the conference had really strong DDD and agile development line-ups as well. Keynotes were a lot weaker, although the speakers were impressive and I probably expected too much from them. Sir C.A.R. Hoare opened the conference but his talk was a bit too academic for my taste, discussing how computer science and software engineering can help each-other. Martin Fowler talked about the US presidential campaign and how software helped Obama&#8217;s supporters reach out into the communities and help them organise better. This talk would probably be much more interesting for a US conference than a UK one.</p>
<p>I did two talks. One on <a href='http://gojko.net/2009/03/13/qcon-london-2009-slides-from-my-talk-slim-and-the-future-of-fitnesse/'>Slim and the future of FitNesse</a> (thanks a lot to <a href='http://www.skillsmatter.com'>Skills Matter</a> for giving me a slot they sponsored to talk about something I&#8217;m passionate about) and one on <a href='http://gojko.net/2009/03/13/qcon-london-2009-slides-from-messaging-is-not-just-for-investment-banks/'>using messaging to improve web architectures</a>. With such a focus on Web, I did not really know how this talk would be received, since it was partially based on challenging the idea that web apps are a golden hammer that can be used to solve any problem. On the end, I got the feeling that people <a href='http://twitter.com/madwilliamflint/statuses/1324059963'>enjoyed it</a> and <a href='http://twitter.com/tastapod/statuses/1322295229'>got a few laughs as well</a>, so I&#8217;m glad that I chose that for the subject.</p>
<p>Curiously, QCon in the UK attracts lots of US based speakers so this gave me a chance both to listen to some people I don&#8217;t usually meet and to catch up with lots of folks that I only knew online or met at Agile 2008. I decided not to go to Agile 2009, so I&#8217;m really grateful for the chance to meet colleagues from the other side of the Atlantic at this conference.</p>
<p>I really liked the venue, primarily because there were lots of power outlets everywhere, so I did not have to worry about recharging my laptop once the battery dies. Because of that, I was able to take notes in an electronic form and review the talks on my blog. I reviewed almost all the talks that I attended in the first two days. On the third day I mostly prepared the slides for my talk in the evening so I only reviewed one session, and published that a few days later. But in general, I published reviews within minutes after the talks ended (and once <a href='http://twitter.com/mtnygard/statuses/1316935403'>even before the question time finished</a>). In addition to causing me to be called a <a href='http://twitter.com/mtnygard/statuses/1310072361'>monster</a>, quite a few people thanked me for covering the conference so efficiently (<a href='http://tech.groups.yahoo.com/group/domaindrivendesign/message/11409'>1</a> <a href='http://twitter.com/robbowley/statuses/1311217052'>2</a> <a href='http://twitter.com/pkirkham/statuses/1311191168'>3</a> <a href='http://gojko.net/2009/03/12/qcon-london-2009-eric-evans-what-ive-learned-about-ddd-since-the-book/#comment-42322'>4</a>). I&#8217;m glad that you liked it and I hope you&#8217;ll keep coming back to this blog for more interesting stuff in the future. If you missed any of the reviews, you can find them <a href="/tag/qcon">here</a>.</p>
<p>There were lots of WiFi hotspots with free access, but because people moved around a lot sometimes it was hard to find a hotspot with available DHCP leases, but in general this worked OK as well (as confirmed by the <a href='http://search.twitter.com/search?q=%23qcon'>huge amount of tweets marked with #qcon</a>). On another note, although there was a cloakroom on the ground floor, I spent the first day carrying my coat with me all the time, and I noticed lots of people doing the same during all three days, so if there&#8217;s one thing I&#8217;d suggest to the organisers for next year, it would be to either organise a cloakroom on the conference reception floor or clearly mark where the cloakroom is downstairs.</p>
<p>To my great surprise, Dan North (who started the whole BDD initiative) and one of the people I respect the most in the industry urged people to read my book <a href='http://acceptancetesting.info/the-book'>Bridging the communication gap</a>  which was absolutely amazing. Thanks a lot for this, I really appreciate it!</p>
<p>Altogether, I really enjoyed the conference. Trifork &#038; InfoQ &#8211; you did a fantastic job. Thanks a lot for inviting me to talk as well and I&#8217;m looking forward to the conference next year.</p>
<p><i>I covered QCon extensively on this blog. Click here to <a href='/tag/qcon'>read the reviews and news</a> from the conference.</i></p>
]]></content:encoded>
			<wfw:commentRss>http://gojko.net/2009/03/17/qcon-london-2009-final-thoughts/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>QCon London 2009: Upgrading Twitter without service disruptions</title>
		<link>http://gojko.net/2009/03/16/qcon-london-2009-upgrading-twitter-without-service-disruptions/</link>
		<comments>http://gojko.net/2009/03/16/qcon-london-2009-upgrading-twitter-without-service-disruptions/#comments</comments>
		<pubDate>Mon, 16 Mar 2009 15:58:56 +0000</pubDate>
		<dc:creator>gojko</dc:creator>
				<category><![CDATA[articles]]></category>
		<category><![CDATA[memcached]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[qcon]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[scalability]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://gojko.net/?p=815</guid>
		<description><![CDATA[Evan Weaver from Twitter presented a talk on Twitter software upgrades, titled Improving running components as part of the Systems that never stop track at QCon London 2009 conference last Friday. The talk focused on several upgrades performed since last May, while Twitter was experiencing serious performance problems. A very...]]></description>
			<content:encoded><![CDATA[<p><a href="htt://blog.evanweaver.com">Evan Weaver</a> from Twitter presented a talk on Twitter software upgrades, titled <a href='http://qconlondon.com/london-2009/presentation/Improving+Running+Components+at+Twitter'>Improving running components</a> as part of the <a href='http://qconlondon.com/london-2009/tracks/show_track.jsp?trackOID=234'>Systems that never stop</a> track at <a href="/tag/qcon">QCon London 2009</a> conference last Friday. The talk focused on several upgrades performed since last May, while Twitter was experiencing serious performance problems.<span id="more-815"></span></p>
<p>A very interesting observation during the talk was that Twitter started up with a CMS model and that they gradually moved towards a messaging model. I&#8217;ve seen this in a few applications so far, including a casino system, where the messaging model seems to fit best an application intended to power massive community of online users, it seems regardless of what the application actually does business wise. Applications start out completely different, but then more and more functionality gets bolted on top of user messaging capabilities that the whole architecture on the end gets refactored to utilise the messaging channels as the core information transport. With Twitter, I&#8217;d expect this to be more obvious from the start as it was intended to help people notify each other. </p>
<p>For every incoming tweet, the messaging system gets notifications for all the folowers, which are then processed asynchronously. One of the most important changes they introduced to improve performance in the last nine months is moving from a Ruby messaging middleware to a custom build JVM-based messaging middleware written in Scala. </p>
<p>The shift from the CMS to the messaging model allowed them to rethink caching policies and shared work. Before the upgrades, web sites were going directly to the database and API services had a simple page cache. Unsurprisingly, the upgrade ended by the whole Twitter running from memory with a backing database used just as a data store to recover cache on demand. The interesting thing, however, was that all the upgrades were done live, without shutting down the system. The changes were always introduced to one node, then regression issues were sorted out, and then the software would be rolled out to the whole cluster. They went as far as building a whole messaging system based on memcached APIs in order to be able to slot in such changes.</p>
<p>The upgrades included adding three more caching layers: a write-through vector cache of primary tweet keys with 99% hit ratio, a write-through row cache for tweets and users with 95% hit rate and a read-through fragment cache with rendered versions of different tweets for different clients with 95% hit rate. All these caches are based on memcached. Some other interesting optimisations introduced are that cache vectors have limited size (800 tweets back) and that rebuilding the home page for a user gets done by reading through the caches of users that he follows. As lots of people are rebuilding timelines based on the same users, this works very good according to Weaver. Another important upgrade was rewriting the queue middleware from scratch (moving from Ruby to Scala/JVM) and moving from a Ruby memcached client to a C client with optimised hashing. All together, this change allowed them to increase the web server performance from 3.32 requests per second without caching to 139.03 requests per second. Weaver said that API services work about four times faster than the web, which means that the API performance is roughly 550 requests/s [my calculation, not given during the talk].</p>
<p>The frond-end is completely written in Ruby/Rails, which remained the same before and after the upgrades. The middleware is now written in a mix of C and Scala, where the most important components are memcached, varnish (cache), kestrel (messaging, written in Scala) and a Scala comet server. They use MySQL for the data storage, which has not changed during the upgrades.</p>
<p>Some things that surprised me from this talk are:</p>
<ul>
<li>Web is only 10-20% of the traffic, the rest is through API services</li>
<li>Web servers are still 50% of the cluster.</li>
<li>Regular incoming traffic peaks are around 80 tweets per second. I expected this to be a lot more.</li>
<li>before the upgrades their web servers shipped only 3.32 requests per second!</li>
<li>For each tweet, message gets inserted for each user which follows a tweet. In average, a user has 120 followers so this comes to about 9600 messages/s at peak times</li>
<li>Message servers run on three nodes. They decided to write their own messaging software in order to make the protocol memcached-like, and did not evaluate other available solutions.</li>
<li>During Obama&#8217;s inauguration, they peaked at about 350 tweets per second for around five minutes. </li>
<li>They had a ton of problems with garbage collection but strangelly haven&#8217;t looked into JRockit RT or something similar that has predictable GC. Twitter JVM middleware runs on the SUN JVM</li>
</ul>
<p>Evan published the slides for the talk on <a href='http://blog.evanweaver.com/articles/2009/03/13/qcon-presentation/'>his blog</a>, including the cache diagrams.</p>
<p>I covered QCon in detail on this blog. See <a href="/tag/qcon">other reviews and news from the conference.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://gojko.net/2009/03/16/qcon-london-2009-upgrading-twitter-without-service-disruptions/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>QCon London 2009: Slides from Messaging is not just for investment banks</title>
		<link>http://gojko.net/2009/03/13/qcon-london-2009-slides-from-messaging-is-not-just-for-investment-banks/</link>
		<comments>http://gojko.net/2009/03/13/qcon-london-2009-slides-from-messaging-is-not-just-for-investment-banks/#comments</comments>
		<pubDate>Fri, 13 Mar 2009 21:17:55 +0000</pubDate>
		<dc:creator>gojko</dc:creator>
				<category><![CDATA[news]]></category>
		<category><![CDATA[presentations]]></category>
		<category><![CDATA[messaging]]></category>
		<category><![CDATA[qcon]]></category>

		<guid isPermaLink="false">http://gojko.net/2009/03/13/qcon-london-2009-slides-from-messaging-is-not-just-for-investment-banks/</guid>
		<description><![CDATA[Thanks very much to everyone attending my talk &#8220;Messaging is not just for investment banks&#8221; today at QCon London 2009. I really hope that you enjoyed it and that it made you think harder on where to use what (especially the folks that raised their hands when I asked who...]]></description>
			<content:encoded><![CDATA[<p>Thanks very much to everyone attending my talk &#8220;Messaging is not just for investment banks&#8221; today at QCon London 2009. I really hope that you enjoyed it and that it made you think harder on where to use what (especially the folks that raised their hands when I asked who has the patterns I discussed in their code). You can download the slides from my talk from  <a href="/resources/qcon2009_messaging.pdf">here</a>.</p>
<p><i>I covered QCon in detail on this blog. See <a href="/tag/qcon">other reviews and news</a> from the conference</i></p>
]]></content:encoded>
			<wfw:commentRss>http://gojko.net/2009/03/13/qcon-london-2009-slides-from-messaging-is-not-just-for-investment-banks/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>QCon London 2009: Slides from my talk Slim and the future of FitNesse</title>
		<link>http://gojko.net/2009/03/13/qcon-london-2009-slides-from-my-talk-slim-and-the-future-of-fitnesse/</link>
		<comments>http://gojko.net/2009/03/13/qcon-london-2009-slides-from-my-talk-slim-and-the-future-of-fitnesse/#comments</comments>
		<pubDate>Fri, 13 Mar 2009 10:19:46 +0000</pubDate>
		<dc:creator>gojko</dc:creator>
				<category><![CDATA[fitnesse]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[qcon]]></category>
		<category><![CDATA[slim]]></category>

		<guid isPermaLink="false">http://gojko.net/?p=808</guid>
		<description><![CDATA[Thanks to everyone who attended my presentation Slim and the future of FitNesse at QCon London 2009 today. You can grab the slides from here. I&#8217;m covering QCon in detail on this blog. See other news and reviews from the conference]]></description>
			<content:encoded><![CDATA[<p>Thanks to everyone who attended my presentation <a href="http://qconlondon.com/london-2009/presentation/Slim+-+the+future+of+FitNesse%2C+Sponsored+by+Skillsmatter">Slim and the future of FitNesse</a> at <a href="/tag/qcon">QCon London 2009</a> today. You can grab the slides from <a href="/resources/slim.pdf">here</a>.</p>
<p><i>I&#8217;m covering QCon in detail on this blog. See <a href="/tag/qcon">other news and reviews</a> from the conference</i> </p>
]]></content:encoded>
			<wfw:commentRss>http://gojko.net/2009/03/13/qcon-london-2009-slides-from-my-talk-slim-and-the-future-of-fitnesse/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>QCon London 2009: Spring 3.0 upcoming features</title>
		<link>http://gojko.net/2009/03/12/qcon-london-2009-spring-30-upcoming-features/</link>
		<comments>http://gojko.net/2009/03/12/qcon-london-2009-spring-30-upcoming-features/#comments</comments>
		<pubDate>Thu, 12 Mar 2009 16:45:25 +0000</pubDate>
		<dc:creator>gojko</dc:creator>
				<category><![CDATA[news]]></category>
		<category><![CDATA[qcon]]></category>
		<category><![CDATA[spring]]></category>
		<category><![CDATA[springsource]]></category>

		<guid isPermaLink="false">http://gojko.net/?p=795</guid>
		<description><![CDATA[Rod Johnson, CEO of SpringSource, presented the new features in the upcoming Spring 3.0 release today at the QCon London 2009 conference. Probably the most important infrastructural change is that from version 3.0, Spring will work only on Java 5+ platforms. The project layout will change slightly, moving to Maven...]]></description>
			<content:encoded><![CDATA[<p>Rod Johnson, CEO of SpringSource, presented the <a href="http://qconlondon.com/london-2009/presentation/Spring+Today+and+Tomorrow">new features in the upcoming Spring 3.0</a> release today at the <a href="/tag/qcon">QCon London 2009</a> conference. <span id="more-795"></span></p>
<p>Probably the most important infrastructural change is that from version 3.0, Spring will work only on Java 5+ platforms. The project layout will change slightly, moving to Maven style finer grained system of projects, which will be built using the the new Spring build system (&#8220;as known from Spring web flow 2.0&#8243;) which is OSGi based.</p>
<p>In terms of new features, Johnson pointed out the following innovations:</p>
<ul>
<li>Expression language for configuration</li>
<li>Comprefensive REsT support</li>
<li>support for Portlet 2.0</li>
<li>Declarative model validation</li>
<li>Early support for Java EE 6</li>
</ul>
<h2>Spring expression language</h2>
<p>Spring expression parser is the most important new addition in version 3.0, and will be shipped as part of the org.springframrwork.expression package. The Spring expression language is compatible with Unified EL, but according to Johnson does a lot more. You can use it anywhere where you can write a bean definition, for example in the configuration files:</p>
<pre style="margin-bottom:10px">
&lt;property name="prop1" value="#{systemProperties.databaseName}" /&gt;
&lt;property name="prop2" value="#{strategyBean.databaseName}" /&gt;
</pre>
<p>Expressions can reference global system properties or properties of other beans in the same context. It can also be used in annotations, for example:</p>
<pre style="margin-bottom:10px">
class Bean {
@Value ("#systemProperties.favouriteColor}")
private String favouriteColor;
}
</pre>
<p>This also applies to method parameter annotations. In addition to beans and system properties, expressions can access various web context properties such as contextProperties, contextAttributes, request, session.</p>
<h2>Rest support and MVC changes</h2>
<p>Building on annotations in Spring MVC introduced in version 2.5, Spring MVC will get strong REST support. An example of exposing controller methods with REST is:</p>
<pre style="margin-bottom:10px">
@RequestMapping(value=/show/{id}", method=GET)
public Reward show(@PathVariable("id") long id){
//...
}
</pre>
<p>This will work across different protocols (JSON, ATOM, XML). There will also be new options for handler method parameters, including @ReqestHeader and @CookieValue. People will also be able to use their own annotations and include that into the @RequestMapping support.</p>
<h2>Release schedule</h2>
<p>Johnson announced that milestone 3 will be released till the end of March, with a release candidate coming out in early May and the general availability release in June. </p>
<p><i>I&#8217;m covering the Qcon London 2009 conference in detail on this blog. Click <a href="/tag/qcon">here</a> for other news and reviews from the conference</i></p>
]]></content:encoded>
			<wfw:commentRss>http://gojko.net/2009/03/12/qcon-london-2009-spring-30-upcoming-features/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

