Slide 1

Slide 1 text

4IPUB*XBNJ]1MBUGPSN&OHJOFFS]OFXNP *OD ελʔτΞοϓ૑ۀظΛࢧ͑Δ ΦϒβʔόϏϦςΟج൫ͷ͜Ε·Ͱͱ͜Ε͔Β
 Datadog Sponsor Session 1 \ ŰŘšŘ~ /

Slide 2

Slide 2 text

ؠݟজଠ*XBNJO Platform Engineer newmo, Inc. 2

Slide 3

Slide 3 text

”ҠಈͰ஍ҬΛΧϥϑϧʹ” 2024೥1݄૑ۀ “Ҡಈ”Λத৺ͱͯ͠ ʮλΫγʔࣄۀʯ ʮϥΠυγΣΞࣄۀʯ ʮFintechࣄۀʢΦʔτϦʔεʣʯ etc.. Λख͕͚ΔελʔτΞοϓ 3

Slide 4

Slide 4 text

λΫγʔ Ұൠ৐༻ཱྀ٬ӡૹࣄۀͷӡӦ ೔ຊ൛ϥΠυγΣΞͷӡӦ ഑ंΞϓϦnewmoͷ։ൃӡӦ ϥΠυγΣΞυϥΠόʔ޲͚
 ΧʔϦʔεࣄۀͷӡӦ ϥΠυγΣΞ ഑ंΞϓϦ ΦʔτϦʔε ● ҆ఆͨ͠ڙڅ ● ϑϧλΠϜՔಇͷ
 ೋछ໔ڐυϥΠόʔ ● Ұ࣌తͳधཁ૿ʹ
 ର͢Δڙڅ ● εΩϚ࣌ؒՔಇͷ
 ී௨໔ڐυϥΠόʔ ● ҆ఆͨ͠ڙڅ ● ϑϧλΠϜՔಇͷ
 ೋछ໔ڐυϥΠόʔ ● ҆ఆͨ͠ڙڅ ● ϑϧλΠϜՔಇͷ
 ೋछ໔ڐυϥΠόʔ 4

Slide 5

Slide 5 text

5

Slide 6

Slide 6 text

λΫγʔࣄۀऀͷ newmo άϧʔϓ΁ͷࢀը ձ໊ࣾ ؛ަ ະདྷ౎ ࡖ૬ޓ ࢀը࣌ظ 2024೥3݄ 2024೥7݄ 2025೥4݄ ॅॴ େࡕ෎ࡖࢢ େࡕ෎कޱࢢ େࡕ෎ࡖࢢ ं྆਺ 51୆ 607୆ 178୆ ैۀһ਺ 58໊ 1,132໊ 178໊ ● λΫγʔࣄۀऀ3͕ࣾnewmoάϧʔϓ΁ࢀը ● άϧʔϓ߹ܭं྆਺1,037୆Ͱɺେࡕ3Ґͷن໛ͷλΫγʔձࣾ΁ ● ITٕज़Λ׆༻ͨ͠ܦӦͷޮ཰Խɺਓࡐ࠾༻ͳͲͷ౤ࢿΛਪਐ 6

Slide 7

Slide 7 text

newmoͷ։ൃ 7

Slide 8

Slide 8 text

newmo ͷ։ൃ | എܠ “Ҡಈ” Λத৺ͱͨ͠ ϓϩμΫτల։ 🚚 શͯ1͔Βͷ৽ن։ൃ… 8 ● ෯޿͍ϓϩμΫτల։͕༧૝ ● λΫγʔɾϥΠυγΣΞɾϦʔε etc… ● ͦΕͧΕʹ։ൃ͢Δ΂͖΋ͷ͕๲େʹ͋Δ ● ഑ंΞϓϦ ● ϥΠυγΣΞυϥΠόʔબߟ ● ఺ݺ ● ഑ं؅ཧ ● ܾࡁ ● ୆ா؅ཧ ● νϟοτ ● ೝূ and more… 8

Slide 9

Slide 9 text

newmo ͷ։ൃ | എܠ Component ෼ׂ ϞϊϨϙ؅ཧ 🚚 શͯ1͔Βͷ৽ن։ൃ… 9 ● Service ͝ͱʹ Component Λ෼ׂͯ͠
 ϞδϡϥʔϞϊϦε։ൃ ● ґଘܰݮͷͨΊϞϊϨϙͰ։ൃ ● Backend / Frontend / Android / iOS / Platform etc… 9

Slide 10

Slide 10 text

newmo ͷ։ൃ | എܠ 10 10 https://speakerdeck.com/110y/newmo-nochuang-ye-wozhi-eru-software-architecture-to-platform-engineering ΞʔΩςΫνϟͷৄࡉͳ࿩͸ͪ͜Βʂ

Slide 11

Slide 11 text

newmo ͷ։ൃ | ઃܭࢥ૝ 🛠֎෦ґଘΛۃྗݮΒ͠ɺχʔζʹ߹Θͤͨࣗ࡞ ● ಛఆͷπʔϧʹͰ͖Δ͚ͩґଘ͠ͳ͍ ● πʔϧͰղܾͰ͖ͳ͔ͬͨΒࣗ࡞͢Δ newmo oss 11

Slide 12

Slide 12 text

newmo ͷ։ൃ | ઃܭࢥ૝ 🛠֎෦ґଘΛۃྗݮΒ͠ɺχʔζʹ߹Θͤͨࣗ࡞ ● ಛఆͷπʔϧʹͰ͖Δ͚ͩґଘ͠ͳ͍ ● πʔϧͰղܾͰ͖ͳ͔ͬͨΒࣗ࡞͢Δ newmo oss ΦϒβʔόϏϦςΟπʔϧ΋͜ͷํ਑ʹै͍… OpenTelemetry ͷ࠾༻ 12

Slide 13

Slide 13 text

newmoͱOpenTelemetry 13

Slide 14

Slide 14 text

newmo ͱ OpenTelemetry 14 14 O11y Backend બఆ 🐶 PlatformͰͷ ӡ༻ 🚀 14

Slide 15

Slide 15 text

newmo ͱ OpenTelemetry 15 15 O11y Backend બఆ 🐶 PlatformͰͷ
 ӡ༻ 🚀 15

Slide 16

Slide 16 text

newmo ͱ OpenTelemetry O11y Backend બఆ 🐶 ༷ʑͳπʔϧΛ·ͱΊͯݟΒΕΔ OpenTelemetry ରԠ͍ͯ͠Δ͜ͱ શһ͕ݟΒΕΔঢ়ଶʹ͍ͨ͠ ৚݅ 16

Slide 17

Slide 17 text

newmo ͱ OpenTelemetry 17 17 O11y Backend બఆ 🐶 OpenTelemetry ରԠ͍ͯ͠Δ͜ͱ શһ͕ݟΒΕΔঢ়ଶʹ͍ͨ͠ ৚݅ ༷ʑͳπʔϧΛ·ͱΊͯݟΒΕΔ Google Cloud ʹݶΒͣ
 AWS, Cloudflare ͳͲ΋·ͱΊͯΈ͍ͨ 17

Slide 18

Slide 18 text

newmo ͱ OpenTelemetry 18 18 O11y Backend બఆ 🐶 OpenTelemetry ରԠ͍ͯ͠Δ͜ͱ ৚݅ ༷ʑͳπʔϧΛ·ͱΊͯݟΒΕΔ શһ͕ݟΒΕΔঢ়ଶʹ͍ͨ͠ νʔϜͷॊೈͳҠಈ΍Biz/OpsνʔϜ΋ؚΊͯ ݟΕΔΑ͏ͳঢ়ଶʹ͓͖͍ͯͨ͠ʢnot ΞΧ΢ϯτ՝ۚʣ 18

Slide 19

Slide 19 text

newmo ͱ OpenTelemetry 19 19 O11y Backend બఆ 🐶 શһ͕ݟΒΕΔঢ়ଶʹ͍ͨ͠ ৚݅ ༷ʑͳπʔϧΛ·ͱΊͯݟΒΕΔ Datadog ͕ରԠ͍ͯ͠Δ…ʁ ରԠঢ়گ͸…ʁ OpenTelemetry ରԠ͍ͯ͠Δ͜ͱ 19

Slide 20

Slide 20 text

newmo ͱ OpenTelemetry 20 Datadog ͱ OpenTelemetry ͷ౷߹͕ਐߦத 20 ● OpenTelemetry Collector ޲͚ͷ Datadog Exporter ͕͢Ͱʹଘࡏ ● W3C Trace Context ͳͲରԠ ● Agent with Embedded OpenTelemetry Collector ͕ DASH 2024 Ͱൃද🔥🔥 Datadog DASH 2024 20

Slide 21

Slide 21 text

newmo ͱ OpenTelemetry 21 Datadog ͱ OpenTelemetry ͷ౷߹͕ਐߦத 21 ● OpenTelemetry Collector ޲͚ͷ Datadog Exporter ͕͢Ͱʹଘࡏ ● W3C Trace Context ͳͲରԠ ● Agent with Embedded OpenTelemetry Collector ͕ DASH 2024 Ͱൃද🔥🔥 Datadog DASH 2024 21

Slide 22

Slide 22 text

newmo ͱ OpenTelemetry 22 22 O11y Backend બఆ 🐶 22 PlatformͰͷ ӡ༻ 🚀

Slide 23

Slide 23 text

OpenTelemetry Collectorͷ ࣮૷ύλʔϯ 23

Slide 24

Slide 24 text

OpenTelemetry Collector ͷ࣮૷ύλʔϯ 24 24 Sidecar Gateway ● Cloud Run ͰαΠυΧʔ͕࢖͑ΔΑ͏ʹ ͳͬͨͷͰར༻ ● Service ͷ਺͚ͩ collector ͷอक͕ඞཁ ● ҰՕॴͰूத؅ཧ ● PlatformνʔϜͰͷ؅ཧ΋͠΍͍͢ 24

Slide 25

Slide 25 text

OpenTelemetry Collector ͷ࣮૷ύλʔϯ 25 Sidecar Gateway ● Cloud Run ͰαΠυΧʔ͕࢖͑ΔΑ͏ʹ ͳͬͨͷͰར༻ ● Service ͷ਺͚ͩ collector ͷอक͕ඞཁ ● ҰՕॴͰूத؅ཧ ● PlatformνʔϜͰͷ؅ཧ΋͠΍͍͢ ࠾༻ 25

Slide 26

Slide 26 text

OpenTelemetry Collector ͷ࣮૷ύλʔϯ 26 ● Log ͸ Cloud Logging ܦ༝Ͱੜͷঢ়ଶͰӬଓԽ΋͍ͨ͠ ● OTLPͰϩάૹ৴ΤϥʔʹͳΔલͷϩά΋र͍͍ͨ ● Cloud Run ͷϦΫΤετϩά΋߹Θͤͯऔಘ͍ͨ͠ 26

Slide 27

Slide 27 text

config.yaml 27 receivers: otlp: protocols: grpc: endpoint: { ... } googlecloudpubsub: subscription: { ... } encoding: googlecloudlogentry_encoding processors: batch: # Datadog APM Intake limit is 3.2MB. { ... } memory_limiter: { ... } connectors: datadog/connector: exporters: datadog/exporter: api: key: ${env:DD_API_KEY} site: api.datadoghq.com extensions: health_check: endpoint: { ... } googlecloudlogentry_encoding: handle_json_payload_as: "json" handle_proto_payload_as: "json" service: extensions: [health_check, googlecloudlogentry_encoding] pipelines: traces: receivers: [otlp] processors: [batch] exporters: [datadog/connector, datadog/exporter] metrics: receivers: [datadog/connector, otlp] processors: [batch, memory_limiter] exporters: [datadog/exporter] logs: receivers: [googlecloudpubsub] processors: [logstransform, batch] exporters: [datadog/exporter] ● Trace/Metric ༻ͷ otlp receiver ● Log ༻ͷ googlecloudpubsubreceiver ● datadog/connector

Slide 28

Slide 28 text

config.yaml 28 ● Trace/Metric ༻ͷ otlp receiver ● Log ༻ͷ googlecloudpubsubreceiver ● datadog/connector receivers: otlp: protocols: grpc: endpoint: { ... } googlecloudpubsub: subscription: { ... } encoding: googlecloudlogentry_encoding processors: batch: # Datadog APM Intake limit is 3.2MB. { ... } memory_limiter: { ... } connectors: datadog/connector: exporters: datadog/exporter: api: key: ${env:DD_API_KEY} site: api.datadoghq.com extensions: health_check: endpoint: { ... } googlecloudlogentry_encoding: handle_json_payload_as: "json" handle_proto_payload_as: "json" service: extensions: [health_check, googlecloudlogentry_encoding] pipelines: traces: receivers: [otlp] processors: [batch] exporters: [datadog/connector, datadog/exporter] metrics: receivers: [datadog/connector, otlp] processors: [batch, memory_limiter] exporters: [datadog/exporter] logs: receivers: [googlecloudpubsub] processors: [logstransform, batch] exporters: [datadog/exporter]

Slide 29

Slide 29 text

config.yaml 29 ● Trace/Metric ༻ͷ otlp receiver ● Log ༻ͷ googlecloudpubsubreceiver ● datadog/connector receivers: otlp: protocols: grpc: endpoint: { ... } googlecloudpubsub: subscription: { ... } encoding: googlecloudlogentry_encoding processors: batch: # Datadog APM Intake limit is 3.2MB. { ... } memory_limiter: { ... } connectors: datadog/connector: exporters: datadog/exporter: api: key: ${env:DD_API_KEY} site: api.datadoghq.com extensions: health_check: endpoint: { ... } googlecloudlogentry_encoding: handle_json_payload_as: "json" handle_proto_payload_as: "json" service: extensions: [health_check, googlecloudlogentry_encoding] pipelines: traces: receivers: [otlp] processors: [batch] exporters: [datadog/connector, datadog/exporter] metrics: receivers: [datadog/connector, otlp] processors: [batch, memory_limiter] exporters: [datadog/exporter] logs: receivers: [googlecloudpubsub] processors: [logstransform, batch] exporters: [datadog/exporter]

Slide 30

Slide 30 text

config.yaml 30 ● Trace/Metric ༻ͷ otlp receiver ● Log ༻ͷ googlecloudpubsubreceiver ● datadog/connector receivers: otlp: protocols: grpc: endpoint: { ... } googlecloudpubsub: subscription: { ... } encoding: googlecloudlogentry_encoding processors: batch: # Datadog APM Intake limit is 3.2MB. { ... } memory_limiter: { ... } connectors: datadog/connector: exporters: datadog/exporter: api: key: ${env:DD_API_KEY} site: api.datadoghq.com extensions: health_check: endpoint: { ... } googlecloudlogentry_encoding: handle_json_payload_as: "json" handle_proto_payload_as: "json" service: extensions: [health_check, googlecloudlogentry_encoding] pipelines: traces: receivers: [otlp] processors: [batch] exporters: [datadog/connector, datadog/exporter] metrics: receivers: [datadog/connector, otlp] processors: [batch, memory_limiter] exporters: [datadog/exporter] logs: receivers: [googlecloudpubsub] processors: [logstransform, batch] exporters: [datadog/exporter]

Slide 31

Slide 31 text

config.yaml 31 ● Trace/Metric ༻ͷ otlp receiver ● Log ༻ͷ googlecloudpubsubreceiver ● datadog/connector datadog/connector ͷΑ͏ͳεϥογϡ۠੾Δͷ͸ [type/name] ͱ͍͏ܗࣜ name ͸ࣗ༝ʹ͚ͭΒΕΔ Configuration | OpenTelemetry Docs https://opentelemetry.io/ja/docs/collector/configuration/ receivers: otlp: protocols: grpc: endpoint: { ... } googlecloudpubsub: subscription: { ... } encoding: googlecloudlogentry_encoding processors: batch: # Datadog APM Intake limit is 3.2MB. { ... } memory_limiter: { ... } connectors: datadog/connector: exporters: datadog/exporter: api: key: ${env:DD_API_KEY} site: api.datadoghq.com extensions: health_check: endpoint: { ... } googlecloudlogentry_encoding: handle_json_payload_as: "json" handle_proto_payload_as: "json" service: extensions: [health_check, googlecloudlogentry_encoding] pipelines: traces: receivers: [otlp] processors: [batch] exporters: [datadog/connector, datadog/exporter] metrics: receivers: [datadog/connector, otlp] processors: [batch, memory_limiter] exporters: [datadog/exporter] logs: receivers: [googlecloudpubsub] processors: [logstransform, batch] exporters: [datadog/exporter]

Slide 32

Slide 32 text

Platfrom Engineering for OpenTelemetry 32

Slide 33

Slide 33 text

● OpenTelemetry पΓ͸ೝ஌ෛՙ͕େ͖͍ ● ϓϩμΫτ։ൃΛߴ଎ʹਐΊΔதͰඞͣ͠΋શͯΛ஌Δඞཁ͸ͳ͍ ● ʮબఆ = ߟ͑ͯ൑அ͠ͳ͍ͱ͍͚ͳ͍͜ͱʯΛۃྗݮΒ͢ Platfrom Engineering for OpenTelemetry 33 33

Slide 34

Slide 34 text

● OpenTelemetry पΓ͸ೝ஌ෛՙ͕େ͖͍ ● ϓϩμΫτ։ൃΛߴ଎ʹਐΊΔதͰඞͣ͠΋શͯΛ஌Δඞཁ͸ͳ͍ ● ʮબఆ = ߟ͑ͯ൑அ͠ͳ͍ͱ͍͚ͳ͍͜ͱʯΛۃྗݮΒ͢ Platfrom Engineering for OpenTelemetry 34 34 Platform TeamͰ؅ཧ

Slide 35

Slide 35 text

● OpenTelemetry पΓ͸ೝ஌ෛՙ͕େ͖͍ ● ϓϩμΫτ։ൃΛߴ଎ʹਐΊΔதͰඞͣ͠΋શͯΛ஌Δඞཁ͸ͳ͍ ● ʮબఆ = ߟ͑ͯ൑அ͠ͳ͍ͱ͍͚ͳ͍͜ͱʯΛۃྗݮΒ͢ Platfrom Engineering for OpenTelemetry 35 35 Platform TeamͰ؅ཧ ։ൃऀ͸Ұ෦ interface ͕ ެ։͞ΕͨϥΠϒϥϦΛ࢖༻

Slide 36

Slide 36 text

36 ------------------------------------------ Internal/metric/otel.go: ----------------------------------------- func (m *Meter) Int64Counter(name string, options ...libmetric.MeterOption) (libmetric.Int64Counter, error) { cfg := libmetric.NewMeterOption(options...) opts := []metric.Int64CounterOption{ metric.WithUnit(cfg.Unit().String()), } if v := cfg.Description(); v != "" { opts = append(opts, metric.WithDescription(v)) } counter, err := m.provider.Meter(m.service).Int64Counter(m.metricName(name), opts...) if err != nil { return nil, fmt.Errorf("create int64 counter: %w", err) } return &int64Counter{ c: counter, }, nil } // ... ------------------------------------------ lib/metric.go: ------------------------------------------ type Meter interface { // NOTE: If you want to add more metrics, add them here. Int64Counter(name string, options ...MeterOption) (Int64Counter, error) Int64Gauge(name string, options ...MeterOption) (Int64Gauge, error) Float64Counter(name string, options ...MeterOption) (Float64Counter, error) Float64Gauge(name string, options ...MeterOption) (Float64Gauge, error) } type ( Int64Counter interface { Add(ctx context.Context, incr int64, opts ...MeasurementOption) } Int64Gauge interface { Record(ctx context.Context, value int64, opts ...MeasurementOption) } Float64Counter interface { Add(ctx context.Context, incr float64, opts ...MeasurementOption) } Float64Gauge interface { Record(ctx context.Context, value float64, opts ...MeasurementOption) } ) // ... Developer Platform

Slide 37

Slide 37 text

37 ------------------------------------------ Internal/metric/otel.go: ----------------------------------------- func (m *Meter) Int64Counter(name string, options ...libmetric.MeterOption) (libmetric.Int64Counter, error) { cfg := libmetric.NewMeterOption(options...) opts := []metric.Int64CounterOption{ metric.WithUnit(cfg.Unit().String()), } if v := cfg.Description(); v != "" { opts = append(opts, metric.WithDescription(v)) } counter, err := m.provider.Meter(m.service).Int64Counter(m.metricName(name), opts...) if err != nil { return nil, fmt.Errorf("create int64 counter: %w", err) } return &int64Counter{ c: counter, }, nil } // ... ------------------------------------------ lib/metric.go: ------------------------------------------ type Meter interface { // NOTE: If you want to add more metrics, add them here. Int64Counter(name string, options ...MeterOption) (Int64Counter, error) Int64Gauge(name string, options ...MeterOption) (Int64Gauge, error) Float64Counter(name string, options ...MeterOption) (Float64Counter, error) Float64Gauge(name string, options ...MeterOption) (Float64Gauge, error) } type ( Int64Counter interface { Add(ctx context.Context, incr int64, opts ...MeasurementOption) } Int64Gauge interface { Record(ctx context.Context, value int64, opts ...MeasurementOption) } Float64Counter interface { Add(ctx context.Context, incr float64, opts ...MeasurementOption) } Float64Gauge interface { Record(ctx context.Context, value float64, opts ...MeasurementOption) } ) // ... Developer Platform ● ຊ౰͸΋ͬͱछྨ͕ͨ͘͞Μ͋Δ ● େମͷ৔߹͸͜ΕͰࣄ଍ΓΔ

Slide 38

Slide 38 text

38 ------------------------------------------ Internal/metric/otel.go: ----------------------------------------- func (m *Meter) Int64Counter(name string, options ...libmetric.MeterOption) (libmetric.Int64Counter, error) { cfg := libmetric.NewMeterOption(options...) opts := []metric.Int64CounterOption{ metric.WithUnit(cfg.Unit().String()), } if v := cfg.Description(); v != "" { opts = append(opts, metric.WithDescription(v)) } counter, err := m.provider.Meter(m.service).Int64Counter(m.metricName(name), opts...) if err != nil { return nil, fmt.Errorf("create int64 counter: %w", err) } return &int64Counter{ c: counter, }, nil } // ... ------------------------------------------ lib/metric.go: ------------------------------------------ type Meter interface { // NOTE: If you want to add more metrics, add them here. Int64Counter(name string, options ...MeterOption) (Int64Counter, error) Int64Gauge(name string, options ...MeterOption) (Int64Gauge, error) Float64Counter(name string, options ...MeterOption) (Float64Counter, error) Float64Gauge(name string, options ...MeterOption) (Float64Gauge, error) } type ( Int64Counter interface { Add(ctx context.Context, incr int64, opts ...MeasurementOption) } Int64Gauge interface { Record(ctx context.Context, value int64, opts ...MeasurementOption) } Float64Counter interface { Add(ctx context.Context, incr float64, opts ...MeasurementOption) } Float64Gauge interface { Record(ctx context.Context, value float64, opts ...MeasurementOption) } ) // ... Developer Platform ● ຊ౰͸΋ͬͱछྨ͕ͨ͘͞Μ͋Δ ● େମͷ৔߹͸͜ΕͰࣄ଍ΓΔ ● provider ͱ͔஌Βͳ͍͍ͯ͘

Slide 39

Slide 39 text

39 ------------------------------------------ Internal/metric/otel.go: ----------------------------------------- func (m *Meter) Int64Counter(name string, options ...libmetric.MeterOption) (libmetric.Int64Counter, error) { cfg := libmetric.NewMeterOption(options...) opts := []metric.Int64CounterOption{ metric.WithUnit(cfg.Unit().String()), } if v := cfg.Description(); v != "" { opts = append(opts, metric.WithDescription(v)) } counter, err := m.provider.Meter(m.service).Int64Counter(m.metricName(name), opts...) if err != nil { return nil, fmt.Errorf("create int64 counter: %w", err) } return &int64Counter{ c: counter, }, nil } // ... ------------------------------------------ lib/metric.go: ------------------------------------------ type Meter interface { // NOTE: If you want to add more metrics, add them here. Int64Counter(name string, options ...MeterOption) (Int64Counter, error) Int64Gauge(name string, options ...MeterOption) (Int64Gauge, error) Float64Counter(name string, options ...MeterOption) (Float64Counter, error) Float64Gauge(name string, options ...MeterOption) (Float64Gauge, error) } type ( Int64Counter interface { Add(ctx context.Context, incr int64, opts ...MeasurementOption) } Int64Gauge interface { Record(ctx context.Context, value int64, opts ...MeasurementOption) } Float64Counter interface { Add(ctx context.Context, incr float64, opts ...MeasurementOption) } Float64Gauge interface { Record(ctx context.Context, value float64, opts ...MeasurementOption) } ) // ... Developer Platform ● ຊ౰͸΋ͬͱछྨ͕ͨ͘͞Μ͋Δ ● େମͷ৔߹͸͜ΕͰࣄ଍ΓΔ ● provider ͱ͔஌Βͳ͍͍ͯ͘ Platform Team Ͱ Wrap ͯ͠ఏڙ͢Δ͜ͱͰඞཁ࠷௿ݶͷ஌ࣝͰ࣮૷Մೳ

Slide 40

Slide 40 text

Wrap Up! 40

Slide 41

Slide 41 text

● ࣄۀల։ɾ֦େΛݟӽͨ͠ΞʔΩςΫνϟͱνʔϜମ੍ ● ಛఆͷϕϯμʔʹґଘ͠ͳ͍ OpenTelemetry Λॳظ͔Β࠾༻ ● ଟ͘ͷϝϯόʔ͕ΦϒβʔόϏϦςΟόοΫΤϯυʹΞΫηεͰ͖Δ
 ঢ়گΛ࣮ݱ͢ΔͨΊɺϢʔβʔ՝ۚͰ͸ͳ͍ Datadog Λબఆ ● ೝ஌ෛՙΛԼ͛ΔͨΊͷ Platform Engineering Wrap Up! 41 41

Slide 42

Slide 42 text

ະདྷʹ޲͚ͯ 42

Slide 43

Slide 43 text

● τϥϯΫϕʔε։ൃͰσϓϩΠස౓͕ඇৗʹߴ͍ ● CI଎౓͕։ൃ଎౓ͷωοΫʹ… ● άϧʔϓʹ JOIN ͨ͠λΫγʔձࣾͷ૿Ճ ● ෳ਺ލ͍ͩϩά෼ੳ͕ඞཁʹ… ● ंࡌ୺຤Λ͸͡Ίͱ͢ΔσόΠεͷ૿Ճ ● ো֐࣌ͷௐࠪ΍υϥΠόʔͷߦಈ෼ੳ… ະདྷʹ޲͚ͯ 43 43

Slide 44

Slide 44 text

● τϥϯΫϕʔε։ൃͰσϓϩΠස౓͕ඇৗʹߴ͍ ● CI଎౓͕։ൃ଎౓ͷωοΫʹ… ▶︎ CI Visibility? ● άϧʔϓʹ JOIN ͨ͠λΫγʔձࣾͷ૿Ճ ● ෳ਺ލ͍ͩϩά෼ੳ͕ඞཁʹ… ● ंࡌ୺຤Λ͸͡Ίͱ͢ΔσόΠεͷ૿Ճ ● ো֐࣌ͷௐࠪ΍υϥΠόʔͷߦಈ෼ੳ… ະདྷʹ޲͚ͯ 44 44

Slide 45

Slide 45 text

● τϥϯΫϕʔε։ൃͰσϓϩΠස౓͕ඇৗʹߴ͍ ● CI଎౓͕։ൃ଎౓ͷωοΫʹ… ▶︎ CI Visibility? ● άϧʔϓʹ JOIN ͨ͠λΫγʔձࣾͷ૿Ճ ● ෳ਺ލ͍ͩϩά෼ੳ͕ඞཁʹ… ▶︎ Log Workspaces? ● ंࡌ୺຤Λ͸͡Ίͱ͢ΔσόΠεͷ૿Ճ ● ো֐࣌ͷௐࠪ΍υϥΠόʔͷߦಈ෼ੳ… ະདྷʹ޲͚ͯ 45 45

Slide 46

Slide 46 text

● τϥϯΫϕʔε։ൃͰσϓϩΠස౓͕ඇৗʹߴ͍ ● CI଎౓͕։ൃ଎౓ͷωοΫʹ… ▶︎ CI Visibility? ● άϧʔϓʹ JOIN ͨ͠λΫγʔձࣾͷ૿Ճ ● ෳ਺ލ͍ͩϩά෼ੳ͕ඞཁʹ… ▶︎ Log Workspaces? ● ंࡌ୺຤Λ͸͡Ίͱ͢ΔσόΠεͷ૿Ճ ● ো֐࣌ͷௐࠪ΍υϥΠόʔͷߦಈ෼ੳ… ▶︎ RUM Session Replay? ະདྷʹ޲͚ͯ 46 46

Slide 47

Slide 47 text

Thank You! And
 Next… 47

Slide 48

Slide 48 text

48 ελʔτΞοϓ૑ۀظΛࢧ͑Δ ΦϒβʔόϏϦςΟج൫ͷ͜Ε·Ͱͱ͜Ε͔Β
 Datadog Sponsor Session ,FOUP,JNVSB]4BMFT&OHJOFFS]%BUBEPH+BQBO(, ΋ͬͱʂ

Slide 49

Slide 49 text

49 ໦ଜ݈ਓ"P5P Sales Engineer Datadog Japan G.K.

Slide 50

Slide 50 text

50 Datadog ͷ͜Ε͔Β

Slide 51

Slide 51 text

Datadog ͱ OpenTelemetry 51 Datadog ͱ OpenTelemetry ͷ౷߹ 51

Slide 52

Slide 52 text

Datadog ͱ OpenTelemetry 52 Datadog ͱ OpenTelemetry ͷ౷߹ 52 ● RUM ͱ APM ͷ W3C ରԠ ● DDOT(Datadog Distribution of
 OpenTelemetry) Collector ͷ౷߹ ● OTLP Intake Endpoint ͷ֦ॆ ● Datadog APM SDK(Tracer) 
 ͷ OTel API ରԠ

Slide 53

Slide 53 text

Datadog ͱ OpenTelemetry 53 Datadog ͱ OpenTelemetry ͷ౷߹ 53 ● RUM ͱ APM ͷ W3C ରԠ ● DDOT(Datadog Distribution of
 OpenTelemetry) Collector ͷ౷߹ ● OTLP Intake Endpoint ͷ֦ॆ ● Datadog APM SDK(Tracer) 
 ͷ OTel API ରԠ

Slide 54

Slide 54 text

Datadog ͱ OpenTelemetry | DDOT ͷ౷߹ 54 54 ● OpenTelemetry पΓ͸ೝ஌ෛՙ͕େ͖͍(࠶ܝ) ● Ճ͑ͯɺOTel Col ͷΑ͏ʹΧελϚΠζ͞Εͨίϯϙʔωϯτ͸؅ཧෛՙ͕େ͖͍ Platform TeamͰ؅ཧ otel sdk trace log Metric otel col receivers connectors exporters processors dtdg.co/ddot

Slide 55

Slide 55 text

Datadog ͱ OpenTelemetry | DDOT ͷ౷߹ 55 55 ● OpenTelemetry पΓ͸ೝ஌ෛՙ͕େ͖͍(࠶ܝ) ● Ճ͑ͯɺOTel Col ͷΑ͏ʹΧελϚΠζ͞Εͨίϯϙʔωϯτ͸؅ཧෛՙ͕େ͖͍ ● OTel Col ͷ؅ཧ͸ Datadog (Agent) ʹҠৡͰ͖Δ Platform TeamͰ؅ཧ Datadog ͕؅ཧ otel col receiver connector processors exporter otel sdk trace Metric log dtdg.co/ddot

Slide 56

Slide 56 text

Datadog ΤίγεςϜͱͷ౷߹ ● Datadog Agent 
 Agent ΠϯςάϨʔγϣϯɾσʔλϕʔε؂ࢹɾωοτϫʔΫ؂ࢹɾϓϩηε؂ࢹɾϫʔΫϩʔυηΩϡϦςΟɾΠϯϑϥ੬ऑੑ…etc ● Fleet Automation: Datadog αϙʔτ΁ͷ Agent Flare ͷૹ৴ ᶃ Remote Management: Agent ͷόʔδϣϯɾมߋ؅ཧͱΞοϓάϨʔυ(Preview)
 + Upgrade Agents(Preview) Ͱ Datadog UI ͔Βόʔδϣϯ؅ཧ
 + Configure Agents(Preview) Ͱ Datadog UI ͔Β Datadog Agent ͷߏ੒ϑΝΠϧΛมߋ ᶄ Agent Flare: Agent ͷઃఆϑΝΠϧɾϩάͷΞʔΧΠϒΛอଘɾαϙʔτʹૹ৴
 ɹ→otel-config.yaml ͷฤू΋ՄೳʹͳΔ͔΋…(ر๬) ᶅ Remote Configuration: Datadog UI ্Ͱػೳͷ༗ޮɾແޮԽ͕Ͱ͖Δ
 ɹ→Agent ͷΠϯετʔϧޙʹ DDOT Λ༗ޮԽͰ͖ΔΑ͏ʹͳΔ͔΋…(ر๬) Datadog ͱ OpenTelemetry | DDOT ͷ౷߹ 56 56 DDOT ͷ Datadog Agent ΁ͷ౷߹ dtdg.co/fleet

Slide 57

Slide 57 text

Datadog ΤίγεςϜͱͷ౷߹ ● Datadog Agent 
 Agent ΠϯςάϨʔγϣϯɾσʔλϕʔε؂ࢹɾωοτϫʔΫ؂ࢹɾϓϩηε؂ࢹɾϫʔΫϩʔυηΩϡϦςΟɾΠϯϑϥ੬ऑੑ…etc ● Fleet Automation: Datadog αϙʔτ΁ͷ Agent Flare ͷૹ৴ ᶃ Remote Management: Agent ͷόʔδϣϯɾมߋ؅ཧͱΞοϓάϨʔυ(Preview)
 + Upgrade Agents(Preview) Ͱ Datadog UI ͔Βόʔδϣϯ؅ཧ
 + Configure Agents(Preview) Ͱ Datadog UI ͔Β Datadog Agent ͷߏ੒ϑΝΠϧΛมߋ ᶄ Agent Flare: Agent ͷઃఆϑΝΠϧɾϩάͷΞʔΧΠϒΛอଘɾαϙʔτʹૹ৴
 ɹˠotel-config.yaml ͷฤू΋ՄೳʹͳΔ͔΋…(ر๬) ᶅ Remote Configuration: Datadog UI ্Ͱػೳͷ༗ޮɾແޮԽ͕Ͱ͖Δ
 ɹˠAgent ͷΠϯετʔϧޙʹ DDOT Λ༗ޮԽͰ͖ΔΑ͏ʹͳΔ͔΋…(ر๬) Datadog ͱ OpenTelemetry | DDOT ͷ౷߹ 57 57 DDOT ͷ Datadog Agent ΁ͷ౷߹ dtdg.co/fleet

Slide 58

Slide 58 text

manifest.yaml 58 dist: module: github.com/DataDog/comp/otelcol/collector-contrib name: otelcol-contrib description: Datadog OpenTelemetry Collector version: 0.121.0 output_path: ./comp/otelcol/collector-contrib/impl otelcol_version: 0.121.0 extensions: # DDOT ʹؚ·ΕΔ extensions ͷҰཡ exporters: # DDOT ʹؚ·ΕΔ exporters ͷҰཡ processors: # DDOT ʹؚ·ΕΔ processors ͷҰཡ receivers: # DDOT ʹؚ·ΕΔ recievers ͷҰཡ - gomod: go.opentelemetry.io/collector/receiver/nopreceiver v0.121.0 - gomod: go.opentelemetry.io/collector/receiver/otlpreceiver v0.121.0 - gomod: github.com/open-telemetry/opentelemetry-collector-contrib/ receiver/filelogreceiver v0.121.0 - gomod: github.com/open-telemetry/opentelemetry-collector-contrib/ receiver/fluentforwardreceiver v0.121.0 - gomod: github.com/open-telemetry/opentelemetry-collector-contrib/ receiver/hostmetricsreceiver v0.121.0 - gomod: github.com/open-telemetry/opentelemetry-collector-contrib/ receiver/jaegerreceiver v0.121.0 - gomod: github.com/open-telemetry/opentelemetry-collector-contrib/ receiver/prometheusreceiver v0.121.0 - gomod: github.com/open-telemetry/opentelemetry-collector-contrib/ receiver/receivercreator v0.121.0 - gomod: github.com/open-telemetry/opentelemetry-collector-contrib/ receiver/zipkinreceiver v0.121.0 connectors: # DDOT ʹؚ·ΕΔ connectors ͷҰཡ ● OpenTelemetry Collector Builder (OCB) ͷ Datadog ؅ཧϚχϑΣετϑΝΠϧ ● Datadog ؅ཧର৅ͷ࠷৽ͷ OTel Col
 ίϯϙʔωϯτ͕֬ೝͰ͖Δ ● Datadog Ϣʔβʔ͸҆શੑɾ҆ఆੑͷอূ ͱ Datadog ͷެࣜαϙʔτ͕ड͚ΒΕΔ https://raw.githubusercontent.com/DataDog/datadog-agent/refs/tags/7.65.0/comp/otelcol/collector-contrib/impl/manifest.yaml

Slide 59

Slide 59 text

manifest.yaml 59 dist: module: github.com/DataDog/comp/otelcol/collector-contrib name: otelcol-contrib description: Datadog OpenTelemetry Collector version: 0.121.0 output_path: ./comp/otelcol/collector-contrib/impl otelcol_version: 0.121.0 extensions: # DDOT ʹؚ·ΕΔ extensions ͷҰཡ exporters: # DDOT ʹؚ·ΕΔ exporters ͷҰཡ processors: # DDOT ʹؚ·ΕΔ processors ͷҰཡ # metrics transform processor Λ௥Ճͯ͠ϝτϦΫεΛฤू + - gomod: github.com/open-telemetry/opentelemetry-collector-contrib/ processor/metricstransformprocessor v0.121.0 receivers: # DDOT ʹؚ·ΕΔ recievers ͷҰཡ - gomod: go.opentelemetry.io/collector/receiver/nopreceiver v0.121.0 - gomod: go.opentelemetry.io/collector/receiver/otlpreceiver v0.121.0 - gomod: github.com/open-telemetry/opentelemetry-collector-contrib/ receiver/filelogreceiver v0.121.0 - gomod: github.com/open-telemetry/opentelemetry-collector-contrib/ receiver/fluentforwardreceiver v0.121.0 - gomod: github.com/open-telemetry/opentelemetry-collector-contrib/ receiver/hostmetricsreceiver v0.121.0 - gomod: github.com/open-telemetry/opentelemetry-collector-contrib/ receiver/jaegerreceiver v0.121.0 - gomod: github.com/open-telemetry/opentelemetry-collector-contrib/ receiver/prometheusreceiver v0.121.0 - gomod: github.com/open-telemetry/opentelemetry-collector-contrib/ receiver/receivercreator v0.121.0 - gomod: github.com/open-telemetry/opentelemetry-collector-contrib/ receiver/zipkinreceiver v0.121.0 connectors: # DDOT ʹؚ·ΕΔ connectors ͷҰཡ ● OpenTelemetry Collector Builder (OCB) ͷ Datadog ؅ཧϚχϑΣετϑΝΠϧ ● Datadog ؅ཧର৅ͷ࠷৽ͷ OTel Col
 ίϯϙʔωϯτ͕֬ೝͰ͖Δ ● Datadog Ϣʔβʔ͸҆શੑɾ҆ఆੑͷอূ ͱ Datadog ͷެࣜαϙʔτ͕ड͚ΒΕΔ https://raw.githubusercontent.com/DataDog/datadog-agent/refs/tags/7.65.0/comp/otelcol/collector-contrib/impl/manifest.yaml αϙʔτϨϕϧ͸ Datadog ॴ༗ɾίϛϡχςΟαϙʔτͰҟͳΔ ೚ҙͷίϯϙʔωϯτΛΧελϜͰ௥ՃͰ͖Δ
 ͦͷ৔߹͸ɺOCB ·ͨ͸ DDA(࣍εϥΠυ) ͰϏϧυ͢Δ

Slide 60

Slide 60 text

Dockerfile.agent-otel 60 ARG AGENT_REPO=datadog/agent-dev ARG AGENT_VERSION=nightly-full-main-jmx ARG AGENT_BRANCH=main # Ubuntu Slim AMD64 ϕʔεΠϝʔδ FROM ubuntu:24.04 AS builder <<தུ>> # GitHub ͔Β Datadog Agent ͷιʔείʔυΛ࣋ͬͯ͘Δ(Ϗϧυ͢Δͷ͸Ұ෦͚ͩ) RUN git clone --filter=blob:none --branch "${AGENT_BRANCH}" --single-branch https://github.com/DataDog/datadog-agent.git datadog-agent-${AGENT_VERSION} # Go ͱ Python ؀ڥͷηοτΞοϓ <<தུ>> # ϚχϑΣετϑΝΠϧΛίϐʔ͢Δ COPY manifest.yaml /workspace/datadog-agent-${AGENT_VERSION}/comp/otelcol/ collector-contrib/impl/manifest.yaml # dda inv ͰɺϚχϑΣετϑΝΠϧ͔ΒόΠφϦϑΝΠϧΛੜ੒͢Δ(λεΫΛىಈ͢Δ) RUN . venv/bin/activate && dda inv collector.generate # dda inv ͰɺόΠφϦϑΝΠϧ͔Β OTel Agent ΛϏϧυ͢Δ RUN . venv/bin/activate && dda inv otel-agent.build # ࠷৽ͷ Datadog Agent ΠϝʔδΛར༻͢Δ FROM ${AGENT_REPO}:${AGENT_VERSION} ARG AGENT_VERSION # OTel Agent ΛϏϧυεςʔδ͔Βίϐʔ͢Δ(ͭ·ΓɺҰ෦͚ͩͷΧελϜϏϧυ͕Ͱ͖Δ) COPY --from=builder /workspace/datadog-agent-${AGENT_VERSION}/bin/otel- agent/otel-agent /opt/datadog-agent/embedded/bin/otel-agent ● DDOT ͷϏϧυΛؚΉ Datadog Agent ͷ
 ίϯςφΠϝʔδ࡞੒ϑΝΠϧ ● Datadog Agent Developer tool ίϚϯυͷ
 dda inv otel-agent.build ʹΑͬͯɺ 
 DDOT Λ OTel Agent ͱͯ͠Ϗϧυ͢Δ https://raw.githubusercontent.com/DataDog/datadog-agent/refs/tags/7.65.0/Dockerfiles/agent-ddot/Dockerfile.agent-otel

Slide 61

Slide 61 text

Dockerfile.agent-otel 61 ARG AGENT_REPO=datadog/agent-dev ARG AGENT_VERSION=nightly-full-main-jmx ARG AGENT_BRANCH=main # Ubuntu Slim AMD64 ϕʔεΠϝʔδ FROM ubuntu:24.04 AS builder <<தུ>> # GitHub ͔Β Datadog Agent ͷιʔείʔυΛ࣋ͬͯ͘Δ(Ϗϧυ͢Δͷ͸Ұ෦͚ͩ) RUN git clone --filter=blob:none --branch "${AGENT_BRANCH}" --single-branch https://github.com/DataDog/datadog-agent.git datadog-agent-${AGENT_VERSION} # Go ͱ Python ؀ڥͷηοτΞοϓ <<தུ>> # ϚχϑΣετϑΝΠϧΛίϐʔ͢Δ COPY manifest.yaml /workspace/datadog-agent-${AGENT_VERSION}/comp/otelcol/ collector-contrib/impl/manifest.yaml # dda inv ͰɺϚχϑΣετϑΝΠϧ͔ΒόΠφϦϑΝΠϧΛੜ੒͢Δ(λεΫΛىಈ͢Δ) RUN . venv/bin/activate && dda inv collector.generate # dda inv ͰɺόΠφϦϑΝΠϧ͔Β OTel Agent ΛϏϧυ͢Δ RUN . venv/bin/activate && dda inv otel-agent.build # ࠷৽ͷ Datadog Agent ΠϝʔδΛར༻͢Δ FROM ${AGENT_REPO}:${AGENT_VERSION} ARG AGENT_VERSION # OTel Agent ΛϏϧυεςʔδ͔Βίϐʔ͢Δ(ͭ·ΓɺҰ෦͚ͩͷΧελϜϏϧυ͕Ͱ͖Δ) COPY --from=builder /workspace/datadog-agent-${AGENT_VERSION}/bin/otel- agent/otel-agent /opt/datadog-agent/embedded/bin/otel-agent ● DDOT ͷϏϧυΛؚΉ Datadog Agent ͷ
 ίϯςφΠϝʔδ࡞੒ϑΝΠϧ ● Datadog Agent Developer tool ίϚϯυͷ
 dda inv otel-agent.build ʹΑͬͯɺ
 DDOT Λ OTel Agent ͱͯ͠Ϗϧυ͢Δ https://raw.githubusercontent.com/DataDog/datadog-agent/refs/tags/7.65.0/Dockerfiles/agent-ddot/Dockerfile.agent-otel ΧελϜͷ manifest.yaml ϑΝΠϧΛݩʹ DDA ίϚϯυͰ
 Datadog Agent ͷαϒηοτͰ͋Δ OTel Agent ΛϏϧυͰ͖Δ ͭ·Γ… OTel Agent = Agent with embedded OpenTelemetry Collector

Slide 62

Slide 62 text

Datadog ͱ OpenTelemetry | OTLP Intake Endpoint ͷ֦ॆ 62 62 ● OTel Col ʹίϯϐϡʔςΟϯάϦιʔεΛ࢖͍ͨ͘ͳ͍ ● Ͱ͖ΔݶΓόοΫΤϯυΛҙࣝͤͣʹ OTel SDK Λར༻͍ͨ͠ →Datadog OTLP Log/Metrics Intake Endpoint(Preview) ΋બ୒ࢶʹ…ʁ
 otel sdk trace metric log Intake endpoint metric log dtdg.co/otlp-agentless

Slide 63

Slide 63 text

Datadog ͱ OpenTelemetry | OTLP Intake Endpoint ͷ֦ॆ 63 63 ● OTel Col ʹίϯϐϡʔςΟϯάϦιʔεΛ࢖͍ͨ͘ͳ͍ ● Ͱ͖ΔݶΓόοΫΤϯυΛҙࣝͤͣʹ OTel SDK Λར༻͍ͨ͠ →Datadog OTLP Log/Metrics Intake Endpoint(Preview) ΋બ୒ࢶʹ…ʁ
 ɹOTLP Trace Intake Endpoint ͸ະެ։ͷͨΊɺ͜Ε͔Βʹ͝ظ଴͍ͩ͘͞🐶 otel sdk trace metric log Intake endpoint trace metric log dtdg.co/otlp-agentless

Slide 64

Slide 64 text

64 Datadog ͱͷ͜Ε͔Β

Slide 65

Slide 65 text

● τϥϯΫϕʔε։ൃͰσϓϩΠස౓͕ඇৗʹߴ͍ ● CI଎౓͕։ൃ଎౓ͷωοΫʹ… ▶︎ CI Visibility!! ● άϧʔϓʹ JOIN ͨ͠λΫγʔձࣾͷ૿Ճ ● ෳ਺ލ͍ͩϩά෼ੳ͕ඞཁʹ… ▶︎ Log Workspaces!! ● ंࡌ୺຤Λ͸͡Ίͱ͢ΔσόΠεͷ૿Ճ ● ো֐࣌ͷௐࠪ΍υϥΠόʔͷߦಈ෼ੳ… ▶︎ RUM Session Replay!! ະདྷʹ޲͚ͯ - newmo(࠶ܝ) 65

Slide 66

Slide 66 text

ʲػೳʳ ● CI/CD ύΠϓϥΠϯδϣϒΛτϨʔεͯ͠
 Flame Graph Ͱදݱ͠ɺ࣮ߦϩάͱඥ͚ͮΔ ʲͰ͖Δ͜ͱʳ ● CI/CD ͷΫϦςΟΧϧύεΛಛఆ ● ϩάͱԣஅతͳδϣϒͷࣦഊݪҼͷݪҼௐࠪ ● σϓϩΠͷස౓ɾ҆ఆੑɾ݈શੑͷଌఆ ɹɹDatadog CI Visibility dtdg.co/ci-visibility

Slide 67

Slide 67 text

ʲػೳʳ ● Log Management ʹऩूͨ͠ෳ਺ϑΥʔϚοτ
 ͷϩάΛɺม׵ɾ݁߹ɾ෼ੳɾՄࢹԽ͢Δ ʲͰ͖Δ͜ͱʳ ● ϩάɾࢀরςʔϒϧɾRUMɾϝτϦΫεΛ
 σʔλιʔεͱͯ͠෼ੳ ● UI ʹΑΔɺ௚ײతͳෳ਺σʔλιʔεͷ݁߹ɾ ύʔεɾϑΟϧλʔɾάϧʔϓԽͳͲͷม׵ ● DDSQL ʹΑΔɺσʔλม׵ɾநग़ɾՄࢹԽ ● Dashboard Widget ͱಉ༷ͷՄࢹԽ ɹɹDatadog Log Workspaces dtdg.co/workspaces

Slide 68

Slide 68 text

ʲػೳʳ ● શͯͷϞόΠϧΞϓϦૢ࡞Λه࿥ɾ࠶ݱ͠ɺ
 Datadog సૹޙʹσʔλอ࣋Λ੍ޚͰ͖Δ ʲͰ͖Δ͜ͱʳ ● iOS/Android ωΠςΟϒΞϓϦૢ࡞ը໘ͷ࠶ݱ ● RUM Retention Filter ʹΑΔอ࣋σʔλͷ੍ޚ ● ΤϥʔɾϩϯάλεΫɾϑϥετϨʔγϣϯ γάφϧͷ༗ແͰอ࣋ͷੋඇΛܾఆͰ͖Δ ● ಛఆͷը໘Λ௨ͬͨ৔߹΍ϢʔβʔͷଐੑΛ ࢦఆͯ͠อ࣋Ͱ͖Δ ɹɹDatadog RUM - Mobile Session Replay & without Limits ™︎ dtdg.co/rum_without_limits Ϣʔβʔͷૢ࡞ ը໘ભҠ Ϋϥογϡ Τϥʔ

Slide 69

Slide 69 text

Datadog: ͋ΒΏΔର৅ͷΦϒβʔόϏϦςΟΛ޲্͢ΔϓϥοτϑΥʔϜ OpenTelemetry ͱͷ౷߹ ● ΦϒβʔόϏϦςΟͷඪ४ = OpenTelemetry ͱͷີ઀ͳ౷߹ ● ։ൃऀͷ OpenTelemetry ؅ཧෛՙΛԼ͛ΔΤίγεςϜ
 ϢʔβʔମݧΛ޲্ͤ͞Δ৽ػೳ ● CI/CD ʹ΋ΦϒβʔόϏϦςΟΛʮγϑτϨϑτʯ▶︎ CI Visibility ● ෳ਺ͷιʔεɾෳࡶͳ෼ੳͰϩά׆༻Λ޿͛Δ▶︎ Log Workspaces ● ϞόΠϧૢ࡞ମݧͷ࠶ݱ ▶︎ Mobile Session Replay & RUM without Limits ™︎ ·ͱΊ

Slide 70

Slide 70 text

70 Thank You!