HTTP caching with Nginx and Memcached

Deploying an HTTP cache in front of web servers is a good way to improve performances. This post has two goals :

  • present the basics of HTTP Caching
  • present the new features I have implemented in the Memcached Nginx module to simplify HTTP caching

(more…)

The Esper CEP ecosystem

Mathieu’s introduction to Complex Event Processing (CEP) has announced a series of articles on various CEP solutions. We begin this series with a post about Esper.

Esper, maintained by EsperTech, is a Java platform dedicated to complex event processing and event stream processing (ESP), that is, a collection of frameworks and tools that can be combined to build event-oriented applications and integrate them together.

Most of the foundation of such applications is brought by the 3 different Esper packages. These are advertised as “editions”, but are rather complementary building blocks.

Building an event-oriented application with Esper involves:

  • coding the main applicative logic with event processing statements, using the core algorithmic engine Esper Event Stream and Complex Event Processing (Esper Engine for short). It is distributed as an open-source project with a GPLv2 license
  • packaging, integrating and deploying the application. A good candidate for these tasks is the dedicated Esper Enterprise Edition (EsperEE)
  • optionally securing the event processing logic with EsperHA, which brings persistence capabilities to Esper, thus enabling high-availability and recovery scenarios

This post thus offers a global vision of the Esper ecosystem as a CEP platform. The article concerns version 4.5.0 of the platform, but at the time of this writing the latest released version is 4.6.0.

(more…)

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…)

Getting from shell to Puppet

After this (french) article, dealing with managing servers with shell scripts (what we were doing), and this (also french) one, which dealt with tools for automated deployment (what we planed to do), including Puppet, here is the article about Puppet. By doing. With blood, tears, and victories ;)

Because yes, going from servers managed by shell scripts to Puppet, when you don’t know Puppet, it’s not so easy.

(more…)

Data Grid or NoSQL ? same, same but different…

For three years now, NoSQL as a piece of technologies for Big Data has spread over the world and is challenging the centralized world of RDBMS. The space of distributed storages is yet not new and banks, online gaming platforms are using for several years technologies called “data grid” to address latencies and throughput issues. And to be completely franc, “Big Data” is not far from being the “new SOA”: a radical paradigm shift lost in the middle of commercial buzz words but that’s another story…

What are the common points? The main differences?

(more…)

An overview of RestKit, a Core Data enabled iOS and MacOSX framework for Restful applications

ASIHttpRequest, AFNetworking, MKNetworkKit,… The iOS/MacOSX programming landscape is full of helper libraries to deal with asynchronous network communications in your applications.

RestKit can be seen as yet another library to do it. However, its approach is radically different since it does not only address asynchronous networking but also object mapping and a seamless persistance of such mappings locally through CoreData.

This approach is quite interesting when it comes to interact with Restful web services because of the time (and code!) you can save.

In this article, we are going to look at RestKit’s main functionalities through the code to do it. The objective is to give you a precise idea of what can be done and how to do it.

(more…)

Untar on iOS, the pragmatic way

The problem

Why untar?

Network connections cause latencies on your mobile app. Replace 10 downloads of 1Mb by 1 download of 10Mb is a good improvement to your app.

There’s a well-known unix tool for that: tar.

What is tar? Wikipedia says: “Tar is now commonly used to collect many files into one larger file for distribution or archiving, while preserving file system information such as user and group permissions, dates, and directory structures.” That’s exactly what we need with some extra features.

How to untar an archive file on your iOS device? (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…)

Devoxx 2011, the main trends

One of the biggest Java conference in the world took place in Antwerpen, Belgium on last November. This year, Devoxx main themes were (in no particular order)

  • The future of Java
  • Alternative languages on the JVM
  • HTML5
  • JavaFX
  • Android
  • A bit of Cloud, NoSQL and high performance architecture

We also had a great announcement about a new conference coming in 2012: Devoxx France!

Obviously, OCTO was there. In this article we won’t cover the sessions in details. A lot of blogs already did it. We’ll however summarize this edition’s main trends and give our impressions.

(more…)

Complex Event Processing

Today’s information society abounds in a myriad of information flows, computer-based human collaborations, software agent interactions, electronic business transactions, and the explosion of data on the Internet. Understanding what is happening in these environments is becoming increasingly difficult. In other words, we need to find the best ways to make sense of this wealth of data, to improve the quality and availability of information, and to ensure effective responses. Traditional storage and data analysis technologies are not adapted to this exponential growth of volume and event rates.

In addition, the value of information may decay rapidly over time. For instance, some events that may help anticipate a production outage have no value once the outage happened. There is a need to process data as soon as events occur, with respect to latency constraints. We need to move away from traditional client-server (query-response) interaction models, to more asynchronous, event-oriented, loosely coupled push model, with applications able to take decisions based on events data.

Complex Event Processing (CEP) is a set of technologies that allows exploring temporal, causal, and semantic relationships among events to make sense of them in a timely fashion.

This article is the first of a serie exploring these technologies, their capabilities and possible applications.

(more…)