RE: P work in new charter
2004-06-30 11:12:42
Alex,
I agree with your orchestration example. The point here there are other work
that does that, check CDL in W3C and BPEl in OASIS.
I think it is important that we scope the P well before we start the work.
I really do not see how we can scope well in the charter without fully
understand the do or do nots first.
I is going to be a fine line.
Abbie
-----Original Message-----
From: Alex Rousskov [mailto:rousskov(_at_)measurement-factory(_dot_)com]
Sent: Wednesday, June 30, 2004 1:13 PM
To: Geetha Manjunath
Cc: OPES WG
Subject: Re: P work in new charter
Geetha,
I think there are two very different panes of
discussion/scope, and I failed to identify them clearly in my
original classification.
1) One pane is whether P can be used to write user-defined
P functions and user-defined collections of P functions.
Markus concerns are that user-defined functions add too much
complexity. Markus suggests that such complexity can be
implemented in services using some service-specific
interfaces. My longish response tried to argue that this
service-specific loophole is not feasible because services
will be commoditized and will need to express the same kind
of selection rules using some standard language. Since what
we need to express would be the same, we should use one
language for that, regardless of whether the future will
place complex rules on processors, services, or both.
2) The other pane is whether P can be used to implement
services themselves.
I think the answer is that "P can orchestrate adaptations,
but cannot perform adaptations natively". In other words, all
message adaptations are performed outside of P. For example,
the following code should not cause any problems:
if (message meets some criteria) then {
services.adaptation1(message); // apply adaptation one
services.adaptation2(message); // then adaptation two
services.adaptation3(message); // then adaptation three
}
The following is still acceptable if HTTP module supports
header updating operations (which is something we have to decide):
if (http.message meets some criteria) then {
http.message.headers.delete("Content-Length");
}
But implementing http.message.headers.delete() method
natively in P will not be possible because of P's
single-assignment semantics, lack of loops, data structures, etc.
Alex.
On Wed, 30 Jun 2004, Geetha Manjunath wrote:
Hi,
I think Alex has put the scoping of 'P' discussion in a
nice way... I
mostly agree with his agruments..
In terms of what 'P' would enable:
* Rule Specification : The filtering services themselves would be
provided by vendors (say, virus scanners) while the configuring
conditions (rules) will be described/specified using the 'P' rule
language.
* Writing simple filters/actions: While modifying a message
to be able to
call several commoditized filters may be one of the
examples (Alex), I would
see the need for writing actions more when the actions
themselves are very
simple - may be to just put some additional authentication
controls onto
services, where the OPES processor would just return a 40x
response. It could
also be used to compose output of multiple filters (I
remember a discussion
we had on this mailing list about how pipelining of filters
should function
and so on. This now leaves the decision to the rule
writer). There will be
many more use cases I am sure.
* Writing modules in 'P': Since a set of rules themselves
may need to be
reused many a times, we may want to create customized
reusable modules in 'P'
.
While the above are under the category of "#1. How deep
does P reach?
(P scope)", I want to just add on additional option to "#2.
How deep
does our charter reach? (WG work scope)" or an extension to 2c.
(d) defining mechanisms by which a user can communicate rulesets to
the OPES processor.
Comments Welcome.
(sorry for joining in late on this thread - I was on a
business trip
could not see my emails earlier )
Thanks and regards
Geetha
Alex Rousskov wrote:
On Tue, 29 Jun 2004, Markus Hofmann wrote:
It moves functionality I would expect from a service
itself into
the rules language!
I believe I understand your concerns.
The outcome of this discussion will have a paramount effect on
initial P specs and, with some luck, on P success. So
let's proceed
with care.
We are trying to find the right scope for P. We all agree
that P is
used for selecting services based on messages. We all have an
understanding of what a typical service does to a message (block,
filter, or modify). We all realize that a lot of customizations
(i.e., using logic and data specific to a local service
invocation
environment and to the message itself) may be required to
adapt the
message correctly; some of those customizations might be quite
complex. We may disagree on where some of those customizations
should be taking place and how they should expressed.
Rather than building all these fine-grained
capabilities into the
rules language itself, I would prefer a very simple rules
langueage that allows me to invoke services - all the logic and
more fine-grained rules are part of the service.
The whole reason we want to have callout servers is to move
services out to a separate server. Are we now trying to
move some
of the processing complexity back into the OPES
processor in form
of a highly programmable, compelx rules language that allows
"programming" of actions?
I believe you highlighted the core of our problems and
also hinted
at the solution!
Here is a key question: Why do we have OPES service as a distinct
entity? Why do we not simply talk about OPES processors
that somehow
adapt messages? Calling a piece of code a "service" does
not make it
more efficient. Placing a piece of code on a separate box is not
always a good idea (or we would not have software libraries and
integrated appliances).
I believe the primary reason we logically isolate services from
processors is that we expect and want many services to be
standardized and commoditized (based on their functionality,
separately from OPES processors). Folks will be able to
plug in the
"best" virus filtering service, the "best" translation
service, the
"best" mobile rendering service, etc., all selected among many
standardized offerings.
If services are not easily pluggable/interchangeable, if
there are
only a few vendors building a few services, then we are
wasting our
time here. IETF WG should not be concerned with technologies that
support just a few vendor products.
So what? Well, if our operating environment is a large set of
standardized and commoditized services, then those
services cannot
be efficiently customized by service _manufacturers_!
For example, most customers today cannot buy a customized
version of
a disk drive or motherboard for their PC. They can select from a
variety of models that will all comply with a few standards for
size, voltage, and functionality. Manufacturers of drives
and boards
cannot know exact user needs and have to ship with reasonable
defaults.
Now, if customizations are essential, but OPES services cannot be
customized by their manufacturers, and the number of
manufacturers
is large, there are two sane customization options for OPES
administrators:
- customize OPES processor using a common rule language:
if (message meets some condition) then
apply(some service to message)
- customize OPES service using a common
service-customization language:
if (message meets some condition) then
apply(some service function to message)
Note that an OPES administrator will end up writing
pretty much the
same kind of rules in either case. That is, regardless of what is
customized (processor or service), the same rule language
is needed!
In summary, we cannot assume that commoditized services will be
customized by their manufactures and, hence, we cannot "offload"
customization complexities from P to manufacture-specific
languages/solutions. Same for OPES processors. We have to support
those customizations in P, which may be used to customize OPES
processors and/or services.
Do you agree with the above logic?
If yes, here is the next logical step. Given a set of
commoditized
OPES processors, commoditized OPES services, and a single rule
language to configure/customize them, what should the
minimal scope
of that language be? I believe the answer is that "the language
should be good enough for expressing all common OPES
customizations"
simply because that language is the _only_ customization
interface
an OPES administrator will have.
For our work to make sense in IETF setting, we must accommodate
common customizations _natively_ in P. We must not rely on
processors or services to provide OPES administrators with
non-standard ways of doing some part of that customization.
Commoditized processors and services will not have non-standard
interfaces, and an IETF WG should not care about markets
where there
are just a few vendors and those vendors are using a few
proprietary
interfaces.
Is there a flaw in the above logic?
Please note that the above does not give us the answer for, say,
whether P should support user-defined functions or full regular
expressions. However, it may give us a framework to derive those
answers:
- If user-defined functions are essential for
matching messages with services, then P must have them
- If full regular expressions are essential for
matching messages with services, then P must have them
We just need to debate whether X is essential for a good matching
interface. If it is essential, it must be supported natively in P.
In the absence of such a framework, we now have to debate
two things:
- whether X is essential for a good matching interface
- whether X has to be supported natively in P or as
a part of some custom service or processor knob
Sorry for such a long message. I could not find a shorter way to
express this idea. Hope it makes sense.
Please comment.
Thanks,
Alex.
|
|