random technical thoughts from the Nominet technical team

Multithreading and first come, first served

1 Star2 Stars3 Stars4 Stars5 Stars (3 votes, average: 5 out of 5)
Loading ... Loading ...
Posted by charles on Mar 15th, 2010

A recent query from a registrar has prompted the Registrar Systems Support team to take a close look at how our EPP system works with Nominet’s first come, first served approach. The nature of our EPP service makes this challenging to apply and it may not be applied in the way you expect.

If we look at Nominet’s EPP service, the “EPP server” itself is actually multiple load balanced servers, operating multithreaded processes. These communicate with xml translation hardware also through load balancers, and also communicate with a database. A combination of factors can cause a difference in the sequence that transactions are acted upon. These include:

  1. which EPP server the request goes to
  2. thread scheduling (at the operating system level) in the specific EPP server
  3. which piece of hardware the xml load balancers select
  4. scheduling of translation requests within the xml hardware
  5. internal scheduling within the database

When you look at how EPP handles requests over “large” periods of time, EPP is clearly a first come, first served system. However because of the nature of multithreaded systems, it is not feasible (or desirable) to apply that principle when the period of time is a handful of milliseconds. Most of the advantages that EPP has over the Automaton stem from the fact that it is multithreaded and acts on requests in parallel.

The principle behind first come first served is that no party is given preferential treatment when registering a domain name. We do not shape our traffic and no registrar is given any sort of priority when our EPP system processes a request. We apply first come first served based on when the first valid request gets committed to the database. We must do this as we operate three different registration systems.

For registrars who work in an environment where milliseconds can mean the difference between successfully registering a domain name or not, this may be significant when deciding how your EPP client communicates with Nominet.

Hudson - a good, open source continuous integration server

1 Star2 Stars3 Stars4 Stars5 Stars (2 votes, average: 3 out of 5)
Loading ... Loading ...
Posted by alexd on Feb 3rd, 2009

I’ve used a few Continuous Integration (CI) servers over the years. Basically, a CI server will download your projects source, build and run the tests, and then publish the results (and optionally email you). The trigger can be time-based, VCS-trigger-based, or manual. This allows you constantly to monitor the state of your project’s health.

I used CruiseControl for a while - once I got it working, it worked well. It was pretty clunky to set up, though.

I’ve now been using Hudson for a wee while, and love it. It couldn’t be easier to install (simply run a JAR file), and the configuration is done entirely through a web interface that is a pleasure to interact with. So far, I’ve had no problems with it at all.

I’ve heard grumbles from folks using Teamcity in relation to its preference for using Ant as a build script. Indeed, it seems some folk actually write an Ant harness to call their makefile from Teamcity! I’ve been building and testing Java and Ruby directly from Hudson, with no issues.

Given that Hudson is free and open-source, I’d highly recommend it.

ITIL

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading ... Loading ...
Posted by brettcarr on Jul 24th, 2008

Last week I attended an ITIL v3 Foundation Training course. Non technical training courses usually leave techies a little bored and uninspired but for me this definitely was not the case. All the stories I have heard from colleagues in the past is that ITIL is a bad thing, has huge overhead and costs huge amounts of money to implement. From what I was taught last week I think this is a reflection on the way ITIL has been implemented and not a criticism of ITIL itself. One of the cornerstones of what we were taught last week is to pick up the pieces from ITIL that are relevant to your business and change/apply them to your needs, this seems like a very good philosophy to me.

Anyone who has done much looking into these kind of frameworks will tell you the cost is high mainly due to the expansion in human resources which can be huge and it is certainly true that looking through the course notes (and if you are really sleepless the ITIL books themselves) that it seems to be a job creation scheme, there are new roles all over the place, however they are just that ‘roles’ many of these tasks can and should be taken on by somebody who has another job and can dedicate a little of their time to this ITIL role to ensure that things are running smoothly from an ITIL perspective. Of course this depends on the size of the organization in question, but in the case of Nominet I would imagine that one person could indeed take on several of these roles, the important thing is that the roles and responsibilities are clearly defined.

ITIL version 3 has expanded from the previous version to now include Service Strategy and Service Design and as these were new topics there was quite a lot of focus on them in the three day course. These subjects however I believe are of more interest to a management and/or software development audience, my interest mainly was on the Service Operation angle of the course as it is in that area that I have spent the last 13 years of my working life. I was very interested in ITIL’s take on Incident, Problem and Change Management, these are all critical areas within the operation of any critical service (IT or Non IT) and doing these efficiently in a repeatable manner as ITIL suggests is very important for any service based organisation, to be fair I was already aware of this but ITIL does enable you to easily spot any weakness in the way you operate and most importantly use the experiences of other people.

Recent Posts

Highest Rated

Categories

Archives

Meta: