Teach your (micro)services speak Protocol Buffers with grpc.

Size: px
Start display at page:

Download "Teach your (micro)services speak Protocol Buffers with grpc."

Transcription

1 Teach your (micro)services speak Protocol Buffers with grpc. Mihai

2 What s inside?

3 What s inside? Message serialization and deserialization

4 What s inside? Message serialization and deserialization Message transport

5 What s inside? Message serialization and deserialization Message transport Services diversity

6 How it works in real life B A C D

7 How it works in real life B A C D

8 In a nutshell Client Service

9 In a nutshell Client Service Over HTTP Serialized to JSON

10 In a nutshell Client Service Over HTTP Proprietary protocol Serialized to JSON Remote objects

11 JSON advantages

12 Human readable JSON advantages

13 JSON advantages Human readable Schema-less

14 JSON advantages Human readable Schema-less Language agnostic

15 JSON disadvantages

16 JSON disadvantages Human readable

17 JSON disadvantages Human readable Isn t it a benefit?

18 JSON disadvantages Human readable Isn t it a benefit? Schema-less

19 JSON disadvantages Human readable Isn t it a benefit? Schema-less Isn t it a benefit as well?

20 JSON disadvantages Human readable Isn t it a benefit? Schema-less Isn t it a benefit as well? Type-less

21 Protocol Buffers? Protocol buffers are Google's language-neutral, platform-neutral, extensible mechanism for serializing structured data think XML, but smaller, faster, and simpler.

22 Protocol Buffers? Protocol buffers are Google's language-neutral, platform-neutral, extensible mechanism for serializing structured data think XML, but smaller, faster, and simpler.

23 Protocol Buffers? Protocol buffers are Google's language-neutral, platform-neutral, extensible mechanism for serializing structured data think XML, but smaller, faster, and simpler. JSON

24 Protocol Buffers example message Person { string name = 1; int32 id = 2; repeated string aliases = 3; }

25 Protocol Buffers example message Person { string name = 1; int32 id = 2; repeated string aliases = 3; }

26 Protocol Buffers example message Person { string name = 1; int32 id = 2; repeated string aliases = 3; }

27 Protocol Buffers example message Person { string name = 1; int32 id = 2; repeated string aliases = 3; }

28 Protocol Buffers example message Person { string name = 1; int32 id = 2; repeated string aliases = 3; }

29 Protocol Buffers example message Person { string name = 1; int32 id = 2; repeated string aliases = 3; }

30 Protocol Buffers example message Person { reserved 1, 2, 5; reserved "name"; int32 id = 3; repeated string aliases = 4; }

31 Why protocol buffers Binary format

32 Why protocol buffers Enforcing the schema

33 Why protocol buffers Language neutral

34 Why protocol buffers Out-of the box backward compatibility

35 Why protocol buffers Out-of the box backward compatibility

36 Why protocol buffers Out-of the box backward compatibility if version == 3:... elif version > 4: if (version == 5):......

37 Why protocol buffers Generally faster

38 How to message Person { string name = 1; int32 id = 2; repeated string aliases = 3; }

39 How to message Person { string name = 1; Proto message definition int32 id = 2; repeated string aliases = 3; }

40 How to message Person { string name = 1; Proto message definition int32 id = 2; repeated string aliases = 3; } Person john = Person.newBuilder().setId(1234).setName("John Doe").addAliases("ionel").build();

41 How to message Person { string name = 1; Proto message definition int32 id = 2; repeated string aliases = 3; } Person john = Person.newBuilder().setId(1234) Object creation.setname("john Doe").addAliases("ionel").build();

42 How to message Person { string name = 1; Proto message definition int32 id = 2; repeated string aliases = 3; } john = Person() Object creation john.id = 1234 john.name = 'John Doe' john.aliases.add( ionel )

43 How to message Person { string name = 1; Proto message definition int32 id = 2; repeated string aliases = 3; } john = Person(id=1234, Object creation name='john Doe', aliases=['ionel'])

44 Communication (REST-ish) 1. URI: 2. Make an HTTP GET Request 3. Receive a plaintext JSON 4. Parse it 5.

45 Request GET /person/42 HTTP/1.1 Accept: */* Accept-Encoding: gzip, deflate Connection: keep-alive Host: api.example.com...

46 Response headers HTTP/ OK Access-Control-Allow-Credentials: true Cache-Control: public, max-age=14400 Content-Encoding: gzip Content-Type: application/json; charset=utf-8...

47 Response body { "name": "John Doe", "id": 42, "aliases": [ "ionel", "honzík" ] }

48 HTTP2

49 Distributed objects

50 Distributed objects First Law of Distributed Object Design: don't distribute your objects. Martin Fowler

51 The 8 Fallacies of distributed computing 1. The network is reliable. 5. Topology doesn't change. 2. Latency is zero. 6. There is one administrator. 3. Bandwidth is infinite. 7. Transport cost is zero. 4. The network is secure. 8. The network is homogeneous.

52 Keep in mind Anything that can go wrong will go wrong. Murphy s Law

53 So, what s next?

54 Services not Objects, Messages not References

55 Coverage & Simplicity

56 How does it work

57 Service definition service RoutePlanner { rpc GetRoutes (GetRoutesRequest) returns (GetRoutesResponse) {} }

58 Service definition service RoutePlanner { rpc GetRoutes (GetRoutesRequest) returns (GetRoutesResponse) {} }

59 Service definition service RoutePlanner { rpc GetRoutes (GetRoutesRequest) returns (GetRoutesResponse) {} }

60 Service definition service RoutePlanner { rpc GetRoutes (GetRoutesRequest) returns (GetRoutesResponse) {} }

61 Service definition service RoutePlanner { rpc GetRoutes (GetRoutesRequest) returns (GetRoutesResponse) {} }

62 Service definition service RoutePlanner { rpc GetRoutes (GetRoutesRequest) returns (GetRoutesResponse) {} }

63 Service definition message GetRoutesRequest { Location origin = 1; Location destination = 2; } message GetRoutesResponse { } repeated Route routes = 1;

64 Generate server code $ python -m grpc_tools.protoc \ --proto_path=../protos \ --python_out=. \ --grpc_python_out=. \../protos/route_planner.proto

65 Generate server code $ python -m grpc_tools.protoc \ --proto_path=../protos \ --python_out=. \ --grpc_python_out=. \../protos/route_planner.proto

66 Generate server code $ python -m grpc_tools.protoc \ --proto_path=../protos \ --python_out=. \ --grpc_python_out=. \../protos/route_planner.proto

67 Generate server code $ python -m grpc_tools.protoc \ --proto_path=../protos \ --python_out=. \ --grpc_python_out=. \../protos/route_planner.proto

68 Generate server code $ python -m grpc_tools.protoc \ --proto_path=../protos \ --python_out=. \ --grpc_python_out=. \../protos/route_planner.proto

69 Generate server code $ python -m grpc_tools.protoc \ --proto_path=../protos \ --python_out=. \ --grpc_python_out=. \../protos/route_planner.proto

70 Generate server code $ python -m grpc_tools.protoc \ --proto_path=../protos \ --python_out=. \ --grpc_python_out=. \../protos/route_planner.proto

71 Generated code $ tree. route_planner_pb2.py route_planner_pb2_grpc.py 0 directories, 2 files

72 Implementing the service

73 Implementing the service

74 Service code class Servicer(route_planner_pb2_grpc.RoutePlannerServicer): """Service implementation.""" def GetRoutes(self, request, context): return process_magically_the_request(request)

75 Service code server = grpc.server( futures.threadpoolexecutor(max_workers=10)) route_planner_pb2_grpc.add_routeplannerservicer_to_server( Servicer(), server) server.add_insecure_port('[::]:12345') server.start()

76 Service code server = grpc.server( futures.threadpoolexecutor(max_workers=10)) route_planner_pb2_grpc.add_routeplannerservicer_to_server( Servicer(), server) server.add_insecure_port('[::]:12345') server.start()

77 Service code server = grpc.server( futures.threadpoolexecutor(max_workers=10)) route_planner_pb2_grpc.add_routeplannerservicer_to_server( Servicer(), server) server.add_insecure_port('[::]:12345') server.start()

78 Service code server = grpc.server( futures.threadpoolexecutor(max_workers=10)) route_planner_pb2_grpc.add_routeplannerservicer_to_server( Servicer(), server) server.add_insecure_port('[::]:12345') server.start()

79 Service code server = grpc.server( futures.threadpoolexecutor(max_workers=10)) route_planner_pb2_grpc.add_routeplannerservicer_to_server( Servicer(), server) server.add_insecure_port('[::]:12345') server.start()

80 Implementing the client

81 Implementing the client

82 Client code channel = grpc.insecure_channel( localhost:12345') stub = route_planner_pb2_grpc.routeplannerstub(channel) request = route_planner_pb2.getroutesrequest( origin=current_location, destination=destination_coords) response = stub.getroutes(request)

83 Client code channel = grpc.insecure_channel( localhost:12345') stub = route_planner_pb2_grpc.routeplannerstub(channel) request = route_planner_pb2.getroutesrequest( origin=current_location, destination=destination_coords) response = stub.getroutes(request)

84 Client code channel = grpc.insecure_channel( localhost:12345') stub = route_planner_pb2_grpc.routeplannerstub(channel) request = route_planner_pb2.getroutesrequest( origin=current_location, destination=destination_coords) response = stub.getroutes(request)

85 Client code channel = grpc.insecure_channel( localhost:12345') stub = route_planner_pb2_grpc.routeplannerstub(channel) request = route_planner_pb2.getroutesrequest( origin=current_location, destination=destination_coords) response = stub.getroutes(request)

86 Client code channel = grpc.insecure_channel( localhost:12345') stub = route_planner_pb2_grpc.routeplannerstub(channel) request = route_planner_pb2.getroutesrequest( origin=current_location, destination=destination_coords) response = stub.getroutes(request)

87 Client code channel = grpc.insecure_channel( localhost:12345') stub = route_planner_pb2_grpc.routeplannerstub(channel) request = route_planner_pb2.getroutesrequest( origin=current_location, destination=destination_coords) response = stub.getroutes(request)

88 Client code (async) response_future = stub.getroutes.future(request) response_future.result()

89 grpc_cli $ grpc_cli call localhost:12345 \ RoutePlanner.GetRoutes \ <<- PROTO origin: <long: 0.0 lat: 0.0> destination: <long: 1.1 lat: 1.1> PROTO

90 grpc_cli $ grpc_cli call localhost:12345 \ RoutePlanner.GetRoutes \ <<- PROTO origin: <long: 0.0 lat: 0.0> destination: <long: 1.1 lat: 1.1> PROTO

91 grpc_cli $ grpc_cli call localhost:12345 \ RoutePlanner.GetRoutes \ <<- PROTO origin: <long: 0.0 lat: 0.0> destination: <long: 1.1 lat: 1.1> PROTO

92 grpc_cli $ grpc_cli call localhost:12345 \ RoutePlanner.GetRoutes \ <<- PROTO origin: <long: 0.0 lat: 0.0> destination: <long: 1.1 lat: 1.1> PROTO

93 grpc_cli $ grpc_cli call localhost:12345 \ RoutePlanner.GetRoutes \ <<- PROTO origin: <long: 0.0 lat: 0.0> destination: <long: 1.1 lat: 1.1> PROTO

94 grpc_cli Rpc succeeded with OK status Response: routes: <...> routes: <...> routes: <...> routes: <...>

95 Service definition service RoutePlanner { rpc GetRoutes (GetRoutesRequest) returns (GetRoutesResponse) {} }

96 Service definition - response streaming service RoutePlanner { rpc GetRoutes (GetRoutesRequest) returns (stream GetRoutesResponse) {} }

97 Service definition service RoutePlanner { rpc GetRoutes (GetRoutesRequest) returns (GetRoutesResponse) {} }

98 Service definition - request streaming service RoutePlanner { rpc GetRoutes (stream GetRoutesRequest) returns (GetRoutesResponse) {} }

99 Request streaming? Response streaming?

100 Request streaming? Response streaming?

101 Service definition - bidirectional streaming service RoutePlanner { rpc GetRoutes (stream GetRoutesRequest) returns (stream GetRoutesResponse) {} }

102 Keep in mind Things will go wrong

103 Timeouts? ms A D? ms? ms Client Service B? ms? ms E? ms C

104 Uniform timeout Client Service A B

105 Uniform timeout 500 ms timeout 500 ms timeout 500 ms timeout Client Service A B

106 Uniform timeout 500 ms timeout 500 ms timeout 500 ms timeout 20 ms Client Service A B

107 Uniform timeout 500 ms timeout 500 ms timeout 500 ms timeout 20 ms 30 ms Client Service A B

108 Uniform timeout 500 ms timeout 500 ms timeout 500 ms timeout 20 ms 30 ms 40 ms Client Service A B

109 Uniform timeout 500 ms timeout 500 ms timeout 500 ms timeout 20 ms 30 ms 40 ms Client Service A 420 ms B

110 Uniform timeout 500 ms timeout 500 ms timeout 500 ms timeout X 20 ms 30 ms Client Service A 40 ms 420 ms B

111 Uniform timeout 500 ms timeout 500 ms timeout 500 ms timeout 20 ms 30 ms 40 ms X X Client Service A 20 ms 420 ms B

112 Fine-tuned timeout Client Service A B

113 Fine-tuned timeout 300 ms timeout 280 ms timeout 50 ms timeout Client Service A B

114 Fine-tuned timeout 300 ms timeout 280 ms timeout 50 ms timeout 20 ms Client Service A B

115 Fine-tuned timeout 300 ms timeout 280 ms timeout 50 ms timeout 20 ms 30 ms Client Service A B

116 Fine-tuned timeout 300 ms timeout 280 ms timeout 50 ms timeout 20 ms 30 ms 15 ms Client Service A B

117 Fine-tuned timeout 300 ms timeout 280 ms timeout 50 ms timeout 20 ms 30 ms 15 ms Client Service A 40 ms B

118 Fine-tuned timeout 300 ms timeout 280 ms timeout 50 ms timeout 20 ms 30 ms X Client Service A 15 ms 40 ms B

119 Adaptive timeout Client Service A B

120 Adaptive timeout 200 ms timeout Client Service A B

121 Adaptive timeout 200 ms timeout 20 ms Client Service A B

122 Adaptive timeout 200 ms timeout 200ms - 20ms = 180 ms 20 ms Client Service A B

123 Adaptive timeout 200 ms timeout 200ms - 20ms = 180 ms 20 ms 30 ms Client Service A B

124 Adaptive timeout 200 ms timeout 200ms - 20ms = 180 ms 180ms - 30ms = 150ms 20 ms 30 ms Client Service A B

125 Adaptive timeout 200 ms timeout 200ms - 20ms = 180 ms 180ms - 30ms = 150ms 20 ms 30 ms 15 ms Client Service A B

126 Adaptive timeout 200 ms timeout 200ms - 20ms = 180 ms 180ms - 30ms = 150ms 20 ms 30 ms 15 ms Client Service A 40 ms B

127 Adaptive timeout 200 ms timeout 200ms - 20ms = 180 ms 180ms - 30ms = 150ms 20 ms 30 ms 15 ms Client Service A 20 ms 40 ms B

128 Adaptive timeout 200 ms timeout 200ms - 20ms = 180 ms 180ms - 30ms = 150ms 20 ms 30 ms 15 ms Client Service A 40 ms 20 ms 40 ms B

129 grpc: Deadlines

130 Timeout is relative grpc: Deadlines

131 grpc: Deadlines Timeout is relative Deadline is absolute

132 Deadline propagation Start TS: Timeout: 200 Deadline: Client Service A B

133 Deadline propagation Start TS: Timeout: 200 Deadline: TS: Client Service A B

134 Deadline propagation Start TS: Timeout: 200 Deadline: TS: ms Client Service A B

135 Deadline propagation Start TS: Timeout: 200 Deadline: TS: TS: ms Client Service A B

136 Deadline propagation Start TS: Timeout: 200 Deadline: TS: TS: ms 30 ms Client Service A B

137 Deadline propagation Start TS: Timeout: 200 Deadline: TS: TS: TS: ms 30 ms Client Service A B

138 Deadline propagation Start TS: Timeout: 200 Deadline: TS: TS: TS: ms 30 ms 15 ms Client Service A B

139 Deadline propagation Start TS: Timeout: 200 Deadline: TS: TS: TS: TS: ms 30 ms 15 ms Client Service A B

140 Deadline propagation Start TS: Timeout: 200 Deadline: TS: TS: TS: TS: ms 30 ms 15 ms Client Service A 40 ms B

141 Deadline propagation Start TS: Timeout: 200 Deadline: TS: TS: TS: TS: ms 30 ms 15 ms Client Service A 40 ms B TS:

142 Deadline propagation Start TS: Timeout: 200 Deadline: TS: TS: TS: TS: ms 30 ms 15 ms Client Service A 20 ms 40 ms B TS:

143 Deadline propagation Start TS: Timeout: 200 Deadline: TS: TS: TS: TS: ms 30 ms 15 ms Client Service A 20 ms 40 ms B TS: TS:

144 Deadline propagation Start TS: Timeout: 200 Deadline: TS: TS: TS: TS: ms 30 ms 15 ms Client Service A 40 ms 20 ms 40 ms B TS: TS:

145 Deadline propagation Start TS: Timeout: 200 Deadline: TS: TS: TS: TS: ms 30 ms 15 ms Client Service A 40 ms 20 ms 40 ms B TS: TS: TS:

146 Deadline propagation Start TS: Timeout: 200 Deadline: Client Service A B

147 Deadline propagation Start TS: Timeout: 200 Deadline: TS: Client Service A B

148 Deadline propagation Start TS: Timeout: 200 Deadline: TS: ms Client Service A B

149 Deadline propagation Start TS: Timeout: 200 Deadline: TS: TS: ms Client Service A B

150 Deadline propagation Start TS: Timeout: 200 Deadline: TS: TS: ms 100 ms Client Service A B

151 Deadline propagation Start TS: Timeout: 200 Deadline: TS: TS: TS: ms 100 ms Client Service A B

152 Deadline propagation Start TS: Timeout: 200 Deadline: TS: TS: TS: ms 100 ms X Client Service A B

153 Deadline propagation Start TS: Timeout: 200 Deadline: TS: TS: TS: ms 100 ms X Client Service A B DEADLINE_EXCEEDED

154 Deadline propagation Start TS: Timeout: 200 Deadline: TS: TS: TS: ms 100 ms X Client Service A B DEADLINE_EXCEEDED DEADLINE_EXCEEDED

155 Cancellation

156 Cancellation Can be initiated by both client/server

157 Cancellation Can be initiated by both client/server Immediately terminates the RPC

158 Cancellation Can be initiated by both client/server Immediately terminates the RPC It is not a roll-back

159 Cancellation Can be initiated by both client/server Immediately terminates the RPC It is not a roll-back Automatically cascaded

160 Backward compatibility

161 grpc language support C++ C# Python JS (Node) Java Android Java Go Objective-C Ruby PHP

162 grpc Platform support Linux macos Windows Android ios

163 Success stories

164 Success stories

165 Benefits

166 Benefits Focus on the API design & contract

167 Benefits Focus on the API design & contract HTTP2 is awesome

168 Benefits Focus on the API design & contract HTTP2 is awesome Bi-directional streaming

169 Benefits Focus on the API design & contract HTTP2 is awesome Bi-directional streaming Freedom to pick any language

170 Benefits Focus on the API design & contract HTTP2 is awesome Bi-directional streaming Freedom to pick any language Service-to-Service and Service-to-Mobile friendly

171 Benefits Focus on the API design & contract HTTP2 is awesome Bi-directional streaming Freedom to pick any language Service-to-Service and Service-to-Mobile friendly Production ready

172 Fin. Thank you.

{ REST } vs. Battle of API s

{ REST } vs. Battle of API s { REST } vs Battle of API s Software Engineer at Sensedia Who am I? MBA in java projects Java and microservice enthusiastic Microservices Agenda REST grpc Demo Questions Moving to Microservices Monolith

More information

Semesterprojekt Implementierung eines Brettspiels (inklusive computergesteuerter Spieler) Remote Procedure Calls

Semesterprojekt Implementierung eines Brettspiels (inklusive computergesteuerter Spieler) Remote Procedure Calls Semesterprojekt Implementierung eines Brettspiels (inklusive computergesteuerter Spieler) Wintersemester 16/17 Remote Procedure Calls Patrick Schäfer patrick.schaefer@hu-berlin.de Marc Bux buxmarcn@informatik.hu-berlin.de

More information

CSCI-1680 RPC and Data Representation. Rodrigo Fonseca

CSCI-1680 RPC and Data Representation. Rodrigo Fonseca CSCI-1680 RPC and Data Representation Rodrigo Fonseca Today Defining Protocols RPC IDL Problem Two programs want to communicate: must define the protocol We have seen many of these, across all layers E.g.,

More information

Protocol Buffers, grpc

Protocol Buffers, grpc Protocol Buffers, grpc Szolgáltatásorientált rendszerintegráció Service-Oriented System Integration Dr. Balázs Simon BME, IIT Outline Remote communication application level vs. transport level protocols

More information

grpc - A solution for RPCs by Google Distributed Systems Seminar at Charles University in Prague, Nov 2016 Jan Tattermusch - grpc Software Engineer

grpc - A solution for RPCs by Google Distributed Systems Seminar at Charles University in Prague, Nov 2016 Jan Tattermusch - grpc Software Engineer grpc - A solution for RPCs by Google Distributed Systems Seminar at Charles University in Prague, Nov 2016 Jan Tattermusch - grpc Software Engineer About me Software Engineer at Google (since 2013) Working

More information

REST Easy with Infrared360

REST Easy with Infrared360 REST Easy with Infrared360 A discussion on HTTP-based RESTful Web Services and how to use them in Infrared360 What is REST? REST stands for Representational State Transfer, which is an architectural style

More information

CSCI-1680 RPC and Data Representation John Jannotti

CSCI-1680 RPC and Data Representation John Jannotti CSCI-1680 RPC and Data Representation John Jannotti Original Slides from Rodrigo Fonseca Today Defining Protocols RPC IDL Problem Two programs want to communicate: must define the protocol We have seen

More information

Using OAuth 2.0 to Access ionbiz APIs

Using OAuth 2.0 to Access ionbiz APIs Using OAuth 2.0 to Access ionbiz APIs ionbiz APIs use the OAuth 2.0 protocol for authentication and authorization. ionbiz supports common OAuth 2.0 scenarios such as those for web server, installed, and

More information

Googles Approach for Distributed Systems. Slides partially based upon Majd F. Sakr, Vinay Kolar, Mohammad Hammoud and Google PrototBuf Tutorial

Googles Approach for Distributed Systems. Slides partially based upon Majd F. Sakr, Vinay Kolar, Mohammad Hammoud and Google PrototBuf Tutorial Protocol Buffers Googles Approach for Distributed Systems Slides partially based upon Majd F. Sakr, Vinay Kolar, Mohammad Hammoud and Google PrototBuf Tutorial https://developers.google.com/protocol-buffers/docs/tutorials

More information

Cross-Platform Data Models and API Using grpc

Cross-Platform Data Models and API Using grpc Cross-Platform Data Models and API Using grpc Sebastian Hagedorn, Felix Lamouroux Outline 1. Motivation & Goals 2. Choosing the Right Cross-Platform Technology 3. Introduction to Protocol Buffers and grpc

More information

Apache Thrift Introduction & Tutorial

Apache Thrift Introduction & Tutorial Apache Thrift Introduction & Tutorial Marlon Pierce, Suresh Marru Q & A TIOBE Index Programming Language polyglotism Modern distributed applications are rarely composed of modules written in a single language.

More information

Distributed Systems. 03r. Python Web Services Programming Tutorial. Paul Krzyzanowski TA: Long Zhao Rutgers University Fall 2017

Distributed Systems. 03r. Python Web Services Programming Tutorial. Paul Krzyzanowski TA: Long Zhao Rutgers University Fall 2017 Distributed Systems 03r. Python Web Services Programming Tutorial Paul Krzyzanowski TA: Long Zhao Rutgers University Fall 2017 1 From Web Browsing to Web Services Web browser: Dominant model for user interaction

More information

CS October 2017

CS October 2017 From Web Browsing to Web Services Web browser: Dominant model for user interaction on the Internet Distributed Systems 03r. Python Web Services Programming Tutorial Not good for programmatic access to

More information

REST as a better web service paradigm

REST as a better web service paradigm REST as a better web service paradigm Norman Gray VO-TECH / Uni. Leicester / Uni. Glasgow IVOA Interop, Beijing, 2007 May 15 overview Plan: First, a bit of SOAP-bashing, just to get warmed up. What is

More information

Projects and Apache Thrift. August 30 th 2018 Suresh Marru, Marlon Pierce

Projects and Apache Thrift. August 30 th 2018 Suresh Marru, Marlon Pierce Projects and Apache Thrift August 30 th 2018 Suresh Marru, Marlon Pierce smarru@iu.edu, marpierc@iu.edu Todays Outline Final Project Proposals Apache Thrift Overview Open Discussion Project Life Cycle

More information

SERVICE API SPECIALIST Certification. Service API Specialist

SERVICE API SPECIALIST Certification. Service API Specialist SERVICE API SPECIALIST Certification Service API The new generation SOACP program from Arcitura is dedicated to excellence in the fields of contemporary service-oriented architecture, microservices, service

More information

Writing REST APIs with OpenAPI and Swagger Ada

Writing REST APIs with OpenAPI and Swagger Ada Writing REST APIs with OpenAPI and Swagger Ada Stéphane Carrez FOSDEM 2018 OpenAPI and Swagger Ada Introduction to OpenAPI and Swagger Writing a REST Ada client Writing a REST Ada server Handling security

More information

CS 417 9/18/17. Paul Krzyzanowski 1. Socket-based communication. Distributed Systems 03. Remote Procedure Calls. Sample SMTP Interaction

CS 417 9/18/17. Paul Krzyzanowski 1. Socket-based communication. Distributed Systems 03. Remote Procedure Calls. Sample SMTP Interaction Socket-based communication Distributed Systems 03. Remote Procedure Calls Socket API: all we get from the to access the network Socket = distinct end-to-end communication channels Read/write model Line-oriented,

More information

Distributed Systems. 03. Remote Procedure Calls. Paul Krzyzanowski. Rutgers University. Fall 2017

Distributed Systems. 03. Remote Procedure Calls. Paul Krzyzanowski. Rutgers University. Fall 2017 Distributed Systems 03. Remote Procedure Calls Paul Krzyzanowski Rutgers University Fall 2017 1 Socket-based communication Socket API: all we get from the OS to access the network Socket = distinct end-to-end

More information

Composer Help. Web Request Common Block

Composer Help. Web Request Common Block Composer Help Web Request Common Block 7/4/2018 Web Request Common Block Contents 1 Web Request Common Block 1.1 Name Property 1.2 Block Notes Property 1.3 Exceptions Property 1.4 Request Method Property

More information

HTTP Reading: Section and COS 461: Computer Networks Spring 2013

HTTP Reading: Section and COS 461: Computer Networks Spring 2013 HTTP Reading: Section 9.1.2 and 9.4.3 COS 461: Computer Networks Spring 2013 1 Recap: Client-Server Communication Client sometimes on Initiates a request to the server when interested E.g., Web browser

More information

Elliotte Rusty Harold August From XML to Flat Buffers: Markup in the Twenty-teens

Elliotte Rusty Harold August From XML to Flat Buffers: Markup in the Twenty-teens Elliotte Rusty Harold elharo@ibiblio.org August 2018 From XML to Flat Buffers: Markup in the Twenty-teens Warning! The Contenders XML JSON YAML EXI Protobufs Flat Protobufs XML JSON YAML EXI Protobuf Flat

More information

Other architectures are externally built or expanded

Other architectures are externally built or expanded RESTful interfaces http://rest.elkstein.org/ (but not Section 11) http://net.tutsplus.com/tutorials/other/a-beginners-introduction-to-http-and-rest/ and for a laugh (or cry) : http://www.looah.com/source/view/2284

More information

CSCI-1680 RPC and Data Representation. Rodrigo Fonseca

CSCI-1680 RPC and Data Representation. Rodrigo Fonseca CSCI-1680 RPC and Data Representation Rodrigo Fonseca Administrivia TCP: talk to the TAs if you still have questions! ursday: HW3 out Final Project (out 4/21) Implement a WebSockets server an efficient

More information

Distributed Systems 8. Remote Procedure Calls

Distributed Systems 8. Remote Procedure Calls Distributed Systems 8. Remote Procedure Calls Paul Krzyzanowski pxk@cs.rutgers.edu 10/1/2012 1 Problems with the sockets API The sockets interface forces a read/write mechanism Programming is often easier

More information

Develop Mobile Front Ends Using Mobile Application Framework A - 2

Develop Mobile Front Ends Using Mobile Application Framework A - 2 Develop Mobile Front Ends Using Mobile Application Framework A - 2 Develop Mobile Front Ends Using Mobile Application Framework A - 3 Develop Mobile Front Ends Using Mobile Application Framework A - 4

More information

The Life of an Open-Source Project

The Life of an Open-Source Project The Life of an Open-Source Project David Garcia Quintas Xoogler, grpc C Core Team dgquintas@gmail.com How I Got Here Agenda Why develop [a new project] in open-source. What is being developed: grpc. How

More information

Understanding RESTful APIs and documenting them with Swagger. Presented by: Tanya Perelmuter Date: 06/18/2018

Understanding RESTful APIs and documenting them with Swagger. Presented by: Tanya Perelmuter Date: 06/18/2018 Understanding RESTful APIs and documenting them with Swagger Presented by: Tanya Perelmuter Date: 06/18/2018 1 Part 1 Understanding RESTful APIs API types and definitions REST architecture and RESTful

More information

REST in a Nutshell: A Mini Guide for Python Developers

REST in a Nutshell: A Mini Guide for Python Developers REST in a Nutshell: A Mini Guide for Python Developers REST is essentially a set of useful conventions for structuring a web API. By "web API", I mean an API that you interact with over HTTP - making requests

More information

Cisco IOS XR Programmability for Cloud-Scale Networking

Cisco IOS XR Programmability for Cloud-Scale Networking Cisco IOS XR Programmability for Cloud-Scale Networking LABRST-2332 Santiago Álvarez, Distinguished Technical Marketing Engineer @111pontes Level of Expertise With Network Programmability 1. Can t spell

More information

A short introduction to Web Services

A short introduction to Web Services 1 di 5 17/05/2006 15.40 A short introduction to Web Services Prev Chapter Key Concepts Next A short introduction to Web Services Since Web Services are the basis for Grid Services, understanding the Web

More information

Effective Testing with API Simulation and (Micro)Service Virtualisation

Effective Testing with API Simulation and (Micro)Service Virtualisation Effective Testing with API Simulation and (Micro)Service Virtualisation Andrew Morgan Daniel Bryant @Spectolabs 1 tl;dr Testing distributed systems is hard Many of us building distributed systems (microservices)

More information

Operating Systems. 18. Remote Procedure Calls. Paul Krzyzanowski. Rutgers University. Spring /20/ Paul Krzyzanowski

Operating Systems. 18. Remote Procedure Calls. Paul Krzyzanowski. Rutgers University. Spring /20/ Paul Krzyzanowski Operating Systems 18. Remote Procedure Calls Paul Krzyzanowski Rutgers University Spring 2015 4/20/2015 2014-2015 Paul Krzyzanowski 1 Remote Procedure Calls 2 Problems with the sockets API The sockets

More information

The Future of the Realtime Web BETTER APIS WITH GRAPHQL. Josh

The Future of the Realtime Web BETTER APIS WITH GRAPHQL. Josh The Future of the Realtime Web BETTER APIS WITH GRAPHQL Josh Price @joshprice STEPPING STONES TO FP Language (Elixir) Strongly-Typed APIs (GraphQL) GRAPHQL WAS HERE? http://whiteafrican.com/2008/05/12/crossing-the-mapping-chasm/

More information

Web Architecture and Technologies

Web Architecture and Technologies Web Architecture and Technologies Ambient intelligence Fulvio Corno Politecnico di Torino, 2015/2016 Goal Understanding Web technologies Adopted for User Interfaces Adopted for Distributed Application

More information

Model-Driven Telemetry. Shelly Cadora Principal Engineer, Technical Marketing

Model-Driven Telemetry. Shelly Cadora Principal Engineer, Technical Marketing Model-Driven Telemetry Shelly Cadora Principal Engineer, Technical Marketing We Need More Data Use Cases Network Health Troubleshooting / Remediation SLAs, Performance Tuning Capacity Planning Product

More information

ReST 2000 Roy Fielding W3C

ReST 2000 Roy Fielding W3C Outline What is ReST? Constraints in ReST REST Architecture Components Features of ReST applications Example of requests in REST & SOAP Complex REST request REST Server response Real REST examples REST

More information

REST Web Services Objektumorientált szoftvertervezés Object-oriented software design

REST Web Services Objektumorientált szoftvertervezés Object-oriented software design REST Web Services Objektumorientált szoftvertervezés Object-oriented software design Dr. Balázs Simon BME, IIT Outline HTTP REST REST principles Criticism of REST CRUD operations with REST RPC operations

More information

Copyright 2014 Blue Net Corporation. All rights reserved

Copyright 2014 Blue Net Corporation. All rights reserved a) Abstract: REST is a framework built on the principle of today's World Wide Web. Yes it uses the principles of WWW in way it is a challenge to lay down a new architecture that is already widely deployed

More information

Backend Development. SWE 432, Fall Web Application Development

Backend Development. SWE 432, Fall Web Application Development Backend Development SWE 432, Fall 2018 Web Application Development Review: Async Programming Example 1 second each Go get a candy bar Go get a candy bar Go get a candy bar Go get a candy bar Go get a candy

More information

HTTP, REST Web Services

HTTP, REST Web Services HTTP, REST Web Services Martin Ledvinka martin.ledvinka@fel.cvut.cz Winter Term 2018 Martin Ledvinka (martin.ledvinka@fel.cvut.cz) HTTP, REST Web Services Winter Term 2018 1 / 36 Contents 1 HTTP 2 RESTful

More information

Black Box DCX3000 / DCX1000 Using the API

Black Box DCX3000 / DCX1000 Using the API Black Box DCX3000 / DCX1000 Using the API updated 2/22/2017 This document will give you a brief overview of how to access the DCX3000 / DCX1000 API and how you can interact with it using an online tool.

More information

External data representation

External data representation External data representation https://developers.google.com/protocol-buffers/ https://github.com/protobuf-c/protobuf-c http://www.drdobbs.com/webdevelopment/after-xml-json-thenwhat/240151851 http://www.digip.org/jansson/

More information

Piqi-RPC. Exposing Erlang services via JSON, XML and Google Protocol Buffers over HTTP. Friday, March 25, 2011

Piqi-RPC. Exposing Erlang services via JSON, XML and Google Protocol Buffers over HTTP. Friday, March 25, 2011 Piqi-RPC Exposing Erlang services via JSON, XML and Google Protocol Buffers over HTTP 1 Anton Lavrik http://piqi.org http://www.alertlogic.com 2 Overview Call Erlang functions using HTTP POST : Server

More information

Microservices. SWE 432, Fall 2017 Design and Implementation of Software for the Web

Microservices. SWE 432, Fall 2017 Design and Implementation of Software for the Web Micros SWE 432, Fall 2017 Design and Implementation of Software for the Web Today How is a being a micro different than simply being ful? What are the advantages of a micro backend architecture over a

More information

Towards a more RESTful world. Anurup Joseph Elegan Consulting

Towards a more RESTful world. Anurup Joseph Elegan Consulting Towards a more RESTful world Anurup Joseph Elegan Consulting About Anurup coding professionally since 1994 working with Java since 1996 different industries/sectors/geographies loves to explore enjoys

More information

Distance vector and RIP

Distance vector and RIP DD2490 p4 2008 Distance vector and RIP Olof Hagsand KTHNOC/NADA Literature RIP lab RFC 245: RIPv2. Sections 1 2 contains some introduction that can be useful to understand the context in which RIP is specified..1.4

More information

grpc Network Management Interface

grpc Network Management Interface grpc Network Management Interface draft-openconfig-rtgwg-gnmi-spec-00 Rob Shakir, Anees Shaikh, Paul Borman, Marcus Hines, Carl Lebsack, Chris Morrow (Google) IETF 98 RTGWG What is gnmi? specification

More information

A Brief History of Distributed Programming: RPC. YOW Brisbane 2016

A Brief History of Distributed Programming: RPC. YOW Brisbane 2016 A Brief History of Distributed Programming: RPC YOW Brisbane 2016 Christopher Meiklejohn Université catholique de Louvain @cmeik christophermeiklejohn.com Caitie McCaffrey Distributed Systems Engineer

More information

Google Protocol Buffers for Embedded IoT

Google Protocol Buffers for Embedded IoT Google Protocol Buffers for Embedded IoT Integration in a medical device project Quick look 1: Overview What is it and why is useful Peers and alternatives Wire format and language syntax Libraries for

More information

RESTful Services. Distributed Enabling Platform

RESTful Services. Distributed Enabling Platform RESTful Services 1 https://dev.twitter.com/docs/api 2 http://developer.linkedin.com/apis 3 http://docs.aws.amazon.com/amazons3/latest/api/apirest.html 4 Web Architectural Components 1. Identification:

More information

Lecture 04 Introduction: IoT Networking - Part I

Lecture 04 Introduction: IoT Networking - Part I Introduction to Industry 4.0 and Industrial Internet of Things Prof. Sudip Misra Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur Lecture 04 Introduction: IoT Networking

More information

PowerBuilder User Regional Seminar Barcelona, Spain. Hotel NH Sants Barcelona DISCLAIMER

PowerBuilder User Regional Seminar Barcelona, Spain. Hotel NH Sants Barcelona DISCLAIMER RECAP SEMINAR PowerBuilder User Regional Seminar Barcelona, Spain Hotel NH Sants Barcelona /JSON vs /XML Marco MEONI 27-28 November 2018 2018 Appeon Limited and its subsidiaries. All rights reserved. DISCLAIMER

More information

RESTFUL WEB SERVICES - INTERVIEW QUESTIONS

RESTFUL WEB SERVICES - INTERVIEW QUESTIONS RESTFUL WEB SERVICES - INTERVIEW QUESTIONS http://www.tutorialspoint.com/restful/restful_interview_questions.htm Copyright tutorialspoint.com Dear readers, these RESTful Web services Interview Questions

More information

Coding Intro to APIs and REST

Coding Intro to APIs and REST DEVNET-3607 Coding 1001 - Intro to APIs and REST Matthew DeNapoli DevNet Developer Evangelist Cisco Spark How Questions? Use Cisco Spark to communicate with the speaker after the session 1. Find this session

More information

Today s Agenda. Today s Agenda 9/8/17. Networking and Messaging

Today s Agenda. Today s Agenda 9/8/17. Networking and Messaging CS 686: Special Topics in Big Data Networking and Messaging Lecture 7 Today s Agenda Project 1 Updates Networking topics in Big Data Message formats and serialization techniques CS 686: Big Data 2 Today

More information

BEAAquaLogic. Service Bus. Interoperability With EJB Transport

BEAAquaLogic. Service Bus. Interoperability With EJB Transport BEAAquaLogic Service Bus Interoperability With EJB Transport Version 3.0 Revised: February 2008 Contents EJB Transport Introduction...........................................................1-1 Invoking

More information

Distributed Systems Exam 1 Review Paul Krzyzanowski. Rutgers University. Fall 2016

Distributed Systems Exam 1 Review Paul Krzyzanowski. Rutgers University. Fall 2016 Distributed Systems 2015 Exam 1 Review Paul Krzyzanowski Rutgers University Fall 2016 1 Question 1 Why did the use of reference counting for remote objects prove to be impractical? Explain. It s not fault

More information

Internet Connectivity with

Internet Connectivity with Internet Connectivity with Introduction The purpose of this workshop is to help you g et acquainted with the basics of internet connectivity by leveraging ARM mbed tools. If you are not already familiar

More information

JSON is a light-weight alternative to XML for data-interchange JSON = JavaScript Object Notation

JSON is a light-weight alternative to XML for data-interchange JSON = JavaScript Object Notation JSON The Fat-Free Alternative to XML { Lecture : 27, Course : CSC375, Days : TTh", Instructor : Haidar Harmanani } Why JSON? JSON is a light-weight alternative to XML for data-interchange JSON = JavaScript

More information

Shackbus. interconnecting your Shack. Tobias

Shackbus. interconnecting your Shack. Tobias Shackbus interconnecting your Shack Tobias Wellnitz @DH1TW Today we have: - Proprietary Protocols - Legacy Hardware - No / very limited interoperability What we want: Interconnected devices in our Shacks!

More information

Hoverfly Documentation

Hoverfly Documentation Hoverfly Documentation Release v0.13.0 SpectoLabs Jul 13, 2017 Contents 1 Source 3 2 Contents 5 2.1 Introduction............................................... 5 2.2 Key Concepts...............................................

More information

Technologies for the future of Network Insight and Automation

Technologies for the future of Network Insight and Automation Technologies for the future of Network Insight and Automation Richard Wade (ricwade@cisco.com) Technical Leader, Asia-Pacific Infrastructure Programmability This Session s Context Service Creation Service

More information

Apica ZebraTester. Advanced Load Testing Tool and Cloud Platform

Apica ZebraTester. Advanced Load Testing Tool and Cloud Platform Whether Fortune 100 or the next big startup, Apica s bestin-class load testing and test automation platform helps companies ensure their web and mobile services runs with optimal performance. is an enterprise-level

More information

Web Services Week 10

Web Services Week 10 Web Services Week 10 Emrullah SONUÇ Department of Computer Engineering Karabuk University Fall 2017 1 Recap BPEL Process in Netbeans RESTful Web Services Introduction to Rest Api 2 Contents RESTful Web

More information

Python & Web Mining. Lecture Old Dominion University. Department of Computer Science CS 495 Fall 2012

Python & Web Mining. Lecture Old Dominion University. Department of Computer Science CS 495 Fall 2012 Python & Web Mining Lecture 6 10-10-12 Old Dominion University Department of Computer Science CS 495 Fall 2012 Hany SalahEldeen Khalil hany@cs.odu.edu Scenario So what did Professor X do when he wanted

More information

C22: Browser & Web Server Communication

C22: Browser & Web Server Communication CISC 3120 C22: Browser & Web Server Communication Hui Chen Department of Computer & Information Science CUNY Brooklyn College 11/01/2017 CUNY Brooklyn College 1 Web Application Architecture Client apps

More information

Administering Jive Mobile Apps for ios and Android

Administering Jive Mobile Apps for ios and Android Administering Jive Mobile Apps for ios and Android TOC 2 Contents Administering Jive Mobile Apps...3 Configuring Jive for Android and ios...3 Custom App Wrapping for ios...3 Authentication with Mobile

More information

JSON-RPC NETWORK PROTOCOL ANALYSIS USING WIRESHARK

JSON-RPC NETWORK PROTOCOL ANALYSIS USING WIRESHARK JSON-RPC NETWORK PROTOCOL ANALYSIS USING WIRESHARK Rajdeep S. Manjre Abstract JSON-RPC (JavaScript Object Notation Remote Procedure Call) is a protocol which is used for communication through internet.

More information

RESTful API Design APIs your consumers will love

RESTful API Design APIs your consumers will love RESTful API Design APIs your consumers will love Matthias Biehl RESTful API Design Copyright 2016 by Matthias Biehl All rights reserved, including the right to reproduce this book or portions thereof in

More information

Notes. Submit homework on Blackboard The first homework deadline is the end of Sunday, Feb 11 th. Final slides have 'Spring 2018' in chapter title

Notes. Submit homework on Blackboard The first homework deadline is the end of Sunday, Feb 11 th. Final slides have 'Spring 2018' in chapter title Notes Ask course content questions on Slack (is651-spring-2018.slack.com) Contact me by email to add you to Slack Make sure you checked Additional Links at homework page before you ask In-class discussion

More information

Services Web Nabil Abdennadher

Services Web Nabil Abdennadher Services Web Nabil Abdennadher nabil.abdennadher@hesge.ch 1 Plan What is Web Services? SOAP/WSDL REST http://www.slideshare.net/ecosio/introduction-to-soapwsdl-and-restfulweb-services/14 http://www.drdobbs.com/web-development/restful-web-services-a-tutorial/

More information

Basic Concepts of the Energy Lab 2.0 Co-Simulation Platform

Basic Concepts of the Energy Lab 2.0 Co-Simulation Platform Basic Concepts of the Energy Lab 2.0 Co-Simulation Platform Jianlei Liu KIT Institute for Applied Computer Science (Prof. Dr. Veit Hagenmeyer) KIT University of the State of Baden-Wuerttemberg and National

More information

ExtraHop Rest API Guide

ExtraHop Rest API Guide ExtraHop Rest API Guide Version 5.0 Introduction to ExtraHop REST API The ExtraHop REST application programming interface (API) enables you to automate administration and configuration tasks on your ExtraHop

More information

Guzzle: Extraordinary HTTP Client

Guzzle: Extraordinary HTTP Client Guzzle: Extraordinary HTTP Client Rob Allen @akrabat ~ akrabat.com ~ September 2016 Why HTTP clients in PHP? Talking to web services Authentication with 3rd parties Social media interaction Remote APIs

More information

Copyright 2012, Oracle and/or its affiliates. All rights reserved.

Copyright 2012, Oracle and/or its affiliates. All rights reserved. 1 JAX-RS-ME Michael Lagally Principal Member of Technical Staff, Oracle 2 CON4244 JAX-RS-ME JAX-RS-ME: A new API for RESTful web clients on JavaME This session presents the JAX-RS-ME API that was developed

More information

Foundations of Python

Foundations of Python Foundations of Python Network Programming The comprehensive guide to building network applications with Python Second Edition Brandon Rhodes John Goerzen Apress Contents Contents at a Glance About the

More information

Introduction and Overview Socket Programming Lower-level stuff Higher-level interfaces Security. Network Programming. Samuli Sorvakko/Nixu Oy

Introduction and Overview Socket Programming Lower-level stuff Higher-level interfaces Security. Network Programming. Samuli Sorvakko/Nixu Oy Network Programming Samuli Sorvakko/Nixu Oy Telecommunications software and Multimedia Laboratory T-110.4100 Computer Networks October 5, 2009 Agenda 1 Introduction and Overview 2 Socket Programming 3

More information

LOG8430: Architecture logicielle et conception avancée

LOG8430: Architecture logicielle et conception avancée LOG8430: Architecture logicielle et conception avancée Microservices, REST and GraphQL Automne 2017 Fabio Petrillo Chargé de Cours This work is licensed under a Creative 1 Commons Attribution-NonCommercialShareAlike

More information

Introduction and Overview Socket Programming Higher-level interfaces Final thoughts. Network Programming. Samuli Sorvakko/Nixu Oy

Introduction and Overview Socket Programming Higher-level interfaces Final thoughts. Network Programming. Samuli Sorvakko/Nixu Oy Network Programming Samuli Sorvakko/Nixu Oy Telecommunications software and Multimedia Laboratory T-110.4100 Computer Networks October 16, 2008 Agenda 1 Introduction and Overview Introduction 2 Socket

More information

Modern web applications and web sites are not "islands". They need to communicate with each other and share information.

Modern web applications and web sites are not islands. They need to communicate with each other and share information. 441 Modern web applications and web sites are not "islands". They need to communicate with each other and share information. For example, when you develop a web application, you may need to do some of

More information

Assigns a number to 110,000 letters/glyphs U+0041 is an A U+0062 is an a. U+00A9 is a copyright symbol U+0F03 is an

Assigns a number to 110,000 letters/glyphs U+0041 is an A U+0062 is an a. U+00A9 is a copyright symbol U+0F03 is an Unicode Unicode Assigns a number to 110,000 letters/glyphs U+0041 is an A U+0062 is an a UTF U+00A9 is a copyright symbol U+0F03 is an Universal Character Set Transformation Format describes how zeroes

More information

Avro Specification

Avro Specification Table of contents 1 Introduction...2 2 Schema Declaration... 2 2.1 Primitive Types... 2 2.2 Complex Types...2 2.3 Names... 5 3 Data Serialization...6 3.1 Encodings... 6 3.2 Binary Encoding...6 3.3 JSON

More information

Ajax Ajax Ajax = Asynchronous JavaScript and XML Using a set of methods built in to JavaScript to transfer data between the browser and a server in the background Reduces the amount of data that must be

More information

JSON as an XML Alternative. JSON is a light-weight alternative to XML for datainterchange

JSON as an XML Alternative. JSON is a light-weight alternative to XML for datainterchange JSON The Fat-Free Alternative to XML { Lecture : 27, Course : CSC375, Days : TTh", Instructor : Haidar Harmanani } JSON as an XML Alternative JSON is a light-weight alternative to XML for datainterchange

More information

Libelium Cloud Hive. Technical Guide

Libelium Cloud Hive. Technical Guide Libelium Cloud Hive Technical Guide Index Document version: v7.0-12/2018 Libelium Comunicaciones Distribuidas S.L. INDEX 1. General and information... 4 1.1. Introduction...4 1.1.1. Overview...4 1.2. Data

More information

Backend Development. SWE 432, Fall 2017 Design and Implementation of Software for the Web

Backend Development. SWE 432, Fall 2017 Design and Implementation of Software for the Web Backend Development SWE 432, Fall 2017 Design and Implementation of Software for the Web Real World Example https://qz.com/1073221/the-hackers-who-broke-into-equifax-exploited-a-nine-year-old-security-flaw/

More information

Integration with Magento Order Management

Integration with Magento Order Management Integration with Magento Order Management Who are we? Félix Delval Architect Magento, an Adobe Company Twitter : @fe_lix_ Elena Kolodyazhna Technical Architect Magento, an Adobe Company Twitter: @ekolod

More information

Network Automation using modern tech. Egor Krivosheev 2degrees

Network Automation using modern tech. Egor Krivosheev 2degrees Network Automation using modern tech Egor Krivosheev 2degrees Key parts of network automation today Streaming Telemetry APIs SNMP and screen scraping are still around NETCONF RFC6241 XML encoding Most

More information

Lesson 3 SOAP message structure

Lesson 3 SOAP message structure Lesson 3 SOAP message structure Service Oriented Architectures Security Module 1 - Basic technologies Unit 2 SOAP Ernesto Damiani Università di Milano SOAP structure (1) SOAP message = SOAP envelope Envelope

More information

NoSQL & Firebase. SWE 432, Fall Web Application Development

NoSQL & Firebase. SWE 432, Fall Web Application Development NoSQL & Firebase SWE 432, Fall 2018 Web Application Development Review: Nouns vs. Verbs URIs should hierarchically identify nouns describing resources that exist Verbs describing actions that can be taken

More information

Guzzle: Extraordinary HTTP Client

Guzzle: Extraordinary HTTP Client Guzzle: Extraordinary HTTP Client Rob Allen @akrabat ~ akrabat.com ~ September 2016 Why HTTP clients in PHP? Talking to web services Authentication with 3rd parties Social media interaction Remote APIs

More information

McAfee Next Generation Firewall 5.8.0

McAfee Next Generation Firewall 5.8.0 Reference Guide Revision A McAfee Next Generation Firewall 5.8.0 SMC API This guide gives an overview of the Security Management Center (SMC) application programming interface (API). It describes how to

More information

Oracle RESTful Services A Primer for Database Administrators

Oracle RESTful Services A Primer for Database Administrators Oracle RESTful Services A Primer for Database Administrators Sean Stacey Director Database Product Management Oracle Server Technologies Copyright 2017, Oracle and/or its affiliates. All rights reserved.

More information

Avro Specification

Avro Specification Table of contents 1 Introduction...2 2 Schema Declaration... 2 2.1 Primitive Types... 2 2.2 Complex Types...2 2.3 Names... 5 2.4 Aliases... 6 3 Data Serialization...6 3.1 Encodings... 7 3.2 Binary Encoding...7

More information

High performance and scalable architectures

High performance and scalable architectures High performance and scalable architectures A practical introduction to CQRS and Axon Framework Allard Buijze allard.buijze@trifork.nl Allard Buijze Software Architect at Trifork Organizers of GOTO & QCON

More information

Family Map Server Specification

Family Map Server Specification Family Map Server Specification Acknowledgements The Family Map project was created by Jordan Wild. Thanks to Jordan for this significant contribution. Family Map Introduction Family Map is an application

More information

WS/HTTP-DDS Accessing Real-Time DDS Data From Web-Based Clients

WS/HTTP-DDS Accessing Real-Time DDS Data From Web-Based Clients WS/HTTP-DDS Accessing Real-Time DDS Data From Web-Based Clients Andrea Iannitti Fabrizio Bertocci Gerardo Pardo, Ph.D. Nick Stavros, Ph.D. July 14, 2008 1 The Challenge Integrating WebApps with DDS requires

More information

COSC 2206 Internet Tools. The HTTP Protocol

COSC 2206 Internet Tools. The HTTP Protocol COSC 2206 Internet Tools The HTTP Protocol http://www.w3.org/protocols/ What is TCP/IP? TCP: Transmission Control Protocol IP: Internet Protocol These network protocols provide a standard method for sending

More information

Apache Avro. Sharing and managing data efficiently

Apache Avro. Sharing and managing data efficiently Apache Avro Sharing and managing data efficiently Scott Carey Apache Avro PMC Chair Principal Architect, RichRelevance scottcarey@apache.org March 6, 2012 What is Apache Avro? "Apache Avro is a data serialization

More information