29 de novembro de 2018

Usando o AWS Cloud9 como um ambiente de desenvolvimento Node.JS & React

Vou falar sobre o AWS Cloud9 com Node.JS e React. Estou desenvolvendo uma aplicação serverless, e estou tendo que usar o Node.JS e React, algo que eu nunca havia visto na minha vida (tipo cabeça de bacalhau, filhote de pombo, essas coisas sabe?).

Primeiro, vamos introduzir quem é quem:
  • AWS Cloud9 - esta é uma plataforma de desenvolvimento (IDE) online totalmente gerenciada pela AWS para você. O que isso significa é que você pode criar um ambiente de desenvolvimento, que não precisa ser o seu laptop/desktop, e acessá-lo via um browser (ou SSH) a partir de qualquer dispositivo que esteja [até tablets e celulares, caso você seja masoquista o suficiente para querer desenvolver numa tela pequena assim :-) ]. Uma das vantagens é você ter uma estação de desenvolvimento na nuvem, ou seja, deu um problema no seu dispositivo, basta arrumar outro e pronto, vida que segue. Outra vantagem é que ele é capaz de criar um ambiente colaborativo de desenvolvimento, isto é, você pode dar permissão à outros desenvolvedores para olhar o seu código em tempo real e criticar dar dicas sobre o seu código (ok, eu sei que muitos de vocês são ciumentos e não gostam dos outros olhando o seu código, mas olhar não tira pedaço e ajuda a resolver aquele pepino enorme que você resolvia antes com uma gambiarra a qual, provavelmente, iria se arrepender no futuro).
  • Node.JS - é um runtime Javascript construído a partir do Google V8 Javascript Engine. Uma vantagem do Node.JS é sua capacidade de fazer chamadas non-blocking, ou seja, diferente de threads de sistema operacional onde ficamos aguardando a thread terminar, o Node.JS simplesmente permite quantas chamadas concorrentes forem necessárias.
  • React - é uma bilbioteca Javascript para criar interfaces de usuário. É o framework utilizado pelo Facebook. Permite que sejam renderizados somente os componentes que foram alterados, além de permitir algo parecido com "microserviços" no desenvolvimento de interfaces web. Você cria componentes, e depois junta-os conforme necessário para criar as suas páginas, e eles vão alterando somente o que for alterado e não a página toda.
Ok, agora que apresentamos os componentes dos quais vou falar neste, e nos próximos posts, vamos seguir com o que realmente interessa.

Primeira coisa que devemos fazer é criar uma conta AWS. Já tem a sua? Ótimo! Não tem? É tão fácil quanto ir ao site https://console.aws.amazon.com e criar a sua conta. Vale a pena reforçar que, obrigatoriamente, você irá precisar de um cartão de crédito. Outro alerta válido é que você não será cobrado nada por simplesmente criar a conta, mas qualquer recurso que você criar após isso você poderá, ou não, ser cobrado. Para uma lista de recursos que são gratuitos na AWS por um período inicial, veja o site a seguir.
Ao seguir os passos deste post, esteja ciente de que poderão haver eventuais cobranças de valores dos recursos utilizados caso estes não se incluam no Nível Gratuito da AWS, ou caso você ultrapasse os níveis de utilização do mesmo. A responsabilidade da gestão da conta AWS é inteiramente sua e o autor deste post não pode ser responsabilizado pela mesma.
(Coisa chata esse aviso aí em cima, mas necessário, acredite em mim!)

Agora que estamos em nossa conta AWS, vamos criar um ambiente Cloud9.
  1. Vá em "Serviços" e na caixa de busca digite Cloud9. Clique no serviço Cloud9 para ir até a página inicial dele.
  2. Após aparecer a página inicial, você vai ver no canto superior direito "Criar ambiente". Clique neste botão.
  3. Um passo-a-passo aparecerá. Após dar um nome e uma descrição, você será levado à página de configurações. Aqui você terá algumas opções:
    • Tipo de ambiente (1): a primeira opção irá criar um ambiente em um servidor na AWS (EC2) e você terá um ambiente dedicado para você na nuvem e poderá acessá-lo via browser. Para não incorrerem custos, sugiro escolher a instância marcada como "Free Tier". A vantagem é que a AWS irá criar a EC2 para você e gerenciar o modo "sleep" dela, reduzindo os custos de manutenção desse ambiente. Você ainda poderá decidir criar esse ambiente em uma VPC própria de desenvolvimento e etc.
    • Tipo de ambiente (2): essa opção é para quem já tem um servidor rodando em algum lugar mas quer criar um ambiente de desenvolvimento nele. Dessa forma você irá ter que copiar a chave SSH pública que a AWS te fornecerá, criar um usuário para o Cloud9, e colocar o endereço do seu servidor. O que o Cloud9 vai fazer é criar o ambiente de desenvolvimento utilizando o seu servidor, e não uma instância EC2. Ao concluir o passo-a-passo, literalmente, a AWS irá se conectar no seu servidor e instalar os ambiente Cloud9 nele. A desvantagem é que toda a gestão dessa infra que suporta o Cloud9 fica sob sua responsabilidade.
  4. Para quem escolheu o tipo de ambiente (1), então você poderá definir a opção de redução de custos. Essa opção faz com que o seu ambiente hiberne após X minutos, fazendo com não sejam cobradas horas de computação ociosa.
    • Também é possível escolher na parte de Networking (avançado) qual a VPC e subnet você quer que a EC2 seja criada. É opcional, e se não mexer nestas opções automaticamente será usado a VPC default e uma subnet aleatória.
  5.  Para quem escolheu o  tipo de ambiente (2) então você poderá definir qual o diretório que será usado como o root do ambiente Cloud9, e onde está instalada a biblioteca Node.JS. Uma opção interessante é se você tiver um Bastion Host, existe uma opção para que você diga qual o endereço dele.
  6. Após revisar suas opções, basta clicar em "criar". 
Após alguns minutos, você terá seu ambiente pronto! Entre nele (via AWS Console) e vamos começar com o básico!

O ambiente já vem com:
  • AWS CLI
  • Node.JS & npm
  • GIT
  • Python
  • PHP
  • Javascript
  • entre outras ferramentas
O importante é entender que esse ambiente precisa ser atualizado para certos casos de uso. Eu sempre sugiro uma pequena rotina:
  • Rodar 'sudo yum update -y' para garantir que o Linux está 100% atualizado (isso deve ser feito de tempo em tempo, pois apesar da AWS gerenciar a infraestrutura que suporta o seu ambiente de desenvolvimento ela não gerencia o ambiente de sistema operacional instalado - isso é sua responsabilidade!)
  • Atualizar o Node.JS e o o NPM. Uma sugestão é verificar no site do Node.JS qual é a versão mais atual, mas para atualizar basta rodar o comando 'nvm i v10' (para a versão 10, por exemplo). Não é necessário baixar nada, o Node Version Manager (nvm) irá fazer isso automaticamente para você. Por último, rode o comando 'nvm alias default 10.14.0'.
  •  Instalar o AWS Amplify CLI. Para isso basta rodar os comandos 'npm install -g @aws-amplify/cli' e depois rodar o 'amplify configure' para deixar seu ambiente pronto para o desenvolvimento com esta ferramenta.
  • Instalar a ferramenta "Create React Native App" (CRNA) usando o comando 'npm install -g create-react-native-app'
Pronto! Após estes passos você terá um ambiente 100% funcional para desenvolver projetos com Node.JS e React!

Nunca usou o AWS Amplify e quer ver como é desenvolver um aplicativo serverless de forma simples? Segue esse tutorial AWS Amplify com Node.JS e React Native!

Nenhum comentário: