<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by Gabriel Roque on Medium]]></title>
        <description><![CDATA[Stories by Gabriel Roque on Medium]]></description>
        <link>https://medium.com/@gabriel.roque?source=rss-cf4c96792d7b------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/1*PkfN1h3zdhLrXO_tIQ7arA.jpeg</url>
            <title>Stories by Gabriel Roque on Medium</title>
            <link>https://medium.com/@gabriel.roque?source=rss-cf4c96792d7b------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Sat, 16 May 2026 09:25:10 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@gabriel.roque/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[Mudando sua forma de viver com Docker ]]></title>
            <link>https://medium.com/@gabriel.roque/mudando-sua-forma-de-viver-com-docker-e4a12319a9bb?source=rss-cf4c96792d7b------2</link>
            <guid isPermaLink="false">https://medium.com/p/e4a12319a9bb</guid>
            <category><![CDATA[kubernetes]]></category>
            <category><![CDATA[containers]]></category>
            <category><![CDATA[development]]></category>
            <category><![CDATA[docker-compose]]></category>
            <category><![CDATA[docker]]></category>
            <dc:creator><![CDATA[Gabriel Roque]]></dc:creator>
            <pubDate>Thu, 02 Jan 2020 00:47:52 GMT</pubDate>
            <atom:updated>2020-01-02T00:47:52.189Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*0j281v0iyZwp71xwbI6-6w.png" /></figure><p><em>Calma! Calma! Calma! Tudo será explicado, Docker, Docker Compose e os poderes dessa maravilhosa ferramenta.</em></p><p>Existem diversos artigos disponíveis na interwebs atualmente, os mais completos e bem explicados estão disponíveis em inglês e em uma linguagem extremamente técnica, pensando nisso resolvi escrever um artigo em um formato mais “amigável” para que independente do nível do profissional seja compreensível.</p><p>Bom, vamos começar pelo começo. Vamos entender primeiro <strong>qual problema o Docker se propõem a resolver.</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/510/1*22XwqVBPSFRZ-jZHx6Z2YA.png" /><figcaption>Fonte: <a href="https://vidadeprogramador.com.br/2012/12/04/na-minha-maquina-funciona/">https://vidadeprogramador.com.br/2012/12/04/na-minha-maquina-funciona/</a></figcaption></figure><blockquote>A maioria de nós já nos deparamos com a famosa e inesquecível frase: “Na minha máquina funciona!”</blockquote><p>❌ <strong>PROBLEMA: </strong>Diversos desenvolvedores trabalhando na construção de uma aplicação, onde cada máquina tem uma configuração de ambiente diferente, gerando uma grande variabilidade de ambiente de desenvolvimento e produção. O que acaba gerando aquela famosa frase. Logo o salvador da pátria resolve esses problemas.</p><p>🆙 <strong>SOLUÇÃO: </strong>Docker, sistema de containers que abstrai toda a responsabilidade de configuração de ambiente e dependências de projeto para dentro do que chamamos de container (ambiente isolado que contém somente o necessário para o serviço entrar em funcionamento). Permitindo o alto desacoplamento de aplicações e orquestração.</p><p>💻 <strong>EXEMPLO: </strong>Imaginemos que desejamos adicionar na máquina do desenvolvedor o SQL Server e também adicionar no servidores de desenvolvimento e de produção com as mesma configurações, para garantir que tudo esteja conforme definido pelo o arquiteto.</p><p>Na <strong>abordagem tradicional</strong> seria necessário configurar não somente todas as máquinas da equipe de desenvolvimento como os do servidores e garantir que todas estejam idênticas. Isso é um esforço burro e desnecessário quando não usada a abordagem de containers.</p><p>Na <strong>abordagem com o docker </strong>é possível executar a mesma atividade com muito mais agilidade, segurança e facilidade. Sendo assim uma vez configurado o container basta usar ele em qualquer lugar, independente de configurações ou SO (Sistema Operacional). Subir e derrubar um container é tão simples quanto desligar a luz do seu quarto.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/920/0*k2NQccaIhygUAAG3.png" /><figcaption>Fonte: <a href="https://blog.schoolofnet.com/para-que-serve-o-docker/">https://blog.schoolofnet.com/para-que-serve-o-docker/</a></figcaption></figure><h3>Agora vamos para a prática!</h3><p>Nesse passo a passo iremos criar uma imagem docker, adicionar ela na nossa conta do DockerHub, criar um container e rodar o container. Para isso vamos usar o NGNIX, servidor web para exemplificação desse tutorial.</p><ol><li>Se não possui o docker instalado na máquina, será necessário instalar. <a href="https://www.digitalocean.com/community/tutorials/como-instalar-e-usar-o-docker-no-ubuntu-18-04-pt#passo-4-%E2%80%94-trabalhando-com-imagens-docker">Clique aqui.</a></li><li>Se não possui conta no DockerHub será necessário também criar uma. <a href="https://hub.docker.com/">Clique aqui.</a></li><li>Abra seu editor de código e crie duas pastas <strong>“configs” </strong>e <strong>“www”.</strong></li><li>Dentro da pasta <strong>configs</strong> crie um arquivo chamado <strong>“default.conf”. </strong>Ele será o arquivo de configuração de hosts do Ngnix.</li><li>Dentro da pasta <strong>www </strong>crie um arquivo chamado<strong> “index.html”. </strong>Ele será a página a ser exibida quando acessado a aplicação.</li><li>Fora das pastas crie um arquivo com o nome de <strong>Dockerfile.</strong></li></ol><p>A estrutura de diretório deverá ser a seguinte:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/147/1*haaCW3OBGYd2AucxUDZjew.png" /></figure><p>7. No arquivo <strong>default.conf </strong>vamos adicionar a seguinte configuração abaixo:</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/8c95e400febfe104810b74429efd4b1a/href">https://medium.com/media/8c95e400febfe104810b74429efd4b1a/href</a></iframe><p>8. Dentro do arquivo index.html vamos adicionar uma estrutura básica do HTML.</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/59fe5d97e4c80dd8537a1ace2da158be/href">https://medium.com/media/59fe5d97e4c80dd8537a1ace2da158be/href</a></iframe><p>9. Dentro do arquivo <strong>Dockerfile </strong>vamos adicionar o seguinte código:</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/528c69ad8775c6bc0b5d750625ce74e7/href">https://medium.com/media/528c69ad8775c6bc0b5d750625ce74e7/href</a></iframe><p><strong>FROM: </strong>Indica qual imagem base vamos usar. No caso a oficial do <a href="https://hub.docker.com/_/nginx">NGNIX</a> na versão lastet.</p><p><strong>COPY: </strong>Copia os arquivos de configuração que personalizamos para dentro da imagem que iremos construir.</p><p><strong>VOLUME: </strong>Os<strong> </strong>diretórios que serão declarados para a persistência dos dados gerados e usados no container.</p><p>Agora vamos ao nosso terminal do nosso projeto e vamos digitar o seguinte comando:</p><pre>docker build -t &lt;nomeusuario&gt;/ngnix -t &lt;nomeusuario&gt;/ngnix:1.0.0 .</pre><p>no lugar de <strong>&lt;nomeusuario&gt;</strong> troque pelo nome do seu repositório no Dockerhub</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/630/1*Cvr5oZ9f3_7ryyaZC_J_VQ.png" /><figcaption>Nome do usuário ao lado direito.</figcaption></figure><pre>Ex: docker build -t gabrielroque/ngnix -t gabrielroque/ngnix:1.0.0 .</pre><h3>Contextualizando…</h3><p>Basicamente estamos dizendo ao docker que desejamos construir uma imagem no repositório com o nome de <strong>gabrielroque/ngnix.</strong></p><p>O<strong> “-t” </strong>significa que desejamos adicionar uma tag nessa imagem, no caso vamos usar a 1.0.0.</p><p>O <strong>“.”</strong>significa que desejamos criar a imagem no diretório atual.</p><p>Vamos enviar nossa imagem para o nosso repositório com os seguintes comandos. Porém caso não tenha realizado o login, execute os dois comandos. Caso já esteja logado, execute apenas o segundo comando.</p><pre>$ docker login</pre><pre>$ docker push &lt;nomeusuario&gt;/ngnix:1.0.0</pre><p>O resultado deverá ser semelhante a este:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*4AlrycKipgni7Ssbm4bZOg.png" /></figure><p>Maravilha! Vamos colocar o container para rodar.</p><pre>docker run --name my-ngnix -p 80:80 -d &lt;nomeusuario&gt;/ngnix:1.0.0</pre><p>Estamos dizendo, docker:</p><ul><li>Constrói um container com nome de my-ngnix. <strong>“--name”;</strong></li><li>Expõem a porta 80 de dentro do container para a porta 80 da máquina em localhost . <strong>“-p 80:80”;</strong></li><li>E rode em backgroud <strong>“-d” </strong>tendo como referencia a seguinte imagem. <strong>“&lt;nomeusuario&gt;/ngnix”.</strong></li></ul><p>Digite localhost na url de seu navegador, o resultado deverá ser este:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/839/1*tV1gY-8wcFU1YcDudAXruA.png" /></figure><h3>Congratulations!</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/500/1*nmwuhi8BlHb6CvXWP0IVOA.gif" /><figcaption>Meus parabéns!</figcaption></figure><h3>Agora vem a seguinte pergunta❗</h3><blockquote>“Certo, muito útil o Docker, porém como é possível orquestrar diversos containers para trabalharem em conjunto de uma forma simples e organizada?”</blockquote><p>Nós temos o que chamamos de <a href="https://docs.docker.com/compose/gettingstarted/">DOCKER COMPOSE.</a></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/330/0*grDn7YjLjfnGzUwU.png" /><figcaption>Fonte: <a href="https://dzone.com/articles/running-multiple-services-inside-a-single-containe">https://dzone.com/articles/running-multiple-services-inside-a-single-containe</a></figcaption></figure><p>O Docker Compose irá nos facilitar na manipulação de múltiplos containers, permitindo que vários deles interajam entre si. Assim como diversas abstrações que facilitam na hora da construção da arquitetura de uma aplicação.</p><p>No site oficial do Docker possui uma documentação completa que descreve tudo que é possível realizar com o <a href="https://docs.docker.com/compose/">Docker Compose</a>.</p><h4><strong>Vamos ao trabalho!</strong></h4><p>Iremos criar a seguinte estrutura de diretório semelhante a anterior, porém com pequenas diferenças:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/196/1*l0qflMUpcihhsaIs1g4y7w.png" /></figure><p>O arquivo <strong>docker-compose.yml</strong> é o arquivo raiz de leitura do Docker Compose, nele iremos construir toda a arquitetura da aplicação.</p><p>Na pasta <strong>build</strong> ficará o arquivo de <strong><em>“receita” (Dockerfile)</em></strong> de uma versão do php que será utilizada. A pasta <strong>www</strong> já foi explicado seu propósito anteriormente então vamos em frente.</p><ol><li>Dentro do arquivo <strong>docker-compose.yml</strong> vamos anexar o seguinte bloco de código:</li></ol><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/9053a15946072276d7f6aef47eb71a80/href">https://medium.com/media/9053a15946072276d7f6aef47eb71a80/href</a></iframe><p>Neste arquivo no parâmetro <strong><em>services</em></strong> iremos declarar os serviços e configurações de cada container.</p><ul><li><strong>web:</strong> Container com o serviço do NGNIX.</li><li><strong>php: </strong>Container com o serviço do <a href="https://www.php.net/manual/pt_BR/install.fpm.php">PHP-FPM</a>.</li><li><strong>db:</strong> Container com o serviço do nosso SGBD MySQL.</li></ul><p>Dentro de cada serviço temos alguns parâmetros que podemos declarar.</p><ul><li><strong>image: </strong>indicamos qual imagem base será utilizada para a construção do <em>container</em>.</li><li><strong>container_name: </strong>indica um apelido para o container, facilitar a identificação.</li><li><strong>depends_on: </strong>indicamos que um serviço <strong>A</strong> depende de um serviço <strong>B</strong>.</li></ul><blockquote>Ex: No container <strong>web</strong>, ele possui uma dependência do container <strong>php</strong>, logo o mesmo só irá iniciar após o serviço de <strong>php </strong>está operante.</blockquote><ul><li><strong>ports: </strong>Aponta qual porta de dentro do <em>container</em> deve ser espelhada para fora dele e de acesso externo ao <em>container</em>.</li><li><strong>volumes: </strong>Os<strong> </strong>diretórios que serão declarados para a persistência dos dados gerados e usados no container.</li><li><strong>environment: </strong>são as variáveis de ambiente do serviço.</li></ul><blockquote>Ex: <strong>MYSQL_ROOT_PASSWORD: docker337. </strong>Basicamente está sendo declarado qual deverá ser a senha do usuário root do nosso banco de dados.</blockquote><ul><li><strong>build: </strong>Declara uma necessidade de <em>build</em> de uma imagem para com o objetivo da construção do container e o serviço operante.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/325/1*2VplmTU6iuyd2uMLAyQBtA.png" /></figure><p>Estamos dizendo que o serviço chamado de <strong>php</strong> deverá realizar um <strong>build</strong> de uma imagem antes da construção do container, logo o contexto de localização da nossa receita se encontra em uma pasta chamada de <strong>build</strong> com o nome de <strong>Dockerfile</strong>.</p><h4>Observação importante!</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/673/1*O6HyttOt6DiHVbx4OCEFAQ.png" /></figure><p>Sempre quando temos o <strong>“:” </strong>estamos dizendo ao docker o seguinte:</p><blockquote>Aqui fora do container <strong>:</strong> Dentro do container</blockquote><p>Ou seja, em <strong>volumes</strong> dizemos que tudo que está dentro de <strong>./www </strong>deverá ser espelhado para a pasta dentro do container de<strong> /var/www/html.</strong></p><p>2. Vamos para a configuração do NGNIX, insira o seguinte trecho de código no arquivo <strong>default.conf</strong></p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/97407e1dc8fed07521b7dcb54560d214/href">https://medium.com/media/97407e1dc8fed07521b7dcb54560d214/href</a></iframe><p>3. Insira qualquer conteúdo ou o trecho de código abaixo no arquivo <strong>index.php</strong></p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/983e34326380563cf940d5b0909529e7/href">https://medium.com/media/983e34326380563cf940d5b0909529e7/href</a></iframe><p>4. Vamos adicionar a receita “Dockerfile” da versão do nosso php com algumas dependências. Dentro do arquivo <strong>Dockerfile </strong>insira o seguinte código:</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/d297283d3afed4f6ac66480e684d157b/href">https://medium.com/media/d297283d3afed4f6ac66480e684d157b/href</a></iframe><p>Agora vamos a parte “mais difícil,” colocar a o nossa aplicação em operação com o seguinte comando:</p><pre>$ docker-compose up -d</pre><pre>$ docker-compose ps</pre><p>Com o comando docker-compose up -d vamos rodar os serviços em background, liberando o terminal.</p><p>O comando docker-compose ps deverá listar os 3 containers que criamos para a nossa aplicação. Para derrubar todos os serviços, basta executar o comando docker-compose down .</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/660/1*W2vGyj5fwQakCK78oK_5ag.png" /><figcaption>Resultado do comando docker-compose ps</figcaption></figure><p>4. Agora vamos acessar <a href="http://localhost:8000/">http://localhost:8000</a>.</p><p>O resultado esperado deverá ser semelhante a este:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/827/1*4KfdSYvUu-qstdTg0TCoyw.png" /></figure><p>Pronto, finalizamos a construção dos nossos containers e todos estão operantes.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/480/1*ZLronSWbmj4IwGoWepecHQ.gif" /><figcaption>Trabalho concluído com sucesso!</figcaption></figure><p>Aqui segue links para a lista de comandos mais utilizados e um repositório no GitHub com o código apresentado neste artigo.</p><h4>Lista de comandos mais utilizados</h4><ul><li><a href="https://woliveiras.com.br/posts/comandos-mais-utilizados-no-docker/">Docker</a></li><li><a href="https://docs.docker.com/compose/reference/">Docker Compose</a></li></ul><p><strong>GitHub</strong></p><p><a href="https://github.com/gabriel-roque/docker-medium">gabriel-roque/docker-medium</a></p><p><em>Obrigado pela leitura e bons estudos! </em>😉</p><h4>Revisado por:</h4><p><a href="https://medium.com/u/58e91ca293ab">eduardaalves_</a></p><h4>Referencias Bibliográficas</h4><ul><li><a href="https://docs.nginx.com/nginx/admin-guide/installing-nginx/installing-nginx-docker/"><strong>NGNIX Docs</strong></a></li><li><a href="https://docs.docker.com/compose/"><strong>Docker Compose Docs</strong></a></li><li><a href="https://hub.docker.com/_/mysql"><strong>MySQL Image Docker</strong></a></li><li><a href="https://www.linuxnaweb.com/docker-compose/"><strong>Docker Compose do Linux na web</strong></a></li></ul><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=e4a12319a9bb" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Sopa de Letrinhas da WEB: qual DEV ser o sabor? ]]></title>
            <link>https://medium.com/@gabriel.roque/sopa-letrinhas-web-ef8772a43387?source=rss-cf4c96792d7b------2</link>
            <guid isPermaLink="false">https://medium.com/p/ef8772a43387</guid>
            <category><![CDATA[soap]]></category>
            <category><![CDATA[rest]]></category>
            <category><![CDATA[soa]]></category>
            <category><![CDATA[web-services]]></category>
            <category><![CDATA[api]]></category>
            <dc:creator><![CDATA[Gabriel Roque]]></dc:creator>
            <pubDate>Sat, 12 Oct 2019 04:48:43 GMT</pubDate>
            <atom:updated>2020-01-09T23:16:10.026Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*kZwcHDhzHutzaVYW7raEPg.jpeg" /></figure><p>Este artigo visa explicar de forma simples e direta algumas das siglas e termos das quais estão presentes na vida da maioria dos profissionais de TI, especialmente aqueles que trabalham ou pretendem trabalhar com desenvolvimento de software.</p><p><em>Antes de mais nada, este artigo se embase em um compilado de conteúdo já se encontram na web das quais estão disponíveis no rodapé do artigo.</em></p><p>O artigo está enumerado em ordem de maior para menor em grau de relevância do que acredito ser de suma importância o entendimento.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/500/1*FahBZMEYGAgiqtEIKx_FLg.gif" /></figure><p><strong>1. SOA</strong></p><blockquote>Trata-se de um <strong>arquitetura orientada a serviços</strong>.</blockquote><p>Ex: Certo cliente vai a padaria, um padeiro o fornece um serviço, no contexto seria <em>fornecimento</em> do pão. Quando a operadora de caixa atende ao cliente ela esta <em>fornecendo</em> um atendimento.</p><blockquote>SOA esta ligada intimamente a <strong>fornecimento de serviços.</strong></blockquote><p>Resumo: Em um contexto de arquitetura de software pode-se compreender em aplicações que deverão ser <strong>fornecidas ou disponibilizadas</strong> na forma de <strong>serviços</strong>.</p><p><strong>2. Web Service</strong></p><p>Nada mais nada menos do que uma solução<strong> </strong>utilizada para na integração e comunicação entre sistemas.</p><blockquote>Em outras palavras, e uma <strong>solução</strong> que possibilita a <strong>comunicação entre aplicações </strong>que fazem o uso de diversas tecnologias das quais se comunicam em um <strong><em>“linguagem universal”</em></strong>, nossos queridos JSON e XML.</blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/480/1*t8jk2ugB61DcoA4aR1ndDw.png" /><figcaption>Ilustração de web service.</figcaption></figure><p><strong>3. JSON</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/480/1*WCly-q-298l10czn6uXRRA.gif" /></figure><p>Podemos apelidar como uma “linguagem universal”. JSON significa <em>Javascript Object Notation</em>, trata-se de uma <strong>estrutura chave-valor</strong> que possibilita estruturar as informações de forma simples, compacta e de fácil leitura. Os navegadores dão suporte a leitura de JSON justamente para a troca de informações em web services.</p><blockquote><strong>Formato de notação</strong> Javascript em <strong>chave-valor</strong> para <strong>trocar de informações</strong> em web services.</blockquote><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/68f1c1d9f0242899648012674bec3c72/href">https://medium.com/media/68f1c1d9f0242899648012674bec3c72/href</a></iframe><p>Importante ressaltar que o JSON não é exclusivamente utilizado na arquitetura cliente-servidor.</p><p><strong>4. XML</strong></p><p>XML significa <em>Extensible Markup Language</em>, trata-se de uma linguagem de marcação, sintaxe semelhante a HTML. O surgimento dele é anterior ao JSON.</p><p>Surgimento:</p><ul><li>XML &lt;/1996&gt;</li><li>JSON { 2002 }</li></ul><blockquote>Trata-se um formato de linguagem de marcação para troca de informações em web services.</blockquote><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/34ce453ea935422cd2b5bf8d7fcd64d4/href">https://medium.com/media/34ce453ea935422cd2b5bf8d7fcd64d4/href</a></iframe><p>XML no ano atual de 2019, é utilizado ainda por muitos serviços para troca de informações, porém cabe uma ressalva, em sua grande maioria dos web services tem adotado o padrão JSON, justamente pela suas <strong>vantagens</strong> comparado ao XML, dentre elas, <strong>tamanho, semântica e sintaxe.</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/638/1*_cmCeNZ6qszp2Sm3ORWqpg.jpeg" /></figure><p><strong>5. Microservices</strong></p><p>Tudo que já explicamos está voltado para provimento de serviços. Microservices não diferentemente disso, podemos conceituar da seguinte forma:</p><blockquote><strong>Arquitetura de software</strong> composta por <strong>módulos</strong> ou <strong>coleção de serviços</strong>, ligeiramente acoplados.</blockquote><p><strong><em>Ex: </em></strong><em>Você não consegue remover o açúcar da coca-cola, porém se colocado um gelo na bebida e tentar remover o gelo, será possível. Logo o açúcar é altamente acoplado, enquanto o gelo e baixamente acoplado.</em></p><p><strong>O açúcar é um módulo do serviço não desacoplável enquanto o gelo é totalmente desacoplável, a coca-cola seria sua aplicação por completa.</strong></p><p>Importante ressaltar as vantagens de se utilizar tal arquitetura:</p><ul><li><em>Possibilidade de entregas incrementais de módulos da aplicação;</em></li><li><em>Rápido acoplamento e desacoplamento de módulos;</em></li><li><em>Evolução em forma de pilha dos serviços e maior escalabilidade;</em></li><li><em>Menor impacto na aplicação como um todo, na falha do provimento de algum dos serviços.</em></li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/815/1*CW48q7h2hWJD-vS1sgEHPQ.png" /><figcaption>Arquitetura de Microservices</figcaption></figure><p>A ideia do micro serviço é <strong>dividir pra conquistar</strong>.</p><p><strong>6. Métodos HTTP</strong></p><p>Este é um tópico que daria um artigo completo. Porém eu vou ajudar a mastigar esse assunto aqui.</p><p>De acordo com a rede MDN (Rede de Desenvolvedores da Mozilla)</p><blockquote>O protocolo HTTP define um conjunto de <strong>métodos de requisição</strong> responsáveis por indicar a ação a ser executada para um dado recurso. Embora esses métodos possam ser descritos como substantivos, eles também são comumente referenciados como <strong><em>HTTP Verbs (Verbos HTTP)</em></strong>.</blockquote><p>HTTP (Hypertext Transfer Protocol) ou Protocolo de Transferência de Hiper Texto.</p><p>De forma resumida o HTTP, prove em seu protocolo ao que chamamos de <strong>verbos</strong>, cada verbo tem seu <strong>objetivo</strong> e serve para uma determinada tarefa.</p><p>Segue a lista com os métodos mais comuns e uma breve descrição:</p><ul><li><strong>GET</strong></li></ul><p>Essa é a requisição mais comum de todas. Através dessa requisição nós <strong>pedimos</strong> a representação de um recurso: que pode ser um arquivo HTML, XML, JSON, etc.</p><ul><li><strong>POST</strong></li></ul><p>O método POST é utilizado quando queremos <strong>criar</strong> um recurso. Quando usamos POST, os dados vão no corpo da requisição e não na URI.</p><ul><li><strong>PUT</strong></li></ul><p>Requisita que um recurso seja “guardado”. Se o recurso <strong>já existir</strong>, ele deve ser <strong>atualizado</strong>. Em caso de <strong>não existir, pode ser criado.</strong></p><ul><li><strong>PATCH</strong></li></ul><p>Semelhante ao <em>PUT</em>, porém serve para atualizar <strong>partes</strong> de um recurso, e não o recurso todo.</p><p>Também contamos com o <strong>STATUS CODE</strong> de cada requisição realizada com alguns do métodos HTTP. <em>A lista de código é muito maior dos que apresentado na imagem.</em></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/638/1*McUeECsd0qE674pJLPWB7Q.jpeg" /><figcaption>Principais Status Code do HTTP</figcaption></figure><p><strong>7. REST</strong></p><h4><strong>Gênio, bilionário, playboy e filantropo! Apresento-lhes REST.</strong></h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/411/1*72S-qcL1zwXiMgLqVYOA0Q.gif" /></figure><p><strong><em>Representational State Transfer</em></strong> ou <strong>REST</strong>, não é de comer e nem muito menos de passar no cabelo….não é uma tecnologia, um framework nem tampouco resolução de todos os problemas. Poxa então o que sobrou?!</p><blockquote>REST trata-se de uma coleção de <strong>boas práticas</strong>, <strong>princípios e regras</strong> a serem adotadas afim de beneficiar as aplicações dentro dos padrões da web.</blockquote><ul><li><em>Utilização correta dos códigos HTTP;</em></li><li><em>URI’s legíveis;</em></li><li><em>Utilização dos métodos HTTP para manipulação dos recursos;</em></li><li><em>Não uso de dados de autenticação/autorização em sessão;</em></li><li><em>Comunicação Stateless;</em></li><li><em>HATEOAS (Hypermedia As The Engine Of Application State);</em></li><li><em>Suporte diferentes representações (HTML, XML, JSON);</em></li><li><em>Autenticadores como OAUTH ou JWT (JSON Web Token)</em></li></ul><p><strong>Não se resume em apenas nestes tópicos</strong>, mas podemos <strong>levar em consideração com os principais</strong> para este artigo em sua forma resumida. Iremos abordar REST mais profundamente em outro artigo separado deste.</p><p>REST que foi descrito por <a href="https://www.ics.uci.edu/~fielding/"><strong>Roy Fielding</strong></a>, em sua <a href="http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm">tese de doutorado</a> do qual foi adotado como evolução arquitetural do protocolo HTTP e amplamente adotado pelos padrões da web atual.</p><p><strong>8. API</strong></p><p>Interface de Programação de Aplicativos no inglês <em>(Application Programming Interface).</em></p><blockquote>Trata-se de um <strong>conjunto de padrões de programação</strong> em sua interoperabilidade, permitindo <strong>comunicação</strong> com <strong>diversos aplicativos</strong> sem a necessidade do conhecimento de fato da implementação real da aplicação.</blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*O2lsgNXkFe0eN9AUeg7HuQ.png" /><figcaption>Fonte: Red Hat</figcaption></figure><p><strong>Ex:</strong> No site da minha empresa desejo ter um mapa de todas as filias utilizando a API do <a href="https://developers.google.com/maps/documentation/?hl=pt-br">Google Maps</a>, do qual é possível a integração com a app sem a necessidade de conhecer os detalhes de sua implementação para que seja possível a comunicação para a construção dos mapas em meu site.</p><p>Também podemos ouvir falar de <strong>API RESTful</strong>, trata-se de uma interface de aplicativo que <strong>aplica todos os princípios previstos </strong>em sua totalidade pelo <strong>REST</strong> no <strong>provimento da API</strong>. O que pode ser encontrado e definido como “<a href="https://mundoapi.com.br/destaques/alcancando-a-excelencia-do-rest-com-um-modelo-de-maturidade-eficiente/">The Glory of REST</a>”</p><p><strong>9. FRAMEWORK</strong></p><blockquote>É um <strong>conjunto de ferramentas</strong> , <strong>bibliotecas e plugins</strong>, com o objetivo de agilizar o processo de desenvolvimento de software.</blockquote><p><strong>Ex:</strong> Imagine que você tem várias caixas pequenas separadas com todos os seus brinquedos, todos vez que vai para cada do seu primo você deseja levar todos eles, porém são muitas caixas para ficar carregando todas as vezes. Então sua mãe decide colocar todos os seus brinquedos dentro de uma caixa maior, logo todas as vezes que desejar ir a casa de um amigo ou de seu primo, basta levar a caixa maior, que contém já todos os seus brinquedos.</p><p>Assim é a <strong>ideia</strong> de um Framework, <strong>aglomerar um conjunto de ferramentas</strong> em um único PACOTÃO central.</p><p><strong>10. MVC</strong></p><p>É um padrão de arquitetura de software divido em 3 camadas.</p><ul><li><strong>Model</strong></li></ul><p>É a camada responsável pela <strong>persistência</strong> e<strong> manipulação dos dados.</strong></p><ul><li><strong>View</strong></li></ul><p>Camada de <strong>apresentação</strong> final ao usuário, onde ocorre a <strong>interação</strong> com o usuário, podendo ser sua <strong>interface</strong>.</p><ul><li><strong>Controller</strong></li></ul><p>Camada de <strong>recebimento de requisições</strong>, <strong>chamadas</strong> e <strong>direcionamento</strong> dos serviços requisitados pelo usuário.</p><p><strong>O diálogo das camadas</strong></p><p><strong><em>View</em></strong><em>: Fala Controller ! O usuário acabou de pedir para acessar o Facebook ! Pega os dados de login dele ai. </em><strong><em>Controller</em></strong><em>: Blz. Já te mando a resposta. Ai model, meu parceiro, toma esses dados de login e verifica se ele loga. </em><strong><em>Model</em></strong><em>: Os dados são válidos. Mandando a resposta de login. </em><strong><em>Controller</em></strong><em>: Blz. View, o usuário informou os dados corretos. Vou mandar pra vc os dados dele e você carrega a página de perfil. </em><strong><em>View</em></strong><em>: Vlw. Mostrando ao usuário…</em></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*xz-ROnwiDsjLPumoV5RotA.png" /></figure><p><em>Nota: os próximos trés tópicos correlacionam entre si, os compreenda como um todo.</em></p><p><strong>11. SOAP</strong></p><p>SOAP (Simple Object Access Protocol), de forma resumida é um <strong>protocolo</strong> baseado em <strong>XML</strong> para para <strong>troca de informações em ambiente distribuídos</strong> e está ligado diretamente com o conceito de interoperabilidade.</p><blockquote><strong>Interoperabilidade</strong>: Capacidade de um sistema de se comunicar de forma transparente com outro sistema.</blockquote><p>Caberia um artigo completo explicando as especificidades sobre SOAP, porém não é o objetivo deste artigo esta abordagem. Para os mais interessados no assunto <a href="http://www.iweb.com.br/iweb/pdfs/20031008-webservices-01.pdf">saiba mais aqui</a>.</p><p><strong>12. WSDL</strong></p><p>WSDL (Web Services Description Language) o próprio nome já diz quase tudo. <em>Beleza! Próximo! </em>📣………… Não tão rápido assim.</p><blockquote>É uma tecnologia que descreve e <strong>padroniza a interface de comunicação</strong> de um <strong>Web Service </strong>que faz uso do <strong>SOAP</strong>, através de <strong>formato XML</strong>.</blockquote><p>Para não ficar no campo do abstrato, cabe aqui um exemplo.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/550/1*wp4jU3mNo_aoPKPLBBhL1A.png" /><figcaption>Fonte: SANTOS, Natália</figcaption></figure><p>Mais detalhes na apresentação de Natália dos Santos <a href="https://slideplayer.com.br/slide/3287373/"><em>aqui</em></a>.</p><p><strong>Ex: </strong>Como se fosse um contrato onde diz a forma como um cliente deve me comunicar com determinado Serviço Web. <em>Entenda por cliente, seu navegador.</em></p><p>Por meio de um <strong>WSDL informa ao cliente como cada serviço em um end-point</strong> deve ser invocado: quais os parâmetros e tipo de dados de cada end-point é esperado, e qual o tipo de dado do retorno será enviado como resposta.</p><p><strong>13. UDDI</strong></p><p>O que precisamos compreender sobre UDDI no espoco deste artigo é um <strong>repositório de registros</strong>, onde podemos <strong>publicar ou encontrar Web Services já registrados.</strong></p><p><strong>Mas por qual motivo?</strong></p><blockquote>Você pode, naturalmente, oferecer um web service sem registrá-lo na UDDI, assim como você pode abrir um negócio no porão da sua casa e contar com a propaganda boca a boca, mas se você quiser alcançar um mercado significativo, você precisará do UDDI, assim seus clientes poderão encontrá-lo.</blockquote><p>Mais informações sobre <a href="http://www.iweb.com.br/iweb/pdfs/20031008-webservices-01.pdf"><em>UDDI</em></a>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/815/1*HIJqcwtwD8FVjmTxgm1PVA.png" /><figcaption>Fonte: DEVMEDIA</figcaption></figure><h3>Conclusão</h3><p>O mundo da tecnologia avança muito rapidamente, logo devemos está rotineiramente nos atualizando. É um artigo voltado para profissionais em formação inicial, no início de carreira. Talvez um especialista já esteja calejado de saber deste conceitos. Porém é de suma importância para os iniciantes a compreensão destes termos.</p><p><em>Vale uma dica: Não se assuste pela quantidade imensa de conhecimento presente na área de tecnologia.</em></p><p>Bons estudos! 😉</p><h4>Referencias Bibliográficas:</h4><ul><li><a href="https://blog.caelum.com.br/rest-principios-e-boas-praticas/">Boas práticas REST</a></li><li><a href="http://gabsferreira.com/os-metodos-http-e-a-diferenca-entre-eles/">Métodos HTTP</a></li><li><a href="https://tableless.com.br/mvc-afinal-e-o-que/">Arquitetura MVC</a></li><li><a href="https://www.devmedia.com.br/entendendo-os-padroes-de-descricao-de-web-services/28678">WSDL, SOAP, UDDI</a></li></ul><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=ef8772a43387" width="1" height="1" alt="">]]></content:encoded>
        </item>
    </channel>
</rss>