Thursday, March 11, 2010

HTTP caching and REST of us.

    Imagine you want to create a web service to query some of your domain objects.
Definitely this can be done with SOAP over HTTP.

POST /person HTTP/1.1







If there appears that your application is under heavy load and has many customers it can happen that your application can not handle it. Ofcourse it is very dependent on the design you are using, other techniqeus you are using like second level cache like EhCache or maybe you are using NoSql or mixed solution . Here I will isolate all this points and will focus just on a http path botleneck. This botleneck can be solved by using a caching reverse proxy. BUT!!!
imagine we need to cache the result of the above mentioned query. The proxy needs to check if the HTTP request is a SOAP request and the and then check if it contains the personQuery operation. If it finds this one extract the personId and use it as a key in it's own cache. It appears that this proxy is completely unique and made for specific operation if you change the name of the operation or the ID field or add another operation you will have to change the proxy. In order to use generic proxy all od the operations need to have additional metta information like if they are read-only and what are
their target objects.

Method: READ
Target: example.com/person/1234

Actually this is very similar to standard HTTP operations  which would look like

GET  /person/1234
Host example.com

It is not a coincidence that HTTP operations are designed for such a great scalability. If you represent web service operations as one of the HTTP verbs you will use this scalability if
you configure properly HTTP reverce proxy.
I have been using these design not only for HTTP but also with ICE (Intenet communication engine) from ZeroC. ICE is modern RPC style midleware similar to CORBA but much more sophisticated
and efficient. Usually you need midleware like ICE if you need fast, scalable, low latency  communication with very low memmory footprint. What we have created is a REST style facades and expressed all of the CRUD
operations on a objects trough those BaseFacades. The base facades contains operations similar to the HTTP methods. This way we achieved scalability, caching and flexibility of the midleware
intermediate components. In the next topics I will present how we have using Varnish (HTTP master piece reverse proxy with caching and load balancing capabilities and many more) to achieve scalable
REST services.

Wednesday, March 10, 2010

TEM 2.0

Being the last 4 years involved in TEM (Telecomm Expence Management) business, I see natural step that the industry is moving towards TEM 2.0. The main new point are metrics which are  very important part of TEM solution to measure how good is your TEM vendor actually. This video http://www.accelacast.com/programs/gartner_947_cerylion/ related to TEM 2.0 business presented by Gartner and sponsored by Cerilyon presents the actuall evolution points. I am preparing  a post to describe my vision on how I see the perfect TEM solution, what technical tools I see using is beneficial, how to solve the biggest problem of TEM actually the handling of enormous amount of data and how to please the customer with your technical solutions. Last but not least I will post my vision for  cost reduction by using high quality open source tools and frameworks which are proven in Fortune 2000 companies using them in TEM 2.0 solution. So until then stay tuned :) .

Sunday, March 7, 2010

The opus

"The opus" is great inspirational movie to find your own opus in life.

Saturday, March 6, 2010

core principles of good management

Six core principles of good management. Ten minutes you will not regret to invest in that video. http://holykaw.alltop.com/video-overview-of-six-core-principles-of-good .
Remarkable thoughts like:
"People are your most valuable asset", but that simply isn't true. Your talented people are your most valuable asset, and your worst people are your biggest liability.

Anybody involved in management learned that the hard way.

C++ Santo POCO

Some years ago, I was introduced to ACE. I learned the classical networking patterns like Reactor, Proactor, Active Object, Half sync Half Async, Leader Followers... the hard way.
Ofcource I have been using some of the OS provided facilities like select and poll, vector i/o, even earlier but those patterns were giving more systematic way, more bird eye view of pross
and cons of doing it one or another way.
This was back in 2002-2003 when I met ACE. for the time it seemed to me that ACE is like a huge step in the right direction even though it has a steep learning curve due to its inherent
complexity and many header constants overwhelmed names etc.. I felt proud due to that fact that I am using a tool/framework which is used in so many project/companies in the world.
Before that in my early steps of learnign C++ I discovered a book named Advanced C++ styles and Idioms by Jim Coplien. Believe me or not but I have had a situations where I get
out on the terrace in the mid of the night screaming "Hey people you can't imagine the power and symplicity and genious about this and this". This was my reaction on the new stuff
I received the feeling of mind expansion. I completely agree that this book is like LSD not only because of his blue/purple color.
The screaming on the terrace happens only one time and I was thinking that it would be never-ever repeated due to the fact I believed nothing is able to expand my mind or to astonish
me in such a dramatic way. Nothing!! But! it happened that I met POCO (C++ POrtable COmpnoents). It is a comparativly new since 2005 networking oriented library.
But it's power, simplicity, elegantness made me really screaming again. This is really on of the most notable C++ achievements recently and it's inspired by the newer programming languages
and techniques. I was able just for a few days to achieve significant steps in learning the library and everithing just was happening the first time I was trying it. Just astonishing!!



Friday, March 5, 2010

Loving the plateau

I decided to put a few thoughts on a chapter of the book from George Leonard: Mastery.
Actually this is what I think the most relevant to all of us no matter what activities or profession, sport or art we are in.
Loving the plateau, or the long periods of efforts invested in prepearing to conquer the next level in our infinite development is one of the keys for success. The journey is always long and as long distance runners we need a good strategy to reach the target.
The book is very good read I recommend it!

Thursday, March 4, 2010

Net to Get Value

How I actually found the name NetNGet. I waned to emphasize the era of networks (just general networks: human, computers, telecomm....) and to bring up a new acronim where one has to be net-ting to get-ting value emphasizing and promoting „net” to the level of verb. Thus I achieved NetNGet which is short, memorizable crisp and brand new.