portaldacalheta.pt
  • Principal
  • Design De Marca
  • Nutrição
  • Processos Financeiros
  • Vizinhos
Processo Interno

Desenvolvimento em nuvem na nuvem: desenvolvimento de BigData com Docker na AWS



Por que você pode precisar?

Sou desenvolvedor e trabalho todos os dias em Integrated Development Environment (IDE: Integrated Development Enviroment), como Intellij IDEA ou Eclipse. Esses IDEs são aplicativos de desktop. Desde o advento do Google Documents, tenho visto mais e mais pessoas moverem seus trabalhos de versões desktop do Word ou Excel para a nuvem, usando um equivalente online de um processador de texto ou aplicativo de planilha.

Existem razões óbvias para usar uma nuvem para salvar seu trabalho. Hoje, em comparação com os aplicativos comerciais de desktop tradicionais, alguns aplicativos da web não apresentam desvantagens em termos de funcionalidade. O conteúdo está disponível onde quer que haja um navegador da web e, atualmente, isso acontece em quase todo lugar. Colaborar e compartilhar são fáceis e a perda de arquivos é menos provável.



Infelizmente, essas vantagens da nuvem não são tão comuns no mundo do desenvolvimento de software quanto são para os aplicativos de negócios. Existem algumas tentativas de fornecer um IDE online, mas elas não chegam perto dos IDEs tradicionais.



Isso é paradoxal; enquanto ainda estamos presos à nossa mesa para a programação diária, o software agora foi gerado em vários servidores. Os desenvolvedores precisam trabalhar com coisas que não podem mais manter em seus computadores. É claro que os laptops não aumentam mais seu poder de processamento; Ter mais de 16 GB de RAM em um laptop é raro e caro, sem mencionar que os aparelhos mais recentes, por exemplo, tablets, têm ainda menos memória.



Porém, mesmo que ainda não seja possível substituir os aplicativos de desktop clássicos para o desenvolvimento de software, é possível mova todo o seu desktop de desenvolvimento para a nuvem . No dia em que descobri, não era mais necessário ter todo o meu software no meu laptop e, ao perceber a disponibilidade de uma versão web de terminais e VNC, movi tudo para a nuvem. Eventualmente, desenvolvi um kit de construção para criar esse ambiente automaticamente.

Cloud Developer



O que a nuvem significa para um desenvolvedor? Desenvolva nisso, é claro! Tweet

Neste artigo, apresento um conjunto de scripts para construir um ambiente de desenvolvimento baseado em nuvem para Escada e aplicativos de big data, executados com Docker no Amazon AWS e compactação de desktop acessível pela web com IntelliJ IDE, Spark, Hadoop e Zeppelin como serviços, bem como ferramentas de linha de comando como SSH, SBT e Ammonite baseados na web. O kit está disponível gratuitamente em GitHub , Também descrevo o procedimento para usá-lo para construir sua instância. Você pode construir seu ambiente e personalizá-lo de acordo com suas necessidades específicas. Não deve demorar mais de 10 minutos para deixá-lo pronto para funcionar.

O que há no 'BigDataDevKit'?

Meu principal objetivo ao desenvolver o kit era que meu ambiente de desenvolvimento fosse algo que eu pudesse simplesmente ativar com todos os serviços e servidores com os quais trabalho e destruí-los quando não fossem mais necessários. Isso é importante, especialmente quando você está trabalhando em projetos diferentes.



Meu ambiente ideal baseado em nuvem deve:

  • Inclui todas as ferramentas de desenvolvimento típicas, especialmente um IDE gráfico.
  • Tenha todos os servidores e serviços necessários à mão.
  • Seja rápido e fácil para criar do zero e expandir para adicionar mais serviços.
  • Esteja totalmente acessível usando apenas um navegador da web.
  • Opcionalmente, permita o acesso com clientes especializados (cliente VNC e cliente SSH).

Aproveitando a infraestrutura e o software em nuvem modernos, o poder dos motores de busca modernos, uma variedade de disponibilidade de banda larga e um Docker inestimável, criei um ambiente de desenvolvimento para Scala e desenvolvimento de big data que substituiu meu laptop de desenvolvimento, para melhor.



Atualmente posso trabalhar a qualquer momento, seja de um MacBook Pro, de um Tablet Surface ou até de um iPad (com teclado), embora admita que a última opção não seja a ideal. Todos esses dispositivos são basicamente clientes; o desktop e todos os serviços estão na nuvem.

como programar um robô usando c ++

Docker e Amazon AWS!



Meu ambiente atual é construído usando os seguintes serviços online:

  • Amazon Web Services para servidores.
  • GitHub para armazenar o código.
  • Dropbox para salvar arquivos.

Também uso alguns serviços gratuitos, como DuckDns para endereços IP e Vamos criptografar para obter um certificado SSL grátis.



Atualmente, neste ambiente tenho:

  • Um desktop gráfico com ideia Intellij, acessível através de um navegador da web.
  • Ferramentas de linha de comando acessíveis via web, como SBT e Ammonite.
  • Hadoop para salvar arquivos e executar trabalhos MapReduce.
  • Servidor Spark Job para trabalhos agendados.
  • Zeppelin para um notebook baseado na web.

Mas o mais importante de tudo, o acesso à web é criptografado com HTTPS para VNC e SSH baseados na web, e existem vários salva-vidas para evitar a perda de dados, uma preocupação que é obviamente importante quando você não 'possui' o conteúdo. seu disco rígido físico. Lembre-se de que obter uma cópia de todo o seu trabalho no computador é automático e muito rápido. Se você perder tudo porque alguém roubou sua senha, você tem uma cópia no seu computador de qualquer maneira, desde que tenha configurado tudo corretamente.

Use um ambiente de desenvolvimento baseado na Web com AWS e Docker

Agora, vamos começar a descrever como o ambiente funciona. Quando começo a trabalhar pela manhã, a primeira coisa que faço é ir para o console do Amazon Web Services, onde vejo todas as minhas instâncias. Normalmente, tenho muitas instâncias de desenvolvimento configuradas para diferentes projetos e mantenho as que não foram utilizadas desligadas para economizar nas contas. Afinal, só posso trabalhar em um projeto por vez. (Bem, às vezes eu trabalho em dois).

Tela 1

Então, eu seleciono a instância que desejo, inicio, espero um pouco ou vou tomar um café. Não faz muita diferença ligar o computador. Geralmente, leva alguns segundos para que a instância comece a funcionar. Assim que vejo o ícone verde, abro o mecanismo de pesquisa e vou para um URL conhecido: https://msciab.duckdns.org/vnc.html. Lembre-se de que este é meu URL; ao criar um kit, você criará seu url exclusivo.

Como a AWS atribui um novo IP a cada máquina quando você inicia, eu configurei um serviço DNS dinâmico, para que você sempre possa usar o mesmo URL para entrar em seu servidor, mesmo quando você o interrompe e reinicia. Você também pode marcá-lo em seu mecanismo de pesquisa. Além disso, eu uso HTTPS com chaves válidas para proteger meu trabalho tanto quanto possível de olhares indiscretos, caso eu precise lidar com senhas e outros dados confidenciais.

Tela 2

Uma vez carregado, o sistema irá recebê-lo com um cliente web NoVNC, VNC. Basta fazer login e uma área de trabalho aparecerá. Uso muito pouco a área de trabalho, intencionalmente, apenas um menu com aplicativos e meu único luxo é uma área de trabalho virtual (já que abro muitas janelas durante o desenvolvimento). Para o correio, ainda dependo de outros aplicativos, hoje principalmente outras abas do mecanismo de busca.

Na máquina virtual tenho o que preciso para desenvolver aplicativos de big data. Em primeiro lugar, existe um IDE. No momento da construção, uso a edição IntelliJ Comunidade de ideias . Além disso, existe a ferramenta de construção SBT e um Amonnite do Scala RELP.

Tela 3

Os principais recursos desse ambiente, no entanto, são serviços implementados como contêineres na mesma máquina virtual. Em particular, tenho: * Zeppelin, o notebook da web para usar o código Scala no momento e para fazer análise de dados (http://zeppelin:8080) * O Spark Job Server, para executar e implementar iniciar empregos com uma interface Rest (http://sparkjobserver:8080). * Uma instância do Hadoop para armazenar e recuperar dados do HDFS (http://hadoop:50070).

Observe que esses URLs são fixos, mas acessíveis no ambiente virtual. Você pode ver suas interfaces da web na imagem a seguir.

Tela 4

Cada serviço é executado em um contêiner Docker separado. Sem falar de uma maneira muito técnica, pense nisso como se fossem três servidores diferentes dentro de sua máquina virtual. O charme de usar o Docker é que você pode adicionar serviços e até adicionar duas ou três máquinas virtuais. Usando contêineres da Amazon, você pode ajustar facilmente seu ambiente.

Por último, mas não menos importante, você tem um terminal da web disponível. Basta inserir sua URL com HTTPS e você será recebido com um terminal para uma página da web.

Tela 5

Na imagem acima você pode ver uma lista dos containers, que são os três servidores mais o desktop. Esta linha de comando Concha Dá acesso à máquina virtual onde os contêineres estão localizados, o que permite gerenciá-los. É como se seus servidores estivessem 'na matriz' (virtualmente dentro dos contêineres), mas isso Concha oferece uma saída para fora da 'Matriz' para gerenciar servidores e desktop. A partir daqui, você pode reiniciar os contêineres, inserir seus sistemas de arquivos e fazer outras manipulações que o Docker permite. Não vou discutir o Docker em detalhes neste ponto, mas há muitos documentos sobre Site do Docker .

Como instalar sua instância

Você gostou disso até agora e quer sua instância? É fácil e barato. Você pode obtê-lo pelo custo da máquina virtual no Amazon Web Services, mais armazenamento. O kit na configuração atual requer 4 gb de RAM para poder exercer todos os serviços. Se você for cuidadoso e usar a máquina virtual apenas quando precisar e trabalhar, digamos, 160 horas por mês, uma máquina virtual com os preços de hoje custará 160 x $ 0,052, ou $ 8 por mês. Você deve adicionar o custo de armazenamento. Eu uso cerca de 30 GB, mas tudo pode ser mantido junto por menos de $ 10.

No entanto, isso não inclui o custo de uma conta (Pro) Dropbox (eventual), se você quiser fazer backup de mais de 2 GB de código. Isso custa US $ 15 a mais por mês, mas fornece segurança importante para seus dados. Você também precisará de um repositório privado, um GitHub pago ou outro serviço, como o Bitbucket, que oferece repositórios privados gratuitos.

Quero enfatizar que se você usar apenas quando precisar, é mais barato do que um servidor dedicado. Sim, tudo mencionado aqui pode ser instalado em um servidor físico, mas como trabalho com big data, preciso de muitos serviços da AWS, então acho que faz sentido ter tudo no mesmo lugar.

Vamos ver como fazer toda a instalação.

Pré requisitos

Antes de começar a construir uma máquina virtual, você deve se registrar nos quatro serviços a seguir:

  • Amazon Web Services .
  • DuckDNS .
  • Dropbox .
  • Vamos criptografar .

O único deles onde é necessário usar o seu cartão de crédito é no Amazon Web Services. DuckDns é totalmente gratuito, enquanto o DropBox oferece 2 gb de armazenamento gratuito, o que pode ser suficiente para muitas tarefas. Let’s Encrypt também é gratuito e é usado internamente quando você cria a imagem para assinar seu certificado. Além disso, recomendo um serviço de hospedagem de repositório também, como GitHub ou Bitbucket, porém se você quiser armazenar seu código, não é necessário para a instalação.

Para começar, navegue até o Repositório GitHub BigDataDevKit .

modelo de objeto de página selênio java

Tela 6

Role a página para baixo e copie o script mostrado na imagem para o seu editor de texto preferido:

Tela 7

Este script é necessário para aumentar a imagem. Você deve alterá-lo e fornecer alguns valores para os parâmetros. Altere o texto com cuidado dentro das citações. Observe que você não pode usar caracteres como a citação em si, a barra invertida ou o símbolo do dólar na senha, a menos que você os insira compromisso . Este problema é relevante apenas para a senha. Se você quiser estar seguro, evite aspas, cifrões ou barras invertidas.

O parâmetro PASSWORD é uma senha que você escolhe para entrar na máquina virtual por meio de uma interface da web. O parâmetro EMAIL É o seu e-mail e será usado quando você registrar um certificado SSL. Você será solicitado a fornecer seu e-mail, que é o único requisito para obter um certificado SSL da Let’s Encrypt.

Para obter os valores de TOKEN e HOST, vá para o site DuckDNS e faça login. Você terá que escolher nome de anfitrião Novo.

Tela 8

Olhe para a imagem para ver onde você deve copiar o símbolo e onde você deve adicionar seu nome de anfitrião . Você deve clicar no botão 'adicionar domínio' para reservar o nome de anfitrião .

Configure sua instância

Supondo que você tenha todos os parâmetros e edite o script, você está pronto para iniciar sua instância. Entre na interface de gerenciamento do Amazon Web Services, vá para o painel de instâncias do EC2 e clique em “Launch Instance”.

Tela 9

Na primeira tela, você vai escolher uma imagem. O script é construído em torno do Linux da Amazon e não há outras opções disponíveis. Selecione Linux da Amazon, é a primeira opção na lista QuickStart.

Tela 10

Na segunda tela, escolha o tipo de instância. Dado o tamanho do software em execução, existem vários serviços e você precisa de pelo menos 4 GB de memória, então eu recomendo que você selecione a instância t2.médio . Você pode minimizá-lo usando t2.small se você desligar alguns serviços ou mesmo micro se você quiser apenas a área de trabalho.

Tela 11

Na terceira tela, clique em 'Detalhes avançados' e cole o script que você configurou na etapa anterior. Também recomendo que você defina uma proteção contra um termo, para que, se ocorrer um desligamento acidental, você não perca todo o seu trabalho.

Tela 12

A próxima etapa é configurar o armazenamento. O padrão para uma instância é 8 GB, o que não é suficiente para conter todas as imagens que iremos construir. Eu recomendo aumentar para 20 gb. Da mesma forma, embora não seja necessário, sugiro outro dispositivo de bloqueio de pelo menos 10 gb. O script montará o segundo dispositivo de bloco como um arquivo de dados. Você pode obter uma imagem de seu conteúdo, finalizar a instância, então recriá-la usando a imagem de seu conteúdo e recuperar todo o trabalho. Além disso, um dispositivo de bloco personalizado não é perdido quando você encerra a instância, então você tem proteção dupla contra perda acidental de dados. Para aumentar ainda mais sua segurança, você pode fazer backup de seus dados automaticamente com o Dropbox.

Tela 13

A quinta etapa é nomear a instância. Escolha o que você deseja. A sexta etapa oferece uma maneira de configurar a barra de controle de acesso. Por padrão, apenas SSH está disponível, mas você também precisa de HTTPS. Você poderia abrir HTTPS para o mundo, mas é melhor se for apenas para o seu IP para evitar que outras pessoas entrem em sua área de trabalho e Concha , embora ainda esteja protegido por uma senha.

Depois de concluir esta última configuração, você pode iniciar a instância. Você notará que a inicialização pode demorar alguns minutos na primeira vez, pois o script de inicialização está sendo executado, ele também fará alguns testes longos, como gerar um certificado HTTPS com Let’s Encrypt.

Tela 14

Eventualmente, quando você vê o console de gerenciamento “rodando” com um commit, e que ele não está mais “inicializando”, você está pronto para ir.

Supondo que todos os parâmetros estejam corretos, você pode navegar até https://YOURHOST.duckdns.org.

Você substitui YOURHOST com o nome de host que você escolheu, mas não se esqueça de que é um site HTTPS, não HTTP, então sua conexão com o servidor é criptografada, então você deve escrever https// no url. O site também apresentará um certificado válido para Let’s Encrypt. Se houver problemas para obter o certificado, o script de inicialização gerará um certificado autoassinado. Você ainda pode se conectar com uma conexão criptografada, mas o mecanismo de pesquisa irá avisá-lo que é um site desconhecido e as conexões são inseguras. Não deveria acontecer, mas você nunca sabe.

Tela 15

Supondo que tudo funcione, você pode entrar no terminal da web do Butterfly. Você pode fazer login usando o nome de usuário app e a senha que você usou no script na instalação.

Assim que estiver conectado, você terá uma máquina virtual habilitada que também inclui Docker e outros brindes, como Nginx Frontend, Git e o Butterfly Web Terminal. Agora você pode concluir a instalação construindo as imagens Docker para seu ambiente de desenvolvimento.

Em seguida, digite os seguintes comandos:

git clone https://github.com/sciabarra/BigDataDevKit cd BigDataDevKit sh build.sh

O último comando pedirá que você digite uma senha para entrar na área de trabalho. Feito isso, ele começará a construir as imagens. Observe que a construção levará cerca de 10 minutos, mas você pode ver o que acontece porque tudo é mostrado na tela.

Assim que a construção estiver concluída, você também pode instalar o Dropbox com o seguinte comando:

/app/.dropbox-dist/dropboxd

O sistema mostrará um link no qual você deve clicar para ativar o Dropbox. Você deve entrar no Dropbox e então você está pronto. Tudo o que você colocar na pasta Dropbox é automaticamente sincronizado com todas as suas instâncias do Dropbox.

Quando estiver pronto, você pode reiniciar a máquina virtual e entrar em seu ambiente no URL https://YOURHOST.dyndns.org/vnc.html.

o que é mercado endereçável total

Você pode parar sua máquina e reiniciá-la quando continuar seu trabalho. O URL de acesso permanece o mesmo. Dessa forma, você pagará apenas pelo tempo de uso, mais um adicional mensal pelo armazenamento utilizado.

Preserve seus dados

A discussão a seguir requer algum conhecimento de como o Docker e a Amazon funcionam. Se você não quiser entender os detalhes, lembre-se da seguinte regra: Na máquina virtual há uma pasta disponível /app/Dropbox, o que você colocar em /app/Dropbox é preservado e tudo o mais é descartável e pode desaparecer. Para aumentar a segurança, armazene seu código precioso em uma versão de controle do sistema.

Agora, se você quer entender isso, continue lendo. Se você seguiu minhas instruções ao criar a máquina virtual, ela está protegida contra encerramento, portanto, você não pode destruí-la acidentalmente. Se você decidir encerrá-lo de propósito, o volume principal será destruído. Todas as imagens do Docker serão perdidas, incluindo todas as alterações feitas.

No entanto, como o /app/Dropbox ele é montado como um volume do Docker para contêineres, não faz parte das imagens do Docker. Na máquina virtual, a pasta /app ele é montado no Amazon Volume que você criou, que também não foi destruído, embora você especificamente encerre a máquina virtual. Para remover o volume, você deve removê-lo especificamente.

Não confunda os volumes Docker, que são uma entidade Docker lógica, com Amazon Volumes, que são uma entidade um tanto física. O que acontece é que o volume do Docker /app/Dropbox está dentro do volume Amazon /app.

O volume da Amazon não é destruído automaticamente quando você encerra a máquina virtual, então o que quer que esteja localizado dentro será preservado, até que você expressamente destrua o volume. Além disso, tudo o que você coloca no volume do Docker é armazenado fora do contêiner, portanto, não é destruído quando o contêiner é destruído. Se você habilitou o Dropbox, conforme recomendado, todo o seu conteúdo é copiado para os servidores do Dropbox e para o seu disco rígido, se você sincronizar o Dropbox com seu (s) computador (es). Também é recomendado que o código-fonte seja armazenado em um sistema de controle de versão.

Então, se você colocar suas coisas em um sistema de controle de versão na pasta Dropbox, para perder seus dados tudo isso deve acontecer:

  • Você exclui especificamente sua máquina virtual.
  • Você remove especificamente o volume de dados de sua máquina virtual.
  • Você exclui especificamente os dados do Dropbox, incluindo o histórico.
  • Você o remove especificamente do sistema de controle de versão.

Espero que seus dados estejam suficientemente protegidos.

Eu mantenho uma máquina virtual para cada projeto e, quando terminar, mantenho as máquinas virtuais não utilizadas desligadas. Claro, tenho todo o meu código no GitHub e salvei no Dropbox. Além disso, quando paro de trabalhar em um projeto, tiro uma foto do bloco Amazon Web Services antes de excluir completamente a máquina virtual. Desta forma, ao retornar a um projeto, por exemplo para manutenção, basta iniciar uma nova máquina virtual utilizando a foto do bloco. Todos os meus dados são devolvidos ao seu site e posso continuar meu trabalho.

Otimize o acesso

Primeiro, se você tiver acesso à Internet sem proxy, poderá usar clientes SSH e VNC nativos. O acesso SSH direto é importante se você precisar copiar arquivos para dentro e para fora da máquina virtual. No entanto, para compartilhamento de arquivos, você deve considerar o Dropbox como uma alternativa mais simples.

O acesso à web VNC é inestimável, mas às vezes pode ser mais lento do que um cliente nativo. Você tem acesso ao servidor VNC na máquina virtual usando a porta 5900. Você deve abri-lo especificamente porque ele fecha por padrão. Eu recomendo que você só abra para o seu endereço IP, porque a internet está cheia de 'bots' que fazem a varredura na internet em busca de serviços para aderir, e o VNC é um alvo frequente desses bots.

conclusão

Este artigo explica como você pode aproveitar ao máximo a tecnologia de nuvem moderna para implementar um ambiente de desenvolvimento eficaz. Embora uma máquina em nuvem possa não ser uma substituição completa para seu computador de trabalho ou laptop, é boa o suficiente para fazer o trabalho de desenvolvimento quando o acesso ao IDE é importante. Na minha experiência, com as conexões atuais de internet, é rápido o suficiente para funcionar.

Estando na nuvem, o acesso ao servidor e a manipulação são mais rápidos do que quando são realizados localmente. Você pode aumentar (ou diminuir) a memória, iniciar outro ambiente, criar uma imagem e assim por diante. Você tem um decantador na ponta dos dedos e, quando trabalha com projetos de big data, precisa de serviços robustos e de muito espaço. Isso é o que a nuvem oferece.

Washington Post libera escritor que tweetou sobre a alegação de estupro de Kobe Bryant

Mundo

Washington Post libera escritor que tweetou sobre a alegação de estupro de Kobe Bryant
Síria: Reino Unido sanciona aliados de Assad

Síria: Reino Unido sanciona aliados de Assad

Mundo

Publicações Populares
Uma licença de design não é a resposta
Uma licença de design não é a resposta
Como o Prêmio Nobel da Paz revelou a cisão na oposição da Rússia
Como o Prêmio Nobel da Paz revelou a cisão na oposição da Rússia
Analista de produto, marketing de crescimento
Analista de produto, marketing de crescimento
Como dar feedback sobre design profissional
Como dar feedback sobre design profissional
UI x UX - Explore as principais diferenças (infográfico)
UI x UX - Explore as principais diferenças (infográfico)
 
Selecionando o método de avaliação correto para startups pré-IPO
Selecionando o método de avaliação correto para startups pré-IPO
The Ultimate UX Hook - Design Antecipatório, Persuasivo e Emocional na UX
The Ultimate UX Hook - Design Antecipatório, Persuasivo e Emocional na UX
O guia completo para métodos de pesquisa UX
O guia completo para métodos de pesquisa UX
Como criar fontes personalizadas: 7 etapas e 3 estudos de caso
Como criar fontes personalizadas: 7 etapas e 3 estudos de caso
Teste de solicitação HTTP: uma ferramenta de sobrevivência do desenvolvedor
Teste de solicitação HTTP: uma ferramenta de sobrevivência do desenvolvedor
Publicações Populares
  • que tipo de llc eu tenho
  • introdução ao software de aprendizado de máquina
  • em que idioma está escrito
  • como conduzir testes de usabilidade
  • como fazer um documento de design
  • como fazer bot de telegrama
  • escrever documentação técnica para software
Categorias
  • Design De Marca
  • Nutrição
  • Processos Financeiros
  • Vizinhos
  • © 2022 | Todos Os Direitos Reservados

    portaldacalheta.pt