Criando um Lamp com seu Docker

Bastante pessoas me pediram para criar uma documentação sobre como configurar um LAMP (Linux, Apache, Mysql e PHP) com o Docker.

Para esse artigo, usaremos o Docker e Docker-compose, mas não entremos nos detalhes básicos sobre seu uso. Caso ainda não sabia usar essas ferramentas, apresento os links abaixo para aprender as ferramentas citadas:

Para configurar um LAMP, faremos o uso de um ambiente com dois containers.

Crie uma pasta para seu projeto e dentro dessa pasta crie um arquivo docker-compose.yml com o seguinte conteúdo:

web:
image: tutum/apache-php …
[Leia mais]
Deploy ágil com Docker

Com vários projetos usando tecnologias diferentes, surgiu a necessidade de uma maneira mais ágil de organizar o deploy em produção, desses e de outros novos projetos que surgem. Uma dessas maneiras, que escolhi explicar nesse artigo, é rodar cada aplicação dentro de um contêiner. Quando fazemos isso, basta fazer uma única configuração, uma única vez, para garantir o mesmo funcionamento nas máquinas de desenvolvimento, homologação e produção. Isso permite que cada time de desenvolvimento seja responsável por decidir e gerenciar quais versões de bibliotecas e dependências seus projetos vão utilizar.

Na arquitetura abaixo, cada aplicação web roda dentro de um contêiner, expondo uma porta específica. Cada contêiner rodando uma aplicação web notifica ao serviço do etcd (que também roda dentro de um contêiner) seu próprio IP e a porta exposta. Certo? Agora vamos ao passo a passo.

Configurando o …

[Leia mais]
DatabaseCast 65: front-end, back-end e DBA

Olá, pessoal! Neste episódio, Mauro Pichiliani (Twitter | Blog) e os convidados Felipe Montanha (@femontanha) e Ramon Sanches (@raymonsanches), do podcast DevNaEstrada (@devnaestrada), falam sobre front-end, back-end e DBA. Hoje você vai aprender a classificar um cargo por uma sigla com duas vogais, usar a palavra engenheiro e hacker para tudo, colocar a culpa pela lentidão do site no JavaScript e julgar a organização da mesa dos colegas!

Não deixe de nos incentivar acessando o site do …

[Leia mais]
Gerenciando o fluxo assíncrono de operações em NodeJS

O desenvolvimento de aplicações NodeJS aumenta a cada dia, talvez pela facilidade de desenvolvimento, bibliotecas em crescente evolução ou simplesmente pelo fato de utilizar JavaScript em ambientes que exijam performance e assincronia. Como sabemos, aplicações deste tipo não resolvem todos os problemas. Conforme a aplicação vem crescendo, precisamos nos atentar à alguns detalhes. Hoje falaremos sobre como escrever um código limpo para funções assíncronas, explorando o uso dos padrões criados para aplicações deste tipo.

Callbacks     

A programação assíncrona não usa o retorno da função para informar que a função foi finalizada. Ela trabalha com o “estilo de passagem de continuação (continuation-passing style), CPS”. Em definição, uma função escrita neste estilo recebe como argumento uma “continuação explícita”. Quando a função resulta um valor, ela …

[Leia mais]
Python para DevOps: uma habilidade para se desenvolver

A complexidade das camadas que compõem um sistema web exige cada vez mais esforço dos full stack developers ou full stack integrators, que devido à natureza dinâmica dos requisitos da indústria de software precisam se manter atualizados com as novas linguagens de programação e ferramentas que surgem e se provam eficazes com o passar dos anos.

Tim Peters, um guru da linguagem Python e muito influente na comunidade, escreveu em uma lista (muito famosa) que deve existir um e, preferencialmente um, jeito óbvio de solucionar um problema.

Podemos implementar uma lista de requisitos de várias formas, mas a produtividade que cobiçamos está diretamente relacionada à nossa capacidade de escolher os melhores acessórios possíveis para a realização do trabalho.

Todas as linguagens de programação têm seus contras e …

[Leia mais]
Monitoramento refinado para Amazon RDS (MySQL 5.6, MariaDB e Aurora)

O Amazon Relational Database Service (RDS) facilita a configuração, a operação e a escalabilidade de bancos de dados relacionais na nuvem. Como é frequentemente o caso com modelos AWS de alto nível, nós cuidamos de todos os detalhes, a fim de dar-lhe o tempo para se concentrar no seu aplicativo e na sua empresa.

Monitoramento refinado

Usuários avançados do RDS pediram-nos para mais detalhes sobre o funcionamento interno do serviço e estamos felizes em anunciar o novo recurso de monitoramento refinado!

Depois de ativar esse recurso para uma instância de banco de dados, você terá acesso a mais de 50 nova métricas de CPU, memória, sistema de arquivos e discos de I/O. Você pode ativar esses recursos em uma base por instância e pode escolher a granularidade (até 1 segundo). Aqui está a lista de métricas disponíveis:

[Leia mais]
Instalação MySQL 5.7 no Ubuntu 15.10


Ubuntu é hoje uma das distribuições Linux mais populares, principalmente pela facilidade de instalação e configuração. O MySQL 5.7 oferece novos recursos interessantes, como o suporte nativo a JSON e melhor performance e segurança. Neste tutorial veremos como instalar o MySQL 5.7 no Ubuntu 15.10.

Nota: usei o Ubuntu em uma Virtual Machine para testar este procedimento. Criei a VM usando o Vagrant e Virtual Box. Depois de instalados, basta executar:shell> vagrant init boxcutter/ubuntu1510shell> vagrant up --provider virtualbox

3 opções de instalaçãoTemos 3 …

[Leia mais]
Desenvolvendo uma aplicação web com Lumen e MySQL

O Lumen é um novo microframework PHP desenvolvido por Taylor Otwell, o mesmo autor do famoso framework Laravel. Eu quis lhe dar uma chance e estou aqui para compartilhar as minhas experiências. Não sou um especialista em Lumen (ainda), mas acho que uma das melhores características desse framework é que ele torna realmente muito fácil iniciar um novo projeto. Então, para provar isso, vamos agora construir um aplicativo totalmente funcional suportado por um banco de dados MySQL em menos de 30 minutos. Você está pronto para começar?

Uma frase motivacional diária

Nosso aplicativo deve ser bastante simples, mas eu gostaria também de fazer algo útil. Sou um grande fã de citações motivacionais, e se …

[Leia mais]
Forçando transação vitima de rollback em deadlock

Se você utiliza uma Storage Engine que suporta transações, você provavelmente já enfrentou ou ouviu falar de deadlock's.

Na Documentação do MySQL podemos ver:
“Always be prepared to re-issue a transaction if it fails due to deadlock. Deadlocks are not dangerous. Just try again.”
“Sempre esteja preparado para re-executar uma transação se ela falhar por causa de deadlock. Deadlocks não são perigosos. Apenas re-execute a transação.”

Na empresa em que trabalho, temos um importante processo que de vez em quando falha por causa de deadlock. Decidi então melhorar este processo e fazer o que a documentação diz (re-executar a transação).
Para fazer isso, Eu queria poder reproduzir o scenario do deadlock e a transação vitima do rollback teria que ser a do processo em questão.

[Leia mais]
10 coisas para não fazer no PHP 7

Com o lançamento do PHP 7, surge a oportunidade de podermos, de certa forma, melhorarmos algumas práticas que vínhamos executando.

Neste artigo estão reunidas algumas “manias” que é melhor deixarmos de lado para poder aproveitar tudo que de melhor o PHP tem a nos oferecer.

1. Não utilize funções mysql_*

Finalmente chegou o tempo em que não seremos mais apenas orientados a não utilizar as funções mysql_*. No PHP 7 essas funções foram retiradas, o que significa que você terá que mudar para as funções (muito melhores, por sinal) mysqli_*, ou então utilizar alternativas melhores ou mais flexíveis como PDO ou um ORM.

2. Evite desperdício de código

Em outras palavras: não escreva código inútil que desperdice o desempenho. Na verdade, a velocidade no PHP 7 aumentou …

[Leia mais]