Friday, January 29, 2010

Non-Relational Storage/Databases and Consistency

With the explosion of cloud computing, non-relational storage/databases (e.g. Google's BigTable) have gained attention in order to scale systems that serve thousands of clients/custormers (I've found this web page that collects projects related to non-relational databases). However, most of the frameworks/PaaS for developing applications using this new logical storage force the developer to use a shared-nothing approach when developing applications (e.g. Google App. Engine and Mircrosoft's Azure). This means that no state can be stored in the application between two invocations from the same client.

Part of the work done on my PhD thesis was related to consistently scale stateful applications running in clusters of servers based on multi-tier architectures (in a LAN). We use transparent replication -in order to hide the clients from the complexity of the replicated architecture- and guarantee snapshot isolation for the data being accessed (stored in relational DBs). In his blog, Werner Vogels (Amazon's CTO), goes one step further and discusses about consistency in the context of stateful applications and the requirements of cloud computing. The Vogel's view on this topic has been applied in projects at Amazon such as Dynamo. Whilst our approach ensures strong consistency, Amazon's approach is eventually consistent.

Wednesday, January 27, 2010

Software and Related Disciplines

I started this blog among other things in order to try to connect practices and processes used in other disciplines to software design and viceversa, i.e., how software can impact and help other knowledge areas. Recently, I've found two examples that are related to this intention:
  1. In this article is discussed new ways of managing projects in civil architecture and their relationship to agile techniques used in the software process.
  2. This book is related to the use of data-intensive computing for scientific discovery in the fields of Earth and Environment, Health and Wellbeing, Scientific Infrastructure and Scholarly Communication.

Friday, January 22, 2010

Application Architecture and Enterprise Architecture

In this essay, Scott W. Ambler compares effectively these two concepts that include the term architecture and the roles of application and enterprise architects.

In his book Patterns of Enterprise Application Architecture, Martin Fowler compiles a set of patterns useful for application architects in charge of developing enterprise applications. This book does not include patterns suitable for enterprise architects. Whilst the work of application architects can be considered mostly technical (despite they have to have other skills on other knowledge areas and virtues related for example to management of people), the work of enterprise architects is more close to the political/diplomatical branch of IT. This book can be a good source of information for enterprise architects.

Friday, January 15, 2010

How to do Research: Reading, Writing and Evaluating Technical Papers

I collect here two texts I found some time ago that are helpful when doing research on software systems. They are related to reading/writing technical papers from/for software conferences and evaluating papers when involved in a program commitee respectively. The texts have been writen by well-known and respected people in the area of software systems.
  1. Umesh Bellur: "How to Read a Research Paper", Date unknown
  2. Patrick Valduriez: "Some Hints to Improve Writing Technical Papers", 1994
  3. Timothy Roscoe: "Writing Reviews for Systems Conferences", 2007
Searching in the web, I've also found this page at INRIA collecting some other papers/presentations with helpful hints on how to do research.

08/02/2009 Another presentation about reading effectively technical papers written by Vaide Narvaez.