Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

<p>DESENVOLVIMENTO</p><p>WEB SEMANA 1</p><p>Conhecer o nascimento e a evolução da Web até os dias atuais;</p><p>Entender a complexidade dos inúmeros protocolos de comunicação que envolvem uma aplicação Web;</p><p>Entender diversos aspectos de aplicações atuais que executam em nuvens públicas e privadas;</p><p>Aprender as exigências operacionais por trás do desenvolvimento de aplicações Web modernas;</p><p>Conhecer as principais tecnologias atuais para criação de novas aplicações na WWW.</p><p>1941</p><p>1º computador desenvolvido em Berlim, na Alemanha, por Konrad Zuse.</p><p>1958</p><p>É criada a Arpa, a agência militar de pesquisa que busca tecnologias que não centralizem o</p><p>processamento de dados</p><p>1961</p><p>Leonard Kleinrock, da Ucla, apresenta tese de doutorado sobre o que viria a ser chamado de</p><p>comutação de pacotes eletrônicos</p><p>1969</p><p>1º conexão da Arpanet</p><p>1971</p><p>1º e-mail</p><p>1974</p><p>Desenvolvimento de um novo protocolo para a Arpanet que resultou no TCP/IP</p><p>1981</p><p>1º PC popularizado pela IBM (Modelo 5150)</p><p>1983</p><p>O TCP/ IP é implantado em todos os computadores da Arpanet</p><p>1986</p><p>A National Science Foundation lança a NSFnet com o objetivo de interligar redes à “inter net”</p><p>1988</p><p>O LNCC, do Rio de Janeiro, entra na Bitnet. É criada a Ansp para implementar também a</p><p>comunicação via Bitnet, popular rede mundial de computadores</p><p>1989</p><p>Primeira conexão internacional na FAPESP. Também é lançada a Rede Nacional de Ensino e</p><p>Pesquisa (RNP).</p><p>1990</p><p>Timothy Ber ners-Lee, do Cern, escreve o protocolo http da www</p><p>1991</p><p>A internet chega à FAPESP. É a primeira conexão no Brasil.</p><p>1993</p><p>Pesquisadores da Universidade de Illinois Urbana- -Champaign criam o Mosaic, o primeiro navegador</p><p>com informações gráficas da web</p><p>1994</p><p>A internet é aberta para uso comercial no Brasil. A Fapesp continua como único ponto de troca de</p><p>tráfego até 1998</p><p>1995</p><p>A NSFNet, que man teve a internet no momento de grande expansão, transfere sua estrutura</p><p>principal de rede para a iniciativa privada. Criação do CGI.</p><p>a informação seria transformada em pequenos pacotes eletrônicos antes</p><p>de ser enviada para outro computador, o que caracteriza a internet atual</p><p>BITNET</p><p>TCP/IP</p><p>Cada equipamento da rede possui um número previamente codificado. Ao se conectar pela</p><p>primeira vez à internet, o novo computador, e mais recentemente um celular ou tablet, recebe um número</p><p>IP, o Internet Protocol, que o identifica dentro da rede. Por abranger o mundo todo, a liberação e controle</p><p>dos números é centralizada na Autoridade para Administração de Números Internet (Iana, na sigla em</p><p>inglês), instalada nos Estados Unidos. Desde o início da internet utiliza-se um conjunto de números</p><p>existentes, conhecido como IP versão 4 (IPv4), com 4,3 bilhões de números. Atualmente, pouco mais de 2%</p><p>dos números estão disponíveis para utilização.</p><p>O IPv6, um sistema com um número fantástico. A nova versão é igual ao número 340, seguido de mais</p><p>36 números, ou 79 trilhões de trilhões de vezes o espaço do IPv4. Entretanto, O problema está no</p><p>provedor, se precisar de muitos números e ainda ele não se adaptou ao IPv6, terá dificuldades para</p><p>acessar a rede no futuro.</p><p>MARCO CIVIL DA INTERNET</p><p>PROTOCOLOS</p><p>HTTP</p><p>A entrada da internet na Fundação se deu porque havia uma conexão direta com o Fermilab, o laboratório</p><p>de física de altas energias especializado no estudo de partículas atômicas, com sede na cidade de Batavia,</p><p>em Illinois, nos Estados Unidos. Essa linha conectada em 1989 dava acesso aos pesquisadores brasileiros</p><p>às informações e a contatos com seus pares naquela instituição norte-americana e em outras daquele país</p><p>e da Europa por meio de uma das predecessoras da internet, a Bitnet. A conexão funcionava via linha</p><p>telefônica ponto a ponto sem necessidade de discagem, por um fio de cobre dentro de um cabo</p><p>submarino, porque ainda não havia fibra óptica para esse tipo de serviço.</p><p>sigla de Because It’s Time Network, era muito usada por pesquisadores no exterior. Ela utilizava</p><p>uma linguagem de computação criada pela empresa IBM.</p><p>Nos anos 1980, a tecnologia de fibra óptica e de modems sobre fios de cobre já estava dominada, mas</p><p>ainda era preciso resolver o problema dos protocolos para permitir que os computadores conversassem.</p><p>Isso limitava a expansão da internet.</p><p>A grande vantagem do TCP/IP é ele ser um protocolo aberto e simples. O</p><p>importante da internet é a retirada dos computadores do sistema porque a</p><p>comunicação não ocorre diretamente entre eles [grandes computadores ou</p><p>mainframes], mas sim por meio de roteadores [que procuram a melhor rota para a</p><p>transferência de pacotes eletrônicos em que são transformadas as mensagens]. A</p><p>rede tornou-se extremamente flexível e fácil de crescer.</p><p>O Marco Civil da Internet é uma lei brasileira que regulamenta o uso da internet no país. Essa lei foi</p><p>aprovada em 2014 e tem como objetivo garantir a liberdade de expressão, a privacidade e a segurança na</p><p>internet. O Marco Civil estabelece princípios e diretrizes para o uso da internet no Brasil, e abrange tópicos</p><p>como neutralidade da rede, guarda de registros, responsabilidade civil e criminal, entre outros.</p><p>É um acordo que controla e possibilita a conexão, comunicação e transferência de</p><p>dados entre dois sistemas computacionais. Exemplos:</p><p>Camada de Rede: IP</p><p>Camada de Transporte: TCP</p><p>Camada de Aplicação: HTTP, FTP, SSH</p><p>No contexto da WWW, é o mais importante!</p><p>Comunicação baseada em requisição e resposta. A requisição possui o endereço do conteúdo</p><p>requisitado. A requisição é traduzida no formato HTTP que possui o caminho para o servidor (o</p><p>qual é mapeado para um endereço IP pelo DNS (Domain Name System)) e para o conteúdo</p><p>armazenado no servidor. Servidor recebe requisição e devolve para o navegador (cliente) o</p><p>resultado do processamento que é o conteúdo do HTML.</p><p>GET</p><p>HEAD</p><p>POST</p><p>MODELO CLIENTE SERVIDOR</p><p>TIPOS DE APLICAÇÕES WEB</p><p>MÉTODOS HTTP</p><p>Solicita recursos do servidor (imagens, vídeos, textos, etc). Usado quando digitamos um</p><p>endereço no navegador pedindo algum conteúdo para ser mostrado ou executado.</p><p>Solicita somente informações sobre um recurso. Somente retorna os cabeçalhos HTTP</p><p>Usado para enviar informações para o servidor (dados de formulário).</p><p>Quais tecnologias podem ser utilizadas.</p><p>Como é realizado o processamento do sistema.</p><p>Quais são o perfil do usuário e suas tarefas na interface gráfica da aplicação.</p><p>Como armazenar os dados.</p><p>Um software é um produto desenvolvido por meio de padrões de qualidade e que possui uma</p><p>documentação agregada, podendo ser composto por um ou vários programas. Já um programa tem um</p><p>conceito mais amplo, podendo ser definido como um conjunto de linhas de código (ou algoritmo</p><p>executável) em determinada linguagem de programação, cujo objetivo é resolver um problema.</p><p>O passo inicial do desenvolvimento de uma aplicação web envolve responder as seguintes questões:</p><p>Um sistema Web, para ser considerado robusto e consistente, normalmente separa</p><p>esses aspectos em quatro partes diferentes. Essa separação está relacionada com as</p><p>boas práticas de desenvolvi- mento de software, em que um dos objetivos é permitir a</p><p>implementação de alterações e atualizações em cada uma das partes sem prejudicar as</p><p>demais.</p><p>Site de conteúdo: apenas exibe um conteúdo de uma determinada área de forma linear, incluindo</p><p>recursos (imagens, tabelas, gráficos, etc.) e navegação simples.</p><p>Site de registro de dados ou entrada do usuário: utiliza como recurso princi- pal formulários que são</p><p>preenchidos pelos usuários, com dados relacionados ao objetivo do site.</p><p>Portal: compreende um conjunto de páginas, links que convergem para um de- terminado contexto.</p><p>Aplicação orientada à transação: neste modelo, o usuário envia solicitações que a aplicação processa</p><p>em um banco de dados, retornando ao usuário a resposta de sua solicitação.</p><p>A qualidade de uma aplicação WEB pode ser determinada por diversos fatores, como: usabilidade,</p><p>capacidade de navegação, possibilidade de busca e de recuperação, disponibilidade, tempo de resposta,</p><p>processamento correto dos links (ligações entre páginas), segurança e uso de padrões. Para isso, seu</p><p>desenvolvimento deve usar um processo sistematizado e sugere-se</p><p>que seja utilizado o modelo</p><p>incremental. O ponto de partida para a construção de uma aplicação Web é a identificação do objetivo</p><p>geral da aplicação. Após compreender o propósito da aplicação, é necessário desenvolver os modelos de</p><p>projeto. bem como o projeto visual e gráfico Na etapa final, é encaminhada a construção das páginas</p><p>com o uso de tecnologias específicas para a Web, como HTML, CSS, PHP, Javascript. e ferramentas de</p><p>edição de códigos. À medida que cada funcionalidade é finalizada, deve ser testada. Assim, é necessário</p><p>que o desenvolvedor verifique:</p><p>Se a navegação está funcionando corretamente.</p><p>Se existem erros na visualização do conteúdo da página, ou dos scripts utilizados por ela.</p><p>Se os dados dos formulários estão sendo enviados corretamente ao servidor.</p><p>Se o comportamento da aplicação é o mesmo em diferentes navegadores, visto que alguns possuem</p><p>restrições com relação a recursos do HTML e CSS</p><p>Modelo lógico é um modelo utilizado para mapear as entidades que</p><p>fazem parte da solução de um problema. Ele define as chaves (primária</p><p>e estrangeira), segue as regras de normalização e de integridade</p><p>referencial, entre outros conceitos vinculados a banco de dados.</p><p>SEMANA 2</p><p>Compreender que há complexidades envolvidas no desenvolvimento de</p><p>aplicações Web e que essas podem englobar inúmeros componentes;</p><p>Entender que aplicações atuais podem ser parte de outras aplicações</p><p>maiores e que exigem comunicação via interfaces padronizadas;</p><p>Identificar e mapear uma estrutura base para desenvolver aplicações</p><p>Web simples e complexas (envolvendo servidores, provedores de</p><p>serviços, frameworks, bancos de dados, scripts etc.).</p><p>Os cookies são uma forma de armazenar informações que o protocolo HTTP não consegue armazenarARQUITETURA MVC</p><p>armazena dados e notifica suas visões e controladores associados</p><p>Um padrão de projeto de software ou padrão de arquitetura de software formulado na década de 1970.</p><p>Model (camada de modelo ou lógica da aplicação) – Ponte entre a View e Controller. É a parte lógica</p><p>da aplicação e gerencia o comportamento dos dados por meio de regras de negócios, lógica e funções.</p><p>View (camada de apresentação ou visualização) – Saída de representação dos dados (tabela,</p><p>diagrama, etc). É como os dados solicitados do modelo são exibidos. Aqui podemos ter várias visões de</p><p>um mesmo dado (usar uma tabela, usar um gráfico, etc). Ela permite interações com o usuário - gera uma</p><p>representação dos dados presentes no modelo solicitado e faz a exibição dos dados (html ou xml</p><p>Controller (camada de controle ou controlador) – Faz a mediação entre o modelo e a View, ou seja</p><p>entre a entrada e a saída dos dados – envia comandos para modelo para atualizar o seu estado (editar</p><p>um documento, por exemplo)</p><p>A aplicação torna-se escalável</p><p>Facilita o reuso de códigos</p><p>Facilita a manutenção da aplicação</p><p>Como a arquitetura é modular,</p><p>permite que desenvolvedores e</p><p>Partes da aplicação podem ser</p><p>alteradas sem alterar outras</p><p>designers desenvolvam em paralelo</p><p>À medida que cresce o projeto,</p><p>cresce o número de arquivos e</p><p>pastas</p><p>Requer tempo para modelar o</p><p>sistema</p><p>Uma aplicação projetada para uso na Internet e Intranet é um sistema de software baseado em</p><p>tecnologias e padrões do W3C que provê recursos específicos, como conteúdo e serviços por</p><p>meio de um cliente Web</p><p>uma aplicação Web é caracterizada por construir dinamicamente o seu</p><p>conteúdo, com dados provenientes de um banco de dados, a partir da interação</p><p>do usuário com as pá- ginas, via navegadores.</p><p>Os problemas de funcionamento geram no usuário as seguintes dúvidas: O sis- tema</p><p>tem a informação ou o serviço de que eu preciso? Eu mandei os dados, mas será que o</p><p>sistema os processou de maneira correta?</p><p>As dificuldades relativas à usabilidade estão vinculadas à localização da infor- mação,</p><p>e quando elas ocorrem o usuário se pergunta: Onde posso encontrar a informação ou</p><p>o serviço? Como posso solicitar esse serviço? Quais informações eu devo fornecer?</p><p>Qual foi o resultado? Era o que eu queria?</p><p>Já os problemas de desempenho têm relação com o tempo de resposta do siste- ma</p><p>e podem ocasionar os seguintes questionamentos: Por que a página demora a</p><p>carregar? A página será exibida, ou ocorreu algum erro?</p><p>As questões de portabilidade estão vinculadas diretamente com a visualização da</p><p>informação e com as ações de formulários que não funcionam, gerando dúvi- das</p><p>como: O que aconteceu com a página? Ela não é exibida corretamente neste browser!</p><p>A linguagem script não funciona neste cliente ou servidor?</p><p>AS APLICAÇÕES MAL PROJETAS PODEM SER EXPLICADAS POR PROBLEMAS EM:</p><p>CICLO DE DESENVOLVIMENTO WEB</p><p>Requisitos de segurança estão relacionados com autenticação, desempenho,</p><p>disponibilidade, confidencialidade, entre outros. Requisitos de qualidade têm</p><p>relação direta com usabilidade, funcionalidade, confiabilidade e eficiência.</p><p>O modelo iterativo e incremental é um dos processos recomendados para o desenvolvimento de</p><p>aplicações Web, pois permite incorporar requisitos de segurança e de qualidade à medida que o</p><p>software é desenvolvido. Também possibilita que as funcionalidades sejam divididas em partes menores</p><p>ou iterações. Exemplo de delimitação do problema:</p><p>O Diagrama Entidade Relacionamento (DER) permite a modelagem dos conceitos que devem ser</p><p>armazenados em um banco de dados. Nesse diagrama, as entidades representam um elemento da</p><p>aplicação que deve armazenado em um banco de dados. Os relacionamentos entre entidades</p><p>representam o número de elementos que uma entidade tem relacionados aos elementos de outra.</p><p>Tanto entidades quanto relacionamentos podem ser caracterizados pelos seus atributos.</p><p>Para descobrir os atributos de uma entidade, devemos analisar todas as documentações relacionadas,</p><p>bem como o projeto da interface gráfica com o usuário, pois, para fazer o cadastro, os dados</p><p>necessários têm de ser informados. Alguns atributos da entidade vão se transformar em outras</p><p>entidades, devido a dois fatores principais:</p><p>1) A entidade é composta por diversas outras informações, e se todas as informações fossem</p><p>colocadas em um única entidade, elas ficariam sem sentido. Por exemplo: Entidade “Cliente” com</p><p>Entidade “Endereço”.</p><p>2) A entidade está relacionada a várias outras ocorrências de outra entidade. Por exemplo: Entidade</p><p>“Produto” com Entidade “Fotos”.</p><p>As entidades podem ser reconhecidas pelo identificador de entidade, que é formado por um atributo</p><p>ou por um conjunto de atributos, de modo que cada ocorrência de entidade possa ser identificada de</p><p>forma única.</p><p>DIAGRAMA ENTIDADE RELACIONAMENTO (DER)</p><p>MODELO LÓGICO</p><p>O modelo lógico considera as características e restrições do Sistema Gerenciador de Banco de Dados</p><p>(SGBD), enquanto o DER é um modelo que serve para reali- zar um mapeamento dos dados que fazem</p><p>parte da solução do problema. Com o modelo lógico, passamos a definir as chaves primárias e</p><p>estrangeiras e utilizamos regras de normalização e integridade referencial.</p><p>O modelo lógico pode ser criado a partir do DER, seguindo algumas regras:</p><p>Entidade: cada entidade é transformada em uma tabela. A tabela é composta por linhas ou tuplas, e</p><p>cada linha tem um conjunto de campos, os quais são os valores dos atributos.</p><p>Coluna: cada atributo é traduzido como uma coluna da tabela.</p><p>Chave primária: usada para diferenciar uma linha das outras linhas na mesma tabela. Geralmente, o</p><p>identificador de identidade é transformado na chave primária.</p><p>Chave estrangeira: usada para implementar os relacionamentos entre tabelas.</p><p>SEMANA 3</p><p>Aprender o que é frontend e backend e suas tecnologias envolvidas.</p><p>HTML5, CSS, Bootstrap, React e AngularJS para o fronted. PHP, NodeJS e</p><p>Java para o Backend;</p><p>Escolher entre diversas ferramentas essenciais de desenvolvimento web</p><p>a serem apresentadas.</p><p>F</p><p>R</p><p>O</p><p>N</p><p>T</p><p>E</p><p>N</p><p>D</p><p>O desenvolvedor de front-end é responsável por dar vida à interface do código web, ou seja, que trata da</p><p>parte da aplicação que o usuário vê estampada na tela. É preciso pensar em como as pessoas interagem</p><p>com os sites e onde elas procuram as coisas, exigindo uma combinação especial de criatividade</p><p>e</p><p>conhecimento técnico.</p><p>Em habilidades gerais, um desenvolvedor front-end precisa se preocupar com dois pilares: produzir um</p><p>design responsivo e otimizar a performance de seu projeto. O primeiro é como você se certifica de que</p><p>seu site funciona e tem uma boa aparência independentemente do dispositivo que o usuário use. O</p><p>segundo não se trata apenas de ter um bom visual, você também precisa criar algo que desempenhe</p><p>rapidamente.</p><p>Tecnologias envolvidas:</p><p>linguagem usada para estruturar todo o conteúdo de um site. É usada para interagir com o</p><p>usuário por meio de criação de interfaces intuitivas e acessíveis</p><p>responsável por algumas funções e comportamentos que tornam os sites mais dinâmicos,</p><p>descreve o comportamento dos elementos dispostos em HTML e CSS (scripting).</p><p>é uma biblioteca que permite que o programador front-end realize mais facilmente</p><p>modificações na página através das ações do usuário, como o clique de um botão que ocupa</p><p>uma barra lateral, por exemplo. interage com o HTML e simplifica os scripts interpretados</p><p>pelo navegador do lado do cliente. O site carrega mais rápido.</p><p>framework muito popular. Seus recursos são muito usados por programadores front-end,</p><p>porque a ferramenta oferece componentes que simplificam e tornam mais ágil o</p><p>desenvolvimento web. É importante destacar que o Bootstrap é gratuito, oferece modelos</p><p>e estilos editáveis e que facilitam a criação de layouts responsivos.</p><p>é uma plataforma de execução de códigos JavaScript que permite ao</p><p>programador desenvolver aplicações web utilizando o JavaScript como</p><p>linguagem de back-end. Com NodeJS você poderá criar servidores facilmente</p><p>escaláveis capazes de responder a milhares de requisições simultâneas sem dar</p><p>deadlock ou negá-las.</p><p>O front-end pode ser definido como a profissão que cuida da apresentação de um site</p><p>Linguagem que implica estilo e controla o layout de um documento HTML, o que permite a</p><p>total mudança visual do documento</p><p>Um framework JavaScript para criar interfaces de usuário</p><p>Outros: VUE. Meteor.js, Materialize, Foundation</p><p>O HTML cuida da estrutura do site, do esqueleto. O CSS personaliza o layout e oferece cores, otimização de</p><p>fontes, configuração de imagens e outras definições para dar um estilo, uma roupagem.</p><p>Enquanto isso, o JavaScript cuida da interatividade do site e da lógica de programação propriamente dita.</p><p>Ou seja, vale notar que o JavaScript é a única linguagem de programação do lado do front-end. O HTML é</p><p>considerado uma linguagem de marcação; e o CSS, uma linguagem de estilo.</p><p>B</p><p>A</p><p>C</p><p>K</p><p>E</p><p>N</p><p>D</p><p>STACK</p><p>A parte mais robusta e complexa da lógica de programação de um site vai ser definida pelo que</p><p>chamamos de back-end. Trata-se das funções dos bastidores de uma aplicação web, a infraestrutura por</p><p>trás do que está visível para as pessoas usuárias.O back-end lida com a lógica do servidor. Em uma</p><p>estrutura web, o servidor é quem responde às requisições de clientes e oferece o que foi solicitado.</p><p>Nesse viés, auxilia a gerenciar também a conexão com os bancos de dados, a questão da segurança e</p><p>conexão com outras aplicações, por meio de APIs (um código em comum que possibilita a comunicação</p><p>entre dois sistemas). É neste que está a maior parte da lógica e da sintaxe da aplicação. O cliente/usuário</p><p>não pode interferir no back-end, pois tem acesso apenas ao front-end. Garante a integridade dos</p><p>dados. Funciona como intermediário entre a interface e o banco de dados que armazena os dados.</p><p>Imagens e perfis do usuário também vão para o back end. é a que cuida dos bastidores, do</p><p>funcionamento estrutural de uma página</p><p>Tecnologias envolvidas(todas abaixo de alto nível):</p><p>A principal linguagem de back-end continua sendo o PHP. É uma linguagem poderosa e fácil</p><p>de aprender que permite manipular banco de dados e validar informações com eficiência.</p><p>Alto nível. são utilizadas para criar e estruturar as regras de negócio da aplicação e para</p><p>manipular os dados armazenados em SGBDs</p><p>Trata-se de uma ótima linguagem para orientação a objetos que trouxe novas</p><p>formas de programar quando surgiu e continua relevante.</p><p>Outros: Python, Rails, Java, C#, PHP, JavaScript</p><p>Principais frameworks:</p><p>Baseado em Python e oferece um mapeamento objeto-relacional, uma interface administrativa,</p><p>URLs amigáveis ao usuário, sistemas de cache e de templates</p><p>Funciona com base no PHP, é open source e usado especialmente para sistema Web que</p><p>fazem uso do padrão MVC</p><p>Open source e que promete aumentar a velocidade e facilidade no desenvolvimento de sites</p><p>orientado a banco de dados, pois pode-se criar aplicações com base em estruturas pré-definidas</p><p>Os templates do backend são a tecnologia que nos permite substituir apenas os dados dinâmicos em um</p><p>documento html. Template é em geral um arquivo de texto com determinadas especificações às quais</p><p>alguns dados são aplicados, gerando desta forma um novo documento</p><p>É o conjunto de tecnologias</p><p>utilizadas para desenvolver</p><p>softwares. A stack nunca para de</p><p>crescer.</p><p>D</p><p>E</p><p>P</p><p>T</p><p>H</p><p>BASE</p><p>Profundidade das habilidades do profissional</p><p>em determinada área</p><p>Temos os conhecimentos gerais sobre um assunto e</p><p>também as soft skills</p><p>T-SHAPED PERSON</p><p>termo para cunhar um profissional</p><p>multidisciplinar termo difundido pela</p><p>Universidade de Harvard</p><p>O modelo de dados - uma coleção de conceitos que podem ser usados para descrever a estrutura</p><p>de um banco de dados - oferece os meios necessários para alcançar essa abstração.</p><p>ESTRUTURA DE BANCO DE DADOSDe alto nível ou conceituais;</p><p>De baixo nível ou físicos;</p><p>Representativos ou de implementação. mais utilizados</p><p>ARQUITETURA DE TRÊS ESQUEMAS</p><p>SEMANA 4</p><p>Entender a importância das bases de dados no contexto do</p><p>desenvolvimento de uma aplicação Web e como os dados são</p><p>armazenados em diferentes sistemas gerenciadores de bancos de dados;</p><p>Identificar os aspectos que você deve levar em consideração ao escolher</p><p>sua ferramenta de gerenciamento de banco de dados.</p><p>Abstração de dados geralmente se refere à supressão de detalhes de organização e armazenamento,</p><p>destacando os recursos essenciais para o maior conhecimento desses dados. Em banco de dados isso é</p><p>observado no modo que diferentes usuários possam percebê-los em seu nível de detalhe preferido.</p><p>Tipos, relacionamentos e</p><p>restrições que se aplicam aos</p><p>dados.</p><p>utilizam entidade, atributo</p><p>e relacionamento.</p><p>A descrição de um banco de dados é chamada de esquema do banco de dados, que é especificado</p><p>durante o projeto não se espera que mude com frequência.</p><p>Tem como objetivo separar as aplicações do usuário do banco de</p><p>dados físico. Os esquemas podem ser definidos nos três níveis a seguir:</p><p>Nível interno: descreve a estrutura do armazenamento físico do banco de dados. Utiliza um</p><p>modelo de dados físico e descreve os detalhes completos do armazenamento de dados e os</p><p>caminhos de acesso para o BD.</p><p>Nível conceitual: descreve a estrutura do BD inteiro para uma comunidade de usuários. Oculta os</p><p>detalhes das estruturas de armazenamento físico e se concentra na descrição das entidades, tipos</p><p>de dados, relacionamentos, operações do usuário e restrições.</p><p>Nível externo: cada esquema externo descreve a parte do BD em que um grupo de usuários em</p><p>particular esta interessado e oculta o restante do BD do grupo de usuários.</p><p>Independência lógica de dados: capacidade de alterar</p><p>o esquema conceitual sem ter de alterar os esquemas</p><p>externos ou os programas de aplicação.</p><p>Independência física de dados: é a capacidade de</p><p>alterar o esquema interno sem ter de alterar o esquema</p><p>conceitual. Logo, os esquemas externos também não</p><p>precisam ser alterados.</p><p>A arquitetura de três esquemas facilita a compreensão do</p><p>conceito de INTERDEPENDÊNCIA DE DADOS que é a</p><p>capacidade de alterar o esquema em um nível do</p><p>sistema de BD sem ter de alterar o esquema no</p><p>próximo nível mais alto. Podem ser:</p><p>SISTEMA DE BANCO DE DADOS</p><p>Um banco de dados é um conjunto de dados armazenados de maneira que persistam e possam ser</p><p>manipulados. Por persistência queremos dizer que eles permanecerão em seus locais depois que o</p><p>trabalho os utiliza for encerrado e computador, desligado.</p><p>Um sistema gerenciador de banco de dados (SGBD) manipula dados, disponibiliza mecanismos para</p><p>assegurar a integridade de transações, isola os usuários do hardware no qual ele foi implementado e</p><p>fornece controle centralizado das informações.</p><p>Linguagem de definição de dados (DDL)</p><p>Linguagem interativa de manipulação de dados (DML)</p><p>A linguagem SQL é um padrão de linguagem de</p><p>consulta de banco de dados que combina álgebra</p><p>e cálculo relacional.</p><p>Características:</p><p>Linguagem de definição de dados (DDL)</p><p>Linguagem interativa de manipulação de dados (DML)</p><p>Definição de visões</p><p>Autorização dos usuários</p><p>Integridade dos dados</p><p>Controle de transações</p><p>Conjunto de comandos responsáveis por criar, alterar,</p><p>remover estrutura das tabelas e índices de um sistema. O</p><p>resultado do DDL é um arquivo de dicionário de dados –</p><p>um arquivo de metadados.</p><p>CREATE (criar a estrutura)</p><p>ALTER (alterar a estrutura )</p><p>DROP (remover uma estrutura)</p><p>Os comandos DML servem para aplicar as consultas e</p><p>manipulações de dados armazenados.</p><p>INSERT (Inserção)</p><p>UPDATE (Atualização)</p><p>DELETE (Remoção)</p><p>SELECT (Seleção)</p><p>SGBD MARIADB:</p><p>A segurança é uma das máximas preocupações</p><p>para os desenvolvedores da plataforma</p><p>Alta escalabilidade com fácil integração</p><p>Acesso em tempo real</p><p>Funcionalidade central do MySQL</p><p>O MariaDB é uma alternativa ao MySQL</p><p>Carece de um rastreador do otimizador de</p><p>consultas</p><p>MySQL:</p><p>No mercado desde 1995, o MySQL hoje</p><p>pertence à Oracle. Embora seja de código</p><p>aberto, também oferece versões pagas com</p><p>recursos extras, como escalabilidade</p><p>automática e geo-replicação de cluster</p><p>Verificação baseada no host</p><p>Criptografia dos dados</p><p>Não é mais guiado pela comunidade</p><p>Seus membros não podem reparar os</p><p>erros e elaborar correções</p><p>MongoDB:</p><p>O MongoDB foi fundado em 2007 e é</p><p>conhecido como a “base de dados para ideias</p><p>gigantes”</p><p>Não é adequada para aplicações que</p><p>precisam de transações complexas</p><p>Muda e evolui com bastante rapidez</p><p>Validação de documentos</p><p>Motor de armazenamento criptografado</p><p>Adequado para aplicações móveis</p><p>PostgreSQL:</p><p>Opção de código aberto que roda em todos os</p><p>principais sistemas operacionais, como Linux e</p><p>Windows. Também é compatível com o modelo</p><p>ACID (Atomicidade, Consistência, Isolamento e</p><p>Durabilidade).</p><p>Apresenta problemas em ambientes de</p><p>alta taxa de transações</p><p>As melhorias adicionadas comportam</p><p>muito trabalho</p><p>Criação de tipos de dados e métodos de</p><p>consultas personalizados</p><p>Executa procedimentos armazenados em mais</p><p>de doze linguagens de programação</p><p>SQLite:</p><p>É usado por empresas importantes como</p><p>Apple, Facebook, Microsoft e Google</p><p>Não é recomendado para: Aplicações</p><p>cliente/servidor</p><p>Sites com alto volume de transações</p><p>Grandes volumes de dados</p><p>O formato dos arquivos serve para várias</p><p>plataformas</p><p>Biblioteca compacta: roda mais rápido</p><p>As transações cumprem com o padrão ACID</p><p>Firebird:</p><p>Usado em sistemas de produção desde 1981 e</p><p>conta com muitos padrões ANSI SQL. Roda em</p><p>Linux, Windows e várias plataformas Unix.</p><p>Não inclui suporte de replicação integrada</p><p>Não dispõe de tabelas temporárias e</p><p>integração com outros sistemas de banco</p><p>de dados</p><p>Rastreamento de API para monitoramento em</p><p>tempo real</p><p>Diferentes ferramentas de desenvolvimento</p><p>Assistência gratuita por meio de uma grande</p><p>comunidade global</p><p>CUBRID:</p><p>É gratuito e de código aberto otimizado para aplicações Web</p><p>Ideal para serviços complexos que processam grandes volumes de dados e que geram um alto</p><p>número de solicitações simultâneas</p><p>Está implementada em linguagem C</p><p>Backup on-line</p><p>Ferramentas de GUI (Interface Gráfica do Usuário) e drivers para linguagens de programação:</p><p>JDBC, PHP, Python, Perl e Ruby</p><p>FERRAMENTAS DE DIAGRAMAÇÃO</p><p>SEMANA 5</p><p>Entender a importância de considerar diversos atores/componentes que</p><p>envolvem uma aplicação Web, desde conhecer as características do</p><p>sistema a ser desenvolvido, a extração dos requisitos, a modelagem</p><p>conceitual, projeto de navegação, projeto de interfaces e implementação;</p><p>Entender estratégias de geração de conteúdo, linguagens de</p><p>programação e de marcação, aplicações Web, arquiteturas Web</p><p>(Monolíticas x Microsserviços);</p><p>Entender como os web services RESTful funcionam e quais os elementos</p><p>necessários para desenvolver e executar esses serviços em aplicações</p><p>Web atuais.</p><p>Não funciona com sistemas Apple</p><p>Não tem depurador de scripts</p><p>dbdiagram.io:</p><p>Fácil prototipagem de entidades e relações</p><p>draw.io:</p><p>Ferramenta para desenhar seu banco de dados e a relação entre entidades, além de possuir integração</p><p>com OneDrive e Google Drive para salvar os projetos de forma automática</p><p>LucidChart</p><p>Também é uma ferramenta para modelar entidades e relacionamentos, embora tenha uma limitação de</p><p>uso na versão gratuita</p><p>MySqlWorkbench</p><p>Focada na administração e construção do banco de dados</p><p>É desenvolvida pela Oracle</p><p>A diagramação é completa</p><p>SERVIÇOS MONOLÍTICOS</p><p>Um aplicativo monolítico normalmente é um sistema de aplicativos no qual</p><p>todos os módulos relevantes são empacotados juntos como uma única unidade</p><p>implantável de execução. m aplicativo monolítico típico usa um design em</p><p>camadas, com camadas separadas para interface do usuário, lógica do</p><p>aplicativo e acesso a dados.</p><p>Esses sistemas começam pequenos, mas tendem a crescer ao longo do tempo</p><p>para atender às necessidades de negócios. Em algum momento, à medida que</p><p>novos recursos são adicionados, um aplicativo monolítico pode começar a</p><p>sofrer com os seguintes problemas:</p><p>As partes individuais do sistema não podem ser dimensionadas de forma</p><p>independente, pois são firmemente acopladas.</p><p>É difícil manter o código devido ao acoplamento apertado e dependências</p><p>ocultas.</p><p>O teste se torna mais difícil, aumentando a probabilidade de introduzir</p><p>vulnerabilidades.</p><p>Entretanto,</p><p>Apesar dessas limitações, um design monolítico pode fazer sentido como ponto de partida para um</p><p>aplicativo. Os monolitos geralmente são o caminho mais rápido para a criação de um produto de prova de</p><p>conceito ou mínimo viável. Nas fases iniciais do desenvolvimento, os monólitos tendem a ser:</p><p>Mais fácil de compilar, pois há uma única base de código compartilhada.</p><p>Mais fácil de depurar, pois o código é executado em um único processo e espaço de memória.</p><p>Mais fácil de raciocinar, porque há menos partes móveis.</p><p>À medida que o aplicativo aumenta em complexidade, no entanto, essas vantagens podem desaparecer.</p><p>Monolitos grandes geralmente se tornam progressivamente mais difíceis de criar, depurar e raciocinar.</p><p>Componentes com acomplamento forte</p><p>Mudanças em um componente, precisa atualizar a aplicação inteira</p><p>Tempo de inicialização grande e muito uso de CPU e memória</p><p>Desenvolvimento inicial rápido</p><p>Mais simples de aprender</p><p>Usa uma infraestrutura simples</p><p>Um Web service é uma tecnologia que permite</p><p>a comunicação independente entre</p><p>aplicações, sem depender de linguagens ou</p><p>sistemas operacionais.</p><p>SERVIÇOS MICROSSERVIÇOS</p><p>APLICAÇÕES WEB</p><p>CURTO PRAZO</p><p>LONGO PRAZO</p><p>MÉDIO PRAZO</p><p>Os microsserviços normalmente</p><p>são unidades de execução</p><p>descentralizadas e flexívelmente</p><p>acopladas. Os benefícios incluem:</p><p>Os serviços podem evoluir independentemente com base nas</p><p>necessidades do usuário.</p><p>Os serviços podem ser dimensionados de forma independente para</p><p>atender à demanda do usuário.</p><p>Com o tempo, os ciclos de desenvolvimento se tornam mais rápidos</p><p>à medida que os recursos podem ser lançados para o mercado</p><p>mais rapidamente.</p><p>Os serviços são isolados e são mais tolerantes à falha.</p><p>Um único serviço que falha não derrubará todo o aplicativo.</p><p>O teste torna-se mais coerente e consistente, usando o</p><p>desenvolvimento controlado por comportamento</p><p>Uma aplicação Web típica tem em sua estrutura códigos que serão gerados a partir</p><p>do processamento de dados em servidores de aplicações (Web)</p><p>Apresentam grande variedade de requisitos não funcionais, como: Segurança; Desempenho</p><p>Escalabilidade; Disponibilidade.</p><p>Arquitetura WEB: fundamental para separar as responsabilidades entre os componentes, Ajuda a</p><p>entender os requisitos não-funcionais esperados pela aplicação.</p><p>DESENVOLVIMENTO</p><p>PRODUÇÃO</p><p>MANUTENÇÃO</p><p>As arquiteturas separam as responsabilidades em camadas em que</p><p>cada uma delas</p><p>pode estar em servidores diferentes</p><p>CLIENTE-SERVIDOR</p><p>3 CAMADAS</p><p>2 CAMADAS</p><p>relação com o processamento e armazenamento</p><p>Separa o processamento/armazenamento e a</p><p>apresentação dos resultados</p><p>Separa aplicação da apresentação e do</p><p>processamento/armazenamento</p><p>o desenvolvimento fica mais complexo</p><p>Os testes e a integração são custosos e</p><p>complexos (têm muitas partes separadas)</p><p>Precisa de uma infraestrutura mais</p><p>complexa (dockers)</p><p>Entretanto,</p><p>Baixo acomplamento entre os</p><p>A falha em um componente</p><p>Os times de desenvolvimento</p><p>componentes, mais fácil de testar e</p><p>inicializa mais rápido</p><p>isolado não para toda a aplicação</p><p>são independentes (bom para</p><p>estratégias de desenvolvimento Ágeis)</p><p>APLICAÇÕES RESTFUL</p><p>Precedente: O HTTP que utilizamos atualmente foi inicialmente concebido para apenas fazer ligações</p><p>entre páginas Web, ou seja, só transportava HTML. O transporte de dados era feito por meio de</p><p>Remote Procedure Call (RPC)s que permitiam requisitar serviços de outras máquinas para</p><p>conseguirmos recursos via rede, sem saber dos detalhes de implementação.</p><p>WEB SERVICES: é a disponibilidade dos serviços disponíveis anteriormente</p><p>com a Web. Inicialmente era baseado em XML-RPC (que foi criado para ser</p><p>usado em cima do HTTP como protocolo de transporte dos dados).</p><p>XML SOAP</p><p>REBATIZADO</p><p>O SOAP apesar de um protocolo poderoso em termos de exposição de dados, ele é complexo. Para</p><p>simplificar foram criados WEB API, uma delas foi a REST.</p><p>REST</p><p>É uma abstração da arquitetura da WWW, um estilo arquitetural que tem um conjunto de restrições</p><p>aplicados a componentes da aplicação. Ele ignora detalhes de implementação de componente e</p><p>sintaxe do protocolo. O foco é nos papéis dos componentes.</p><p>API RESTFUL RESTful seria, então, a API que está de acordo com todas as restrições definidas</p><p>Uma arquitetura formada por recursos, servidores e clientes.</p><p>Comunicação stateless entre servidor e cliente, ou seja, nenhum conteúdo do cliente é armazenado</p><p>no servidor entre as solicitações. Em vez disso, as informações sobre o estado da sessão são</p><p>mantidas com o cliente.</p><p>Dados que possam ser armazenados em cache para eliminar a necessidade de algumas interações</p><p>entre o cliente e o servidor.</p><p>Uma interface uniforme de componentes para que as informações sejam transferidas em um</p><p>formato padronizado, em vez de específico às necessidades de uma aplicação. Roy Fielding, o criador</p><p>da REST, descreve esse recurso como "a funcionalidade central que diferencia a arquitetura REST dos</p><p>outros tipos baseados em rede".</p><p>Uma limitação de sistema em camadas, em que as interações entre cliente e servidor são mediadas</p><p>por níveis de hierarquia.</p><p>Código sob demanda, o que possibilita que os servidores ampliem as funcionalidades de um cliente</p><p>ao transferir os códigos executáveis. Como esse processo também pode reduzir a visibilidade, esta é</p><p>uma diretriz opcional.</p><p>Para ser RESTful, a aplicação precisa seguir seis diretrizes de arquitetura. É necessário que ela</p><p>tenha o seguinte:</p><p>1.</p><p>2.</p><p>3.</p><p>4.</p><p>5.</p><p>6.</p><p>RESTRIÇÕES</p><p>Interface uniforme</p><p>Sem estado</p><p>Cacheável</p><p>Cliente-Servidor</p><p>Baseado em camadas</p><p>Interface uniforme é a restrição menos atendida. Para que ela seja atendida, é</p><p>necessário alcançar 4 critérios:</p><p>Resource-based: Em contraposição ao comum RPC, REST tenta lidar com</p><p>recursos invés de métodos. Caso você esteja criando um post chamando</p><p>/posts/create?title=lorem você não está seguindo o padrão REST, devido ao</p><p>tratamento de métodos na url. Nesse cenário, o ideal seria fazer uma</p><p>chamada POST para a coleção de /posts. lidar com recursos ao invés de métodos.</p><p>SEMANA6</p><p>Saber diferenciar aplicações Web de containers Web;</p><p>Introduzir os principais conceitos que envolvem containers dockers e</p><p>como operacionalizar um ambiente com containers de aplicações Web.</p><p>Manipulation of resources through representations: O cliente acessa os recursos através de uma</p><p>representação (JSON, XML, etc.), que contenha informação suficiente para manipular este no servidor,</p><p>desde que tenha permissão pra isso.</p><p>Self-descriptive Messages: As respostas são auto-descritivas, incluindo informação suficiente para</p><p>que o cliente saiba como utilizá-las. Usando HTTP, por exemplo, é necessário uma propriedade</p><p>Content-Type incluída no cabeçalho para descrever que tipo de representação é utilizada.</p><p>Hypermedia as the engine of application state (HATEOAS): sua API deve ser um livro aberto, você</p><p>não deve precisar de acesso a documentação para saber que para adicionar um usuário a coleção,</p><p>precisará de uma requisição POST pra URL/users.</p><p>A diferença entre API REST e RESTful é somente o cumprimento das exigências que a</p><p>arquitetura exige.</p><p>Podemos dizer que uma Representational State Transfer (REST) é uma abstração da arquitetura da World</p><p>Wide Web. É um estilo arquitetural que consiste de um conjunto coordenado de restrições aplicadas a</p><p>componentes, conectores e elementos de dados dentro de um sistema.</p><p>O REST ignora os detalhes da implementação de componente e a sintaxe de protocolo com o objetivo de</p><p>focar nos papéis dos componentes, nas restrições sobre sua interação com outros componentes e na</p><p>sua interpretação de elementos de dados significantes.</p><p>Docker é um software livre desenvolvido pela Docker Inc. Ele permite que os usuários criem</p><p>ambientes de desenvolvimento independentes e isolados para lançar e implantar suas</p><p>aplicações. Esses ambientes são, então, chamados de contêineres. Isso permitirá ao</p><p>desenvolvedor executar um contêiner em qualquer máquina. Como você pode ver, com o</p><p>Docker, não há mais problemas de dependências ou de compilação.</p><p>O Docker compartilha apenas os recursos da máquina host para executar seus ambientes.</p><p>O Docker é rápido</p><p>O Docker é multiplataforma</p><p>Você não terá mais a dificuldade de</p><p>configurar seu ambiente de trabalho.</p><p>Quando o Docker estiver configurado,</p><p>você nunca terá de reinstalar suas</p><p>dependências de modo manual</p><p>novamente. Se trocar de computador ou</p><p>se um novo funcionário se juntar à</p><p>empresa, tudo o que você precisa fazer é</p><p>dar a ele ou ela sua configuração.</p><p>Você mantém limpo seu espaço de</p><p>trabalho, já que cada um dos ambientes</p><p>estará isolado e você poderá exclui-los a</p><p>qualquer momento, sem causar impacto</p><p>ao resto.</p><p>https://www.docker.com/</p><p>https://www.docker.com/</p><p>https://www.docker.com/</p><p>https://www.docker.com/</p><p>VA</p><p>N</p><p>TA</p><p>G</p><p>EN</p><p>S</p><p>Listar suas imagens:</p><p>Excluir uma imagem específica:</p><p>Excluir todas as imagens existentes:</p><p>Listar todos os contêineres existentes (em execução ou não):</p><p>Parar um contêiner específico:</p><p>Parar todos os contêineres em execução:</p><p>Excluir um contêiner específico (que não estiver em execução):</p><p>Excluir todos os contêineres (apenas se estiverem parados):</p><p>Exibir os logs (registros) de um contêiner:</p><p>Imagens são templates para criar containers</p><p>São como formas de um objeto</p><p>Containers são objetos prontos</p><p>É preciso ter uma imagem pronta para criarmos</p><p>um container</p><p>Possuem somente o que é necessário para executar uma</p><p>aplicação e são baseados nas imagens</p><p>Facilidade no gerenciamento</p><p>Mais ágil para subir novos ambientes em desenvolvimento</p><p>Simples para realizar modificações</p><p>É leve se comparado às tecnologias de virtualização</p><p>Isolamento – ajuda em ambientes legados</p><p>Melhor gerenciamento de dependência, pois cada container possui suas próprias</p><p>dependências</p><p>Diversas imagens e containers para cada versão do projeto</p><p>CO</p><p>M</p><p>AN</p><p>DO</p><p>S</p><p>$ docker image ls</p><p>$ docker image rm [nome da imagem]</p><p>$ docker image rm $(docker images -a -q)</p><p>$ docker ps -a</p><p>$ docker stop [nome do contêiner</p><p>$ docker stop $(docker ps -a -q)</p><p>$ docker rm [nome do contêiner]</p><p>$ docker rm $(docker ps -a -q)</p><p>$ docker logs [nome do contêiner]</p><p>Com o docker depois que uma imagem é</p><p>criada ela funcionará perfeitamente em</p><p>qualquer máquina, inclusive no servidor que</p><p>hospedará a aplicação.</p><p>Uma imagem (às vezes chamada de “construção”) é um arquivo, um recurso somente de leitura que você</p><p>baixa ou cria, embalado com tudo o que é necessário para um ambiente operacional. Construir imagens é</p><p>muito fácil, porque você pode usar imagens já disponíveis como base (por exemplo,</p><p>uma distribuição</p><p>Debian) e dizer ao Docker o que você quer em cima dela, como certas ferramentas de desenvolvimento,</p><p>bibliotecas e até mesmo colocar seu próprio aplicativo dentro.</p><p>Um contêiner, por outro lado, é o ambiente isolado que você obtém quando executa uma imagem e é</p><p>lido e gravado, para que você possa fazer o que quiser com ele. Este ambiente vai estar no estado preciso</p><p>que foi definido ao construir a imagem. E como as imagens são somente leitura, ao executar um novo</p><p>contêiner, você tem um novo ambiente perfeito, não importa o que você fez nos outros contêineres. Você</p><p>pode executar tantos contêineres simultâneos quanto seu sistema puder controlar.</p><p>Portanto, você executa contêineres a partir de imagens.</p><p>https://www.docker.com/</p><p>https://www.docker.com/</p><p>https://www.docker.com/</p><p>https://www.docker.com/</p><p>https://www.docker.com/</p><p>https://www.docker.com/</p><p>https://www.docker.com/</p><p>https://www.docker.com/</p><p>https://www.docker.com/</p><p>https://www.docker.com/</p><p>https://www.docker.com/</p><p>https://www.docker.com/</p><p>https://www.docker.com/</p><p>https://www.docker.com/</p><p>https://www.docker.com/</p><p>https://www.docker.com/</p><p>https://www.docker.com/</p><p>https://www.docker.com/</p><p>https://www.docker.com/</p><p>https://www.docker.com/</p><p>FLUXO DE TRABALHO</p><p>REQUISITOS</p><p>Construa uma imagem usando o Dockerfile, um arquivo de texto simples no qual você define as</p><p>instruções para o que deseja agrupar na construção - como sistema operacional de base, bibliotecas,</p><p>aplicativos, variáveis de ambiente e arquivos locais. (Consulte a referência do Dockerfile para mais</p><p>informações.);</p><p>Envie a imagem por meio do Docker Hub ou de seu repositório privado. Agora você pode distribuir</p><p>facilmente esse aplicativo ou ambiente de desenvolvimento com o Docker - e, de fato, existem dezenas</p><p>de imagens oficiais pré-construídas oferecidas por desenvolvedores de software, prontas para usar.</p><p>(Explore o Docker Hub para mais informações.);</p><p>Execute um contêiner em uma máquina host. Tudo que você precisa é ter o Docker instalado para</p><p>poder executar contêineres, implantar microsserviços (ou seja, iniciar diferentes contêineres</p><p>executando diferentes serviços) e ter o ambiente de que você precisa para desenvolvimento ou</p><p>implantação.</p><p>ENGINE</p><p>Hello from Docker.</p><p>This message shows that your installation appears to be working correctly.</p><p>To generate this message, Docker took the following steps:</p><p>1. The Docker Engine CLI client contacted the Docker Engine daemon.</p><p>2. The Docker Engine daemon pulled the "hello-world" image from the Docker Hub.</p><p>3. The Docker Engine daemon created a new container from that image which runs the</p><p>executable that produces the output you are currently reading.</p><p>4. The Docker Engine daemon streamed that output to the Docker Engine CLI client, which sent it to your</p><p>terminal.</p><p>Windows : sistema operacional de 64 bits, Windows 7 ou superior;</p><p>Mac : OS X 10.8 “Mountain Lion” ou mais recente, com suporte de hardware da Intel para virtualização de</p><p>unidade de gerenciamento de memória (MMU) e pelo menos 4 GB de RAM;</p><p>Gnu/Linux : instalação de 64 bits (independentemente da distribuição e versão do Linux), com kernel</p><p>3.10 ou superior. (Kernels mais antigos não possuem alguns recursos necessários para executar</p><p>contêineres Docker</p><p>Daemon que auxilia na construção, no envio e na execução dos containers</p><p>CLIENT Responsável por receber entradas dos usuários e enviá-las para o docker engine</p><p>REGISTRY Responsável por armazenar imagens – pode ser usado localmente ou</p><p>remotamente</p><p>FILE</p><p>Arquivo que auxilia a criação de uma imagem. Instruções que são aplicadas em</p><p>uma imagem. O dockerfile define uma imagem e é sempre baseado em uma</p><p>imagem pai.</p><p>Docker Hub é um repositório público e privado de imagens que disponibiliza</p><p>diversos recursos, como, por exemplo, sistema de autenticação, build automático</p><p>de imagens, gerenciamento de usuários e departamentos de sua organização,</p><p>entre outras funcionalidades.</p><p>HUB</p><p>https://www.docker.com/</p><p>https://www.docker.com/</p><p>https://www.docker.com/</p><p>https://www.docker.com/</p><p>https://www.docker.com/</p><p>https://www.docker.com/</p><p>https://www.docker.com/</p><p>https://www.docker.com/</p><p>https://www.docker.com/</p><p>https://www.docker.com/</p><p>https://www.docker.com/</p><p>https://www.docker.com/</p><p>https://www.docker.com/</p><p>https://www.docker.com/</p><p>https://www.docker.com/</p><p>https://www.docker.com/</p><p>https://www.docker.com/</p><p>https://www.docker.com/</p><p>https://www.docker.com/</p><p>https://www.docker.com/</p><p>https://www.docker.com/</p><p>https://www.docker.com/</p><p>https://www.docker.com/</p><p>https://www.docker.com/</p><p>https://www.docker.com/</p><p>https://www.docker.com/</p><p>https://www.docker.com/</p><p>https://www.docker.com/</p><p>https://www.docker.com/</p><p>https://www.docker.com/</p><p>https://www.docker.com/</p><p>https://www.docker.com/</p><p>Docker como plataforma de desenvolvimento Web</p><p>é a orquestração de contêineres com ele.</p><p>A orquestração de contêineres é um processo de inicialização de vários contêineres ou um cluster de</p><p>contêineres, além de fornecer vários serviços ou requisitos não funcionais para esses aplicativos de</p><p>microsserviço, começando com Tolerância a Falhas. Se um dos contêineres cair, deve haver um backup</p><p>para cada contêiner no cluster para que os clientes nunca vejam os erros retornando.</p><p>Definem como o ambiente vai funcionar.</p><p>Framework para desenvolver aplicações</p><p>Linguagem PHP</p><p>Segue o padrão MVC (Model, View and Controller)</p><p>Possibilita uma boa</p><p>organização e separação de</p><p>código entre outros recursos</p><p>é o gerenciador de pacotes padrão do JavaScript Node.js</p><p>permite a criação de módulos, a execução de instruções ou conjuntos de instruções</p><p>por meio do comando criado pelo desenvolvedor</p><p>Software de código aberto</p><p>Multiplataforma</p><p>Baseado no interpretador V8 do Google e que</p><p>permite a execução de códigos JavaScript fora de</p><p>um navegador</p><p>node package manager (npm): executa código armazenado em um package de nodejs, instalando</p><p>o software globalmente ou localmente</p><p>npx (node package extractor): sua função é instalar no nível local o código instalado globalmente.</p><p>O runtime de JavaScript é composto pelos comandos:</p><p>Servidor web que hospeda os códigos do back-end da aplicação</p><p>Também utilizado para o balanceamento de carga de requisições que chegam ao</p><p>servidor</p><p>Plataforma de aplicações web de código-fonte aberto e front-end baseado em</p><p>TypeScript</p><p>Framework open-source de desenvolvimento front-end que possibilita o</p><p>desenvolvimento de aplicações web</p><p>Simplifica a codificação quanto ao processo de teste</p><p>Integra com bibliotecas como o Bootstrap o que acelera a codificação</p><p>SEMANA 7</p><p>Conhecer as principais infraestruturas para a implantação de aplicações</p><p>Web e suas características;</p><p>Implantar uma imagem completa de uma aplicação Web e containers nos</p><p>ambientes da Google Cloud, Microsoft Azure e Amazon Web Services.</p><p>Google Cloud é uma infraestrutura gigantesca que permite implantar e escalar aplicações e que</p><p>garante: velocidade, localização, muitos dados. Os serviços envolvem IaaS e PaaS.</p><p>Computação: App Engine, Compute Engine</p><p>Storage: Cloud Storage, Cloud SQL, Cloud Data Store</p><p>Serviços: Bigquery, Cloud Endpoints</p><p>https://www.docker.com/</p><p>https://www.docker.com/</p><p>https://www.docker.com/</p><p>https://www.docker.com/</p><p>https://www.docker.com/</p><p>https://www.docker.com/</p><p>https://www.docker.com/</p><p>https://www.docker.com/</p><p>https://www.docker.com/</p><p>https://www.docker.com/</p><p>https://www.docker.com/</p><p>https://www.docker.com/</p><p>https://www.docker.com/</p><p>https://www.docker.com/</p><p>https://www.docker.com/</p><p>https://www.docker.com/</p><p>Um nome que você escolhe.</p><p>Um ID do projeto, que você ou o Google Cloud pode providenciar</p><p>Um número do projeto gerado pelo Google Cloud.</p><p>As APIs de aplicativo dão acesso a serviços. As APIs de aplicativo são otimizadas para linguagens</p><p>compatíveis, como Node.js e Python. As bibliotecas foram projetadas em torno de metáforas de</p><p>serviço. Dessa forma, é possível trabalhar com os serviços de maneira mais natural e escrever menos</p><p>código boilerplate. As bibliotecas também fornecem auxiliares para autenticação e autorização.</p><p>As APIs de administrador oferecem uma funcionalidade para o gerenciamento de recursos. Por</p><p>exemplo, você pode usar APIs de administrador caso queira construir as próprias</p><p>ferramentas</p><p>automatizadas.</p><p>O Google Cloud consiste em um conjunto de recursos físicos (computadores e unidades de disco rígido)</p><p>e recursos virtuais, como máquinas virtuais (VMs), localizados nos data centers do Google por todo o</p><p>mundo.</p><p>Cada projeto do Google Cloud apresenta as seguintes características:</p><p>Se você preferir trabalhar na linha de comando, poderá executar a maioria das tarefas do Google Cloud</p><p>usando a Google Cloud CLI. A CLI gcloud permite gerenciar o fluxo de trabalho de desenvolvimento e os</p><p>recursos do Google Cloud em uma janela de terminal.</p><p>Por exemplo, é possível criar uma instância de máquina virtual (VM) do Compute Engine executando o</p><p>comando gcloud compute instances create no ambiente shell.</p><p>O Google Cloud oferece bibliotecas de cliente que permitem criar e gerenciar os recursos facilmente. As</p><p>bibliotecas de cliente do Google Cloud exibem APIs para duas finalidades principais:</p><p>Use também as bibliotecas de cliente de APIs do Google para acessar APIs de produtos como Google</p><p>Maps, Google Drive e YouTube.</p><p>AZURE É uma plataforma de nuvem para criar, operar,</p><p>implantar aplicações de diversos tipos incluindo</p><p>aplicações Web</p><p>É possível criar inúmeros projetos</p><p>Criar e gerenciar máquinas virtuais Windows</p><p>Inclusive setar um Desktop Virtual para uso</p><p>A Nuvem AWS oferece uma ampla variedade de serviços de infraestrutura, como poder computacional,</p><p>opções de armazenamento, redes e bancos de dados que são entregues como um utilitário: sob</p><p>demanda, disponível e segundos, com precificação do tipo “pay-as-you-go” (pagamento conforme o uso).</p><p>De data warehouses a ferramentas de implantação, de diretórios à entrega de conteúdo, há mais de 90</p><p>serviços da AWS disponíveis. É possível provisionar novos serviços com rapidez e sem as despesas de</p><p>capital iniciais. Isso permite que corporações, startups, empresas de pequeno e médio porte e clientes</p><p>no setor público acessem os elementos básicos de que precisam para responder rapidamente aos</p><p>requisitos de negócios variáveis. Este whitepaper oferece uma visão geral dos benefícios da Nuvem AWS</p><p>e apresenta os serviços que compõem a plataforma.</p><p>A segurança na nuvem é muito semelhante à segurança em seus datacenters locais, só que sem os</p><p>custos de manutenção das instalações e do hardware. Na nuvem, você não precisa gerenciar servidores</p><p>físicos ou dispositivos de armazenamento. Em vez disso, você usa ferramentas de segurança com base</p><p>em software para monitorar e proteger o fluxo de informações que entram e saem dos recursos na</p><p>nuvem. Uma vantagem da Nuvem AWS é que ela permite que você dimensione e inove enquanto</p><p>mantém um ambiente seguro e paga apenas pelos serviços usados. Isso significa que você pode</p><p>desfrutar da segurança de que precisa a um custo menor do que em um ambiente local.</p><p>https://cloud.google.com/docs/authentication?hl=pt-br</p><p>https://cloud.google.com/sdk/gcloud?hl=pt-br</p><p>https://cloud.google.com/sdk/gcloud/reference/compute/instances/create?hl=pt-br</p><p>https://cloud.google.com/sdk/cloud-client-libraries?hl=pt-br</p><p>https://developers.google.com/api-client-library/?hl=pt-br</p><p>A Nuvem AWS possibilita um modelo de responsabilidade compartilhada. Embora a AWS gerencie a</p><p>segurança da nuvem, você é responsável pela segurança na nuvem. Isso significa que você mantém o</p><p>controle da segurança que escolheu implementar para proteger seu próprio conteúdo, plataforma,</p><p>aplicativos, sistemas e redes, da mesma maneira que faria em um datacenter local.</p><p>O Amazon Elastic Compute Cloud (Amazon EC2) consiste em um serviço da web que oferece capacidade</p><p>computacional segura e redimensionável na nuvem. Ele foi criado para facilitar a computação de escala</p><p>na web para os desenvolvedores.</p><p>A interface de web service simples do Amazon EC2 permite que você obtenha e configure capacidade</p><p>com mínimas complicações. Ele oferece um controle total de seus recursos de computação e lhe permite</p><p>operar no ambiente de computação comprovado da Amazon. O Amazon EC2 reduz para minutos o</p><p>tempo necessário para obter e inicializar novas instâncias de servidor (chamadas de instâncias do</p><p>Amazon EC2), possibilitando que você dimensione verticalmente a capacidade com rapidez, à medida</p><p>que seus requisitos de computação forem mudando.</p><p>O Amazon EC2 muda a economia da computação ao permitir que você pague apenas pela capacidade</p><p>que realmente usar. O Amazon EC2 oferece aos desenvolvedores e administradores de sistema as</p><p>ferramentas certas para criar aplicativos resilientes a falhas e para se isolar dos cenários de falha</p><p>comuns.</p><p>Amazon EC2</p><p>SEMANA 8</p><p>Na primeira semana, o objetivo foi apresentar alguns aspectos relacionados à história da World Wide</p><p>Web (WWW) e em que contexto ela nasceu e tornou-se uma das tecnologias mais disruptivas já</p><p>existentes. Discutimos como a Web foi pensada, e como as organizações e pessoas trocavam</p><p>informações antes do seu surgimento. Além disso, também abordamos os protocolos e padrões que</p><p>surgiram desde o advento da WWW, bem como as tecnologias atuais para o desenvolvimento de</p><p>aplicações Web que movimentam a economia de todo o planeta, sejam elas para entretenimento, para</p><p>realização de negócios e para o aprendizado eletrônico. Em geral, você conheceu o nascimento e a</p><p>evolução da Web até os dias atuais, entendendo a complexidade dos inúmeros protocolos de</p><p>comunicação que envolvem uma aplicação Web, bem como diversos aspectos de aplicações atuais que</p><p>executam em nuvens públicas e privadas.</p><p>Na segunda semana, apresentamos os conceitos principais para desenvolver aplicações Web. Vimos que,</p><p>por ser uma área muita abrangente que envolve desenvolvimento de interfaces, aplicações-clientes e</p><p>códigos do lado do servidor, é preciso dividir o processo de criação da aplicação. Por isso, discutimos a</p><p>estrutura da aplicação Web e seus principais componentes, assim como as diferenças entre aplicações</p><p>Web e sistemas tradicionais. Em resumo, compreendemos as complexidades envolvidas no</p><p>desenvolvimento de aplicações Web e que essas podem englobar inúmeros componentes, bem como</p><p>entendemos a importância de identificar e mapear uma estrutura-base para desenvolver aplicações Web</p><p>simples e complexas (envolvendo servidores, provedores de serviços, frameworks, bancos de dados,</p><p>scripts etc.).</p><p>Na terceira semana, discutimos sobre o frontend e o backend em aplicações Web, pois apesar de suas</p><p>diferenças, há uma complementação em relação a essas duas partes de uma aplicação Web. Mostramos,</p><p>também, a figura do desenvolvedor frontend, que é responsável por lidar com a interface da aplicação,</p><p>ou seja, está muito próximo das necessidades dos usuários quanto à formatação do conteúdo, acesso</p><p>aos dados etc., sendo uma de suas preocupações lidar com a experiência do usuário. O back-end</p><p>envolve os "bastidores" da aplicação Web e, em termos gerais, o desenvolvedor se preocupa com a</p><p>implementação das regras de negócio, onde ela será implantada, quais as necessidades de recursos</p><p>computacionais, tipos de bancos de dados, servidores de aplicação, implantação (deploy) etc. Em</p><p>resumo, aprendemos o que é frontend e backend e suas tecnologias envolvidas. HTML5, CSS, Bootstrap,</p><p>React e Angular.js para o frontend. PHP, Node.js e Java para o backend. Discutimos modelos para</p><p>construção de aplicações, como o Model View Controller (MVC), bem como demos foco para um</p><p>frontend bastante utilizado por desenvolvedores atualmente, que é o Angular.</p><p>Na quarta semana, aprendemos a importância das bases de dados em aplicações Web. Vimos que, a</p><p>maneira como os dados da sua aplicação no celular ou de um site de compras acessado via browser são</p><p>gerenciados, desempenha um papel fundamental no fornecimento de uma experiência positiva para o</p><p>usuário. Não bastam o desempenho da interface da sua aplicação e a clareza do seu código, pois todos</p><p>os dados precisam ser protegidos para que acessos indevidos sejam bloqueados e os intrusos não</p><p>consigam obtê-los. Isso somente pode ser alcançado com um sistema de gerenciamento de banco de</p><p>dados adequadamente escolhido. Entendemos que no banco de dados, são armazenados e organizados</p><p>todos os dados coletados</p><p>por meio da aplicação, enquanto um sistema de gerenciamento de banco de</p><p>dados (DBMS – Database Management Systems) auxilia no gerenciamento das inúmeras bases de dados.</p><p>Em geral, aprendemos a importância das bases de dados no contexto do desenvolvimento de uma</p><p>aplicação Web e como os dados são armazenados em diferentes sistemas gerenciadores de bancos de</p><p>dados, bem como identificar os aspectos que você deve levar em consideração ao escolher sua</p><p>ferramenta de gerenciamento de banco de dados.</p><p>Na quinta semana, aprendemos sobre a importância de considerar diversos atores/componentes que</p><p>envolvem uma aplicação Web, desde conhecer as características do sistema a ser desenvolvido, a</p><p>extração dos requisitos, a modelagem conceitual, projeto de navegação, projeto de interfaces e</p><p>implementação, além das estratégias de geração de conteúdo, linguagens de programação e de</p><p>marcação, aplicações Web, arquiteturas Web (Monolíticas x Microsserviços). Outro aspecto abordado foi</p><p>entender como os Web services RESTful funcionam e quais os elementos necessários para desenvolver e</p><p>executar esses serviços em aplicações Web atuais.</p><p>Na sexta semana, abordamos os conceitos que envolvem containers. Containers apresentam como</p><p>característica principal o isolamento do ambiente em que fica hospedada uma aplicação e todas as suas</p><p>dependências. No caso de uma aplicação Web, isso pode envolver binários, bibliotecas e diversos</p><p>arquivos (HTML, CSS, scripts, banco de dados etc.). O isolamento permite aproveitar melhor os recursos</p><p>computacionais, evitando a criação de máquinas virtuais que certamente não seriam utilizadas</p><p>adequadamente. A vantagem dos containers dockers é que eles sendo localizados em um mesmo host,</p><p>compartilham recursos deste e tornam mais racional o uso, por exemplo, do processador, da memória e</p><p>do espaço de armazenamento de dados. Em resumo, apendemos diferenciar aplicações Web de</p><p>containers Web e os principais conceitos que envolvem containers dockers e como operacionalizar um</p><p>ambiente com containers de aplicações Web.</p><p>Para finalizar, chegamos à última semana do curso, na qual discutimos as principais infraestruturas para</p><p>a implantação de aplicações Web e suas características, além de compreender como implantar uma</p><p>imagem completa de uma aplicação Web e containers nos ambientes da Google Cloud e Microsoft</p><p>Azure. Discutimos, além disso, que embora possuir uma infraestrutura computacional própria para</p><p>implantar as aplicações Web desenvolvidas por uma organização possa apresentar alguns benefícios,</p><p>elas não são adequadas em muitos casos, principalmente se levarmos em consideração a exigência de</p><p>escalabilidade da aplicação Web.</p>

Mais conteúdos dessa disciplina