SlideShare uma empresa Scribd logo
1 de 21
Baixar para ler offline
Odessa innovation week. Developers day
Interface Definition Languages
Ruslan Shevchenko
<ruslan@shevchenko.kiev.ua>
@rssh1
Consultant @ Lynx Capital Partners
Plan
❖ Historical Overview [1990-2015]
❖ from Sun RPC and CGI to Thrift & RESTFull services
❖ Today-s landscape
❖ IDL-s and today application patterns
❖ Future
Historical Overvies: early times
1990. Web not exists yet.
Xamarin modes is discussed:
• two-sided hyperlinks
• decentralized document servers
• publishing hyperlink = publishing document
Protocols: File exchange.
Terminal Access
Custom
Services on top of command-line
or custom protocols
Historical Overview: ONC RPC
1991 - 1995 Sun (then ONC) RPC
RPC = Remote Procedure Call Service specs = C structures
+ function definitions
Some RPC-based services are still in use
(NFS)
RPC still available in standard Unix-based
OS distributives. (Linux/MacOS/FreeBSD)
Historical Overview: ONC RPC (2)
Service specs = C structures
+ function definitions
struct request {
int from;
int to;
};
struct result {
int number;
string line<>;
struct result *next;
};
typedef result *res_list;
program DEMO_SERVER {
version DEMO_VERSION {
res_list get_line(request) = 1;
} = 1;
} = 0x20000023;
generate code
Server stub
Client stub
Historical Overview: CGI
1993 CGI (NASA http server, than W3C)
CGI = Common Gateway Interface
No service specs.
Inputs of programs are request
Name/Value pairs (as strings)
Standard output of external program
directed to browser
Historical Overview: CGI (2)
local ($buffer, @pairs, $pair, $name, $value, %FORM);
# Read in text
# Split information into name/value pairs
@pairs = split(/&/, $buffer);
foreach $pair (@pairs)
{
($name, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%(..)/pack("C", hex($1))/eg;
$FORM{$name} = $value;
}
$first_name = $FORM{first_name};
$last_name = $FORM{last_name};
print "Content-type:text/htmlrnrn";
print "<html>";
print "<head>";
print "<title>Hello - Second CGI Program</title>";
print "</head>";
print "<body>";
print “&function()“;
print "</body>";
print "</html>";
1;
Typed/Untyped interfaces
❖ Typed = IDL-based.
❖ RPC
❖ CORBA IDL
❖ SOAP
❖ Zeroc
❖ Thrift
❖ Google protobuf, gRPC
❖ Cap ’n proto
❖ Message Pack
❖ ……………..
❖ Untyped …
❖ CGI, Fact-CGI, …
❖ Plain XML
❖ Json, Jsonp
❖ RESTfull
❖ Auro
❖ Hessian
❖ Bjson
❖ BERT, BERT-RPC
❖ ………..
Dichotomy up to today
Historical Overview: CORBA
1991-1993. CORBA-1.0-1.2
• more general architecture guidelines then concrete standard.
• mapping to C
1996. CORBA-2.0
• IIOP (Interoperability)
• IDL mapping to C++ and Smalltalk,
1999 - 2001. Gold Times. CORBA-2.1 - 2.6
• Over 700 participants in OMG.
• W3C want to adopt CORBA as next web API (instead CGI)
• Portable Naming/Event/Service, Realtime specs, Valuetypes
• Official mapping to 14 programming languages (unofficial to alll)
2002. CORBA-3.0
Historical Overview: CORBA
1991-1993. CORBA-1.0-1.2
• more general architecture guidelines then concrete standard.
• mapping to C
1996. CORBA-2.0
• IIOP (Interoperability)
• IDL mapping to C++ and Smalltalk,
1999 - 2001. Gold Times. CORBA-2.1 - 2.6
• Over 700 participants in OMG.
• W3C want to adopt CORBA as next web API (instead CGI)
• Portable Naming/Event/Service, Realtime specs, Valuetypes
• Official mapping to 14 programming languages (unofficial to all)
2002. CORBA-3.0
Nobody cares, Industry have switched to XML
Historical Overview: CORBA
Reasons to migrate away from CORBA to XML-based RPC:
❖ CORBA Complexity and learning curve.
❖ // XML is easy - just print
❖ XML can be read by human.
❖ Easy usage from script languages
❖ XML is HTTP-based / Not need to open firewalls for new ports
❖ First CORBA systems was too fine-grained and slow.
❖ // When you print XML, you native design is coarse-grained
Historical Overview: XML-RPC/SOAP
1998. XML-RPC, (Microsoft)
• more general architecture guidelines then concrete standard.
2000. SOAP-1.1 = Simple Object Access Protocol.
• W3C recommendation
• RPC still guidelines. WSDL-1.0
2002 - 2005. Gold Times. SOAP-1.2 +
• WSDL-1.1 is formalization of WSDL-1.0
• OASIS: more than 100 XMLbased vertical standards.
• UDDI: universal registry of web applications.
• First public draft of WSDL-1.2
2007. WSDL-2.0 (=WSDL-1.2) become W3C standard
Historical Overview: XML-RPC/SOAP
1998. XML-RPC, (Microsoft)
• more general architecture guidelines then concrete standard.
2000. SOAP-1.1 = Simple Object Access Protocol.
• W3C recommendation
• RPC still guidelines. WSDL-1.0
2002 - 2005. Gold Times. SOAP-1.2 +
• WSDL-1.1 is formalization of WSDL-1.0
• OASIS: more than 100 XMLbased vertical standards.
• UDDI: universal registry of web applications.
• First public draft of WSDL-1.2
2007. WSDL-2.0 (=WSDL-1.2) become W3C standard
Nobody cares, Industry have switched to JSON/REST
Historical Overview: XML-RPC/SOAP
Reasons to migrate away from XML-based RPC to JSON:
❖ WSDL/SOAP Complexity and learning curve.
❖ // JSON is easy - just print
❖ JSON can be read by human.
❖ Easy usage from script languages.
❖ XML is too bloated.
Historical Overview: JSON-based API-s
2001. JSON (Douglas Crockford)
• Used for interaction for client-side javascript
2000. REST = Representational State Transfer.
• Phd of Roy Thomas.
• Architecture guidelines without concrete specification.
• Formulated in terms of XML API.
2002. Yahoo implements 1-st public JSON-based web service
2006 - 201(>5). Gold times.
• RESTfull/JSON is ‘default’ API for web apps
• Validation: JSONPath, JSONScheme, JSONRPC
• Typed extensions [Auro], binary variants [BJSON].
?
Mainstream loop
❖ Adoption <~~> Complexity
❖ Sometimes we need to do really complex things.
❖ Advanced technology become complex
❖ New loop with ‘something simple’.
IDL-based architecture today
Actually useful
❖ google protocol buffers, grpc: google.
https://developers.google.com/protocol-buffers/
❖ thrift: facebook. (opened via submiting to Apache)
https://thrift.apache.org/
❖ cap-n-proto: Sandstorm.ua
https://capnproto.org/
❖ Other …
❖ zeroc (http://zeroc.com)
❖ MessagePack (http://msgpack.org)
❖ FlatBuffers, SOE (Simple Object Encoding)
❖ …………………………
Pretty close to main ideas of CORBA IDL,
Still have no valuetypes
IDL-based architecture today
Good as
❖ Hight-level micro service description.
❖ Javadoc-like tools (if you steel use Json/REST: look at swagger)
❖ Static verification of interfaces.
Pay attention too:
❖ Async calls .
❖ Message passing interfaces (local API ).
❖ Traceability. (req-id)
IDL-based architecture today
IDL & microservices.
❖ UI boundaries != IDL boundaries.
❖ Discovery (Naming)/ health monitoring
❖ UI = service with interface for:
❖ event generation. (req)
❖ event consumption
❖ Design for failure failure analysis
❖ Structured logging
Future directions
Learning curve ~ task complexity
software development ~ car driving
Gradual complexity
Thanks for attention.
❖ Questions, discussions:
❖ @rssh1
❖ ruslan@shevchenko.kiev.ua
❖ https://github.com/rssh

Mais conteúdo relacionado

Mais procurados

Lisp Meet Up #31, Clake: a GNU make-like build utility in Common Lisp
Lisp Meet Up #31, Clake: a GNU make-like build utility in Common LispLisp Meet Up #31, Clake: a GNU make-like build utility in Common Lisp
Lisp Meet Up #31, Clake: a GNU make-like build utility in Common Lispmasayukitakagi
 
Ruby in office time reboot
Ruby in office time rebootRuby in office time reboot
Ruby in office time rebootKentaro Goto
 
Rubykaigi 2017-nishimotz-v6
Rubykaigi 2017-nishimotz-v6Rubykaigi 2017-nishimotz-v6
Rubykaigi 2017-nishimotz-v6Takuya Nishimoto
 
A Type-level Ruby Interpreter for Testing and Understanding
A Type-level Ruby Interpreter for Testing and UnderstandingA Type-level Ruby Interpreter for Testing and Understanding
A Type-level Ruby Interpreter for Testing and Understandingmametter
 
使用.NET构建轻量级分布式框架
使用.NET构建轻量级分布式框架使用.NET构建轻量级分布式框架
使用.NET构建轻量级分布式框架jeffz
 
Building GUI App with Electron and Lisp
Building GUI App with Electron and LispBuilding GUI App with Electron and Lisp
Building GUI App with Electron and Lispfukamachi
 
Implementing a JavaScript Engine
Implementing a JavaScript EngineImplementing a JavaScript Engine
Implementing a JavaScript EngineKris Mok
 
tDiary annual report 2009 - Sapporo Ruby Kaigi02
tDiary annual report 2009 - Sapporo Ruby Kaigi02tDiary annual report 2009 - Sapporo Ruby Kaigi02
tDiary annual report 2009 - Sapporo Ruby Kaigi02Hiroshi SHIBATA
 
The details of CI/CD environment for Ruby
The details of CI/CD environment for RubyThe details of CI/CD environment for Ruby
The details of CI/CD environment for RubyHiroshi SHIBATA
 
Ruby, the language of devops
Ruby, the language of devopsRuby, the language of devops
Ruby, the language of devopsRob Kinyon
 
How to develop the Standard Libraries of Ruby?
How to develop the Standard Libraries of Ruby?How to develop the Standard Libraries of Ruby?
How to develop the Standard Libraries of Ruby?Hiroshi SHIBATA
 
Invitation to the dark side of Ruby
Invitation to the dark side of RubyInvitation to the dark side of Ruby
Invitation to the dark side of RubySATOSHI TAGOMORI
 
Type Profiler: An Analysis to guess type signatures
Type Profiler: An Analysis to guess type signaturesType Profiler: An Analysis to guess type signatures
Type Profiler: An Analysis to guess type signaturesmametter
 
Ruby projects of interest for DevOps
Ruby projects of interest for DevOpsRuby projects of interest for DevOps
Ruby projects of interest for DevOpsRicardo Sanchez
 
Large-scaled Deploy Over 100 Servers in 3 Minutes
Large-scaled Deploy Over 100 Servers in 3 MinutesLarge-scaled Deploy Over 100 Servers in 3 Minutes
Large-scaled Deploy Over 100 Servers in 3 MinutesHiroshi SHIBATA
 
Bringing Concurrency to Ruby - RubyConf India 2014
Bringing Concurrency to Ruby - RubyConf India 2014Bringing Concurrency to Ruby - RubyConf India 2014
Bringing Concurrency to Ruby - RubyConf India 2014Charles Nutter
 
JRuby: Pushing the Java Platform Further
JRuby: Pushing the Java Platform FurtherJRuby: Pushing the Java Platform Further
JRuby: Pushing the Java Platform FurtherCharles Nutter
 

Mais procurados (20)

Lisp Meet Up #31, Clake: a GNU make-like build utility in Common Lisp
Lisp Meet Up #31, Clake: a GNU make-like build utility in Common LispLisp Meet Up #31, Clake: a GNU make-like build utility in Common Lisp
Lisp Meet Up #31, Clake: a GNU make-like build utility in Common Lisp
 
Ruby in office time reboot
Ruby in office time rebootRuby in office time reboot
Ruby in office time reboot
 
Rubykaigi 2017-nishimotz-v6
Rubykaigi 2017-nishimotz-v6Rubykaigi 2017-nishimotz-v6
Rubykaigi 2017-nishimotz-v6
 
A Type-level Ruby Interpreter for Testing and Understanding
A Type-level Ruby Interpreter for Testing and UnderstandingA Type-level Ruby Interpreter for Testing and Understanding
A Type-level Ruby Interpreter for Testing and Understanding
 
使用.NET构建轻量级分布式框架
使用.NET构建轻量级分布式框架使用.NET构建轻量级分布式框架
使用.NET构建轻量级分布式框架
 
Building GUI App with Electron and Lisp
Building GUI App with Electron and LispBuilding GUI App with Electron and Lisp
Building GUI App with Electron and Lisp
 
About Clack
About ClackAbout Clack
About Clack
 
Implementing a JavaScript Engine
Implementing a JavaScript EngineImplementing a JavaScript Engine
Implementing a JavaScript Engine
 
tDiary annual report 2009 - Sapporo Ruby Kaigi02
tDiary annual report 2009 - Sapporo Ruby Kaigi02tDiary annual report 2009 - Sapporo Ruby Kaigi02
tDiary annual report 2009 - Sapporo Ruby Kaigi02
 
The details of CI/CD environment for Ruby
The details of CI/CD environment for RubyThe details of CI/CD environment for Ruby
The details of CI/CD environment for Ruby
 
Ruby, the language of devops
Ruby, the language of devopsRuby, the language of devops
Ruby, the language of devops
 
How to develop the Standard Libraries of Ruby?
How to develop the Standard Libraries of Ruby?How to develop the Standard Libraries of Ruby?
How to develop the Standard Libraries of Ruby?
 
Invitation to the dark side of Ruby
Invitation to the dark side of RubyInvitation to the dark side of Ruby
Invitation to the dark side of Ruby
 
Type Profiler: An Analysis to guess type signatures
Type Profiler: An Analysis to guess type signaturesType Profiler: An Analysis to guess type signatures
Type Profiler: An Analysis to guess type signatures
 
Ruby projects of interest for DevOps
Ruby projects of interest for DevOpsRuby projects of interest for DevOps
Ruby projects of interest for DevOps
 
Maccro Strikes Back
Maccro Strikes BackMaccro Strikes Back
Maccro Strikes Back
 
Large-scaled Deploy Over 100 Servers in 3 Minutes
Large-scaled Deploy Over 100 Servers in 3 MinutesLarge-scaled Deploy Over 100 Servers in 3 Minutes
Large-scaled Deploy Over 100 Servers in 3 Minutes
 
Bringing Concurrency to Ruby - RubyConf India 2014
Bringing Concurrency to Ruby - RubyConf India 2014Bringing Concurrency to Ruby - RubyConf India 2014
Bringing Concurrency to Ruby - RubyConf India 2014
 
ruby-cocoa
ruby-cocoaruby-cocoa
ruby-cocoa
 
JRuby: Pushing the Java Platform Further
JRuby: Pushing the Java Platform FurtherJRuby: Pushing the Java Platform Further
JRuby: Pushing the Java Platform Further
 

Semelhante a IDLs

GraphQL is actually rest
GraphQL is actually restGraphQL is actually rest
GraphQL is actually restJakub Riedl
 
Building high performance microservices in finance with Apache Thrift
Building high performance microservices in finance with Apache ThriftBuilding high performance microservices in finance with Apache Thrift
Building high performance microservices in finance with Apache ThriftRX-M Enterprises LLC
 
LCU14 310- Cisco ODP v2
LCU14 310- Cisco ODP v2LCU14 310- Cisco ODP v2
LCU14 310- Cisco ODP v2Linaro
 
Windows communication foundation (part1) jaliya udagedara
Windows communication foundation (part1)    jaliya udagedaraWindows communication foundation (part1)    jaliya udagedara
Windows communication foundation (part1) jaliya udagedaraJaliya Udagedara
 
Directories for the REST of Us: REST to LDAP in OpenDJ 2.6
Directories for the REST of Us: REST to LDAP in OpenDJ 2.6Directories for the REST of Us: REST to LDAP in OpenDJ 2.6
Directories for the REST of Us: REST to LDAP in OpenDJ 2.6ForgeRock
 
Post-relational databases: What's wrong with web development?
Post-relational databases: What's wrong with web development?Post-relational databases: What's wrong with web development?
Post-relational databases: What's wrong with web development?Dobrica Pavlinušić
 
REST in Peace. Long live gRPC!
REST in Peace. Long live gRPC! REST in Peace. Long live gRPC!
REST in Peace. Long live gRPC! QAware GmbH
 
How to run a bank on Apache CloudStack
How to run a bank on Apache CloudStackHow to run a bank on Apache CloudStack
How to run a bank on Apache CloudStackgjdevos
 
Developing Rich Internet Applications with Perl and JavaScript
Developing Rich Internet Applications with Perl and JavaScriptDeveloping Rich Internet Applications with Perl and JavaScript
Developing Rich Internet Applications with Perl and JavaScriptnohuhu
 
The Good, the Bad and the Ugly of Migrating Hundreds of Legacy Applications ...
 The Good, the Bad and the Ugly of Migrating Hundreds of Legacy Applications ... The Good, the Bad and the Ugly of Migrating Hundreds of Legacy Applications ...
The Good, the Bad and the Ugly of Migrating Hundreds of Legacy Applications ...Josef Adersberger
 
Migrating Hundreds of Legacy Applications to Kubernetes - The Good, the Bad, ...
Migrating Hundreds of Legacy Applications to Kubernetes - The Good, the Bad, ...Migrating Hundreds of Legacy Applications to Kubernetes - The Good, the Bad, ...
Migrating Hundreds of Legacy Applications to Kubernetes - The Good, the Bad, ...QAware GmbH
 
CNCF Singapore - Introduction to Envoy
CNCF Singapore - Introduction to EnvoyCNCF Singapore - Introduction to Envoy
CNCF Singapore - Introduction to EnvoyHarish
 
HTML5, HTTP2, and You 1.1
HTML5, HTTP2, and You 1.1HTML5, HTTP2, and You 1.1
HTML5, HTTP2, and You 1.1Daniel Austin
 
What is Software Development by Thesys Tech Head of Development
What is Software Development by Thesys Tech Head of DevelopmentWhat is Software Development by Thesys Tech Head of Development
What is Software Development by Thesys Tech Head of DevelopmentProduct School
 
WebRTC Standards & Implementation Q&A - The Internals of WebRTC Browsers Impl...
WebRTC Standards & Implementation Q&A - The Internals of WebRTC Browsers Impl...WebRTC Standards & Implementation Q&A - The Internals of WebRTC Browsers Impl...
WebRTC Standards & Implementation Q&A - The Internals of WebRTC Browsers Impl...Amir Zmora
 
ORTC Library - Introduction
ORTC Library - IntroductionORTC Library - Introduction
ORTC Library - IntroductionErik Lagerway
 

Semelhante a IDLs (20)

GraphQL is actually rest
GraphQL is actually restGraphQL is actually rest
GraphQL is actually rest
 
Building high performance microservices in finance with Apache Thrift
Building high performance microservices in finance with Apache ThriftBuilding high performance microservices in finance with Apache Thrift
Building high performance microservices in finance with Apache Thrift
 
LCU14 310- Cisco ODP v2
LCU14 310- Cisco ODP v2LCU14 310- Cisco ODP v2
LCU14 310- Cisco ODP v2
 
Windows communication foundation (part1) jaliya udagedara
Windows communication foundation (part1)    jaliya udagedaraWindows communication foundation (part1)    jaliya udagedara
Windows communication foundation (part1) jaliya udagedara
 
Directories for the REST of Us: REST to LDAP in OpenDJ 2.6
Directories for the REST of Us: REST to LDAP in OpenDJ 2.6Directories for the REST of Us: REST to LDAP in OpenDJ 2.6
Directories for the REST of Us: REST to LDAP in OpenDJ 2.6
 
Post-relational databases: What's wrong with web development?
Post-relational databases: What's wrong with web development?Post-relational databases: What's wrong with web development?
Post-relational databases: What's wrong with web development?
 
SDN and metrics from the SDOs
SDN and metrics from the SDOsSDN and metrics from the SDOs
SDN and metrics from the SDOs
 
REST in Peace. Long live gRPC!
REST in Peace. Long live gRPC! REST in Peace. Long live gRPC!
REST in Peace. Long live gRPC!
 
How to run a bank on Apache CloudStack
How to run a bank on Apache CloudStackHow to run a bank on Apache CloudStack
How to run a bank on Apache CloudStack
 
Web rtc 入門
Web rtc 入門Web rtc 入門
Web rtc 入門
 
Developing Rich Internet Applications with Perl and JavaScript
Developing Rich Internet Applications with Perl and JavaScriptDeveloping Rich Internet Applications with Perl and JavaScript
Developing Rich Internet Applications with Perl and JavaScript
 
The Good, the Bad and the Ugly of Migrating Hundreds of Legacy Applications ...
 The Good, the Bad and the Ugly of Migrating Hundreds of Legacy Applications ... The Good, the Bad and the Ugly of Migrating Hundreds of Legacy Applications ...
The Good, the Bad and the Ugly of Migrating Hundreds of Legacy Applications ...
 
Migrating Hundreds of Legacy Applications to Kubernetes - The Good, the Bad, ...
Migrating Hundreds of Legacy Applications to Kubernetes - The Good, the Bad, ...Migrating Hundreds of Legacy Applications to Kubernetes - The Good, the Bad, ...
Migrating Hundreds of Legacy Applications to Kubernetes - The Good, the Bad, ...
 
CNCF Singapore - Introduction to Envoy
CNCF Singapore - Introduction to EnvoyCNCF Singapore - Introduction to Envoy
CNCF Singapore - Introduction to Envoy
 
RESTful OGC Services
RESTful OGC ServicesRESTful OGC Services
RESTful OGC Services
 
Bottom-Line Web Services
Bottom-Line Web ServicesBottom-Line Web Services
Bottom-Line Web Services
 
HTML5, HTTP2, and You 1.1
HTML5, HTTP2, and You 1.1HTML5, HTTP2, and You 1.1
HTML5, HTTP2, and You 1.1
 
What is Software Development by Thesys Tech Head of Development
What is Software Development by Thesys Tech Head of DevelopmentWhat is Software Development by Thesys Tech Head of Development
What is Software Development by Thesys Tech Head of Development
 
WebRTC Standards & Implementation Q&A - The Internals of WebRTC Browsers Impl...
WebRTC Standards & Implementation Q&A - The Internals of WebRTC Browsers Impl...WebRTC Standards & Implementation Q&A - The Internals of WebRTC Browsers Impl...
WebRTC Standards & Implementation Q&A - The Internals of WebRTC Browsers Impl...
 
ORTC Library - Introduction
ORTC Library - IntroductionORTC Library - Introduction
ORTC Library - Introduction
 

Mais de Ruslan Shevchenko

Embedding Generic Monadic Transformer into Scala. [Tfp2022]
Embedding Generic Monadic Transformer into Scala. [Tfp2022]Embedding Generic Monadic Transformer into Scala. [Tfp2022]
Embedding Generic Monadic Transformer into Scala. [Tfp2022]Ruslan Shevchenko
 
Papers We Love / Kyiv : PAXOS (and little about other consensuses )
Papers We Love / Kyiv :  PAXOS (and little about other consensuses )Papers We Love / Kyiv :  PAXOS (and little about other consensuses )
Papers We Love / Kyiv : PAXOS (and little about other consensuses )Ruslan Shevchenko
 
Scala / Technology evolution
Scala  / Technology evolutionScala  / Technology evolution
Scala / Technology evolutionRuslan Shevchenko
 
{co/contr} variance from LSP
{co/contr} variance  from LSP{co/contr} variance  from LSP
{co/contr} variance from LSPRuslan Shevchenko
 
Scala-Gopher: CSP-style programming techniques with idiomatic Scala.
Scala-Gopher: CSP-style programming techniques with idiomatic Scala.Scala-Gopher: CSP-style programming techniques with idiomatic Scala.
Scala-Gopher: CSP-style programming techniques with idiomatic Scala.Ruslan Shevchenko
 
SE 20016 - programming languages landscape.
SE 20016 - programming languages landscape.SE 20016 - programming languages landscape.
SE 20016 - programming languages landscape.Ruslan Shevchenko
 
Few simple-type-tricks in scala
Few simple-type-tricks in scalaFew simple-type-tricks in scala
Few simple-type-tricks in scalaRuslan Shevchenko
 
Why scala is not my ideal language and what I can do with this
Why scala is not my ideal language and what I can do with thisWhy scala is not my ideal language and what I can do with this
Why scala is not my ideal language and what I can do with thisRuslan Shevchenko
 
Java & low latency applications
Java & low latency applicationsJava & low latency applications
Java & low latency applicationsRuslan Shevchenko
 
Behind OOD: domain modelling in post-OO world.
Behind OOD:  domain modelling in post-OO world.Behind OOD:  domain modelling in post-OO world.
Behind OOD: domain modelling in post-OO world.Ruslan Shevchenko
 
scala-gopher: async implementation of CSP for scala
scala-gopher:  async implementation of CSP  for  scalascala-gopher:  async implementation of CSP  for  scala
scala-gopher: async implementation of CSP for scalaRuslan Shevchenko
 
Programming Languages: some news for the last N years
Programming Languages: some news for the last N yearsProgramming Languages: some news for the last N years
Programming Languages: some news for the last N yearsRuslan Shevchenko
 
JDays Lviv 2014: Java8 vs Scala: Difference points & innovation stream
JDays Lviv 2014:  Java8 vs Scala:  Difference points & innovation streamJDays Lviv 2014:  Java8 vs Scala:  Difference points & innovation stream
JDays Lviv 2014: Java8 vs Scala: Difference points & innovation streamRuslan Shevchenko
 
Ruslan.shevchenko: most functional-day-kiev 2014
Ruslan.shevchenko: most functional-day-kiev 2014Ruslan.shevchenko: most functional-day-kiev 2014
Ruslan.shevchenko: most functional-day-kiev 2014Ruslan Shevchenko
 

Mais de Ruslan Shevchenko (20)

Embedding Generic Monadic Transformer into Scala. [Tfp2022]
Embedding Generic Monadic Transformer into Scala. [Tfp2022]Embedding Generic Monadic Transformer into Scala. [Tfp2022]
Embedding Generic Monadic Transformer into Scala. [Tfp2022]
 
Svitla talks 2021_03_25
Svitla talks 2021_03_25Svitla talks 2021_03_25
Svitla talks 2021_03_25
 
Akka / Lts behavior
Akka / Lts behaviorAkka / Lts behavior
Akka / Lts behavior
 
Papers We Love / Kyiv : PAXOS (and little about other consensuses )
Papers We Love / Kyiv :  PAXOS (and little about other consensuses )Papers We Love / Kyiv :  PAXOS (and little about other consensuses )
Papers We Love / Kyiv : PAXOS (and little about other consensuses )
 
Scala / Technology evolution
Scala  / Technology evolutionScala  / Technology evolution
Scala / Technology evolution
 
{co/contr} variance from LSP
{co/contr} variance  from LSP{co/contr} variance  from LSP
{co/contr} variance from LSP
 
N flavors of streaming
N flavors of streamingN flavors of streaming
N flavors of streaming
 
Scala-Gopher: CSP-style programming techniques with idiomatic Scala.
Scala-Gopher: CSP-style programming techniques with idiomatic Scala.Scala-Gopher: CSP-style programming techniques with idiomatic Scala.
Scala-Gopher: CSP-style programming techniques with idiomatic Scala.
 
SE 20016 - programming languages landscape.
SE 20016 - programming languages landscape.SE 20016 - programming languages landscape.
SE 20016 - programming languages landscape.
 
Few simple-type-tricks in scala
Few simple-type-tricks in scalaFew simple-type-tricks in scala
Few simple-type-tricks in scala
 
Why scala is not my ideal language and what I can do with this
Why scala is not my ideal language and what I can do with thisWhy scala is not my ideal language and what I can do with this
Why scala is not my ideal language and what I can do with this
 
Scala jargon cheatsheet
Scala jargon cheatsheetScala jargon cheatsheet
Scala jargon cheatsheet
 
Java & low latency applications
Java & low latency applicationsJava & low latency applications
Java & low latency applications
 
Csp scala wixmeetup2016
Csp scala wixmeetup2016Csp scala wixmeetup2016
Csp scala wixmeetup2016
 
R ext world/ useR! Kiev
R ext world/ useR!  KievR ext world/ useR!  Kiev
R ext world/ useR! Kiev
 
Behind OOD: domain modelling in post-OO world.
Behind OOD:  domain modelling in post-OO world.Behind OOD:  domain modelling in post-OO world.
Behind OOD: domain modelling in post-OO world.
 
scala-gopher: async implementation of CSP for scala
scala-gopher:  async implementation of CSP  for  scalascala-gopher:  async implementation of CSP  for  scala
scala-gopher: async implementation of CSP for scala
 
Programming Languages: some news for the last N years
Programming Languages: some news for the last N yearsProgramming Languages: some news for the last N years
Programming Languages: some news for the last N years
 
JDays Lviv 2014: Java8 vs Scala: Difference points & innovation stream
JDays Lviv 2014:  Java8 vs Scala:  Difference points & innovation streamJDays Lviv 2014:  Java8 vs Scala:  Difference points & innovation stream
JDays Lviv 2014: Java8 vs Scala: Difference points & innovation stream
 
Ruslan.shevchenko: most functional-day-kiev 2014
Ruslan.shevchenko: most functional-day-kiev 2014Ruslan.shevchenko: most functional-day-kiev 2014
Ruslan.shevchenko: most functional-day-kiev 2014
 

Último

5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - InfographicHr365.us smith
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 
Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyEngage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyFrank van der Linden
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...Christina Lin
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)OPEN KNOWLEDGE GmbH
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEOrtus Solutions, Corp
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...aditisharan08
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfkalichargn70th171
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about usDynamic Netsoft
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 

Último (20)

5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - Infographic
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 
Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyEngage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The Ugly
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
 
Exploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the ProcessExploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the Process
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about us
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 

IDLs

  • 1. Odessa innovation week. Developers day Interface Definition Languages Ruslan Shevchenko <ruslan@shevchenko.kiev.ua> @rssh1 Consultant @ Lynx Capital Partners
  • 2. Plan ❖ Historical Overview [1990-2015] ❖ from Sun RPC and CGI to Thrift & RESTFull services ❖ Today-s landscape ❖ IDL-s and today application patterns ❖ Future
  • 3. Historical Overvies: early times 1990. Web not exists yet. Xamarin modes is discussed: • two-sided hyperlinks • decentralized document servers • publishing hyperlink = publishing document Protocols: File exchange. Terminal Access Custom Services on top of command-line or custom protocols
  • 4. Historical Overview: ONC RPC 1991 - 1995 Sun (then ONC) RPC RPC = Remote Procedure Call Service specs = C structures + function definitions Some RPC-based services are still in use (NFS) RPC still available in standard Unix-based OS distributives. (Linux/MacOS/FreeBSD)
  • 5. Historical Overview: ONC RPC (2) Service specs = C structures + function definitions struct request { int from; int to; }; struct result { int number; string line<>; struct result *next; }; typedef result *res_list; program DEMO_SERVER { version DEMO_VERSION { res_list get_line(request) = 1; } = 1; } = 0x20000023; generate code Server stub Client stub
  • 6. Historical Overview: CGI 1993 CGI (NASA http server, than W3C) CGI = Common Gateway Interface No service specs. Inputs of programs are request Name/Value pairs (as strings) Standard output of external program directed to browser
  • 7. Historical Overview: CGI (2) local ($buffer, @pairs, $pair, $name, $value, %FORM); # Read in text # Split information into name/value pairs @pairs = split(/&/, $buffer); foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); $value =~ tr/+/ /; $value =~ s/%(..)/pack("C", hex($1))/eg; $FORM{$name} = $value; } $first_name = $FORM{first_name}; $last_name = $FORM{last_name}; print "Content-type:text/htmlrnrn"; print "<html>"; print "<head>"; print "<title>Hello - Second CGI Program</title>"; print "</head>"; print "<body>"; print “&function()“; print "</body>"; print "</html>"; 1;
  • 8. Typed/Untyped interfaces ❖ Typed = IDL-based. ❖ RPC ❖ CORBA IDL ❖ SOAP ❖ Zeroc ❖ Thrift ❖ Google protobuf, gRPC ❖ Cap ’n proto ❖ Message Pack ❖ …………….. ❖ Untyped … ❖ CGI, Fact-CGI, … ❖ Plain XML ❖ Json, Jsonp ❖ RESTfull ❖ Auro ❖ Hessian ❖ Bjson ❖ BERT, BERT-RPC ❖ ……….. Dichotomy up to today
  • 9. Historical Overview: CORBA 1991-1993. CORBA-1.0-1.2 • more general architecture guidelines then concrete standard. • mapping to C 1996. CORBA-2.0 • IIOP (Interoperability) • IDL mapping to C++ and Smalltalk, 1999 - 2001. Gold Times. CORBA-2.1 - 2.6 • Over 700 participants in OMG. • W3C want to adopt CORBA as next web API (instead CGI) • Portable Naming/Event/Service, Realtime specs, Valuetypes • Official mapping to 14 programming languages (unofficial to alll) 2002. CORBA-3.0
  • 10. Historical Overview: CORBA 1991-1993. CORBA-1.0-1.2 • more general architecture guidelines then concrete standard. • mapping to C 1996. CORBA-2.0 • IIOP (Interoperability) • IDL mapping to C++ and Smalltalk, 1999 - 2001. Gold Times. CORBA-2.1 - 2.6 • Over 700 participants in OMG. • W3C want to adopt CORBA as next web API (instead CGI) • Portable Naming/Event/Service, Realtime specs, Valuetypes • Official mapping to 14 programming languages (unofficial to all) 2002. CORBA-3.0 Nobody cares, Industry have switched to XML
  • 11. Historical Overview: CORBA Reasons to migrate away from CORBA to XML-based RPC: ❖ CORBA Complexity and learning curve. ❖ // XML is easy - just print ❖ XML can be read by human. ❖ Easy usage from script languages ❖ XML is HTTP-based / Not need to open firewalls for new ports ❖ First CORBA systems was too fine-grained and slow. ❖ // When you print XML, you native design is coarse-grained
  • 12. Historical Overview: XML-RPC/SOAP 1998. XML-RPC, (Microsoft) • more general architecture guidelines then concrete standard. 2000. SOAP-1.1 = Simple Object Access Protocol. • W3C recommendation • RPC still guidelines. WSDL-1.0 2002 - 2005. Gold Times. SOAP-1.2 + • WSDL-1.1 is formalization of WSDL-1.0 • OASIS: more than 100 XMLbased vertical standards. • UDDI: universal registry of web applications. • First public draft of WSDL-1.2 2007. WSDL-2.0 (=WSDL-1.2) become W3C standard
  • 13. Historical Overview: XML-RPC/SOAP 1998. XML-RPC, (Microsoft) • more general architecture guidelines then concrete standard. 2000. SOAP-1.1 = Simple Object Access Protocol. • W3C recommendation • RPC still guidelines. WSDL-1.0 2002 - 2005. Gold Times. SOAP-1.2 + • WSDL-1.1 is formalization of WSDL-1.0 • OASIS: more than 100 XMLbased vertical standards. • UDDI: universal registry of web applications. • First public draft of WSDL-1.2 2007. WSDL-2.0 (=WSDL-1.2) become W3C standard Nobody cares, Industry have switched to JSON/REST
  • 14. Historical Overview: XML-RPC/SOAP Reasons to migrate away from XML-based RPC to JSON: ❖ WSDL/SOAP Complexity and learning curve. ❖ // JSON is easy - just print ❖ JSON can be read by human. ❖ Easy usage from script languages. ❖ XML is too bloated.
  • 15. Historical Overview: JSON-based API-s 2001. JSON (Douglas Crockford) • Used for interaction for client-side javascript 2000. REST = Representational State Transfer. • Phd of Roy Thomas. • Architecture guidelines without concrete specification. • Formulated in terms of XML API. 2002. Yahoo implements 1-st public JSON-based web service 2006 - 201(>5). Gold times. • RESTfull/JSON is ‘default’ API for web apps • Validation: JSONPath, JSONScheme, JSONRPC • Typed extensions [Auro], binary variants [BJSON]. ?
  • 16. Mainstream loop ❖ Adoption <~~> Complexity ❖ Sometimes we need to do really complex things. ❖ Advanced technology become complex ❖ New loop with ‘something simple’.
  • 17. IDL-based architecture today Actually useful ❖ google protocol buffers, grpc: google. https://developers.google.com/protocol-buffers/ ❖ thrift: facebook. (opened via submiting to Apache) https://thrift.apache.org/ ❖ cap-n-proto: Sandstorm.ua https://capnproto.org/ ❖ Other … ❖ zeroc (http://zeroc.com) ❖ MessagePack (http://msgpack.org) ❖ FlatBuffers, SOE (Simple Object Encoding) ❖ ………………………… Pretty close to main ideas of CORBA IDL, Still have no valuetypes
  • 18. IDL-based architecture today Good as ❖ Hight-level micro service description. ❖ Javadoc-like tools (if you steel use Json/REST: look at swagger) ❖ Static verification of interfaces. Pay attention too: ❖ Async calls . ❖ Message passing interfaces (local API ). ❖ Traceability. (req-id)
  • 19. IDL-based architecture today IDL & microservices. ❖ UI boundaries != IDL boundaries. ❖ Discovery (Naming)/ health monitoring ❖ UI = service with interface for: ❖ event generation. (req) ❖ event consumption ❖ Design for failure failure analysis ❖ Structured logging
  • 20. Future directions Learning curve ~ task complexity software development ~ car driving Gradual complexity
  • 21. Thanks for attention. ❖ Questions, discussions: ❖ @rssh1 ❖ ruslan@shevchenko.kiev.ua ❖ https://github.com/rssh