My Architectural Headings

When I build a system, I try to:

1. Avoid ORM
they cause more trouble than what they solve. for simple cases I recommend pure JDBC and for complex cases i enjoy iBATIS (and recently IBM pureQuery)

2. Use Messaging
messaging is not just using a message broker, it is a mental model for designing messages first and then services (Contract First Design).

3. Insist on functional paradigm
insist in immutability, finalizing, constructor dependency injection and recursion.

4. Use In Memory Database and In Memory Data Grids
Rare systems require IMDG/IMDB solutions. We call such a systems XTP (extreme-transaction processing) systems. In such cases we ought to put data in memory rather on disk. I have used GigaSpaces, and Coherence in the past and now work closely with Infinispan. TimesTen is a another solution that an XTP architecture should have an eye on.

5. Reduce contention
EDA As much as possible.

6. Insist on Testing and Coverage

7. Live in -10/-5 years from Now
I don’t use tools unless they are proved or unless I have no other choice!

8. Java is not the Only one!
I am a Java architect but I recommend and learn other systems built with Python, C, Erlang and Scala as well.

PMP or SBA?

I feel myself at the junction of “Pure Message Passing” and “Space Based Architecture”! which one is more suitable for developing high-throughput systems?

The first solution pure-message-passingĀ  (where i feel myself quite a habitat) comes from the world of functional actor based systems well developed in Erlang and followed by its successors in Scala, Kilim or even JUC. Its side effect free nature makes it a perfect choice for highly concurrent, multi core domains but enforces its own programming model using messaging boxes and actors.

The second one, SBA (where i have applied for residency) comes from tuple spaces. a simple but strong paradigm first developed in Linda and followed by its worthy successor javaspaces and successfully used in domains such as orbitz and gigaspaces xap. Its share-take nature makes it a perfect choice for caching and in memory solution but again enforces its model to some extend which is well documented in xap’s PU.

These two model, although seem quite obverse in first sight, but share a lot in nature. they both introduce the separation of data and processor in an even driven paradigm. Even driven nature of these two models make both very strong for suitable todays complex and high demanding nature. and yes, both have their own mathematically proven theory behind.

Now the question comes in mind, which will be superior or will the both remain as competitor? maybe SBA since dummies don’t enjoy immutables? or maybe they collide into one single computational model? mixing quantum physics and relativity? cloud-computing? anyone?

Places I Ever Wished To Work For

There are 3 companies which I always looked to work for:

  • Google, since knowledge is there; I sent my resume, they implicitly said  “Are you kidding?”
  • LShift, since we both love Erlang; again I sent my resume, the said “Come what may!”
  • Gigaspaces; I never dared to send a resume; sure they wont hire Iranians anyway.

And then comes this new position (which is not finalized yet but we are in good shape of progress) which seems to out-weight all these three. Now its my turn to say… come what may… :)

Interesing Discussiong on Gigaspaces vs Coherence

Interesting and a bit funny discussion here in TSS. I was eager to know who this Top-Tier US-Based bank this one is is, now I can guess :)

But again this does not prove anything since this not a real head-to-head and fair comparison. GS provides a distributed computational intensive platform and has its own API/Spec for this (this platform can be used as Data Grid too) while Coherence directly targets IMDG and maybe those folks at BoA where looking for a computational grid hence concluded to GS.

Any Independent Benchmark of IMDG Solutions? (Coherence, Terracotta, WXS, Gigaspaces)

It’s hard to believe that Terracotta with its great simplicity is in fact 10x times faster than Oracle Coherence?! Idea’s matter but after all Oracle is a multibillion company and Terracotta Tech is much smaller!

The point is, most of these benchmarks are from their vendors and obviously in this way it’s easy to find and obtain test which outperform in the specific cases.

What I am eager to here is this domain, is a vendor independent benchmark, not those from Oracle, IBM or Terracotta themselves! Do you know any?!

Thinking of ORM again

I am rethinking of using ORM in large and high throughout enterprise system. This is not because I have drawn back from my points of views and factors but since I feel that with recent improvements in distributed memory with write-throught features (solutions such as Terracotta, Coherence and Gigaspaces EDG) ORM has become analogous with the most important factor in these systems: Performance.
Besides this, emerging standards such as JPA and SDO which eleminates vendor locking has its own place.

Go Flying over Clouds!

Great news of Miwok Airlines selecting Gigaspaces and Amazon EC2 here.
Remembers me of this picture i took in Zurich Airport :)

The way world is heading to cloud computing, you may see “Thank You For Flying Our Cloud” one day soon :)

Fun with Gigaspaces XAP

My first acquittance with Gigaspaces dates back to four years ago while I was working on my master thesis which had a Jini section. From that time, I always had it back somewhere in my mind as a real alternative for implementing high throughput systems.
Recently I had the change to get back to this (now called) XAP again, and I have to confess that I really enjoy it. They have done the great job and I will have some harddays in evaulting and choosing between so much great producst in IMDG field.

IMDB or IMDG?

We have two alternatives to reach XTP:

  • In Memory Database (IMDB); such as IBM solidDB, SAP liveCache, Oracle TimesTen which are database/SQL oriented in memory solutions.
  • In Memory Data Grid (IMDG); such as Oracle Coherence, Gigaspaces EDG which are object oriented in memory solutions.

Now the question is, which one is better for an enterprise (banking) system?