Apache Etch. Apache Etch Grandy/Fitzner BMW Car IT GmbH Feb. 2011 Page 1 Efficient and feature-rich network services. BMW Car IT GmbH
Apache Etch Grandy/Fitzner BMW Car IT GmbH Apache Etch. Feb. 2011 Page 2 What is Etch? framework for building network services Key facts: symmetric sychronous, two-way and asynchronous, one-way error handling timing constraints convenient service description fast & efficient scalable: from phones to backend servers modular architecture language & transport independent
Apache Etch Grandy/Fitzner BMW Car IT GmbH Apache Etch. Feb. 2011 Page 3 Network Service Description. module org.apache.etch.demo service helloworld{ string hello(string msg) } Node Node process spawn thread wait process request terminate thread process
Apache Etch Grandy/Fitzner BMW Car IT GmbH Apache Etch. Feb. 2011 Page 4 Symmetric two-way communication. service helloworld{ @Direction(server) string hello(string msg) @Direction(client) string askSomething(string question) } Client Server process
Apache Etch Grandy/Fitzner BMW Car IT GmbH Apache Etch. Feb. 2011 Page 5 Asynchronous one-way Communication. service helloworld{ @Direction(server) @Oneway void hello(string msg) @Direction(client) @Oneway void howdy(string msg) } Client Server process process process asynchronous
Apache Etch Grandy/Fitzner BMW Car IT GmbH Apache Etch. Feb. 2011 Page 6 Error handling & user data. service helloworld{ struct User ( string name ) exception UserUnknownException ( string message ) @Timeout(500) void hello(User user, string msg) throws UserUnknownException } Node Node
Apache Etch Grandy/Fitzner BMW Car IT GmbH Apache Etch. Feb. 2011 Page 7 Non-functional aspects. Programming language independent: Bindings are currently available for - Java - C# - C - Google Go (alpha version), Javascript (alpha version) Transport independent: - default transport is TCP using a binary encoding - adding new transports is simple - XML available e.g. for C#,JavaScript binding Tooling: - Wireshark support - basic Maven integration - Eclipse plugins are underway Efficiency (measured on a desktop system): - ~ 40.000 asynchronous one-way calls per second - ~ 15.000 blocking two-way calls per second
Apache Etch Grandy/Fitzner BMW Car IT GmbH Apache Etch. Feb. 2011 Page 8 Architecture. fully symmetric, flexible protocol stack for client and server Application Application Stub Remote generated Stub Remote DeliveryService call stubs / forward requests DeliveryService Mailbox Mailbox Mailbox MailboxManager manage requests / responses MailboxManager Mailbox Mailbox Mailbox Messagizer serialization Messagizer Packetizer byte[] Packets Packetizer Transport e.g. TCP, SSL Transport Implemented the same way for Java, C#, C, Go
Apache Etch Grandy/Fitzner BMW Car IT GmbH Apache Etch. Feb. 2011 Page 9 Roadmap. - more transports (e.g. UDP, Serial, ...) - more languages (first steps for JavaScript, Python exist) - naming service - discovery - web service gateway - more security - better IDE support - better maven integration - message routing, broker - ... Where do you want to go?
Apache Etch Grandy/Fitzner BMW Car IT GmbH Apache Etch. Feb. 2011 Page 10 Find out more. Website www.incubator.apache.org/etch Mailing Lists etch-dev@incubator.apache.org etch-user@incubator.apache.org Contributors: (initial development done @ Cisco) Rene Barrazza, Seth Call, Scott Comer, James DeCocq, James Dixson, Michael Fitzner, Holger Grandy, J.D. Liau, Youngjin Park, Gaurav Sandhir Speaker contact: Holger.Grandy@bmw-carit.de

Apache Etch Introduction @ FOSDEM 2011

  • 1.
    Apache Etch. Apache Etch Grandy/Fitzner BMWCar IT GmbH Feb. 2011 Page 1 Efficient and feature-rich network services. BMW Car IT GmbH
  • 2.
    Apache Etch Grandy/Fitzner BMW CarIT GmbH Apache Etch. Feb. 2011 Page 2 What is Etch? framework for building network services Key facts: symmetric sychronous, two-way and asynchronous, one-way error handling timing constraints convenient service description fast & efficient scalable: from phones to backend servers modular architecture language & transport independent
  • 3.
    Apache Etch Grandy/Fitzner BMW CarIT GmbH Apache Etch. Feb. 2011 Page 3 Network Service Description. module org.apache.etch.demo service helloworld{ string hello(string msg) } Node Node process spawn thread wait process request terminate thread process
  • 4.
    Apache Etch Grandy/Fitzner BMW CarIT GmbH Apache Etch. Feb. 2011 Page 4 Symmetric two-way communication. service helloworld{ @Direction(server) string hello(string msg) @Direction(client) string askSomething(string question) } Client Server process
  • 5.
    Apache Etch Grandy/Fitzner BMW CarIT GmbH Apache Etch. Feb. 2011 Page 5 Asynchronous one-way Communication. service helloworld{ @Direction(server) @Oneway void hello(string msg) @Direction(client) @Oneway void howdy(string msg) } Client Server process process process asynchronous
  • 6.
    Apache Etch Grandy/Fitzner BMW CarIT GmbH Apache Etch. Feb. 2011 Page 6 Error handling & user data. service helloworld{ struct User ( string name ) exception UserUnknownException ( string message ) @Timeout(500) void hello(User user, string msg) throws UserUnknownException } Node Node
  • 7.
    Apache Etch Grandy/Fitzner BMW CarIT GmbH Apache Etch. Feb. 2011 Page 7 Non-functional aspects. Programming language independent: Bindings are currently available for - Java - C# - C - Google Go (alpha version), Javascript (alpha version) Transport independent: - default transport is TCP using a binary encoding - adding new transports is simple - XML available e.g. for C#,JavaScript binding Tooling: - Wireshark support - basic Maven integration - Eclipse plugins are underway Efficiency (measured on a desktop system): - ~ 40.000 asynchronous one-way calls per second - ~ 15.000 blocking two-way calls per second
  • 8.
    Apache Etch Grandy/Fitzner BMW CarIT GmbH Apache Etch. Feb. 2011 Page 8 Architecture. fully symmetric, flexible protocol stack for client and server Application Application Stub Remote generated Stub Remote DeliveryService call stubs / forward requests DeliveryService Mailbox Mailbox Mailbox MailboxManager manage requests / responses MailboxManager Mailbox Mailbox Mailbox Messagizer serialization Messagizer Packetizer byte[] Packets Packetizer Transport e.g. TCP, SSL Transport Implemented the same way for Java, C#, C, Go
  • 9.
    Apache Etch Grandy/Fitzner BMW CarIT GmbH Apache Etch. Feb. 2011 Page 9 Roadmap. - more transports (e.g. UDP, Serial, ...) - more languages (first steps for JavaScript, Python exist) - naming service - discovery - web service gateway - more security - better IDE support - better maven integration - message routing, broker - ... Where do you want to go?
  • 10.
    Apache Etch Grandy/Fitzner BMW CarIT GmbH Apache Etch. Feb. 2011 Page 10 Find out more. Website www.incubator.apache.org/etch Mailing Lists etch-dev@incubator.apache.org etch-user@incubator.apache.org Contributors: (initial development done @ Cisco) Rene Barrazza, Seth Call, Scott Comer, James DeCocq, James Dixson, Michael Fitzner, Holger Grandy, J.D. Liau, Youngjin Park, Gaurav Sandhir Speaker contact: Holger.Grandy@bmw-carit.de