InfoQ

InfoQ

News

My Bookmarks

Login or Register to enable bookmarks for unlimited time.

The content has been bookmarked!

There was an error bookmarking this content! Please retry.

Volta: Developing Distributed Applications by Recompiling

Posted by Jean-Jacques Dubray on Sep 05, 2008

Sections
Architecture & Design,
Development,
Operations & Infrastructure
Topics
Javascript ,
Language ,
Cloud Computing ,
Architecture ,
.NET
Tags
GWT ,
AJAX

Dragos Manolescu, Brian Beckman and Benjamin Livshits, from Microsoft LiveLabs just published an article on Volta, a new technology announced nearly a year ago at the Strategic Architecture Forum 2007. Volta enables the refactoring of an architecture, just like code refactoring tools did for code for over a decade. The why and how of Volta is summarized by the authors as:

Contemporary programming languages and tool suites are designed for quick and easy construction of sequential, nondistributed applications.

To write distributed applications, programmers must learn and use a large variety of lower-level libraries for cross-tier communication, data marshaling, synchronization, and security. The libraries’ sole purpose is to support distributed execution of application logic that could just as well be executed sequentially

[While] most tools and technologies force us to make an a priori partition before writing a single line of code ... [Volta is a set of] tools that, directed by declarative annotations such as RunAt and Async, insert boilerplate code and transform nondistributed executables into logically identical, asynchronous, distributed applications.

Volta works by applying transformation at the CIL (.Net Common Intermediate Language) level which preserve the functional behavior, right before Just-in-Time compilers generate native code. The authors sees several benefits to this approach:

  • the recompiler is language independent
  • the recompiler does not interfere with compiler analyses and optimizations
  • Volta does not need to change when a language specification changes, only when the CIL specification does
  • Volta supports many distributed-design best practices such as "all calls across the network must be asynchronous"
  • Volta provides a many-to-many mapping between the languages in which the code is written and the runtime where the code executes.

It has been speculated that Volta was Microsoft's response to Google's GWT. In the article, the authors are prompt to point out that:

Ajax-style Web-based applications are one of the most popular forms of distributed applications.

and the many-to-many mapping cannot be achieved by GWT because it operates at the code level. Volta provides a CIL-to-JavaScript transformation which can:

simulate advanced control-flow constructs that aren’t natively supported by JavaScript, such as threads and coroutines.

Volta also provides end-to-end instrumentation and profiling capabilities that help understand the effects of partitioning:

The instrumented code can collect complete application traces, enabling us to compute statistics for latency and throughput and to perform application diagnostics.

The authors conclude that Volta:

extends the reach of .NET programming languages, libraries, and tools to cover the cloud.

In the near future, they will focus on on security by construction, finer-grained tier splitting, and tier migration.

Interestingly enough the authors have only detailed so far how to use Volta for Ajax-style Web based application and tier splitting. We can expect that soon they will also apply Volta to help carve and implement "service interactions" in a Service Oriented Architecture helping the refactoring of services and composite services.

Microsoft has discovered Spring Remoting? by Maurício Linhares Posted
  1. Back to top

    Microsoft has discovered Spring Remoting?

    by Maurício Linhares

    So, Microsoft has discovered Spring Remoting?

    Nice for them.

    I love to see those magic tools that do everything "if you just add an annotation", maybe they can show an example of a method that does a database call being translated to JavaScript.

    Oh, it isn't possible? But wasn't i just supposed to add a simple annnotation?

    I guess someone should take a deep look at GWT and discover why they have separated the code that runs on the client from the code that runs on the server, they might even get an idea or two.

Educational Content

Jesper Boeg on Priming Kanban

In this interview, Jesper Boeg, author of the new InfoQ book – Priming Kanban, discusses the keys to using Kanban effectively, and how to get started if you are currently using other approaches.

New-age Transactional Systems - Not Your Grandpa's OLTP

John Hugg discusses high volume transaction processing applications with high and low frequency profiles, and how VoltDB can be used for that purpose.

Cool Code

Kevlin Henney examines code samples to see what can be learned from them starting from the premise that one won’t write great code unless he knows how to read it.

Collaboration: At the Extremities of Extreme

Jason Ayers share the observations he made watching a team of developers collaborating in real time on the same code base, pushing XP, pair programming and continuous integration to their extremes.

Yesod Web Framework

Michael Snoyman presents Yesod, a web framework written in Haskell and containing a web server, templating, ORM, libraries (templating, gravatar, etc.).

Transactions without Transactions

Richard Kreuter and Kyle Banker on how to avoid classical RDBMS transactional systems by using compensation mechanisms, transactional messaging or transactional procedures.

Attila Szegedi on JVM and GC Performance Tuning at Twitter

Attila Szegedi talks about performance tuning Java and Scala programs at Twitter: how to approach GC problems, the importance of asynchronous I/O, when to use MySQL/Cassandra/Redis, and much more.

10 tips on how to prevent business value risk

One category of risk that project teams need to ensure they address is business value failure – delivering a product that fails to provide value for the business investor.