Slide 1

Slide 1 text

Ruby  Zipkin  2020 229    

Slide 2

Slide 2 text

No.2      (   1 ( % !&"'$#

Slide 3

Slide 3 text

No.3 @DF=E;=>?B =>?B0+65C:9>@7$#,5=>?B H I =>?B2G1.1C:9>@*!73-)0 !10+65=>?B ( (1) =>?B11*' @DF=E;=>?B7)/G 1%4 1D8?E=7 " ( (2) &4D8?E=1G 11 *'

Slide 4

Slide 4 text

No.4 Zipkin (1) Twitter ,OSS  &)+!*!"$( (2) Google  Dapper  - . (1)  +'"API %+# (2) %+#UI 

Slide 5

Slide 5 text

No.5 Zipkin

Slide 6

Slide 6 text

No.6 Zipkin    (1)  (2) Zipkin 

Slide 7

Slide 7 text

No.7 Zipkin    (1)  

Slide 8

Slide 8 text

No.8 Zipkin    (1)   

Slide 9

Slide 9 text

No.9 Zipkin  (1) Storage     

Slide 10

Slide 10 text

No.10 Zipkin   (1) Storage   

Slide 11

Slide 11 text

No.11 Zipkin

Slide 12

Slide 12 text

No.12 Zipkin

Slide 13

Slide 13 text

No.13 Zipkin  (1) User CodeHTTP GET /foo  

Slide 14

Slide 14 text

No.14 Zipkin  (2) Trace Instrumentation    

Slide 15

Slide 15 text

No.15 Zipkin (3) Trace InstrumentationHttp Client  

Slide 16

Slide 16 text

No.16 Zipkin (4) Http Client   Trace Instrumentation

Slide 17

Slide 17 text

No.17 Zipkin   (5) Trace Instrumentation    

Slide 18

Slide 18 text

No.18 Zipkin (6) Trace InstrumentationUser Code   

Slide 19

Slide 19 text

No.19 Zipkin  (7) Trace Instrumentation     Zipkin Collector  

Slide 20

Slide 20 text

No.20  (1) Web  HTTP  (2) Zipkin  Web1 localhost:8081 Web2 localhost:8082 Web3 localhost:9000  Zipkin localhost:9411

Slide 21

Slide 21 text

No.21  (1) Web  (2) HTTP   (3) Zipkin   (Trace ID   ) (4) Zipkin   Web1 localhost:8081 Web2 localhost:8082 Web3 localhost:9000  Zipkin localhost:9411

Slide 22

Slide 22 text

No.22  (1) Web  (2) HTTP   (3) Zipkin   (Trace ID   ) (4) Zipkin   Web1 localhost:8081 Web2 localhost:8082 Web3 localhost:9000  Zipkin localhost:9411

Slide 23

Slide 23 text

No.23 (1) Web  (1) Sinatra: Web  (2) GET     

Slide 24

Slide 24 text

No.24  (1) Web  (2) HTTP   (3) Zipkin   (Trace ID   ) (4) Zipkin   Web1 localhost:8081 Web2 localhost:8082 Web3 localhost:9000  Zipkin localhost:9411

Slide 25

Slide 25 text

No.25 (2) HTTP   (1) Faraday: HTTP   (2)  HTTP  (3) localhost:9000/api GET 

Slide 26

Slide 26 text

No.26  (1) Web  (2) HTTP   (3) Zipkin   (Trace ID   ) (4) Zipkin   Web1 localhost:8081 Web2 localhost:8082 Web3 localhost:9000  Zipkin localhost:9411

Slide 27

Slide 27 text

No.27 Zipkin &$&' (2) )zipkin-ruby  )Ruby (1) %(!  &$&' ("#(  C)C++)Python&$&'

Slide 28

Slide 28 text

No.28 Rack (1/2) (1) Web Web     (2) gem () Rails, Sinatra, Faraday sinatra rails Faraday rack middleware handler

Slide 29

Slide 29 text

No.29 Rack (2/2) sinatra rails Faraday rack middleware handler RackA:F)*( call# " '&-D3 HTTPE-+39##  ' Rack;H:D "Web0I<' &-D3 Rack(>E.I1CH callB47:'$&,=2*-9 httpE-+39?76! '%Hash' JKMML#38I53 /I:JG3@H3?76JG3@H3body'B47:

Slide 30

Slide 30 text

No.30 Rack&#* Rack&#* ,Zipkin($() (3a) FaradayZipkin($() (3b) SinatraZipkin($() HTTP) "    () !' !+% ,Trace ID

Slide 31

Slide 31 text

No.31 (3a) FaradayZipkin   (1) Faraday  use  

Slide 32

Slide 32 text

No.32 (3b) Sinatra Zipkin (1) Rack use  ∵ Sinatra!Rack  

Slide 33

Slide 33 text

No.33  (1) Web  Web1 Web2 Web3  Zipkin (2) HTTP   (3) Zipkin   (Trace ID   ) (4) Zipkin  

Slide 34

Slide 34 text

No.34 (4) Zipkin  (1) Docker (2) Java $ curl -sSL https://zipkin.io/quickstart.sh | bash -s $ java -jar zipkin.jar (3) Running from source # get the latest source $ git clone https://github.com/openzipkin/zipkin cd zipkin # Build the server and also make its dependencies $ ./mvnw -DskipTests --also-make -pl zipkin-server clean install # Run the server $ java -jar ./zipkin-server/target/zipkin-server-*exec.jar $ docker run –d –p 9411:9411 openzipkin/zipkin

Slide 35

Slide 35 text

No.35  (1) http://localhost:8081/  (2) http://localhost:9411/   : 2020-02-14T14:01:18+09:00

Slide 36

Slide 36 text

No.36  (1) OpenZipkin · A distributed tracing system, https://zipkin.io/ '  (2) zipkin, https://github.com/openzipkin/zipkin (3)  "$&% !#Zipkin, https://qiita.com/miya10kei/items/2532b80fcd8d19eb2e75 (4) Rack' https://qiita.com/k0kubun/items/248395f68164b52aec4a (5) zipkin-ruby-example, https://github.com/openzipkin/zipkin-ruby-example