[contestms-dev] Re: Multiple processes vs multiple services in CMS

  • From: Giovanni Mascellani <mascellani@xxxxxxxxxxxxxxxxxxxx>
  • To: contestms-dev@xxxxxxxxxxxxx
  • Date: Mon, 18 Nov 2013 01:11:02 +0100

Hi Ludwig.

I mostly share Luca's view on this matter. I just add some comments.

Il 17/11/2013 00:34, Ludwig Schmidt ha scritto:
> Currently we are debating how we should implement these three parts
> in CMS. The two main questions are:
> 
> - Should the git polling process and the sync process be separate
> services communicating via RPCs? Or should they be two processes in
> the same program, using python's multiprocessing library?

As Luca said, I would try first of all to make your importer compatible
with our already established framework for importing. Hopefully this
shouldn't be too complicated, since I believe our existing code to be
rather generic and adaptable. However, so far we have only one importer,
so I may lack perspective. Please, let us know if your model doesn't fit
our framework.

Then, ideally your polling service would just use the general Importer
interface, so that the same solution easily adapts to other contest
description formats. This may be difficult, so probably it may be too
far-fetching to set it as initial target. I don't know your format, so I
can't judge.

As Luca said, I would avoid using multiprocessing. If anything, use two
different greenlets, that nicely fit in the IO model we recently
switched to (based on greenlet and gevent). Then you can use Queue
objects to communicate. If you want to make different services (nowadays
the tendency in CMS is to make services as small as possible, so that
may be appropriate), then you can rely on the RPC mechanism. I don't
have a strong opinion on which way to take: but usually you can start
with one and then change to the other if evidence to do so appears later
(we already split or merged services; mostly split, actually).

> - Should we add the web UI into the admin web server or write a
> separate web service for it?

Especially if your solution can be generalized to any importer, I think
that a section in AWS would be better. Anyway, Luca is working on a new
AWS architecture, which I don't know very well (I don't even know well
the old one, to say the truth). You should consider to integrate
directly with that one.

> Ideally, we would eventually like to merge these changes back into
> CMS as a new task importer. So getting your feedback on the overall
> design would be very helpful.

It seems to be a nice project. I don't hide that I have some doubts on
how to properly handle corner cases (a contest that takes a lot of time
to build, for example), but they can be ruled out with proper testing
and work. :-)

Gio.
-- 
Giovanni Mascellani <mascellani@xxxxxxxxxxxxxxxxxxxx>
Pisa, Italy

Web: http://poisson.phc.unipi.it/~mascellani
Jabber: g.mascellani@xxxxxxxxxx / giovanni@xxxxxxxxxxxxxxxxxxxx

Attachment: signature.asc
Description: OpenPGP digital signature

Other related posts: