Hoy he tenido el placer de pasar un rato con Attila Kisko, colaborador de Membase y autor y encargado del mantenimiento de Enyim - el Biblioteca cliente Membase para .NET. De vacaciones en San Francisco desde Budapest, Hungría, Attila se pasó por la oficina para hacer una visita. Disfruté de nuestra conversación, y pensé en compartir algo de ella con otros que quieran saber un poco sobre el hombre detrás de una de las bibliotecas de cliente de código abierto más populares y ampliamente desplegadas dentro de la comunidad de usuarios de Membase.

¿Cómo empezó a programar?
Empecé muy joven, a los 7 u 8 años, desarrollando en el Commodore 64. Codificaba en lenguaje ensamblador y dedicaba la mayor parte de mi energía a hackear juegos. Codificaba en lenguaje ensamblador y dedicaba la mayor parte de mi energía a piratear juegos. También pasé tiempo con el HT-1080, que era una versión húngara del TRS-80.

De ahí pasé a la plataforma IBM-PC y codifiqué en Turbo Pascal y con Borland Delphi. En ese momento empecé a desarrollar software empresarial y creé una solución completa para un amigo mío, incluyendo un instalador, el embalaje del CD y una interfaz de usuario elegante. Aunque mi amigo nunca me pagó por el trabajo : ), me dejó una bonita demostración de mis capacidades.

Esa demo me llevó a mi siguiente puesto en Fathom Technologies, una empresa de externalización del desarrollo en Hungría. Me incorporé a Fathom como uno de los primeros empleados y permanecí en la empresa durante 7 años mientras crecíamos exponencialmente. Allí tuve la oportunidad de viajar bastante y de trabajar con grandes empresas tecnológicas como Microsoft, Autodesk y Oracle, entre otras. Fathom fue adquirida por Sistemas EPAM. Como suele ocurrir, el ascenso en la empresa me llevó de programador, a arquitecto y a director. Cuanto más me alejaba del código, menos feliz me encontraba, así que decidí dejarlo y dedicar toda mi energía a FreeBlog que fue un proyecto de hobby que empecé en 2003. Ahora es mi principal "trabajo diario" y me encanta.

¿Cómo empezó el proyecto Enyim?
Empecé el proyecto por necesidad. Estaba buscando una solución de caché distribuida para usar detrás de Freeblog.hu y aunque Microsoft tenía alguna tecnología (que más tarde se convertiría en Project Velocity, y ahora AppFabric Caching) Memcached era una solución mucho mejor. En ese momento, sin embargo, sólo había una librería cliente para Windows y era un port de una librería Java (una librería anterior a la librería Spy de Dustin). No me fiaba mucho del código y decidí escribir el mío propio desde cero en C#.

Cuando Membase (que en ese momento era NorthScale) presentó su distribución inicial de Memcached, me gustó mucho la dirección que tomaba la tecnología, así que decidí crear una versión especial del cliente Enyim que soportara las extensiones. Membase es aún más emocionante, y he estado revisando el cliente para mantenerlo al día con los rápidos avances que se están haciendo. Espero con impaciencia las extensiones de consultas y estructuras de datos. Estoy trabajando en una biblioteca cliente Redis en este momento y creo que la combinación de las capacidades de Redis con Membase sería una solución poderosa - una que podría utilizar en Freeblog.hu. Estoy deseando apoyar esas capacidades dentro de Enyim : )

¿Ha considerado la posibilidad de escribir Enyim en C++ nativo y no gestionado en Win32, en lugar de .NET?
La verdad es que no. En este momento, casi todo el mundo que desarrolla en Windows está desarrollando código gestionado. Y es un dolor llamar a una biblioteca no gestionada desde código gestionado para lo que resulta ser una ganancia de rendimiento muy mínima (probablemente del orden de 10%, como mucho). Un poco más de memoria o una ligera mejora de la CPU para cerrar la brecha de rendimiento es todo lo que se necesita para evitar el dolor.

Además, es mucho más fácil mantener el código C#. El lenguaje y el entorno son muy atractivos.

¿Java bien hecho?
Desde luego. Y el lenguaje avanza mucho más rápido que Java en este momento. Cada año se incorporan novedades muy útiles al lenguaje. Java es un proyecto que avanza mucho más lentamente en este momento.

¿Cuál es la dirección de Enyim? ¿Qué funciones tiene previsto añadir?
Parece que a la gente le funciona bastante bien. No he recibido un gran número de solicitudes de mejora. Una cosa que estoy considerando es implementar la canalización, como existe en el cliente Spy Java. No estoy seguro de la importancia que tendría para la gente, pero es algo que estoy considerando. Y como he dicho antes, estoy esperando ansiosamente las extensiones de funcionalidad de Membase y continuaré manteniendo el cliente al día con esas adiciones.

¿Fue fácil o difícil escribir un cliente de Membase? ¿Algún consejo para otros escritores de clientes?
En realidad fue bastante fácil. El mayor problema que tuve fue la documentación. Pero eso era de esperar, dado que el servidor se estaba construyendo al mismo tiempo que yo construía el cliente. La documentación disponible ahora es bastante buena. Y Perry ha sido de gran ayuda para resolver cualquier duda.

¿Qué opina de todo el movimiento "NoSQL"?
En general, pienso en NoSQL como código para "noLocking" y creo que la característica más importante es el soporte para la fragmentación automática de un conjunto de datos entre servidores. Creo firmemente que el futuro de la informática está en la nube, y el modelo de la nube es el de la ampliación. Eso es demasiado difícil de hacer con un modelo de datos relacional, y NoSQL es realmente una respuesta a eso.

¿Tiene experiencia directa con otras tecnologías NoSQL?
Sí. He utilizado tanto Redis como MongoDB. Membase es una tecnología impresionante, pero en muchos casos tengo que ser capaz de interactuar con mis datos más directamente en la base de datos. Utilizo estructuras de datos hash y de contador en Redis para implementar una serie de funciones en freeblog.hu. Probablemente cambiaría a Membase si tuviera ese tipo de funcionalidad.

Autor

Publicado por James Phillips

James Phillips es cofundador, CEO y CSO de Couchbase. James Phillips cuenta con más de 20 años de experiencia en la industria del software. James comenzó su carrera escribiendo software para las plataformas de microordenadores Apple II y TRS-80.

Dejar una respuesta