52

QCon São Paulo 2020 – 14 a 16 de dezembro – Conferência ... · nginx lua C Cassandra nginx linux ruby python redis MySql golang lua puppet puppet mongo ruby MySql mongo logstash

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: QCon São Paulo 2020 – 14 a 16 de dezembro – Conferência ... · nginx lua C Cassandra nginx linux ruby python redis MySql golang lua puppet puppet mongo ruby MySql mongo logstash
Page 2: QCon São Paulo 2020 – 14 a 16 de dezembro – Conferência ... · nginx lua C Cassandra nginx linux ruby python redis MySql golang lua puppet puppet mongo ruby MySql mongo logstash

Page 3: QCon São Paulo 2020 – 14 a 16 de dezembro – Conferência ... · nginx lua C Cassandra nginx linux ruby python redis MySql golang lua puppet puppet mongo ruby MySql mongo logstash
Page 4: QCon São Paulo 2020 – 14 a 16 de dezembro – Conferência ... · nginx lua C Cassandra nginx linux ruby python redis MySql golang lua puppet puppet mongo ruby MySql mongo logstash

encoder

CDN

ingest h264+aacrtmptcp

h264+aac httptcp

flash player

2º3º

ios

Page 5: QCon São Paulo 2020 – 14 a 16 de dezembro – Conferência ... · nginx lua C Cassandra nginx linux ruby python redis MySql golang lua puppet puppet mongo ruby MySql mongo logstash

seg1.tsseg2.tsseg3.tsseg4.ts

240p.m3u8480p.m3u8720p.m3u8

seg1.tsseg2.tsseg3.tsseg4.ts

seg1.tsseg2.tsseg3.tsseg4.ts

1 - GET /variant.m3u8 (text)

2 - GET /720p.m3u8 (text)

240p.m3u8

variant.m3u8

480p.m3u8 720p.m3u8

3 - GET /seg3.ts (video)

4 - GET /seg4.ts (video)

5 - GET /720p.m3u8 (text)

6 - GET /seg5.ts (video)

7 - GET /seg6.ts (video)

8 - ...

http

http

seg3.tsseg4.tsseg5.tsseg6.ts

seg3.tsseg4.tsseg5.tsseg6.ts

seg3.tsseg4.tsseg5.tsseg6.ts

Page 6: QCon São Paulo 2020 – 14 a 16 de dezembro – Conferência ... · nginx lua C Cassandra nginx linux ruby python redis MySql golang lua puppet puppet mongo ruby MySql mongo logstash

CDN API's Ingest

Page 7: QCon São Paulo 2020 – 14 a 16 de dezembro – Conferência ... · nginx lua C Cassandra nginx linux ruby python redis MySql golang lua puppet puppet mongo ruby MySql mongo logstash
Page 8: QCon São Paulo 2020 – 14 a 16 de dezembro – Conferência ... · nginx lua C Cassandra nginx linux ruby python redis MySql golang lua puppet puppet mongo ruby MySql mongo logstash

CDN API's Ingest

2000ms4000ms

5000ms7000ms

5ms15ms

10ms30ms

2000ms5000ms

10s15s

Page 9: QCon São Paulo 2020 – 14 a 16 de dezembro – Conferência ... · nginx lua C Cassandra nginx linux ruby python redis MySql golang lua puppet puppet mongo ruby MySql mongo logstash

CDN API's Ingest

Page 10: QCon São Paulo 2020 – 14 a 16 de dezembro – Conferência ... · nginx lua C Cassandra nginx linux ruby python redis MySql golang lua puppet puppet mongo ruby MySql mongo logstash

2h * 60m * 60s / 5s * 4.5mb ~= 6.4GB

}1.6MB 1.1MB 0.8MB 0.5MB 0.3MB 0.1MB 4.5MB per 5s

Page 11: QCon São Paulo 2020 – 14 a 16 de dezembro – Conferência ... · nginx lua C Cassandra nginx linux ruby python redis MySql golang lua puppet puppet mongo ruby MySql mongo logstash

agorapassado

Page 12: QCon São Paulo 2020 – 14 a 16 de dezembro – Conferência ... · nginx lua C Cassandra nginx linux ruby python redis MySql golang lua puppet puppet mongo ruby MySql mongo logstash

CDN API's Ingest

Page 13: QCon São Paulo 2020 – 14 a 16 de dezembro – Conferência ... · nginx lua C Cassandra nginx linux ruby python redis MySql golang lua puppet puppet mongo ruby MySql mongo logstash

19Gpbs maxconn: 70k, cpu affinity

15Gpbs maxconn: 40k, cpu affinity

12Gpbs maxconn: 25k, irqbalancepacket loss

4Gbps, no fine tuning

Page 14: QCon São Paulo 2020 – 14 a 16 de dezembro – Conferência ... · nginx lua C Cassandra nginx linux ruby python redis MySql golang lua puppet puppet mongo ruby MySql mongo logstash

ISP X

ISP Y

20Gbps

5Gbps

IXP

ISP K

80Gbps

8Gbps

Page 15: QCon São Paulo 2020 – 14 a 16 de dezembro – Conferência ... · nginx lua C Cassandra nginx linux ruby python redis MySql golang lua puppet puppet mongo ruby MySql mongo logstash

CDN

CDN

CDN

CDN

CDN API's Ingest

Page 16: QCon São Paulo 2020 – 14 a 16 de dezembro – Conferência ... · nginx lua C Cassandra nginx linux ruby python redis MySql golang lua puppet puppet mongo ruby MySql mongo logstash

ISPx

ISPyISPk

SPBGP annou 186.192.81.0/24

ISPx ISPy

ISPk

RJ

186.192.81.2

BGP annou 186.192.81.0/24

PoPPoP

Page 17: QCon São Paulo 2020 – 14 a 16 de dezembro – Conferência ... · nginx lua C Cassandra nginx linux ruby python redis MySql golang lua puppet puppet mongo ruby MySql mongo logstash

CDN API's Ingest

Page 18: QCon São Paulo 2020 – 14 a 16 de dezembro – Conferência ... · nginx lua C Cassandra nginx linux ruby python redis MySql golang lua puppet puppet mongo ruby MySql mongo logstash

CDN API's Ingest

Page 19: QCon São Paulo 2020 – 14 a 16 de dezembro – Conferência ... · nginx lua C Cassandra nginx linux ruby python redis MySql golang lua puppet puppet mongo ruby MySql mongo logstash

CDN API's Ingest

Caching

Segurança

Load balancer

Localização

Banda larga

Usuário simul.

Agendamento

Encoding

Escalável

Alta disponibilidade

Monitoração

Page 20: QCon São Paulo 2020 – 14 a 16 de dezembro – Conferência ... · nginx lua C Cassandra nginx linux ruby python redis MySql golang lua puppet puppet mongo ruby MySql mongo logstash

CDN API's Ingest

IO

Network Bound

Stateless

Storage

CPU Intensive

CPU / GPU Intensive

Stateful

Video CODEC

Stateful

Page 21: QCon São Paulo 2020 – 14 a 16 de dezembro – Conferência ... · nginx lua C Cassandra nginx linux ruby python redis MySql golang lua puppet puppet mongo ruby MySql mongo logstash

CDN API's Ingest

nginx

lua C

Cassandra nginx

linux

ruby python

redis MySql

golang

lua puppet

puppet

mongo

ruby

MySql

mongo

logstash logstash

graphite puppet

Page 22: QCon São Paulo 2020 – 14 a 16 de dezembro – Conferência ... · nginx lua C Cassandra nginx linux ruby python redis MySql golang lua puppet puppet mongo ruby MySql mongo logstash

CDN API's Ingest

Page 23: QCon São Paulo 2020 – 14 a 16 de dezembro – Conferência ... · nginx lua C Cassandra nginx linux ruby python redis MySql golang lua puppet puppet mongo ruby MySql mongo logstash
Page 24: QCon São Paulo 2020 – 14 a 16 de dezembro – Conferência ... · nginx lua C Cassandra nginx linux ruby python redis MySql golang lua puppet puppet mongo ruby MySql mongo logstash

CDN API'sIngest CDN

foco de trabalho

JAN FEV ABR MAR ABR MAI JUN JUL AGO SET OUT NOV DEZ

CDN

Page 25: QCon São Paulo 2020 – 14 a 16 de dezembro – Conferência ... · nginx lua C Cassandra nginx linux ruby python redis MySql golang lua puppet puppet mongo ruby MySql mongo logstash
Page 26: QCon São Paulo 2020 – 14 a 16 de dezembro – Conferência ... · nginx lua C Cassandra nginx linux ruby python redis MySql golang lua puppet puppet mongo ruby MySql mongo logstash
Page 27: QCon São Paulo 2020 – 14 a 16 de dezembro – Conferência ... · nginx lua C Cassandra nginx linux ruby python redis MySql golang lua puppet puppet mongo ruby MySql mongo logstash

O que é o projeto?

Qual o problema que esse projeto resolve?

Como rodar localmente?

Como fazer deploy?

Como rodar os testes?

Quais melhores práticas na linguagem X?

...

Page 28: QCon São Paulo 2020 – 14 a 16 de dezembro – Conferência ... · nginx lua C Cassandra nginx linux ruby python redis MySql golang lua puppet puppet mongo ruby MySql mongo logstash
Page 29: QCon São Paulo 2020 – 14 a 16 de dezembro – Conferência ... · nginx lua C Cassandra nginx linux ruby python redis MySql golang lua puppet puppet mongo ruby MySql mongo logstash

Source: https://twitter.com/Una

Page 30: QCon São Paulo 2020 – 14 a 16 de dezembro – Conferência ... · nginx lua C Cassandra nginx linux ruby python redis MySql golang lua puppet puppet mongo ruby MySql mongo logstash

Source: https://twitter.com/Una

Page 31: QCon São Paulo 2020 – 14 a 16 de dezembro – Conferência ... · nginx lua C Cassandra nginx linux ruby python redis MySql golang lua puppet puppet mongo ruby MySql mongo logstash

Source: https://twitter.com/Una

Page 32: QCon São Paulo 2020 – 14 a 16 de dezembro – Conferência ... · nginx lua C Cassandra nginx linux ruby python redis MySql golang lua puppet puppet mongo ruby MySql mongo logstash
Page 33: QCon São Paulo 2020 – 14 a 16 de dezembro – Conferência ... · nginx lua C Cassandra nginx linux ruby python redis MySql golang lua puppet puppet mongo ruby MySql mongo logstash
Page 34: QCon São Paulo 2020 – 14 a 16 de dezembro – Conferência ... · nginx lua C Cassandra nginx linux ruby python redis MySql golang lua puppet puppet mongo ruby MySql mongo logstash
Page 35: QCon São Paulo 2020 – 14 a 16 de dezembro – Conferência ... · nginx lua C Cassandra nginx linux ruby python redis MySql golang lua puppet puppet mongo ruby MySql mongo logstash
Page 36: QCon São Paulo 2020 – 14 a 16 de dezembro – Conferência ... · nginx lua C Cassandra nginx linux ruby python redis MySql golang lua puppet puppet mongo ruby MySql mongo logstash
Page 37: QCon São Paulo 2020 – 14 a 16 de dezembro – Conferência ... · nginx lua C Cassandra nginx linux ruby python redis MySql golang lua puppet puppet mongo ruby MySql mongo logstash
Page 38: QCon São Paulo 2020 – 14 a 16 de dezembro – Conferência ... · nginx lua C Cassandra nginx linux ruby python redis MySql golang lua puppet puppet mongo ruby MySql mongo logstash
Page 39: QCon São Paulo 2020 – 14 a 16 de dezembro – Conferência ... · nginx lua C Cassandra nginx linux ruby python redis MySql golang lua puppet puppet mongo ruby MySql mongo logstash

LINTs

Ruby-lint, python-lint, go-lint, xyz-lint

Page 40: QCon São Paulo 2020 – 14 a 16 de dezembro – Conferência ... · nginx lua C Cassandra nginx linux ruby python redis MySql golang lua puppet puppet mongo ruby MySql mongo logstash
Page 41: QCon São Paulo 2020 – 14 a 16 de dezembro – Conferência ... · nginx lua C Cassandra nginx linux ruby python redis MySql golang lua puppet puppet mongo ruby MySql mongo logstash

CDN API's Ingest

Page 42: QCon São Paulo 2020 – 14 a 16 de dezembro – Conferência ... · nginx lua C Cassandra nginx linux ruby python redis MySql golang lua puppet puppet mongo ruby MySql mongo logstash
Page 43: QCon São Paulo 2020 – 14 a 16 de dezembro – Conferência ... · nginx lua C Cassandra nginx linux ruby python redis MySql golang lua puppet puppet mongo ruby MySql mongo logstash

●●●●●●●●●

Page 44: QCon São Paulo 2020 – 14 a 16 de dezembro – Conferência ... · nginx lua C Cassandra nginx linux ruby python redis MySql golang lua puppet puppet mongo ruby MySql mongo logstash

●●●●●

Page 45: QCon São Paulo 2020 – 14 a 16 de dezembro – Conferência ... · nginx lua C Cassandra nginx linux ruby python redis MySql golang lua puppet puppet mongo ruby MySql mongo logstash

Page 46: QCon São Paulo 2020 – 14 a 16 de dezembro – Conferência ... · nginx lua C Cassandra nginx linux ruby python redis MySql golang lua puppet puppet mongo ruby MySql mongo logstash
Page 47: QCon São Paulo 2020 – 14 a 16 de dezembro – Conferência ... · nginx lua C Cassandra nginx linux ruby python redis MySql golang lua puppet puppet mongo ruby MySql mongo logstash

Existente

Novo

95%

5%

Page 48: QCon São Paulo 2020 – 14 a 16 de dezembro – Conferência ... · nginx lua C Cassandra nginx linux ruby python redis MySql golang lua puppet puppet mongo ruby MySql mongo logstash

http { upstream production { s.api.intern.com; }

upstream new_production { new.s.api.intern.com; }

split_clients "${arg_token}" $appversion { 95% production;

* new_production; }

server { listen 80; location / { proxy_set_header Host $host; proxy_pass http://$appversion; } }}

Page 49: QCon São Paulo 2020 – 14 a 16 de dezembro – Conferência ... · nginx lua C Cassandra nginx linux ruby python redis MySql golang lua puppet puppet mongo ruby MySql mongo logstash
Page 50: QCon São Paulo 2020 – 14 a 16 de dezembro – Conferência ... · nginx lua C Cassandra nginx linux ruby python redis MySql golang lua puppet puppet mongo ruby MySql mongo logstash