Not “yet another SOA blog post”

I had a job opportunity recently to work as an SOA architect, on SOA projects, in the SOA team of a consulting company. As many companies still make it their marketing, at OCTO we get annoyed with the negative effect of SOA term usage in lots of situations. Such situations include confusing marketing purposes, global IT strategy of a company, or SOA compliant architectures of many kinds. These approximations tend to hide weaknesses behind this term. We rather prefer to discuss on concrete solutions with respect to customer needs, and SOA is all but concrete with its abstractions.

Most discussions about SOA are sterile, because nobody is giving the same meaning to this acronym. Talking about it generates more confusion and misunderstanding than bringing real life problems to light. The goal of this article is not to propose one more SOA definition, but to analyze recurrent perceptions of what SOA could be. These perceptions are indifferently observed at various actors, as IT end users, software vendors and consulting companies. Do not feel offended if you recognize yourself in one of the given cases. We all forge our perception of what SOA really means, as a mix of all these points of view, and more.

(more…)

DevOps tips and tricks, on the ops side

After applying as much as possible the DevOps principles for more than a year on the run of a highly business critical project of one of our customers, here are some golden rules we eventually found out and tried to stick with. Items are here presented from an Ops perspective.

(more…)

Continuous Delivery: How do we deliver in 3 clicks to 7000 machines?

Through this post I would like to share with you the continuous delivery chain that we’ve successfully set up. My point is to describe the whole chain (from the Svn check in to the feedback loop to get the deployment status) and highlight some tricks that we discovered.

In our context, we cannot speak about Continuous Delivery without addressing the DevOps approach that we clearly have in our teams. This approach gives the opportunity to share our needs and exchange points of views between the Developer and Operational teams. Some of the important points are described here.

So let’s check out how our DevOps team can build and deploy 7000 clients in 3 clicks.

(more…)

Introduction to Datastax Brisk : an Hadoop and Cassandra distribution

As the Apache Hadoop ecosystem grows while its core matures, there are now several companies providing business-class Hadoop distribution and services. While EMC, after it acquires Greenplum, seem the biggest player other companies such as Cloudera or MapR are also competing.

This article introduces Datastax Brisk, an innovative Hadoop distribution that leverage Apache Hive data warehouse infrastructure on top of an HDFS-compatible storage layer, based on Cassandra. Brisk try to reconcile real-time applications with low-latency requirement (OLTP) and big data analytics (OLAP) in one system. “Oh really ?”
(more…)

What’s new in Apache Cassandra 0.7+

It’s been a while since we last blogged about Apache Cassandra. Let’s catch up with the new features available from version 0.7+.

(more…)

Classical issues: Imprecise computing (part 1)

I’m starting today a new series of articles called Classical Issues. In it, I’ll address, one after the other, classical issues encountered through my software engineering years.

This first article is targeted to demystify computing and give some best practices for an enterprise application. By enterprise application, we mean an application working on things like money, prices and quantities. It will be in two parts. This one is about explaining the root of the problem. The second one will show how to handle it in Java and .Net.

Bill is developing a software doing commission payments. He needs to add 1.2$ to each transaction. He codes a method doing just that and the unit test coming along.

 @Test
 public void testAddCommission() {
  double actual = addCommission(1000000.1);
  assertEquals(1000001.3, actual, 0);
 }

 public static double addCommission(double nominal) {
  return nominal + 1.2f;
 }

java.lang.AssertionError: expected:<1000001.3> but was:<1000001.3000000477>

“Darn! It’s not working!”.

What’s going on?
(more…)