(micro)serviços apache mesos para operar grandes sistemas e · configurações de acls e acessos...

24
Apache Mesos para operar grandes sistemas e (micro)serviços Diego de Oliveira Março de 2015

Upload: others

Post on 30-Jun-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: (micro)serviços Apache Mesos para operar grandes sistemas e · configurações de ACLs e acessos não demoram mais de uma semana; há troca de experiências entre Operações, implantação

Apache Mesos para operar grandes sistemas e (micro)serviços

Diego de OliveiraMarço de 2015

Page 2: (micro)serviços Apache Mesos para operar grandes sistemas e · configurações de ACLs e acessos não demoram mais de uma semana; há troca de experiências entre Operações, implantação

Sobre mim

Diego de Oliveira, desenvolvedor, pai, professor, viajante, motoqueiro...

[email protected]

Page 3: (micro)serviços Apache Mesos para operar grandes sistemas e · configurações de ACLs e acessos não demoram mais de uma semana; há troca de experiências entre Operações, implantação

O PagSeguro é uma solução de intermediação de pagamentos através da

internet e seus leitores de cartão.

Sobre o PagSeguro

ADs/Devs/Qas/Webs/etc ≃ 300Requisições por dia ≃ 22 milhões

Codebase ≃ 1.5MLOC

Page 4: (micro)serviços Apache Mesos para operar grandes sistemas e · configurações de ACLs e acessos não demoram mais de uma semana; há troca de experiências entre Operações, implantação

Spoiler

O servidor está morrendo

...bem vindo novo servidor

docker/docker-squash/docker-slimunikernel(ClickOS, Osv, MirageOS, etc)

Page 5: (micro)serviços Apache Mesos para operar grandes sistemas e · configurações de ACLs e acessos não demoram mais de uma semana; há troca de experiências entre Operações, implantação

DE VOLTA À LOUSA

Page 6: (micro)serviços Apache Mesos para operar grandes sistemas e · configurações de ACLs e acessos não demoram mais de uma semana; há troca de experiências entre Operações, implantação

O que já sabemos

A alocação de recursos on premise tende ao desperdício, virtualização melhora, mas cobra seu preço em performance.

Com 16 CPUs esse percentual poderia chegar à 1600%, o máximo utilizado em um ano foi 200%

Page 7: (micro)serviços Apache Mesos para operar grandes sistemas e · configurações de ACLs e acessos não demoram mais de uma semana; há troca de experiências entre Operações, implantação

O que já sabemos

Sistemas monolíticos podem reduzir a performance do time, a confiança na entrega, a capacidade de experimentar, entre outros problemas.

bash$> time mvn install -2TC …###### a lot of logsreal 6m10.058suser 9m29.628ssys 0m29.476sbash$> du -c -h **/target/.###### a lot of logs3.5G total

Gráfico de dependências de entidades

Tempo de build e espaço em disco

Page 8: (micro)serviços Apache Mesos para operar grandes sistemas e · configurações de ACLs e acessos não demoram mais de uma semana; há troca de experiências entre Operações, implantação

O que já sabemos

Entregas muito grande em sistemas 24x7 podem ser assustadoras.

OpenSSL bugs, tamanho do projeto: 442.895 linhas de código

Correção do Heartbleed

Bug na implentação de SSL do OSX

Page 9: (micro)serviços Apache Mesos para operar grandes sistemas e · configurações de ACLs e acessos não demoram mais de uma semana; há troca de experiências entre Operações, implantação

O que já sabemos

Micros Serviços permite escalabilidade, domínio melhor definido, mas é necessário gerenciá-los.

Estrela da morte

Netflix Twitter

Page 10: (micro)serviços Apache Mesos para operar grandes sistemas e · configurações de ACLs e acessos não demoram mais de uma semana; há troca de experiências entre Operações, implantação

ONDE CHEGAMOS

Page 11: (micro)serviços Apache Mesos para operar grandes sistemas e · configurações de ACLs e acessos não demoram mais de uma semana; há troca de experiências entre Operações, implantação

Apache Mesos

Program against your datacenter like it’s a single pool of resourcesApache Mesos abstracts CPU, memory, storage, and other compute resources away from machines (physical or virtual), enabling fault-tolerant and elastic distributed systems to easily be built and run effectively.

“Apache Mesos é o n1 automatizado”Acácio

Page 12: (micro)serviços Apache Mesos para operar grandes sistemas e · configurações de ACLs e acessos não demoram mais de uma semana; há troca de experiências entre Operações, implantação

Apache Mesos - Arquitetura

Visão de implantação/operações

Page 13: (micro)serviços Apache Mesos para operar grandes sistemas e · configurações de ACLs e acessos não demoram mais de uma semana; há troca de experiências entre Operações, implantação

Apache Mesos - Disponibilidade

Um único pool de servidores, sendo usado para executar várias tasks, melhor aproveitamento.

Caso um servidor falhe, as tasks são migradas automaticamente para

servidores saudáveis.

Visão de implantação/operações

Antes

Depois

Page 14: (micro)serviços Apache Mesos para operar grandes sistemas e · configurações de ACLs e acessos não demoram mais de uma semana; há troca de experiências entre Operações, implantação

Apache Mesos - Frameworks

Existem vários frameworks desenvolvidos, tanto para soluções conhecidas quando projetos de

nicho.

Visão de implantação/operações

Page 15: (micro)serviços Apache Mesos para operar grandes sistemas e · configurações de ACLs e acessos não demoram mais de uma semana; há troca de experiências entre Operações, implantação

Apache Mesos - Frameworks Marathon/Chronos

A fault tolerant job scheduler for Mesos which handles dependencies and ISO8601 based

schedules

A cluster-wide init and control system for services in cgroups or Docker containers

Visão de implantação/operações/devs

Descreva a necessidade da sua aplicação em um json, envie ao Marathon para executar um serviço persistente ou

ao chronos caso seja um job agendado.

Page 16: (micro)serviços Apache Mesos para operar grandes sistemas e · configurações de ACLs e acessos não demoram mais de uma semana; há troca de experiências entre Operações, implantação

Apache Mesos - Frameworks Marathon/Chronos

Arquitetura de alta disponibilidade

Sempre tenha mais de uma instância para garantir

comportamento ininterrupto

Isolamento via cgroups/docker/lxc

Page 17: (micro)serviços Apache Mesos para operar grandes sistemas e · configurações de ACLs e acessos não demoram mais de uma semana; há troca de experiências entre Operações, implantação

DEMO

Page 18: (micro)serviços Apache Mesos para operar grandes sistemas e · configurações de ACLs e acessos não demoram mais de uma semana; há troca de experiências entre Operações, implantação

bash$> echo 'package main

import ("io""os""net/http"

)

func hello(w http.ResponseWriter, r *http.Request) {io.WriteString(w, "Hello world!")

}

func main() {port := os.Args[1]http.HandleFunc("/", hello)http.ListenAndServe(":" + port, nil)

}' > sample.gobash$> go build sample.go

bash$> curl -sSL https://minimesos.org/install | shbash$> export PATH=$PATH:$HOME/.minimesos/binbash$> minimesos up --num-agents 6

Apache Mesos - Demo

Instalação do mesos para testes

Uma aplicação para testes

Page 19: (micro)serviços Apache Mesos para operar grandes sistemas e · configurações de ACLs e acessos não demoram mais de uma semana; há troca de experiências entre Operações, implantação

bash$> export IP=`ip route get 8.8.8.8 | awk 'NR==1 {print $NF}'`bash$> echo "{ \"id\": \"/sample\", \"instances\": 1, \"cmd\": \"chmod +x sample; ./sample \$PORT0\", \"cpus\": 0.1, \"mem\": 100, \"disk\": 10, \"uris\": [ \"http://$IP:9999/sample\" ]}" > sample.json

bash$> python -m SimpleHTTPServer 9999 > /dev/null &bash$> export MARATHON=http://172.17.0.5:8080/v2/appsbash$> curl -s -X POST -H 'Content-type: application/json' [email protected] $MARATHONbash$> firefox http://172.17.0.7:8080 > /dev/null &bash$> firefox http://172.17.0.6:5050 > /dev/null &bash$> curl -s -X PUT -H 'Content-type: application/json' -d '{ "instances": 2 }' $MARATHON/sample bash$> minimesos destroy

Apache Mesos - Demo

Descrevendo o deploy

Executando e escalando a aplicação

Page 20: (micro)serviços Apache Mesos para operar grandes sistemas e · configurações de ACLs e acessos não demoram mais de uma semana; há troca de experiências entre Operações, implantação

RESULTADOS

Page 21: (micro)serviços Apache Mesos para operar grandes sistemas e · configurações de ACLs e acessos não demoram mais de uma semana; há troca de experiências entre Operações, implantação

Novas aplicações

Nossa estrela da morte

Os novos projetos, jobs, módulos, serviços ou micro serviços estão sendo publicado nesse ambiente.

Melhor uso dos recursos, sem necessidade de spare frio.

Page 22: (micro)serviços Apache Mesos para operar grandes sistemas e · configurações de ACLs e acessos não demoram mais de uma semana; há troca de experiências entre Operações, implantação

Nível de Maturidade em Nuvem

Sistema

Operação

Entrega

Recurso

Sua base de código é modular; é de fácil manutenção; falhas não se propagam em cascata; há delineamento claro dos domínios; está pouco acoplado;

é fácil ter acesso aos logs; operações não é baba de sistemas; configurações de ACLs e acessos não demoram mais de uma semana; há troca de experiências entre Operações, implantação e desenvolvimento;

fácil, não precisa de coordenação entre vários times; aprovação fácil, sem burocracia; novos códigos demoram menos de um mês para entrar em produção; é sempre tranquila

demora menos de uma semana para adicionar um novo servidor/serviço; fácil fazer upgrade de hardware; um novo domínio demora menos de um mês; fácil adicionar espaço em disco

Page 23: (micro)serviços Apache Mesos para operar grandes sistemas e · configurações de ACLs e acessos não demoram mais de uma semana; há troca de experiências entre Operações, implantação

Nível de Maturidade em Nuvem

Avalie os pontos de maturidade e observes os pontos que podem ser melhorados.

Exemplo de nível de maturidade

Page 24: (micro)serviços Apache Mesos para operar grandes sistemas e · configurações de ACLs e acessos não demoram mais de uma semana; há troca de experiências entre Operações, implantação

PERGUNTAS?

[email protected]