InfoQ

Interview

Alexandru Popescu Discusses the InfoQ.com Site Architecture

Interview with Alexandru Popescu by Ryan Slobojan on Oct 01, 2008 09:00 AM

Community
Architecture,
Java
Topics
Media ,
Portal/CMS
Tags
InfoQ ,
MySQL ,
JCR ,
WebWork ,
EC2 ,
S3 ,
DWR ,
Hibernate
Summary
In this interview from QCon London 2008, InfoQ Chief Architect Alexandru Popescu discusses the architecture of InfoQ, integrating WebWork and DWR, Hibernate and JCR, Hibernate scalability, MySQL replication, the new InfoQ video streaming system, the video encoding process, site search, and future plans for InfoQ.

Bio
Alexandru Popescu is Chief Architect and co-founder of InfoQ.com. He is involved in many open source initiatives and bleeding-edge technologies, being co-founder of the TestNG Framework and a committer on the WebWork and Magnolia projects. Alexandru formerly was one of three committers on the AspectWerkz project before it merged with AspectJ. He blogs at http://themindstorms.blogspot.com/.
Hi my name is Ryan Slobojan I am here with Alexandru Popescu, who is the chief architect at InfoQ.com. Alexandru, why don't you tell us a little bit about the general site architecture at InfoQ - what does it look like? How is it built?
Could you draw for us what happens when you make a request, both as a user an as an author?
You mentioned that you are using WebWork and DWR for the front end. Did those fit seamlessly together or were there some challenges integrating them?
If you had to start over from square one and redesign InfoQ.com from scratch, what would you keep the same and what would you change?
Can you give us some key figures, some user numbers, so user requests per day that InfoQ has to handle? Concerning scalability of course at the end.
Does Hibernate actually really scale? Is it useful? Is it a good framework that scales out or is it just… And the next question is do you partition the database?
Are you running MySQL?
Did you run into replication problems because your data amount becomes too big? So replication from master to slaves for example?
Which brings me to my last question I think. How many caches do you have? So where do you cache data? Just one of them? Do you use distributing caching somehow?
So it's above Hibernate or below?
One of the systems which was recently redesigned was the video streaming system. Can you describe what happened there in a little more detail, like what the new architecture looks like?
When you get video provided to you: is that something that is all done by InfoQ and all the video is in an encoding that's going to be your nice Flash encoding? Or do you sometimes need to use third party or internal or external transcoding mechanisms?
You said you store the videos on the Amazon service. And what you basically get is a bucket where you put some data in, doesn't matter how big it is and what it is, you just put it in and they deliver it. Do you have a URL that you can give a client or a user and you can use it in his browser, probably? Where do you store the mapping from your internal keys to the URLs used by Amazon or where's mapping store? How do you known where you store your video?
You said earlier that you do mapping from Hibernate objects into other objects. Why do you do that?
Do you use the association mechanisms provided by Hibernate? So for example I create a user. A user can have a number of roles (you could configure Hibernate such that you can retrieve your user and all roles for example). And Hibernate is doing that for you. And you say you aggregate it in an upper level, this means that you only get these single entities or collections of entities and resolve it in a upper layer, or...
So aggregation just means you have to aggregate from different content repositories.
What is currently planned for InfoQ in the future? How is development done? Is it a backlog, or how does that work?
What are you using to implement your site search? What sorts of technologies are you are using for handling that?
show all  show all
which JCR implementation are you using? by Thomas Sandor Posted Oct 3, 2008 3:13 AM
Excellent. by Ashwanth Fernando Posted Oct 4, 2008 6:31 AM
  1. Back to top

    which JCR implementation are you using?

    Oct 3, 2008 3:13 AM by Thomas Sandor

    Hello,
    Thank you for this insteresting interview, it was good to see behind the scenes. Still, I'd like to ask which JCR implementation you are using in production and how did you integrate it with your DAO layer? Did you made a custom module that works with Spring or did you choose a 3rd party/open-source one? Thanks.
    --
    Thomas

  2. Back to top

    Excellent.

    Oct 4, 2008 6:31 AM by Ashwanth Fernando

    Great work by Alex and team!! Congrats Alex. The myriad of technologies that you speak about actually translates into a lot of benefits for the end users. Infoq I guess has some of the best user experiences when compared to sites like javaworld, serverside etc. I know that server-side was started by Floyd, who also works here :-). But great work. Phenomenal layout and user experience. Keep it up, hope to see more excellent features coming into the site.

Educational Content

Bindings, Platforms, and Innovation

This presentation focuses on the Internet and separating myth from fact, history from the future, and the mundane from the imaginative. Bob Frankston presents a vision of what could and should be.

Orchestrating Long Running Activities with JBoss / JBPM

This article explores the use of JBoss and jBPM to implement design solutions that effectively address the issue of orchestrating long running activities.

Neo4j - The Benefits of Graph Databases

This presentation covers the use of graph databases as an optimal solution for data that is difficult to fit in static tables, rapidly evolving data or data that has a lot of optional attributes.

Realistic about Risk: Software development with Real Options

This session introduces Real Options and shows how it can help in running your project. Real Options is a decision-making process that can be used to manage risk.

Communication Flexibility Using Bindings

This article discusses the use of bindings on services and references (including the instance of non-configured bindings) as the means to implement SCA communications in a Web and SOA environment.

Writing DSLs in Groovy

After a short introduction to DSLs, Scott Davis plays with the keyboard showing how to approach the creation of a DSL by typing working snippets of Groovy code that get executed.

Scaling Agile with C/ALM (Collaborative Application Lifecycle Management)

IBM Rational and InfoQ present, Scaling Agile with C/ALM, an eBook showing organizations how to become “finely tuned software delivery machines” by enabling team integration and scaling.

Concurrent Programming with Microsoft F#

Amanda Laucher presents a real life enterprise application written in F#. She shows actual code snippets, explaining design decisions and suggesting how to use some of the F# constructs.