Carrefour E-Commerce
Multicloud Brasil Day 2017
Denis Santos & Bruno Pedroso
Novembro/2017
{ Somos do time de Arquitetura de Soluções }
Apresentação
Denis Santos
Solutions Architect Manager
Bruno Pedroso
Software Architect
● Visão geral sobre a Stack do Carrefour E-commerce
● Um case que deu e vem dando certo
● How to
Agenda
Primeiramente a nossa infraestrutura está numa solução de Cloud, temos uma grande Operação NonFood,
Marketplace, já iniciamos a nossa Operação Food. Além da complexidade de uma estratégia de
multicanalidade e multiformato.
Tudo isso nos proporciona alguns números expressivos em pouco mais de 1 ano de existência!
Visão geral sobre a Stack do Carrefour E-commerce
50+ Sistemas
100+ VMs e Containers
Centenas de
deploys por dia
Novas releases de
produção diariamente
+
Arquiteturas diversas
Monolíticas, Microservices, Script
APPs, APIs, Add-ons
Muitas linguagens
e frameworks
Muitas tecnologias
CI/CD, Kubernetes, DB SQL NoSQL,
AMQP, Docker, etc
O nosso time de DevOps que trouxe e vem atuando forte numa ferramenta de automação de Jobs chamada
RUNDECK, ela é perfeita para ambientes de CLOUD (seja ela da Amazon, Google, Azure, Oracle ou IBM), pois ela
cria interfaces de atendimento, exposição de API e command line tool (CLI Tool) que facilitam a vida do Dev e do
Ops, apoiando ainda mais a cultura DevOps!
O RUNDECK está presente no nosso dia-a-dia na automação de dezenas e dezenas de Jobs
Um case que deu e vem dando certo
● Provisionamento de Nodes e Containers
● Scale in / Scale out das aplicações
● Adicionar ou Remover alarmes de monitoria (NOC)
● Start / Stop de nodes e aplicação
● Rotinas de deploy integrado com o Jenkins
● Provisionar recursos através de APIs de uma Cloud
Além de plugins para integrar com inúmeras ferramentas como Puppet, Chef, Github, Jenkins e muitas outras!
Um case que deu e vem dando certo
● O que é o Rundeck?
● Veja como é simples instalar e executar
● Um exemplo prático:
○ Criando um projeto
○ Criando um Job
○ Entendendo um Job
○ Executando e obtendo feedback de um Job
● Governança com SCM na evolução contínua dos seus Projetos
● O limite é a sua criatividade
How to
How to - O que é o Rundeck?
Um gerenciador e orquestrador de Jobs que permite criar fluxos de execuções, onde os Jobs podem
ser organizadas por etapas onde cada etapa pode prosseguir ou interromper toda o Job com base em
sucesso ou falha.
● Permite a configuração de triggers, podendo ser por eventos (Event Webhook), como por agendamentos
(schedule).
● É uma solução 100% Open Source feita em Java com código no GitHub, orientada a plugins, tudo isso
fomenta ainda mais o jeito colaborativo de se desenvolver um produto.
● Facilita a comunicação entre os times, gerando o conceito de atendimento através de rotinas e tarefas que
podem ser acessadas por interfaces Web com formulários web, APIs ou Command Line Tool (CLI Tool).
● Seu diferencial está na organização das etapas de uma tarefa, que são organizadas em fluxos lógicos (uma
tarefa pode ser composta por outras tarefas).
How to - O que é o Rundeck?
Outros pontos que se destacam:
● Controle de acesso de usuários, controlando por grupo de usuários e regras de acesso
● Controle de execução dos Jobs podendo ser Single-Thread ou Multi-Thread, evitando execuções
simultâneas indesejadas (imagine dois usuários tomando a mesma decisão de forma simultânea e
resolvem executar um Job de Scaling In manualmente, com o controle de quantidade de execuções,
o Job fica bloqueado até que seja finalizado)
Veja como é simples instalar e executar
1 - Primeiramente leia a documentação que é bem rica e simples de entender
http://rundeck.org/
2 - Download do JAR na versão “Self Contained Launcher Install” ( rundeck-launcher-V.X.X.jar ):
http://rundeck.org/docs/manual/getting-started.html#download-and-installation
3 - Copie o arquivo para o seguinte local:
~/rundeck
4 - Execute o seguinte comando no seu terminal:
java -jar rundeck-launcher-V.X.X.jar
Veja como é simples instalar e executar
5 - Abra o seu navegador de internet e acesso o endereço HTTP
http://localhost:4440/
User: admin
Pass: admin
Um exemplo prático - Uma PoC
Vamos criar um projeto no Rundeck que permita a interação com a API de um servidor Git
numa Cloud, com a finalidade de prover automação na criação de repositórios, assim
teremos Integração Contínua com o máximo de automação.
Um exemplo prático - Projeto
Criando um Projeto
Um projeto deve ser algo que agrupe
os Jobs de uma forma lógica, como:
● Git Automation
● APIs Automation
● Log CleanUp routines
● ELK Install
● E-commerce Deploy routines
● NOC Automation
Criando um Projeto
Agora basta preencher os dados do
formulário sobre o projeto, como:
Nome, Descrição, Nodes, Prioridade, etc.
Um exemplo prático - Projeto
Criando um Job
Após criar um projeto, basta clicar em:
Jobs → Job Action → New Job
Um exemplo prático - Job
Entendendo um Job
Primeiramente saiba que existem muitas opções na criação de um Job, como
notificação, criar um workflow de etapas de scripts. Mas para o Job da nossa PoC
ficou algo bem simples, onde foram definidas as seguintes ações:
● input de dados que serão utilizadas na interface web para preencher os dados
que serão passados como argumentos do nosso script, como:
Nome do Repositório, Público ou Privado, etc.
● O script será um comando CURL que faz uma requisição HTTP (POST) para a
criação de um repositório no BitBucket por meio de sua API.
Um exemplo prático - Job
Job Definition
Quando você cria um Job ele gera um arquivo com a representação de toda a definição do Job (podendo ser no formato YAML ou
XML). Com isso podemos utilizar um Job Definition para criar novos Jobs com base na definição de outros, servindo de template.
Um exemplo prático - Job
Veja como ficou a interface do nosso Job
Qualquer usuário que tenha cesso pode preencher as suas
credenciais do BitBucket e criar o seu projeto, mas o mais
importante dessa PoC é entender que o nosso Job
futuramente pode fazer parte de um Workflow mais
complexo.
Imagine uma automação onde toda a linha de CI e CD pode
ser provida pelo Rundeck, como repositório Git, Jobs e
Pipelines no Jenkins, Controle de Acesso, Log com
integração no ELK.
Um exemplo prático - Job
Executando e entendo o Feedback de um Job
Um exemplo prático - Job
Controle de versão dos Jobs do Projeto
Com a feature de SCM podemos configurar o nosso projeto para ser controlado por commits em um
repositório Git, assim temos a gestão das alterações dos Jobs, com fácil comunicação entre o time e
facilitando o entendimento das alterações ou até rollback.
Governança com SCM na evolução contínua dos seus Projetos
Toda modificação passa a ser controlada/versionada
Governança com SCM na evolução contínua dos seus Projetos
Toda modificação passa a ser controlada/versionada
Governança com SCM na evolução contínua dos seus Projetos
O limite é a sua criatividade
Explorando alguns plugins
http://rundeck.org/plugins/
https://github.com/rundeck-plugins/
. . .
GCP Ansible Chef Puppet Jenkins
Docker
AWS EC2 AWS S3
Rocket Chat HipChat Telegram GitSlack
Agradecimentos
Rafael Barini Osvaneo Smailli Fabio Ikeno Rafael Pereira
Taylor Damaceno Renato de Reis Renato Farias Rodrigo Martins Luis Pavaneli
Obrigado
e comece com automação para curtir mais a vida!

Carrefour E-commerce - Multicloud Brasil Day 2017

  • 1.
    Carrefour E-Commerce Multicloud BrasilDay 2017 Denis Santos & Bruno Pedroso Novembro/2017
  • 2.
    { Somos dotime de Arquitetura de Soluções } Apresentação Denis Santos Solutions Architect Manager Bruno Pedroso Software Architect
  • 3.
    ● Visão geralsobre a Stack do Carrefour E-commerce ● Um case que deu e vem dando certo ● How to Agenda
  • 4.
    Primeiramente a nossainfraestrutura está numa solução de Cloud, temos uma grande Operação NonFood, Marketplace, já iniciamos a nossa Operação Food. Além da complexidade de uma estratégia de multicanalidade e multiformato. Tudo isso nos proporciona alguns números expressivos em pouco mais de 1 ano de existência! Visão geral sobre a Stack do Carrefour E-commerce 50+ Sistemas 100+ VMs e Containers Centenas de deploys por dia Novas releases de produção diariamente + Arquiteturas diversas Monolíticas, Microservices, Script APPs, APIs, Add-ons Muitas linguagens e frameworks Muitas tecnologias CI/CD, Kubernetes, DB SQL NoSQL, AMQP, Docker, etc
  • 5.
    O nosso timede DevOps que trouxe e vem atuando forte numa ferramenta de automação de Jobs chamada RUNDECK, ela é perfeita para ambientes de CLOUD (seja ela da Amazon, Google, Azure, Oracle ou IBM), pois ela cria interfaces de atendimento, exposição de API e command line tool (CLI Tool) que facilitam a vida do Dev e do Ops, apoiando ainda mais a cultura DevOps! O RUNDECK está presente no nosso dia-a-dia na automação de dezenas e dezenas de Jobs Um case que deu e vem dando certo ● Provisionamento de Nodes e Containers ● Scale in / Scale out das aplicações ● Adicionar ou Remover alarmes de monitoria (NOC) ● Start / Stop de nodes e aplicação ● Rotinas de deploy integrado com o Jenkins ● Provisionar recursos através de APIs de uma Cloud Além de plugins para integrar com inúmeras ferramentas como Puppet, Chef, Github, Jenkins e muitas outras!
  • 6.
    Um case quedeu e vem dando certo
  • 7.
    ● O queé o Rundeck? ● Veja como é simples instalar e executar ● Um exemplo prático: ○ Criando um projeto ○ Criando um Job ○ Entendendo um Job ○ Executando e obtendo feedback de um Job ● Governança com SCM na evolução contínua dos seus Projetos ● O limite é a sua criatividade How to
  • 8.
    How to -O que é o Rundeck? Um gerenciador e orquestrador de Jobs que permite criar fluxos de execuções, onde os Jobs podem ser organizadas por etapas onde cada etapa pode prosseguir ou interromper toda o Job com base em sucesso ou falha. ● Permite a configuração de triggers, podendo ser por eventos (Event Webhook), como por agendamentos (schedule). ● É uma solução 100% Open Source feita em Java com código no GitHub, orientada a plugins, tudo isso fomenta ainda mais o jeito colaborativo de se desenvolver um produto. ● Facilita a comunicação entre os times, gerando o conceito de atendimento através de rotinas e tarefas que podem ser acessadas por interfaces Web com formulários web, APIs ou Command Line Tool (CLI Tool). ● Seu diferencial está na organização das etapas de uma tarefa, que são organizadas em fluxos lógicos (uma tarefa pode ser composta por outras tarefas).
  • 9.
    How to -O que é o Rundeck? Outros pontos que se destacam: ● Controle de acesso de usuários, controlando por grupo de usuários e regras de acesso ● Controle de execução dos Jobs podendo ser Single-Thread ou Multi-Thread, evitando execuções simultâneas indesejadas (imagine dois usuários tomando a mesma decisão de forma simultânea e resolvem executar um Job de Scaling In manualmente, com o controle de quantidade de execuções, o Job fica bloqueado até que seja finalizado)
  • 10.
    Veja como ésimples instalar e executar 1 - Primeiramente leia a documentação que é bem rica e simples de entender http://rundeck.org/ 2 - Download do JAR na versão “Self Contained Launcher Install” ( rundeck-launcher-V.X.X.jar ): http://rundeck.org/docs/manual/getting-started.html#download-and-installation 3 - Copie o arquivo para o seguinte local: ~/rundeck 4 - Execute o seguinte comando no seu terminal: java -jar rundeck-launcher-V.X.X.jar
  • 11.
    Veja como ésimples instalar e executar 5 - Abra o seu navegador de internet e acesso o endereço HTTP http://localhost:4440/ User: admin Pass: admin
  • 12.
    Um exemplo prático- Uma PoC Vamos criar um projeto no Rundeck que permita a interação com a API de um servidor Git numa Cloud, com a finalidade de prover automação na criação de repositórios, assim teremos Integração Contínua com o máximo de automação.
  • 13.
    Um exemplo prático- Projeto Criando um Projeto Um projeto deve ser algo que agrupe os Jobs de uma forma lógica, como: ● Git Automation ● APIs Automation ● Log CleanUp routines ● ELK Install ● E-commerce Deploy routines ● NOC Automation
  • 14.
    Criando um Projeto Agorabasta preencher os dados do formulário sobre o projeto, como: Nome, Descrição, Nodes, Prioridade, etc. Um exemplo prático - Projeto
  • 15.
    Criando um Job Apóscriar um projeto, basta clicar em: Jobs → Job Action → New Job Um exemplo prático - Job
  • 16.
    Entendendo um Job Primeiramentesaiba que existem muitas opções na criação de um Job, como notificação, criar um workflow de etapas de scripts. Mas para o Job da nossa PoC ficou algo bem simples, onde foram definidas as seguintes ações: ● input de dados que serão utilizadas na interface web para preencher os dados que serão passados como argumentos do nosso script, como: Nome do Repositório, Público ou Privado, etc. ● O script será um comando CURL que faz uma requisição HTTP (POST) para a criação de um repositório no BitBucket por meio de sua API. Um exemplo prático - Job
  • 17.
    Job Definition Quando vocêcria um Job ele gera um arquivo com a representação de toda a definição do Job (podendo ser no formato YAML ou XML). Com isso podemos utilizar um Job Definition para criar novos Jobs com base na definição de outros, servindo de template. Um exemplo prático - Job
  • 18.
    Veja como ficoua interface do nosso Job Qualquer usuário que tenha cesso pode preencher as suas credenciais do BitBucket e criar o seu projeto, mas o mais importante dessa PoC é entender que o nosso Job futuramente pode fazer parte de um Workflow mais complexo. Imagine uma automação onde toda a linha de CI e CD pode ser provida pelo Rundeck, como repositório Git, Jobs e Pipelines no Jenkins, Controle de Acesso, Log com integração no ELK. Um exemplo prático - Job
  • 19.
    Executando e entendoo Feedback de um Job Um exemplo prático - Job
  • 20.
    Controle de versãodos Jobs do Projeto Com a feature de SCM podemos configurar o nosso projeto para ser controlado por commits em um repositório Git, assim temos a gestão das alterações dos Jobs, com fácil comunicação entre o time e facilitando o entendimento das alterações ou até rollback. Governança com SCM na evolução contínua dos seus Projetos
  • 21.
    Toda modificação passaa ser controlada/versionada Governança com SCM na evolução contínua dos seus Projetos
  • 22.
    Toda modificação passaa ser controlada/versionada Governança com SCM na evolução contínua dos seus Projetos
  • 23.
    O limite éa sua criatividade Explorando alguns plugins http://rundeck.org/plugins/ https://github.com/rundeck-plugins/ . . . GCP Ansible Chef Puppet Jenkins Docker AWS EC2 AWS S3 Rocket Chat HipChat Telegram GitSlack
  • 24.
    Agradecimentos Rafael Barini OsvaneoSmailli Fabio Ikeno Rafael Pereira Taylor Damaceno Renato de Reis Renato Farias Rodrigo Martins Luis Pavaneli
  • 25.
    Obrigado e comece comautomação para curtir mais a vida!