caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: rixed@happyleptic.org
To: Chet Murthy <murthy.chet@gmail.com>
Cc: caml-list <caml-list@inria.fr>
Subject: Re: [Caml-list] RPC for OCaml?
Date: Thu, 19 May 2016 11:29:11 +0200	[thread overview]
Message-ID: <20160519092911.GA19519@pim.happyleptic.org> (raw)
In-Reply-To: <CA++P_gdYoR3nbQgxAK2vhMkyvBtH=zS0=MqZxMqmeBHh5c4KeQ@mail.gmail.com>

Hi!

I'm not very opinionated as far as which brick should be used but for the fact
that I'd like the low level bricks to be interchangeable (transport,
serialization, RPC).

I'm more opinionated about the bigger picture, which I think is more
specificaly were we (community and industry) are missing something, probably
because of how large infrastructure is build (ie incrementaly from a small
one). We commonly consider RPC, monitoring, load balancing, authentication and
service discovery as independant things, but whenever a company has to build a
large infra from scratch they tends to prefer to integrate (at least some of)
the above, for this "economy of scale" in complexity brings many benefits:

- proxyless routing
- proxyless load balancing
- seamless authentication
- seamless quota
- instrumentation of all RPC for free
- consequently, no need for independant network monitoring
- consequently, reliable detection of problems and reliable system to route
  around or drain the faulty nodes/clusters
- uniform behavior across the whole infrastructure inducing ease to diagnosing
  issues and predict behavior
- any improvement of the infrastructure benefits every services

Compare with the industry "standard" consisting of throwing some unrelated
services together and spending an enormous amount of time interconnecting them
together with little visibility.

I do not care about speed so much as to consider C++ or RDMA, but more about
reliability and type safety.  That's why I'm envisaging this for
OCaml/MirageOs, interacting with other "legacy" stuff only at the perimeter.

In this ideal world or strongly typed microservices, stub compilers or IDL
would be superfluous, for you want the authoritative types to be defined in
OCaml rather than in, say, protobuf (esp. version 3 which weaken types even
more to pander to the json crowd, or so I like to imagine). But then it would
make it much harder to interface with the outer world, as you rightfully
described.

The only way to reconcile those conflicting views, it seems, would be to use
some IDL that's as strongly typed as OCaml, supporting various underlying
serializers, and that would compile additional runtime type checks for weaker
serializer and for softer languages.  Isn't that why piqi was invented?  (By
the way piqi supports proto2 and OCaml).


  reply	other threads:[~2016-05-19  9:29 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-05-18 13:43 rixed
2016-05-18 13:52 ` Yaron Minsky
2016-05-18 14:17   ` Jon Ludlam
2016-05-18 14:34     ` rixed
2016-05-18 14:26   ` rixed
2016-05-18 19:01     ` Yaron Minsky
2016-05-18 17:42 ` Chet Murthy
2016-05-19  9:29   ` rixed [this message]
2016-06-26  5:56 ` David MENTRÉ
2016-05-18 19:59 Maxime Ransan (BLOOMBERG/ 731 LEX)

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20160519092911.GA19519@pim.happyleptic.org \
    --to=rixed@happyleptic.org \
    --cc=caml-list@inria.fr \
    --cc=murthy.chet@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).