Docker: Padronização de ambientes

Standard

Docker é uma ferramenta de open source (código aberto) sem nenhum custo, que permite um conjunto completo do ambiente, deste configurações de máquinas, aplicações e programas necessários, permitindo ser distribuído e virtualizado de maneira fácil e rápida para outras máquinas. Para utilização da ferramentas é necessário seguir as seguintes etapas, este tutorial foi aplicado em um ambiente Linux (Ubuntu) para o padronização dos ambientes

Instalação do Docker;

  • apt-get install docker.io

Verificar se o Docker está rodando;

  • sudo docker run hello-world

O Docker mantém um local pra armazenar repositórios (https://hub.docker.com), semelhando o que o github faz.

Para baixar o repositório crs-uno-server;

  • docker pull alefevariani/crs-uno-server

Listando os container;

  • docker ps

Listar images Docker existentes na máquina;

  • docker images

Rodando e acessando o shell do container, informando o ID image;

  • docker run -it ID IMAGE bash
  • docker run -it CONTEINER ID IMAGE bash

 

Criando um repositório no Docker.

Para a criação de um repositório é necessário criar uma conta no site:

logindocker
Após o login efetuado, será apresentado um tela semelhante a imagem a seguir, onde terá a
opção Create Repository (criar repositório);

tela-inicial-docker.png

Selecionada a opção Create Repository (criar repositório), a tela será esta a seguir, que possui o nome, descrições e a visibilidade que pode ser privada (private) ou pública (public);

tela-criar-repositorio-docker.png

Criado o repositório, neste caso a tela será semelhante a está;

tela-repositorio-teste-docker.png

Nesta imagem já é apresentado o comando “docker pull alefevariani/teste” para baixar o container image criado, mas como esta vazio é preciso criar a máquina com os itens a seguir;

Via terminal linux, criar uma pasta, com o arquivo Dockerfile;

 

  • mkdir teste
  • cd teste/
  • nano Dockerfile

Adicionar conteúdo no Dockerfile, neste arquivo ficam as configurações da máquina, mais
informações para criação do arquivo Dockerfile no link e também para os repositórios oficiais oferecidos, segue link;

Exemplo arquivo Dockerfile:
# INSTALAR SO UBUNTU, ÚLTIMA VERSÃO
FROM ubuntu:latest
# INSTALAR APACHE 2 E PHP
RUN apt-get -y install apache2 php5
#LIBERAÇÃO DE PORTAS 80 E 443
EXPOSE 80 443

Para executar o arquivo Dockerfile e verificara se os comando estão todos corretos:

  • docker build -t alefevariani/teste .

No local de alefevariani/teste, deve-se passar nomeSeuUsuario/nomeRepositorio.
Para mandar o container para seu repositório no Hub Docker, são os seguintes passos,
semelhante a um controle de versão;

Listar último container.

  • docker ps -l

Fazer commit da imagem criada, informando o CONTAINER ID.

  • docker commit CONTAINER ID alefevariani/teste

Enviar a imagem da máquina para o repositório, permitindo depois fazer pull por outras máquinas.

  • docker push alefevariani/teste

Feito isso, pode-se utilizar este container para várias máquinas, no caso, para o servidor de
desenvolvimento e produção, evitando diferenças de versões em sistemas operacional, linguagem de programação, banco de dados e pacotes extras.

Conclusão

Docker é uma ferramenta muito poderosa e vem sendo usado por várias pessoas e por muitas empresas de grande porte, o que ajuda ainda mais uma ferramenta se tornar de qualidade. Docker foi uma das ferramentas mais comentadas em 2015, junto também com o assunto DevOps, que também vem ganhando força 🙂

New Relic: Monitoramento de aplicações.

Standard

New Relic foi fundada em 2008 para fornecer um gerenciamento avançado de desempenho
de aplicações para empresas de qualquer tamanho, hoje possui, segundo Relic (2015):

  • 250 mil usuários;
  • 4 mil aplicações monitoradas por dia;
  • 1 bilhão de aplicações mobile monitoradas;
  • 690 bilhões de métricas por dia;

Esta ferramenta permite monitorar aplicativos oferecendo vários tipos de produtos, dentre
eles para: mobile, browser, servers, apm (application performance monitoring) dentre outros. Para utilização da ferramentas é necessário seguir as seguintes etapas, este tutorial foi aplicado em um ambiente Linux (Ubuntu) para o monitoramento de aplicações PHP.

1 – Cadastro no site, Neste cadastro é solicitado as informações pessoais, empresa em que está atuando, quantidade de servidores, pessoas da empresa e por fim é perguntado quais plataformas gostaria de monitorar, dentre as opções: PHP, Java, Ruby, Dotnet, NodeJs, Android e IOS.

2 – Após o cadastro é necessário a instalação do “agent” PHP, escolhendo a opção Add more, neste momento será apresentado as opções dos “agent” disponíveis para fazer o monitoramento das aplicações;

2

3 – Escolhendo a opção PHP é apresenta as etapas para instalação do agent PHP;

3.1 – Get your license key (pegar chave de licença);

4.1-1.png
Percebe-se que foi gerado uma chave, que representa a licença para utilização. Esta chave é
utilizada para a instalação e configurações do “agent”, link de ajuda 2 . Na imagem a seguir são apresentados os comandos para instalação do agent New Relic que é um componente para a configuração com o PHP, acesse com o usuário Administrador.

3.2 – Install the PHP agent (instalar agent PHP);
3.2.1 – Select your environment (selecione o ambiente);

4.2.1

3.2.2 – Debian-based (Debian, Ubuntu, etc.) (base debian) Get the key (pegar chave);

4.2.2
3.2.3 – Add our repository (adicionar repositório);

4.2.3.png
3.2.4 – Install de package and configure it (instalação e configuração);

4.2.4
Nestes comando serão solicitados as chaves de licença do usuário e o nome da aplicação
inicial para o monitoramento, seu nome vem por padrão “PHP Application”.

3.3 – Add your PHP license key (adicionar chave de licença no arquivo newrelic.ini ou php.ini);

 4.3.1
3.4 – Stop and Start your PHP services (parar e iniciar serviços PHP);

4 – Restart os web server, no Ubuntu com os comandos;
– sudo service newrelic-daemon restart
– sudo service apache2 restart

5 – O quinto passo é aguardar 5 minutos para que o New Relic comece a receber dados. Com as instalações e configurações feitas corretamente (mais a frente será mostrado a configuração com varias aplicações).

6 – Informar a chave do usuário, neste passo é necessário informar a chave em um arquivo;
– sudo nano /etc/newrelic/nrsysmond.cfg

Alterar na linha onde é encontrado license_key=CHAVE_USUARIO, passando a chave de licença;

7 – Com os passo seguidos acima o monitoramento das aplicações com New Relic está quase pronto, basta informar quais são as aplicações que serão monitoradas, existe algumas maneiras de fazer isso, através do .htaccess da aplicação, pelo próprio PHP da aplicação ou pela configuração dos hosts, que será o exemplo mostrado a seguir. No arquivo de configurações dos hosts do Apache, localizado em /etc/apache2/sites-available/000-default.conf foram criados dois hosts.

14

Percebe-se que a única diferença é o IfModule, onde é informado o nome da aplicação definida pelo usuário. E no arquivo /etc/hosts ficara como na imagem a seguir, onde é informado um endereço para os ips para as aplicações sga e agm.

15

Por fim, basta reiniciar o apache, e analisar os dados coletados no navegador das aplicações
monitoradas. A ferramenta New Relic oferece alguns recursos que auxiliam no monitoramento e acompanhamento da aplicação, dentre eles:

Monitoramento:

Monitoring → Overview, nesta tela é mostrado um visão geral da aplicação, como informações tempo de respostas de transações na Web, taxa de transferências, porcentagens de erros.

8.png

9.png

Monitoring → Service Maps, onde permite ver quais bases de dados que a aplicação
mantêm conexão.

7.png

Monitoring → Transactions, esta tela mostra as transições com mais detalhes, apresentando a sua performance e as categorias de cada transação, podem ser transições web e ou transições database.

10.png

Monitoring → Databases, na tela de Databases são apresentados as consultas que foram
feitas e o tempo que foi necessário para executar.

12.png

O New Relic oferece ainda telas de erros da aplicação, configuração de Alertas para casos
com mais relevâncias, além de disponibilizar uma bom quantidade de relatórios, que visão levantar informações como: escalabilidade, transações das bases de dados e disponibilidade.

Conclusão

Com ferramenta New Relic o monitoramento de aplicações se torna mais fácil de identificar problemas de performance, processamento, consumo de memoria, isso tudo ajuda desenvolvedores/infra a resolver e melhorar a utilização os usuários diante das aplicações, com vários uteis podendo ser utilizados, basta definir quais são as suas exigências e necessidades.

DevOps: introdução, como surgiu, conceitos e ferramentas.

Standard

Meu trabalho de conclusão de curso foi em cima do tema DevOps, no qual vem ganhando bastante atenção nos últimos tempos e que também me manteve motivado até o fim do trabalho. Será abordado um pouco da introdução, como ele surgiu, os principais conceitos e algumas ferramentas indicadas, além de links bons para leitura.

Introdução

DevOps é um movimento cultural que foca no aperfeiçoamento da comunicação, colaboração e integração entre desenvolvedores de software e administradores da
infraestrutura de TI.
O objetivo é fazer com que desenvolvedores e engenheiros trabalhem juntos, com
foco em automação no maior número de processos possíveis no desenvolvimento de
software. Buscando modificar a antiga dinâmica, onde desenvolvedores e gerentes de infra
eram vistos como ilhas isoladas livres de intercomunicação e cooperativismo.

Como surgiu

O movimento DevOps não começou em apenas um lugar, existem muitos lugares que
dão pistas sobre as origens do termo, por volta de 2008 começa-se a utilizar o termo
infraestrutura ágil em algumas listas de discussão com foco em desenvolvimento ágil, e na mesma época durante evento o Agile 2008.
O Agile abriu caminho para o DevOps, desviando as direções das metodologias de
desenvolvimento de software modelo cascata e indo em direção a um ciclo continuo de
desenvolvimento.
O termo DevOps foi criado durante a conferência Velocity da O’Reilly em 2009, onde
John Allspaw (Etsy.com) e Paul Hammond (Typekit) apresentaram um, com o objetivo de
unir desenvolvedores(Dev) e administradores da infra de TI (Ops) de forma a promover a
integração continua até a entrega.
Um dos participantes foi um entusiasta do assunto era Patrick Debois, que após ter
visto a palestra citada a cima ficou muito animado, tendo a grande ideia de criar um encontro chamado DevOpsDay, que teve seu primeiro encontro em Ghent – Bélgica no final de 2009, o encontro durou 2 dias, e foi onde o assunto começou a ser conhecido pelo mundo.

Conceitos

O DevOps se mantêm em quatro pilares principais, conhecidos pelas siglas C.A.M.S,
são eles:

  • Cultura, as equipes precisam ter colaboração, manter uma relação saudável
    entre as áreas, mudança de comportamento, flexibilidade, troca de ideia e
    principalmente trabalharem juntos, evitando responsabilidades centralizadas e
    incentivando a criação de equipes multidisciplinares;
  • Automação, ferramentas entram em cena para automatizar o maior número
    de processos, sendo eles: automação para liberação de versão, automação de
    build, de provisionamento de ambientes para testes, monitoramento ou
    qualquer outro processo, é interessante identificar os processos que sejam
    repetitivos ou que levem bastante tempo e buscar resolver o quanto antes,
    evitando que se torne algo mais difícil de alterar futuramente;
  • Medição/Avaliação, deve-se medir tudo que possível, performance,
    processos e interações e até mesmo pessoas. Sem medir, não se pode melhorar
    nem aperfeiçoar os processos;
  • Compartilhamento, ter uma boa comunicação entre as equipes, incentivar as
    pessoas a se comunicarem e compartilharem ideias e problemas é um ponto
    crucial numa iniciativa do DevOps. Histórias de sucesso atraem novos
    talentos para o movimento e criam um excelente canal de feedback, que
    fomentam um processo de melhoria contínua; O DevOps é um movimento em constante construção e definição, seguir ou aplicar a cultura DevOps em uma empresa parte principalmente da mudança de cultura.

O DevOps é um movimento em constante construção e definição, seguir ou aplicar a
cultura DevOps em uma empresa parte principalmente da mudança de cultura.

Ferramentas

Um dos principais princípios do DevOps é investir em automação. A automação
permite executar tarefas ou processos mais rapidamente e diminuir a possibilidade de erros
humanos e para isso podem ser citadas algumas ferramentas:
Vagrant
Ferramenta que permite a construção de ambientes virtualizados de desenvolvimento
completos, com um fluxo de trabalho fácil e simples de usar e com foco na automação.

Docker
Docker é uma plataforma aberta para desenvolvedores e administradores de sistema,
que ajuda na criação e execução de aplicações distribuídas.

Puppet
Ferramenta de código aberto para gerenciamento de configuração. A ideia é ter a
configuração centralizada e sendo distribuída pra várias maquinas ou servidores na rede;

Chef
Chef permite automatizar a forma como se constrói, implanta e gerencia a
infraestrutura, tornando versionáveis e testável.

Composer
Gerenciador de dependências da aplicação, permite manter e incluir novos
pacotes/bibliotecas necessárias facilmente na aplicação.

New Relic
É uma ferramenta de monitoramento de aplicação onde permite análise da aplicação
e ajuda pessoas que constroem software a entender o que os históricos de dados estão
tentando dizer-lhes, através da coleta, armazenamento e analise dos mesmos.
Ferramentas existem muitas e surgem mais a cada dia, basta analisar qual a
necessidade real para cada caso.

Links para leitura

Link apresentação monografia I:
http://pt.slideshare.net/alefevariani/devops-49735272

Link monografia completa:
https://github.com/AlefeVariani/MonografiaDevOpsAlefeVariani

O que é DevOps afinal?
http://gutocarvalho.net/octopress/2013/03/16/o-que-e-um-devops-afinal

Agile DevOps: Quebrando os silos.
http://www.ibm.com/developerworks/br/library/a-devops9/#ibm-pcon

O que é DevOps? Metodologia, benefícios e ferramentas.
http://newrelic.com/devops/what-is-devops

Cultura DevOps e integração entre infra e devel
http://pt.slideshare.net/GutoCarvalho/cultura-devops-e-integrao-entre-infra-e-devel

DevOps.com
http://devops.com/

Blog do Patrick Debois referencias sobre DevOps
http://www.jedi.be/blog/

DevOps Brasil
http://devops-br.org/

SecOps – Segurança em DevOps
http://imasters.com.br/infra/seguranca/secops-seguranca-em-devops/

Ferramentas para criar uma cultura eficiente de DevOps
http://computerworld.com.br/tecnologia/2015/01/30/7-ferramentas-para-criar-uma-cultura-de-devops-correta

Eventos oficiais do DevOps que acontecem pelo mundo
http://www.devopsdays.org/

Conclusão

A ideia deste artigo era dar uma visão geral sobre o assunto DevOps e continuar a pesquisa/leitura com os links de ajuda, os quais me ajudaram bastante, principalmente o artigo do Guto Carvalho.