Mostrando entradas con la etiqueta development. Mostrar todas las entradas
Mostrando entradas con la etiqueta development. Mostrar todas las entradas

sábado, 15 de mayo de 2010

Backend for my project, choosing a NoSQL database

One of the goals of this projects is to have the possibility to work with a NoSQL approach. There are a lot of NoSQL documentation in the Internet, so I only gonna do a brief comments about its philosofity and principes:

  • It's not a clear definition about the features of a NoSQL database, there are a lot of tools with differents approaches (document or object oriented, big hashes, ACID and no ACID), 
  • A NoSQL database can provide you a huge scalability and high performance. Twitter, Google, Facebook does need this, and your application. Well, about performance, why not?.
  • Typically object-oriented applications are builded around the SQL databases, letting the business logic reside in the database and working as simple CRUD interfaces. This is not necessary bad, SQL has its optimizations, performance, specialized teams,... but NoSQL gives you more options to have in mind.

After a short investigation, and following recomendations, I decide to use MongoDB as my first approach to NoSQL databases. My first option was Cassandra, with has a lot of hype around because is used by Twitter and Facebook. Its main features are a descentralized approach, Cassandra is never designed to run as single node but in a bunch of them, and is not ACID compliant.

In the other hand, MongoDB is ACID compliant and is an document oriented database, you can use JSON to manipulate data, is scalable depending on your needs but valid in a single node. It also seems well documented and supported.

A would like to combine with some sort of business DSL (in my next post i'm gonna talk about business oriented development and DSLs) and test two things.

The first one, If my front-end is build in GWT, my business logic in the DSL and  I don't want to use traditional CRUD generation, does I really need Grails building plugins or It's better that i develop another command system around my DSL?

The second is as follows, in many projects there are a considerable amount of repetitive code to access to certain tables (master tables), to display combos, completers, sometimes i18n... Most of this times, this data has no associated business logic, only data retrieval from Database.

Well, if MongoDB can be queried using JSON, and my GWT Front-End understands JSON, is it viable access this tables directly from the front-end? Can this method be productive dropping the repetitive backend code? Would I be acting against layer encapsulation?

I'll let you know my conclusions, give me some time!

sábado, 1 de mayo de 2010

New project, old blog

Fortunately Google guys have a lot of disk space and my old blog hasn't been dropped yet!

I started this blog two years ago without a clear purpose to share some general thoughts, tricks, and to try to improve my writing level in English (typical Spanish!) and as many blogs, the blog was abandoned.

Today, I reopen the blog to write about a new personal project. What project? I'm not sure at this moment, but is for sure that the project exists.



The blog's name source, via Microsiervos

For the last years I've been having the pleasure to work in interesting projects, with state of art technologies, sometimes with the responsibility of evaluate and choose them as Software Architect. In my free time I have read several books, blogs, articles, workshops, worked in small conferences and thinks like that, important stuff but no "real" development work.

Nowadays the situation is different, I'm working in a static phase of an old project, most of the time in maintenance tasks and, although I think you can learn and become a better professional in all situations, I have the feeling that I must start something and evaluate new technologies and paradigms.

So this is the motivation of the new era of the blog, share the steps and thoughts of the new project, wish me luck!

viernes, 16 de enero de 2009

Applying Software Development techniques to real life

This is an empirical demostration of the successful translation of some 'bug fixing' techniques from software development groups to real life

jueves, 23 de octubre de 2008

RIA Frameworks

Althought traditionally I have not been working extensively in User Interfaces, and of course I'm not an expert on this area, I'm pretty sure that somethings goes wrong in traditional Java web interfaces development (Struts, JSF, Spring MVC).

It's too hard develop a Web application, too much code, too much errors, too much programmers!

I'm not sure about the future, but RIA interfaces (Ajax or Flex) in Service Oriented User Interfaces (SOUI) seems more razonable approaches.

This is a very interesting presentation about RIA (focuses in Appcelerator framework) from Matt Raible

martes, 23 de septiembre de 2008

Generating code from code with Eclipse JET

In my current project we need to generate two kind of artifacts, some Java classes that represents bottom up Web Services, and very few XML, the Axis2 descriptor to expose these services.

I admit it, XSLT engines scares me! I've been looking for solutions and it seems that the best approach are template engines. The code to generate is very simple, but i want an MVC approach. I can generate XML with standard apis, using java.xml.Transformer but i didn't found a similar approach to metagenerate Java with a predefined view and controller. Anyway it would be two different apis to manage.

A Template engine is a unified approach for the two artifacts generation, it generates a output based in a template in a language which works with the model.

The template language is the main difference between Apache Velocity and Eclipse JET. Velocity seems more powerful but JET has the advantage that the templates are written in JSP syntax. The other main advantage is that is integrated in Eclipse IDE environment to generate a Java class from the template that performs the transformation, so you can use the template "compiled" in a standalone environment.

As JET is part of Eclipse Modeling Framework EMF, you can use in combination with an EMF meta-model, but we are not going to use this feature.

The next release of JET, JET2 is included in another Eclipse subproject, M2T and it will include new interesting features like JSTL tags and a powerful visual editor.

As there's not a stable release of JET2 and for our requirements version 1 is capable and runs with our Eclipse version we are going to use the stable release.

If you want to start with JET (version 1) these are two fantastic introductory resources: