<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Luigi Belanda</title>
    <description>The latest articles on DEV Community by Luigi Belanda (@luigibelanda).</description>
    <link>https://dev.to/luigibelanda</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F844791%2F768573b6-785a-4aef-b5fd-1965377b1c25.jpg</url>
      <title>DEV Community: Luigi Belanda</title>
      <link>https://dev.to/luigibelanda</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/luigibelanda"/>
    <language>en</language>
    <item>
      <title>Advanced Persistent Threat (APT)</title>
      <dc:creator>Luigi Belanda</dc:creator>
      <pubDate>Tue, 30 Sep 2025 11:25:43 +0000</pubDate>
      <link>https://dev.to/luigibelanda/advanced-persistent-threat-apt-2icc</link>
      <guid>https://dev.to/luigibelanda/advanced-persistent-threat-apt-2icc</guid>
      <description>&lt;h2&gt;
  
  
  Resumo Executivo
&lt;/h2&gt;

&lt;p&gt;Ameaças Persistentes Avançadas (APTs) representam uma categoria de ciberataques de alta sofisticação, caracterizados por sua natureza furtiva, prolongada e direcionada. Conduzidos por grupos de cibercriminosos experientes e bem financiados, frequentemente com patrocínio estatal, os ataques APT visam infiltrar-se em redes de organizações de alto valor — como governos, grandes corporações e setores de infraestrutura crítica — com o objetivo primordial de espionagem cibernética e exfiltração de dados sensíveis, como propriedade intelectual, segredos de estado e informações financeiras. Ao contrário de ataques cibernéticos convencionais, o objetivo de uma APT não é a disrupção imediata, mas sim estabelecer uma presença não detectada e persistente na rede alvo, que pode durar meses ou até anos.&lt;/p&gt;

&lt;p&gt;O ciclo de vida de um ataque APT é meticulosamente planejado e executado em múltiplos estágios: infiltração, expansão e exfiltração. A entrada inicial é frequentemente obtida por meio de técnicas de engenharia social, como e-mails de &lt;em&gt;spear-phishing&lt;/em&gt; altamente personalizados, ou pela exploração de vulnerabilidades de software não corrigidas. Uma vez dentro da rede, os invasores movem-se lateralmente, escalando privilégios e implantando &lt;em&gt;backdoors&lt;/em&gt; para garantir acesso contínuo. A fase final envolve a coleta, agregação e extração de dados valiosos, muitas vezes mascarada por ataques de distração. A defesa eficaz contra APTs exige uma abordagem holística e multicamadas, que transcende soluções de segurança tradicionais. É imperativo combinar tecnologias avançadas de detecção e resposta (como NGFW, [[EDR]] e [[SIEM]]), inteligência de ameaças proativa, monitoramento contínuo, controles de acesso rigorosos e, crucialmente, um programa robusto de treinamento e conscientização para funcionários, que representam a primeira linha de defesa.&lt;/p&gt;

&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;p&gt;Ameaças Persistentes Avançadas (APTs) são ataques cibernéticos furtivos e de longa duração, geralmente patrocinados por estados, que visam roubar dados valiosos de governos e grandes empresas. Invasores utilizam táticas sofisticadas como &lt;em&gt;spear-phishing&lt;/em&gt; e &lt;em&gt;malware&lt;/em&gt; personalizado para se infiltrar e permanecer ocultos por meses ou anos. A defesa eficaz exige uma abordagem integrada com múltiplas camadas de segurança, inteligência de ameaças, monitoramento constante e treinamento rigoroso dos funcionários para reconhecer tentativas de infiltração.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. O Que é uma Ameaça Persistente Avançada (APT)?
&lt;/h2&gt;

&lt;p&gt;Uma Ameaça Persistente Avançada (APT) é um ataque cibernético complexo e direcionado, no qual um agente de ameaça (ou grupo) obtém acesso não autorizado a uma rede e permanece nela sem ser detectado por um período prolongado. O objetivo final é monitorar, interceptar e exfiltrar dados altamente sensíveis, em vez de causar danos imediatos ou interrupções no serviço.&lt;/p&gt;

&lt;h3&gt;
  
  
  Análise dos Componentes
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Avançado:&lt;/strong&gt; Refere-se à utilização de técnicas sofisticadas e personalizadas que vão além das ferramentas de &lt;em&gt;malware&lt;/em&gt; comuns. Os invasores de APT podem desenvolver &lt;em&gt;malware&lt;/em&gt; customizado, utilizar táticas de espionagem elaboradas envolvendo múltiplos agentes e explorar vulnerabilidades zero day (falhas de segurança ainda não conhecidas pelo fornecedor do software). Eles investem tempo e recursos significativos em pesquisa para identificar vulnerabilidades exclusivas da organização alvo.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Persistente:&lt;/strong&gt; A persistência é a característica central. Após a infiltração inicial, o invasor estabelece uma presença contínua e de longo prazo na rede. Eles implantam &lt;em&gt;[[Backdoors]]&lt;/em&gt;, &lt;em&gt;[[Rootkits]]&lt;/em&gt; e outras ferramentas para garantir que o acesso possa ser mantido mesmo que credenciais de login sejam alteradas ou alguns pontos de comprometimento sejam descobertos. O tempo de permanência ("dwell time") em um ataque APT pode ser de meses ou anos.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ameaça:&lt;/strong&gt; O componente humano é crucial. As APTs não são códigos automatizados aleatórios; são operações bem orquestradas e financiadas, conduzidas por equipes de cibercriminosos experientes e determinados, muitas vezes com o apoio de estados-nação.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Principais Objetivos e Motivações
&lt;/h3&gt;

&lt;p&gt;Os objetivos de um ataque APT são variados e estratégicos, categorizados geralmente em:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Espionagem Cibernética:&lt;/strong&gt; O roubo de propriedade intelectual, segredos comerciais, dados de pesquisa, planos militares ou informações governamentais confidenciais.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ganhos Financeiros (eCrime):&lt;/strong&gt; Ataques direcionados para obter vantagens financeiras, como o roubo de dados de empresas de biotecnologia ou pagamentos de ajuda humanitária.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sabotagem e Destruição:&lt;/strong&gt; Interromper operações críticas, como visto no ataque Stuxnet contra o programa nuclear iraniano, que causou danos físicos a centrífugas.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hacktivismo e Objetivos Políticos:&lt;/strong&gt; Promover uma agenda política, desestabilizar governos ou influenciar eventos geopolíticos.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  2. Alvos e Atores de APTs
&lt;/h2&gt;

&lt;p&gt;Os ataques APT são altamente seletivos. Os invasores pesquisam e escolhem suas vítimas cuidadosamente, focando em alvos de alto valor.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Perfil dos Alvos:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Governos e Entidades Militares:&lt;/strong&gt; Para roubo de segredos de estado e inteligência militar.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Grandes Corporações:&lt;/strong&gt; Especialmente em setores como aeroespacial, telecomunicações, energia, finanças, tecnologia e saúde, para roubo de propriedade intelectual e obtenção de vantagem competitiva.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pequenas e Médias Empresas (PMEs):&lt;/strong&gt; Crescentemente visadas como um ponto de entrada para alvos maiores, explorando suas defesas potencialmente mais fracas para conduzir ataques à cadeia de suprimentos.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  Atores de Ameaças: Grupos e Patrocínio Estatal
&lt;/h2&gt;

&lt;p&gt;Os grupos APT são frequentemente rastreados e nomeados por empresas de cibersegurança. Muitos são suspeitos de operar sob a supervisão ou em alinhamento com os interesses de governos nacionais.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;País de Origem/Afiliação&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Grupo APT&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Características e Atividades Notáveis&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Rússia&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Fancy Bear (APT28)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Unidade ligada à agência de inteligência militar russa (GRU). Usa &lt;em&gt;phishing&lt;/em&gt; e sites falsos. Alvejou a campanha presidencial de Hillary Clinton em 2016 e utilizou [[TTPs]] semelhantes ao ataque "WhisperGate" antes da invasão da Ucrânia.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Cozy Bear (APT29)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Associado ao Serviço de Inteligência Estrangeira da Rússia (SVR). Realiza campanhas de &lt;em&gt;spear-phishing&lt;/em&gt; em larga escala contra entidades políticas e de segurança nacional.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Gamaredon&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Suspeito de ser um grupo de agentes apoiados pelo governo russo na Crimeia. Lançou uma grande campanha de &lt;em&gt;spear-phishing&lt;/em&gt; contra o governo ucraniano usando &lt;em&gt;malware&lt;/em&gt; de roubo de informações.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Turla&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Atribuído por alguns ao Serviço de Segurança Federal (FSB) da Rússia. Realiza operações altamente direcionadas contra entidades públicas e privadas em países da OTAN e estados pós-soviéticos, usando &lt;em&gt;watering holes&lt;/em&gt;, &lt;em&gt;spear-phishing&lt;/em&gt; e &lt;em&gt;backdoors&lt;/em&gt; personalizados como Crutch e Gazer.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;China&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Wicked Panda (APT41)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Grupo prolífico com ligações com o Ministério de Segurança do Estado chinês. Realiza tanto espionagem cibernética quanto ataques com fins lucrativos. Responsável por invadir cadeias de suprimentos de saúde e roubar dados de empresas de biotecnologia.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Mustang Panda&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Conhecido por explorar eventos atuais para comprometer vítimas, especialmente nos EUA e na Ásia. Aproveitou a guerra entre Rússia e Ucrânia para atingir empresas europeias, incluindo entidades russas.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Deep Panda&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Grupo de espionagem patrocinado pelo estado que visa governos, forças armadas e entidades financeiras. Explorou a vulnerabilidade Log4j para comprometer uma entidade de saúde e implantar um &lt;em&gt;backdoor&lt;/em&gt; personalizado.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;GOBLIN PANDA (APT27)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Observado desde 2013, usa documentos do Microsoft Word com exploits para instalar arquivos maliciosos.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Irã&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Helix Kitten (APT34)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Supostamente opera sob a supervisão do governo do Irã, visando empresas no Oriente Médio para beneficiar interesses econômicos e militares iranianos. Conhecido por e-mails de &lt;em&gt;phishing&lt;/em&gt; convincentes e bem pesquisados.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;MuddyWater&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Consiste em vários subgrupos encarregados de atingir regiões específicas. Utiliza [[TTPs]] exclusivos, mas compartilha &lt;em&gt;malware&lt;/em&gt; e ferramentas eficazes. Tentou comprometer entidades do governo turco com um novo implante chamado SloughRAT.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Coreia do Norte&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Lazarus Group&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Grupo prolífico conhecido por utilizar &lt;em&gt;malware&lt;/em&gt; personalizado e se envolver em roubos monetários generalizados para apoiar os objetivos políticos e de segurança da Coreia do Norte. Explorou vulnerabilidades do Log4j em servidores VMware Horizon de empresas de energia nos EUA, Canadá e Japão. Acusado de roubar milhões em moeda virtual.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Vietnã&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Ocean Buffalo (APT32)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Ativo desde pelo menos 2012, emprega uma vasta gama de [[TTPs]], incluindo ferramentas personalizadas e de prateleira, para atingir seus alvos.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Sul da Ásia&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Transparent Tribe&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Vinculado ao Paquistão, visa predominantemente entidades governamentais e militares na Índia e Afeganistão. Recentemente expandiu sua vitimologia para incluir alunos e instituições educacionais na Índia.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Histórico&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Stuxnet&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Famoso &lt;em&gt;worm&lt;/em&gt; de computador, supostamente desenvolvido em conjunto pelos EUA e Israel, usado para sabotar o programa nuclear do Irã em 2010.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  3. O Ciclo de Vida de um Ataque APT
&lt;/h2&gt;

&lt;p&gt;Um ataque APT é um processo sistemático que segue um ciclo de vida bem definido.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Estágio 1: Coleta de Inteligência e Infiltração&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Técnicas:&lt;/strong&gt; Os invasores começam com uma fase de reconhecimento passivo, coletando informações públicas sobre a organização, seus funcionários e infraestrutura. A infiltração ocorre por meio de vetores como:

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Engenharia Social:&lt;/strong&gt; E-mails de &lt;em&gt;spear-phishing&lt;/em&gt; altamente direcionados e personalizados para executivos ou funcionários específicos, contendo anexos ou links maliciosos.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Exploração de Vulnerabilidades:&lt;/strong&gt; Uso de &lt;em&gt;exploits&lt;/em&gt; zero day ou falhas conhecidas em softwares não atualizados (como o Log4j) para penetrar na rede.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ataques à Cadeia de Suprimentos:&lt;/strong&gt; Comprometimento de parceiros de negócios ou fornecedores de tecnologia para obter acesso indireto.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Estágio 2: Expansão, Movimento Lateral e Estabelecimento de Persistência&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Técnicas:&lt;/strong&gt; Após a invasão inicial, os invasores buscam expandir sua presença e controle:

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Implantação de Malware:&lt;/strong&gt; Instalação de &lt;em&gt;backdoors&lt;/em&gt;, cavalos de Troia (Trojan) e &lt;em&gt;[[rootkits]]&lt;/em&gt; para garantir acesso remoto e contínuo (persistência).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Movimento Lateral:&lt;/strong&gt; Mapeamento da rede interna para identificar ativos valiosos e outras vulnerabilidades. Os invasores se movem entre sistemas para aprofundar o acesso.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Escalonamento de Privilégios:&lt;/strong&gt; Uso de técnicas como quebra de senhas para obter credenciais de administrador, garantindo controle total sobre sistemas críticos.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Estabelecimento de Comando e Controle (C&amp;amp;C):&lt;/strong&gt; Criação de uma conexão com um servidor externo para gerenciar remotamente os sistemas comprometidos e receber comandos.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Estágio 3: Descoberta de Ativos e Exfiltração de Dados&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Técnicas:&lt;/strong&gt; A fase final é a concretização do objetivo do ataque:

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Agregação de Dados:&lt;/strong&gt; Os dados roubados são coletados e movidos para um local centralizado e seguro dentro da rede comprometida. Frequentemente, os dados são compactados e criptografados.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Táticas de Distração:&lt;/strong&gt; Para ocultar a extração, os invasores podem encenar um evento de "ruído branco", como um ataque de negação de serviço distribuído (DDoS), para desviar a atenção da equipe de segurança.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Exfiltração:&lt;/strong&gt; Transferência dos dados coletados para um servidor externo controlado pelo invasor, concluindo o roubo.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  4. Sinais de Alerta e Indicadores de Comprometimento (IoCs)
&lt;/h2&gt;

&lt;p&gt;Devido à sua natureza furtiva, a detecção de APTs é um desafio. No entanto, uma combinação de sinais pode alertar as equipes de segurança:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;E-mails de Spear-Phishing Direcionados:&lt;/strong&gt; Recebimento de e-mails altamente personalizados e convincentes por executivos de alto nível.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Logins Estranhos e Incomuns:&lt;/strong&gt; Atividade de login em horários atípicos (como tarde da noite ou fora do horário comercial), especialmente para contas de usuários privilegiados. Isso pode ocorrer porque os grupos APT operam em fusos horários diferentes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backdoors:&lt;/strong&gt; Um aumento significativo na detecção de &lt;em&gt;backdoors&lt;/em&gt; na rede, que servem como pontos de reentrada para os invasores.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Movimentação Incomum de Dados:&lt;/strong&gt; Aumento abrupto nas operações de banco de dados ou a transferência de grandes lotes de informações entre servidores internos ou para destinos externos.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dados Agregados e Prontos para Exportação:&lt;/strong&gt; Descoberta de grandes arquivos compactados (às vezes em formatos de arquivo incomuns para a empresa) em locais da rede onde não deveriam estar, indicando preparação para a exfiltração.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  5. Estratégias de Defesa e Mitigação contra APTs
&lt;/h2&gt;

&lt;p&gt;A proteção contra APTs requer uma abordagem de defesa em profundidade, combinando múltiplas estratégias e soluções.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Abordagem de Segurança Integrada e Multicamadas:&lt;/strong&gt; Uma defesa eficaz não se baseia em produtos isolados, mas em um portfólio de soluções de segurança que trabalham de forma integrada para eliminar lacunas.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;O Fator Humano: Treinamento e Conscientização:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Implementar programas de treinamento contínuo para educar todos os funcionários sobre os perigos de &lt;em&gt;phishing&lt;/em&gt; e engenharia social, ensinando-os a identificar e reportar atividades suspeitas.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Medidas Técnicas Essenciais:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Gerenciamento de Patches:&lt;/strong&gt; Manter todos os softwares e sistemas operacionais atualizados com as últimas correções de segurança para proteger contra a exploração de vulnerabilidades conhecidas.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Controle de Acesso Rigoroso:&lt;/strong&gt; Implementar o princípio do menor privilégio, garantindo que os funcionários tenham acesso apenas aos dados necessários para suas funções. Utilizar autenticação multifator (MFA) para proteger contas críticas.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Firewalls de Próxima Geração (NGFW) e de Aplicação Web (WAF):&lt;/strong&gt; Monitorar e filtrar o tráfego de rede de entrada e saída para detectar e bloquear atividades maliciosas na borda da rede e em aplicações web.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Segmentação de Rede:&lt;/strong&gt; Isolar os dados mais confidenciais em segmentos de rede mais seguros, tornando-os mais difíceis de encontrar e copiar.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sandboxing:&lt;/strong&gt; Analisar arquivos e aplicativos suspeitos em um ambiente isolado para observar seu comportamento sem arriscar a rede principal.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Inteligência de Ameaças e Defesa Proativa:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Utilização de Inteligência contra Ameaças:&lt;/strong&gt; Aproveitar feeds de inteligência sobre ameaças para se manter atualizado sobre os [[TTPs]] de grupos APT conhecidos e emergentes. A estrutura &lt;strong&gt;MITRE ATT&amp;amp;CK&lt;/strong&gt; é uma ferramenta crucial para mapear táticas de ataque e fortalecer as defesas.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Threat Hunting:&lt;/strong&gt; Empregar equipes dedicadas para procurar proativamente por ameaças que possam ter contornado as defesas automatizadas.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Monitoramento e Análise:&lt;/strong&gt; Usar ferramentas como &lt;strong&gt;[[SIEM]]&lt;/strong&gt; (Security Information and Event Management) e &lt;strong&gt;[[UEBA]]&lt;/strong&gt; (User and Entity Behavior Analytics) para correlacionar eventos de segurança, criar linhas de base de comportamento normal e detectar desvios suspeitos em tempo real.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Parcerias Estratégicas e Resposta a Incidentes:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Trabalhar com uma empresa de cibersegurança especializada em APTs para avaliação de riscos, implementação de medidas de segurança e monitoramento ativo.&lt;/li&gt;
&lt;li&gt;Manter um plano de resposta a incidentes robusto para conter e mitigar rapidamente qualquer ataque detectado.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  6. Tendências de Mercado e Cenário Futuro
&lt;/h2&gt;

&lt;p&gt;O cenário de ameaças APT está em constante evolução, impulsionado por fatores geopolíticos e avanços tecnológicos.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Impacto Geopolítico:&lt;/strong&gt; A atividade de APT aumentou em resposta a eventos como a pandemia de COVID-19 e a guerra na Ucrânia, com grupos criminosos aproveitando esses contextos para lançar novas campanhas.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Crescimento do Mercado:&lt;/strong&gt; A conscientização sobre o impacto prejudicial das APTs está impulsionando investimentos significativos em soluções de proteção. O mercado, avaliado em aproximadamente US$ 6 bilhões em 2021, está projetado para ultrapassar US$ 20 bilhões até 2027, com uma taxa de crescimento anual composta (CAGR) de 22,35%.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sofisticação Crescente:&lt;/strong&gt; Os adversários estão se tornando mais rápidos e sofisticados, adotando novos vetores de ataque, armando novas tecnologias em escala e explorando vulnerabilidades 43% mais rápido do que antes. A necessidade de mecanismos de defesa dinâmicos e especialmente elaborados continuará a crescer.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Fontes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.kaspersky.com.br/resource-center/threats/advanced-persistent-threat" rel="noopener noreferrer"&gt;https://www.kaspersky.com.br/resource-center/threats/advanced-persistent-threat&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.ibm.com/br-pt/think/topics/advanced-persistent-threats" rel="noopener noreferrer"&gt;https://www.ibm.com/br-pt/think/topics/advanced-persistent-threats&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.manageengine.com/br/log-management/cyber-security-attacks/advanced-persistent-threat-apt.html" rel="noopener noreferrer"&gt;https://www.manageengine.com/br/log-management/cyber-security-attacks/advanced-persistent-threat-apt.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.kaspersky.com.br/resource-center/definitions/advanced-persistent-threats" rel="noopener noreferrer"&gt;https://www.kaspersky.com.br/resource-center/definitions/advanced-persistent-threats&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.cisco.com/c/dam/global/pt_br/products/pdfs/onepager-apts.pdf" rel="noopener noreferrer"&gt;https://www.cisco.com/c/dam/global/pt_br/products/pdfs/onepager-apts.pdf&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.fortinet.com/resources/cyberglossary/advanced-persistent-threat" rel="noopener noreferrer"&gt;https://www.fortinet.com/resources/cyberglossary/advanced-persistent-threat&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.crowdstrike.com/en-us/cybersecurity-101/threat-intelligence/advanced-persistent-threat-apt/" rel="noopener noreferrer"&gt;https://www.crowdstrike.com/en-us/cybersecurity-101/threat-intelligence/advanced-persistent-threat-apt/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sentinelone.com/cybersecurity-101/threat-intelligence/advanced-persistent-threat-apt/" rel="noopener noreferrer"&gt;https://www.sentinelone.com/cybersecurity-101/threat-intelligence/advanced-persistent-threat-apt/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.cisco.com/site/us/en/learn/topics/security/what-is-an-advanced-persistent-threat-apt.html" rel="noopener noreferrer"&gt;https://www.cisco.com/site/us/en/learn/topics/security/what-is-an-advanced-persistent-threat-apt.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.fortinet.com/br/resources/cyberglossary/advanced-persistent-threat" rel="noopener noreferrer"&gt;https://www.fortinet.com/br/resources/cyberglossary/advanced-persistent-threat&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>cybersecurity</category>
      <category>programming</category>
      <category>security</category>
      <category>learning</category>
    </item>
    <item>
      <title>LoLBins</title>
      <dc:creator>Luigi Belanda</dc:creator>
      <pubDate>Fri, 26 Sep 2025 18:17:25 +0000</pubDate>
      <link>https://dev.to/luigibelanda/lolbins-1do8</link>
      <guid>https://dev.to/luigibelanda/lolbins-1do8</guid>
      <description>&lt;h2&gt;
  
  
  1. Definição
&lt;/h2&gt;

&lt;p&gt;LoLBins (Living-off-the-Land Binaries) são binários legítimos e nativos do sistema operacional que podem ser reutilizados de forma maliciosa por atacantes. Apesar de serem ferramentas confiáveis e pré-instaladas, elas podem ser exploradas para fins inesperados, permitindo que invasores realizem ações maliciosas sem instalar novos softwares.&lt;/p&gt;

&lt;p&gt;O conceito de LoLBins faz parte de um grupo maior chamado LOLBAS (Living-off-the-Land Binaries, Scripts and Libraries), que inclui não apenas binários, mas também scripts e bibliotecas do sistema. Esses recursos podem ser usados de forma criativa para ataques sofisticados, como em operações de Advanced Persistent Threat (APT) ou por equipes de teste de segurança (Red Teams).&lt;/p&gt;

&lt;p&gt;Para um binário, script ou biblioteca ser considerado um LoLBin/LOLBAS, geralmente ele precisa:&lt;/p&gt;

&lt;p&gt;Ser um arquivo legítimo e assinado pelo sistema ou pela Microsoft.&lt;br&gt;
Possuir funcionalidades "inesperadas", que podem ser exploradas de maneiras maliciosas. Ser útil para um atacante em tarefas como execução de código, movimentação lateral ou persistência. O principal objetivo do uso de LoLBins é evadir a detecção de mecanismos de segurança. Como essas ferramentas já existem no sistema, ataques baseados nelas são menos visíveis e podem contornar antivírus, controles de assinatura digital e outros mecanismos de proteção. Além disso, LoLBins permitem a execução de ataques Fileless Malware, ou seja, sem criar arquivos maliciosos no disco, dificultando ainda mais a detecção.&lt;/p&gt;

&lt;p&gt;Em resumo, LoLBins são uma forma de "viver da terra" no sistema comprometido: o atacante aproveita ferramentas legítimas e recursos já disponíveis para atingir seus objetivos de maneira furtiva e eficiente.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. Exemplos
&lt;/h2&gt;

&lt;p&gt;Os LOLBins (Living-off-the-Land Binaries) são executáveis legítimos do sistema operacional que são frequentemente abusados por atacantes para diversas atividades maliciosas, como execução de código, download de payloads, movimentação lateral e persistência, visando evitar a detecção por softwares de segurança tradicionais.&lt;/p&gt;

&lt;p&gt;A CrowdStrike realizou uma análise de atividades de intrusão interativas em um período de um ano (julho de 2021 a junho de 2022) para identificar os LOLBins mais prevalentes utilizados por adversários. Essa pesquisa aprofundou-se em oito LOLBins mais comuns: Rundll32, Regsvr32, Msiexec, Mshta, Certutil, MSBuild, WMI command line utility (WMIC) e WMI provider host (WmiPrvSe). A Kaspersky também destaca o PowerShell como o LOLBin mais comum, seguido por rundll32.exe, e em terceiro lugar, te.exe, PsExec.exe, CertUtil.exe, Reg.exe e wscript.exe.&lt;/p&gt;

&lt;h3&gt;
  
  
  2.1 Principais LoLBins e seus usos maliciosos:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;cmd.exe – Execução de comandos&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Permite executar comandos maliciosos, criar tarefas agendadas e realizar proxy execution (executar outros binários sem caminho completo). Usado em scripts como wmiexec.py para executar comandos remotamente.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;powershell.exe – Execução de scripts e download de payloads&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ferramenta de linha de comando e linguagem de script, amplamente usada em ataques. Permite baixar e executar payloads de servidores C2, automatizar processos via WMI e executar código diretamente na memória (Fileless Malware).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;regsvr32.exe – Execução de scripts via COM&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Usado para registrar/desregistrar DLLs e controles ActiveX. Permite bypass de listas de permissão de aplicativos e execução de payloads remotos sem baixar arquivos primeiro (técnica Squiblydoo).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;mshta.exe – Execução de código HTML/JS&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Executa arquivos HTA ou scripts embutidos na linha de comando. Pode ser usado para ataques Fileless Malware, tornando a execução invisível para o usuário.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;rundll32.exe – Execução de DLLs arbitrárias&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Permite rodar DLLs maliciosas ou explorar DLLs legítimas. Usado para criar memory dumps, roubar credenciais e evadir mecanismos de whitelisting.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;certutil.exe – Download e decodificação de arquivos&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ferramenta para gerenciar certificados, mas pode baixar arquivos, decodificar dados em Base64 e instalar certificados maliciosos.&lt;/p&gt;

&lt;h3&gt;
  
  
  2.2 Outros LoLBins notáveis no Windows
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;msiexec.exe – Instalação de software ou DLLs maliciosas; pode rodar em modo silencioso.&lt;/li&gt;
&lt;li&gt;msbuild.exe – Compilação de código malicioso direto na máquina vítima.&lt;/li&gt;
&lt;li&gt;wmic.exe / wmiprvse.exe – Execução remota de comandos, movimentação lateral e gerenciamento de sistema.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  3. Categorias de uso de LoLBins
&lt;/h2&gt;

&lt;p&gt;Os LoLBins (Living-off-the-Land Binaries) são reutilizados por atacantes para atingir objetivos específicos dentro de sistemas comprometidos. O uso desses binários, scripts e bibliotecas (LOLBAS) permite que as ameaças sejam mais furtivas, evitando a detecção por mecanismos de segurança tradicionais. As principais categorias de uso são:&lt;/p&gt;

&lt;h3&gt;
  
  
  3.1 Execução de código
&lt;/h3&gt;

&lt;p&gt;Permite rodar scripts ou programas maliciosos sem instalar novos executáveis.&lt;/p&gt;

&lt;p&gt;Exemplos de LoLBins usados para execução de código:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Rundll32.exe: Executa DLLs maliciosas ou explora DLLs legítimas para roubo de credenciais ou execução de payloads.&lt;/li&gt;
&lt;li&gt;Mshta.exe: Executa arquivos HTA ou scripts embutidos, permitindo ataques Fileless Malware sem criar arquivos no disco.&lt;/li&gt;
&lt;li&gt;Msiexec.exe: Instala ou executa DLLs maliciosas, podendo rodar em modo silencioso para evitar interação do usuário.&lt;/li&gt;
&lt;li&gt;MSBuild.exe: Compila código malicioso diretamente na máquina vítima ou executa comandos arbitrários, usando arquivos de logger ou de resposta para ocultar argumentos.&lt;/li&gt;
&lt;li&gt;WMIC.exe: Cria processos local ou remotamente, executando scripts PowerShell ou JScript/VBScript.&lt;/li&gt;
&lt;li&gt;PowerShell.exe: Executa scripts e baixa payloads de servidores C2; amplamente utilizado em ataques críticos.&lt;/li&gt;
&lt;li&gt;Cmd.exe: Encadeia a execução de outros LoLBins, permitindo proxy execution.&lt;/li&gt;
&lt;li&gt;WScript.exe: Executa scripts em linguagens de script suportadas pelo Windows.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3.2 Movimentação lateral
&lt;/h3&gt;

&lt;p&gt;Permite que atacantes se movam entre sistemas dentro de uma rede comprometida.&lt;/p&gt;

&lt;p&gt;Ferramentas comuns para movimentação lateral:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;WMIC.exe: Executa processos em sistemas remotos usando credenciais válidas.&lt;/li&gt;
&lt;li&gt;PsExec.exe: Executa processos remotamente, frequentemente usado em campanhas de ransomware.&lt;/li&gt;
&lt;li&gt;ssh.exe (Linux/Unix): Executa comandos remotamente, permitindo movimentação lateral entre hosts.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3.3 Persistência
&lt;/h3&gt;

&lt;p&gt;Permite manter o acesso ao sistema comprometido mesmo após reinicializações ou alterações de credenciais.&lt;/p&gt;

&lt;p&gt;LoLBins usados para persistência:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Schtasks.exe: Cria tarefas agendadas para executar payloads maliciosos regularmente.&lt;/li&gt;
&lt;li&gt;Regsvr32.exe: Registrando DLLs maliciosas em tarefas agendadas para execução diária.&lt;/li&gt;
&lt;li&gt;Mshta.exe: Cria persistência via execução de arquivos HTA que configuram DLLs para rodar em aplicativos COM.&lt;/li&gt;
&lt;li&gt;WMIC.exe: Configura contas de usuário ou outras configurações para acesso a longo prazo.&lt;/li&gt;
&lt;li&gt;Reg.exe: Altera ou adiciona chaves de registro para garantir execução contínua.&lt;/li&gt;
&lt;li&gt;Cron (Linux/Unix): Agenda execução periódica de scripts maliciosos para persistência.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3.4 Exfiltração de dados
&lt;/h3&gt;

&lt;p&gt;Permite roubar informações do sistema ou da rede utilizando binários legítimos.&lt;/p&gt;

&lt;p&gt;Exemplos:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Certutil.exe: Codifica/decodifica dados em Base64, útil para exfiltração de dumps de memória e bypass de detecção.&lt;/li&gt;
&lt;li&gt;WMIC.exe: Coleta informações do host e da rede para posterior exfiltração.&lt;/li&gt;
&lt;li&gt;Bitsadmin.exe: Transfere arquivos e executa código malicioso remotamente.&lt;/li&gt;
&lt;li&gt;curl / wget (Linux/Unix): Faz download ou upload de arquivos, podendo exfiltrar dados.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3.5 Bypass de segurança
&lt;/h3&gt;

&lt;p&gt;Os LoLBins contornam defesas e políticas de segurança porque são executáveis confiáveis e assinados pelo sistema.&lt;/p&gt;

&lt;p&gt;Principais técnicas de evasão:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Evasão baseada em assinaturas: Muitos LoLBins são arquivos assinados pela Microsoft, permitindo execução em sistemas protegidos sem alertas.&lt;/li&gt;
&lt;li&gt;Contorno de allowlisting: Rundll32, Regsvr32, Msiexec e MSBuild podem executar payloads mesmo em ambientes com políticas restritivas.&lt;/li&gt;
&lt;li&gt;Evasão de antivírus e EDR: Atividades Fileless Malware e uso de funcionalidades "inesperadas" dificultam a detecção.&lt;/li&gt;
&lt;li&gt;Contorno do UAC: LoLBins como Rundll32 podem carregar objetos COM com permissões elevadas sem validação de identidade.&lt;/li&gt;
&lt;li&gt;Ataques Fileless Malware: Mshta e PowerShell executam código diretamente na memória, sem gravar arquivos no disco.&lt;/li&gt;
&lt;li&gt;Ocultação de atividades: Técnicas como janelas invisíveis (Mshta) ou uso de response files (MSBuild) escondem ações maliciosas do usuário.&lt;/li&gt;
&lt;li&gt;Mascaramento: Arquivos ou scripts podem ser nomeados de forma a parecer legítimos e se integrar a processos do sistema (ex: arquivos XSL usados pelo WMIC).&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Fontes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.crowdstrike.com/en-us/resources/white-papers/8-lolbins-every-threat-hunter-should-know/" rel="noopener noreferrer"&gt;https://www.crowdstrike.com/en-us/resources/white-papers/8-lolbins-every-threat-hunter-should-know/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/LOLBAS-Project/LOLBAS" rel="noopener noreferrer"&gt;https://github.com/LOLBAS-Project/LOLBAS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=QBvM-MzQ570" rel="noopener noreferrer"&gt;https://www.youtube.com/watch?v=QBvM-MzQ570&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://lolbas-project.github.io/" rel="noopener noreferrer"&gt;https://lolbas-project.github.io/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sidechannel.blog/lolbins-como-ferramentas-nativas-sao-utilizadas-para-tornar-ameacas-mais-furtivas/" rel="noopener noreferrer"&gt;https://www.sidechannel.blog/lolbins-como-ferramentas-nativas-sao-utilizadas-para-tornar-ameacas-mais-furtivas/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=ryZxM37APsE" rel="noopener noreferrer"&gt;https://www.youtube.com/watch?v=ryZxM37APsE&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.kaspersky.com.br/blog/most-used-lolbins/18302/" rel="noopener noreferrer"&gt;https://www.kaspersky.com.br/blog/most-used-lolbins/18302/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://attack.mitre.org/techniques/T1218/" rel="noopener noreferrer"&gt;https://attack.mitre.org/techniques/T1218/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.cynet.com/attack-techniques-hands-on/what-are-lolbins-and-how-do-attackers-use-them-in-fileless-attacks/" rel="noopener noreferrer"&gt;https://www.cynet.com/attack-techniques-hands-on/what-are-lolbins-and-how-do-attackers-use-them-in-fileless-attacks/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.cisa.gov/eviction-strategies-tool/info-attack/T1218" rel="noopener noreferrer"&gt;https://www.cisa.gov/eviction-strategies-tool/info-attack/T1218&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>cybersecurity</category>
      <category>lolbins</category>
    </item>
    <item>
      <title>Estudo de base sobre RAID: origem, tipos e características</title>
      <dc:creator>Luigi Belanda</dc:creator>
      <pubDate>Thu, 07 Sep 2023 19:37:50 +0000</pubDate>
      <link>https://dev.to/luigibelanda/estudo-de-base-sobre-raid-origem-tipos-e-caracteristicas-5fd9</link>
      <guid>https://dev.to/luigibelanda/estudo-de-base-sobre-raid-origem-tipos-e-caracteristicas-5fd9</guid>
      <description>&lt;p&gt;&lt;em&gt;Luigi Enrico Alves Belanda Milani – &lt;a href="mailto:luigi.milani@fatec.sp.gov.br"&gt;luigi.milani@fatec.sp.gov.br&lt;/a&gt;&lt;/em&gt;&lt;br&gt;
&lt;em&gt;Faculdade de Tecnologia de Taquaritinga (FATEC) – Itápolis – São Paulo – Brasil&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Welder Patrick Casemiro Acciari – &lt;a href="mailto:welder.acciari@fatec.sp.gov.br"&gt;welder.acciari@fatec.sp.gov.br&lt;/a&gt;&lt;/em&gt;&lt;br&gt;
&lt;em&gt;Faculdade de Tecnologia de Taquaritinga (FATEC) – Itápolis – São Paulo – Brasil&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  1 - INTRODUÇÃO
&lt;/h2&gt;

&lt;p&gt;Este artigo tem como principal foco a apresentação de uma pesquisa sobre os diversos aspectos básicos sobre RAID, desde sua origem, tipos, características e muito mais. Este tipo de pesquisa se faz necessária por ser um assunto que pode aparecer no dia a dia como profissionais da área de TI e principalmente em assuntos relacionados a sistemas operacionais, redes, sistemas de armazenamento etc. O objetivo em si é que ao chegar ao final deste artigo possamos entender principalmente o que é RAID, por que ele surgiu, quais os tipos de RAID, quais as vantagens e desvantagens de cada um e muito mais, todas essas informações serão abordadas nas seções deste artigo. &lt;/p&gt;

&lt;p&gt;Por volta dos anos de 1974 e 1984 surge talvez uma pequena preocupação acerca dos computadores, o desempenho das CPUs e Memórias principais tiveram um grande crescimento, totalizando um aumento de até mesmo cerca de 40%, mas aqui que surge um problema, o gargalo entre por exemplo uma instrução da CPU que realiza uma operação de E/S para acessar o disco. Isso se deve ao fato que a velocidade do disco não conseguia na época acompanhar a velocidade de outros componentes do computador.&lt;/p&gt;

&lt;p&gt;Com isso, por volta do ano de 1978 podemos dizer que surgiu a primeira ideia de RAID criada pela IBM, mas somente em 1987 um artigo publicado por David A. Patterson, Garth Gibson e Randy H. Katz na Universidade de Berkeley e com o nome de “A Case for Redundant Arrays of Inexpensive Disks (RAID)”, deu um maior foco para esse tipo de assunto. Este artigo como podemos conferir em seu próprio “Abstract” (resumo) nos diz o que podemos esperar: “Increasing performance of CPUs and memories will be squandered if not matched by a similar performance increase in I/O. While the capacity of Single Large Expensive Disks (SLED) has grown rapidly, the performance improvement of SLED has been modest. Redundant Arrays of Inexpensive Disks (RAID), based on the magnetic disk technology developed for personal computers, offers an attractive alternative to SLED, promising improvements of an order of magnitude in performance, reliability, power consumption, and scalability…”, em uma tradução livre “O aumento do desempenho de CPUs e memórias será desperdiçado se não for acompanhado por um aumento semelhante de desempenho em E/S. Embora a capacidade dos discos únicos grandes e caros (SLED) tenha crescido rapidamente, a melhoria de desempenho do SLED foi modesta. Redundant Arrays of Inexpensive Disks (RAID), baseados na tecnologia de disco magnético desenvolvida para computadores pessoais, oferecem uma alternativa atraente ao SLED, prometendo melhorias de uma ordem de grandeza em desempenho, confiabilidade, consumo de energia e escalabilidade…”&lt;/p&gt;

&lt;p&gt;De modo geral, este artigo descreve os vários tipos de matrizes de discos, a ideia básica do RAID, vantagens em relação, por exemplo, ao Single Large Expensive Drive - SLED e outros detalhes. No geral os RAIDs originais descritos no artigo eram 1, 2, 3, 4 e 5, com o tempo outros RAIDs acabaram surgindo.&lt;/p&gt;




&lt;h2&gt;
  
  
  2 - RAID
&lt;/h2&gt;

&lt;p&gt;Vamos começar a entender então o que é o RAID, o RAID em si se baseia no uso de discos extras para aumentar o desempenho do processo de leitura e escrita da unidade de armazenamento, ou para recuperar a informação original em caso de uma falha num disco. Patterson, um dos desenvolvedores da tecnologia RAID, demonstrou que sem um controle de tolerância a falhas grandes vetores de discos econômicos não podem ser considerados úteis devido a sua baixa taxa de confiabilidade. Veja que justamente essa ideia de RAID surge para tentar superar o gargalo comentado anteriormente no texto e ainda garantir mais confiabilidade e outros fatores. &lt;/p&gt;

&lt;p&gt;O principal apresentado por Patterson era de quebrar os vetores em grupos confiáveis, onde cada grupo possua discos extras, os quais possuem informação redundante que seriam utilizados para manter a confiabilidade dos grupos. Dessa forma, quando um disco falhar, o disco em falha será substituído por um novo disco em um espaço curto de tempo, e a informação que estava contida no antigo disco será totalmente reconstruída no novo disco utilizando as informações redundantes contidas no vetor.&lt;/p&gt;

&lt;p&gt;Outro ponto muito importante é que o MTBF (Mean Time Between Failure - o tempo médio entre falhas, é uma medida da confiabilidade de um sistema ou componente. É um elemento crucial da gestão da manutenção, representando o tempo médio que um sistema ou componente irá operar antes de falhar) dessas matrizes é igual ao menor MTBF individual dos discos. Por isso, o MTBF dessas matrizes se torna extremamente baixo para muitas aplicações, tornando ainda mais confiável a utilização desses discos em RAID.&lt;/p&gt;

&lt;p&gt;Como podemos observar o RAID em si surge como uma ideia de melhorar principalmente o desempenho e confiabilidade de um sistema de armazenamento utilizando HDs, mas como aplicar essa ideia em si? Existe algum padrão ou algo do tipo? Para isso, alguns tipos de RAID foram criados, cada um com suas características, necessidades e maneiras de como funcionam e é o que veremos agora.&lt;/p&gt;

&lt;h3&gt;
  
  
  2.1 TIPOS DE RAID, CARACTERÍSTICAS, VANTAGENS ETC.
&lt;/h3&gt;

&lt;p&gt;Como dissemos na introdução deste artigo, no início surgiram 5 tipos de RAIDs originais descritos no artigo de David A. Patterson, Garth Gibson e Randy H. Katz, com o tempo, combinações de RAID e outros modelos acabaram surgindo e aqui iremos explicar sobre cada um deles.&lt;/p&gt;

&lt;h4&gt;
  
  
  2.1.1 RAID 0
&lt;/h4&gt;

&lt;p&gt;Começando pelo RAID 0 (striping array - segmentação de dados), normalmente usado em casos em que o desempenho ou que aproveitando do “striping” que é justamente a combinação de vários discos em apenas uma unidade lógica de armazenamento, supere a necessidade de tolerância a falhas e que os dados que eles estão guardando não sejam de extrema importância. O striping busca melhorar o desempenho do disco distribuindo a atividade de E/S através de várias unidades de disco e reduzindo ou eliminando um gargalo de E/S, isso ocorre porque além de enxergarmos 2 ou mais HDs como uma única unidade lógica de armazenamento os dados são fracionados / repartidos de forma igualitária entre eles, ou seja, as informações sobre um arquivo X será dividida entre os HDs que estão em RAID 0 e cada um ficará com uma parte desse arquivo X e quando for necessário pegar os dados desse arquivo ambos os HDs em que suas partes estão guardadas entram em ação e podem recuperar esses dados de forma mais rápida, mas aqui surge um problema, como a informação sobre esse arquivo está dividida nos HDs se um deles falhar será praticamente impossível recuperar os dados desse arquivo, por que justamente uma parte dele foi perdida e esses dados eram cruciais para formar o arquivo completo, importante dizer que neste caso estamos falando que alguns blocos de dados desse arquivo X se perderam, tudo no HD é armazenado em blocos (por isso até que são chamados de Block Devices) e se você perde uma parte deles como no exemplo acima, você acaba perdendo o arquivo inteiro.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvexyov2zyra0748255lh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvexyov2zyra0748255lh.png" alt="RAID 0" width="435" height="184"&gt;&lt;/a&gt;&lt;em&gt;Imagem ilustrando a visão de alguns HDs em RAID 0 (note que aqui temos 4 HDs, mas que são enxergados como um único volume em que os dados podem ser repartidos e gravados)&lt;/em&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  2.1.2 RAID 1
&lt;/h4&gt;

&lt;p&gt;Podemos agora ir para o RAID 1 (mirroring - espelhamento, shadowing), este opção de RAID surge com uma premissa totalmente oposta do RAID 0, enquanto no RAID 0 temos a divisão dos blocos de dados de um arquivo pelos diversos HDs que estão em RAID 0, no RAID 1 temos o espelhamento desses dados, ou seja, temos 2 HDs em RAID 1, tudo que for gravado no HD 1 será espelhado / gravado no HD 2. Esta configuração de RAID se torna útil principalmente quando não podemos perder os dados que ali estão sendo gravados, aumentando a confiança nesse tipo de RAID pois se um dos discos falha o outro HD pode começar a entender as requisições necessárias, já que ele contém os mesmos dados daquele que está com defeito e ainda deixando as operações de leitura mais rápidas que o padrão, onde ainda quando um dado deve ser lido essa operação pode ser feita no HD que estiver com a menor fila e menor tempo de busca, mas em contrapartida o desempenho em solicitações de escrita acaba sendo um pouco comprometido em troca dessa segurança a mais com os dados, já que o mesmo dado terá que ser gravado em todos os HDs em RAID 1, outro ponto é que de certa forma a eficiência de armazenamento, ou seja, a maneira com que usamos o espaço de armazenamento desses HDs, acaba saindo prejudicada já que estaremos usando 2 HDs ou mais para gravar os mesmos dados.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgsnx5dbe8nmj0zm3xiju.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgsnx5dbe8nmj0zm3xiju.png" alt="RAID 1" width="800" height="174"&gt;&lt;/a&gt;&lt;em&gt;Imagem ilustrando a visão de alguns HDs em RAID 1 (os discos sombreados são aqueles usados para espelhar os dados dos outros HDs)&lt;/em&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  2.1.3 RAID 10 E RAID 01
&lt;/h4&gt;

&lt;p&gt;Agora que já vimos os 2 tipos de RAID acima podemos falar de um outro tipo que é uma combinação dos dois, o RAID 10 ou RAID 1+0. Basicamente se quisermos construir um sistema de armazenamento usando essa combinação de RAIDs temos que ter no mínimo 4 HDs que vão ser usados da seguinte forma: os HDs 1 e 2 vão formar o Grupo 1 e os HDs 3 e 4 o Grupo 2, tanto o Grupo 1 quanto o 2 serão RAID 1, ou seja, os dados que forem escritos no HD 1 serão espelhados no HD 2 e os dados escritos no HD 3 serão espelhados no HD 4, por sua vez esses os dois Grupos vão estar em RAID 0, ou seja, os dados vão ser divididos entre eles, criando os stripes assim como ocorre no RAID 0 e formando uma única unidade lógica de armazenamento. Essa combinação de RAIDs consegue trazer praticamente as vantagens que os dois tipos de RAIDs oferecem, sejam elas a confiança e tolerância a falhas (RAID 1) ou a eficiência de armazenamento e performance (RAID 0), como principal desvantagem temos o custo desta implementação, já que no mínimo serão necessários 4 HDs para realizar essa combinação de RAIDs.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fey3f7j50b78w9qgbgmik.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fey3f7j50b78w9qgbgmik.png" alt="RAID 10" width="325" height="298"&gt;&lt;/a&gt;&lt;em&gt;Imagem ilustrando o funcionamento de um RAID 10&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Muito parecido com o modelo acima temos o RAID 01, onde basicamente é ele é uma inversão do modelo acima, onde temos na base 4 HDs divididos em 2 grupos, cada um em RAID 0 e esses dois grupos estão ligados por um RAID 1. Assim é possível novamente combinar os benefícios de ambos os modelos como comentado acima também, obtendo um certo ganho de performance, mas também de segurança e tolerância a falhas.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Facmkrna6hge1516qg3ln.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Facmkrna6hge1516qg3ln.png" alt="RAOD 01" width="297" height="309"&gt;&lt;/a&gt;&lt;em&gt;Imagem ilustrando o funcionamento de um RAID 01&lt;/em&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  2.1.4 RAID 2
&lt;/h4&gt;

&lt;p&gt;Indo um pouco mais além vamos a um tipo de RAID que com o avanço dos discos rígidos em realizarem correções internas de erros acabou entrando um pouco em desuso e ficando de certa forma obsoleto, estamos falando do RAID 2. Assim como no RAID 0 os dados são fracionados entre os HDs, mas desta vez não na forma convencional na qual estamos acostumados, ou seja, não são fracionados por blocos e sim por bits, onde então cada sequência de bits será armazenada em discos diferentes, aliado a isso ainda temos a utilização da técnica do Código de Hamming (este tipo de código é um código de detecção, isto é, permite não apenas detectar erro de um bit, mas também a localização do bit errado, isso é feito adicionando alguns bits de redundância (paridade) que permite essa detecção) para a criação de um ECC (Error Correcting Code) que será armazenado nos HDs específicos para isso, ou seja, teremos os HDs para dados e os HDs reservados para gravar esses códigos de correção de erros. Quando os dados são gravados nos discos, ele calcula o código ECC para os dados em tempo real e escreve os bits de dados nos discos de dados e escreve o código ECC nos discos de redundância. Quando os dados são lidos nos discos, ele também lê o código ECC correspondente nos discos de redundância e verifica se os dados são consistentes. Se necessário, ele faz as correções apropriadas em tempo real. Esse tipo de RAID possui uma forte tolerância à falha, mas como dito no começo esse tipo de RAID acabou caindo em desuso por conta das correções internas que o próprios HDs realizam hoje e também por conta do seu custo.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7miv7dfkx9gs636l8jjv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7miv7dfkx9gs636l8jjv.png" alt="RAID 2" width="681" height="283"&gt;&lt;/a&gt;&lt;em&gt;Imagem ilustrando o funcionamento de um RAID 2 (neste caso acima temos 4 discos que vão armazenar os dados (0, 1, 2 e 3) e os outros três discos (4, 5 e 6) vão ser aqueles utilizados como discos de paridade)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvc1ha42bhcozl0v18avv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvc1ha42bhcozl0v18avv.png" alt="RAID 2" width="585" height="313"&gt;&lt;/a&gt;&lt;em&gt;Outro exemplo de RAID 2, como dito usando striping a nível de bits. No diagrama acima b1, b2, b3 são bits. E1, E2, E3 são códigos de correção de erros. Você precisa de dois grupos de discos. Um grupo de discos é usado para gravar os dados, outro grupo é usado para gravar os códigos de correção de erros&lt;/em&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  2.1.5 RAID 3
&lt;/h4&gt;

&lt;p&gt;Chegamos ao RAID 3, assim como no RAID 2 e RAID 0 ele faz o separa os dados pelos HDs, mas diferente do RAID 0 que separa por blocos e o RAID 2 que separa por bit, o RAID 3 separa por bytes, além disso temos que ter pelo menos 1 disco de paridade para a recuperação de dados caso necessário. Os discos precisam girar em sincronia para chegar aos dados. Leitura e gravação sequencial terão bom desempenho, como por exemplo, edição de vídeos. Leitura e gravação aleatórias terão pior desempenho, tendo em mente que as frações de um mesmo dado estão espalhadas nas mesmas seções dos vários discos em RAID.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft6gwdw1gpv523tuyw8mc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft6gwdw1gpv523tuyw8mc.png" alt="RAID 3" width="621" height="327"&gt;&lt;/a&gt;&lt;em&gt;Imagem ilustrando o funcionamento de um RAID 3, realizando striping a nível de bytes. No diagrama acima B1, B2, B3 são bytes (discos para os dados). p1, p2, p3 são paridades (disco exclusivo para a paridade).&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuztjr8x3ia1x8q43jc4e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuztjr8x3ia1x8q43jc4e.png" alt="RAID 3" width="528" height="375"&gt;&lt;/a&gt;&lt;em&gt;Outro exemplo de RAID 3, note que novamente temos os discos dedicados a dados (0, 1 e 2) e o disco dedicado à paridade (3).&lt;/em&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  2.1.6 RAID 4
&lt;/h4&gt;

&lt;p&gt;Mais um tipo de RAID agora pode ser apresentado, o RAID 4, que segue um modelo bem parecido com os dois anteriores, RAID 2 e 3. Diferente de seus 2 antecessores ele não realiza a repartição / striping dos dados a nível de bit ou byte e sim igual ao RAID 0, a nível de bloco. Tirando esse fato do striping todo o resto é parecido com o RAID 3, teremos alguns discos dedicados para dados e um disco de paridade reservado. Sempre que os dados são escritos nos discos, o novo dado sobre paridade deve ser recalculado e escrito para o respectivo disco de paridade antes que qualquer requisição de escrita seja realizada. Por causa dessas operações de leitura e escrita, o disco de paridade é o fator limitante do desempenho total do vetor.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fivhnnxy0srfbbavn8yvm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fivhnnxy0srfbbavn8yvm.png" alt="RAID 4" width="595" height="322"&gt;&lt;/a&gt;&lt;em&gt;Imagem que ilustra o funcionamento de um RAID 4, note que o striping é em bloco. No diagrama acima Disk 1, 2 e 3, são para dados e o Disk 4 para paridade.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1i2500pa98w5e873xgos.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1i2500pa98w5e873xgos.png" alt="RAID 4" width="540" height="378"&gt;&lt;/a&gt;&lt;em&gt;Exemplo de RAID 4 bem parecido com o de cima&lt;/em&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  2.1.7 RAID 5
&lt;/h4&gt;

&lt;p&gt;Aqui chegamos a nível de RAID que pretende resolver um pouco do problema do RAID 4 em que o disco de paridade é um leve gargalo. Assim como no RAID 4 o RAID 5 fraciona os dados em blocos, mas diferente do RAID 4 que tem um disco dedicado à paridade o RAID 5 acaba espalhando as informações de paridade por todos os discos no mesmo RAID. Isso é um fator muito bom, pois se um disco falhar outro pode ser colocado no lugar e ser reconstruído através de um processo de rebuild utilizando os dados de paridade nos outros discos. Em contrapartida esse processo não chega a ser um dos mais rápidos possíveis, além disso tem a chance de outro disco falhar nesse processo de recuperação e se perder esses dados de vez.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1tndvrh20ywxij8h25ap.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1tndvrh20ywxij8h25ap.png" alt="RAID 5" width="549" height="385"&gt;&lt;/a&gt;&lt;em&gt;Imagem ilustrando o funcionamento de um RAID 5, note que todos os HDs tem dados guardados (A1, B2 etc), mas tem as partes de paridade (Dp, Cp, Bp e Ap)&lt;/em&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  2.1.8 RAID 50
&lt;/h4&gt;

&lt;p&gt;Assim como tivemos os modelos de RAID que eram basicamente a combinação de outros dois RAIDs, como por exemplo, o RAID 01 e RAID 10, temos também o RAID 50. Esse tipo de RAID como já podemos imaginar é a junção do RAID 5 utilizando paridade em conjunto com o RAID 0 utilizando a segmentação dos dados em blocos e a visualização de um grupo de HDs como uma única unidade lógica de armazenamento. Esse tipo de combinação proporciona uma tolerância a falhas boa por conta do RAID 5, alta taxa de transferência, mas possui um alto custo de manutenção e expansão.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7wduh2un4012ttx7z9dd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7wduh2un4012ttx7z9dd.png" alt="RAID 50" width="800" height="273"&gt;&lt;/a&gt;&lt;em&gt;Imagem ilustrando o funcionamento de um modelo de RAID 50&lt;/em&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  2.1.9 RAID 6
&lt;/h4&gt;

&lt;p&gt;Por fim acabamos tendo um RAID 6, muito parecido com o anterior, o RAID 5, ele tem striping por bloco, os dados de paridade também são distribuídos entre todos os discos, mas diferente do RAID 5, o RAID 6 cria dois blocos de paridade para cada bloco de dados, podendo assim lidar com duas falhas de discos, algo que era mais complicado no RAID acima. Esse tipo de RAID trás ainda mais confiança e tolerância à falhas, pois no RAID 5 se 2 discos falharem a recuperação de dados seria muito mais complicada, agora já no RAID 6 ele consegue suportar a falha em 2 discos de uma maneira muito mais suave, mas tem o mesmo problema que o RAID 5, onde o mesmo por conta do cálculo de paridade acabava atrapalhando um pouco o desempenho de escrita nos discos, o mesmo ocorre no RAID 6 e de forma até mais acentuada pois aqui gravamos os dados de paridade em 2 lugares em vez de 1 só.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flflr8nbuwvr0799x9o8i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flflr8nbuwvr0799x9o8i.png" alt="RAID 6" width="587" height="305"&gt;&lt;/a&gt;&lt;em&gt;Imagem ilustrando o funcionamento de um RAID 6, note que para cada faixa dos discos temos alguns blocos de dados (A, B, C etc.) e alguns blocos de paridade (p1, p2, p3 etc).&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F13i5ysbpgwv0get9xq7u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F13i5ysbpgwv0get9xq7u.png" alt="RAID 6" width="646" height="361"&gt;&lt;/a&gt;&lt;em&gt;Outro exemplo de RAID 6 em funcionamento com 5 discos&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  3 - PROCEDIMENTOS METODOLÓGICOS
&lt;/h2&gt;

&lt;p&gt;Para a fundamentação teórica deste artigo tínhamos como objetivo a coleta de informações principalmente por meio de teses, monografias e artigos acadêmicos, principalmente o artigo original de David A. Patterson, Garth Gibson e Randy H. Katz que trata de forma mais aprofundada o que é RAID, os tipos etc. Os detalhes mais técnicos de nosso artigo foram coletados desses meios citados anteriormente, mas contamos também com a coleta de outros detalhes por meio de blogs, sites de faculdade e vídeos falando sobre RAID e/ou algum assunto que tenha relação com o mesmo. Em resumo, nossa fundamentação se baseia na pesquisa online sobre artigos, teses e outros meios que tratassem do assunto proposto neste artigo.&lt;/p&gt;




&lt;h2&gt;
  
  
  4 - RESULTADOS E DISCUSSÃO
&lt;/h2&gt;

&lt;p&gt;Basicamente o que podemos levar como resultados e para discussão é que RAID é uma ótima maneira de proteger seus dados e/ou ter desempenho na operações de leitura e escrita, apesar de que como vimos algumas opções de RAID tendem a ser mais caras de se implementar por conta de algumas de suas características. Esse tipo de implementação, no caso o RAID de maneira geral, pode ser muito vantajoso para empresas, comércios e muitas outras situações e para alguns casos específicos de usuário comuns, única coisa que deve ser colocada em consideração são as suas necessidades, se você quer desempenho acima de tudo, se você deseja tolerância a falhas e segurança dos dados ou se prefere o meio termo entre isso, essas e outras variáveis devem ser levadas em consideração para se tomar a decisão de qual modelo de RAID é melhor montar para que assim você tenha um uso mais eficiente de armazenamento, custo e que satisfaça as suas necessidades enquanto empresa ou usuário comum.&lt;/p&gt;




&lt;h2&gt;
  
  
  5 - CONCLUSÃO
&lt;/h2&gt;

&lt;p&gt;Com base na pesquisa realizada e nos tópicos apresentados neste artigo acreditamos que o objetivo descrito no começo deste artigo possa ter sido alcançado, isso é, que entendemos os motivos que fizeram o RAID surgem, o que é de o RAID, quais os tipos de RAID que temos atualmente e quais as características de cada um. Podemos entender também que o RAID provavelmente no meio empresarial se torna algo quase que essencial para melhorar a eficiência dos sistemas de armazenamento e principalmente a segurança e tolerância a falhas, sendo essa provavelmente a área que causa maior impacto pois a quantidade de dados importantes que uma empresa armazena é grande e a perda deles por qualquer motivo pode causar grandes problemas, o RAID surge justamente para ajudar nessa questão como já comentado, enquanto que para usuários comuns o uso do RAID se torna mais limitado a pessoas com algumas necessidades específicas e conhecimentos mais aprofundados, não sendo talvez tão presente assim. Pesquisas com foco em entender o uso do RAID, por exemplo, no dia a dia de uma empresa, como também para mensurar a porcentagem de empresas de uma determinada cidade que já tiveram problemas com perda de dados por conta de falhas no HD e o uso de RAID se demonstrou extremamente útil ou até mesmo outros assuntos relacionados ao RAID, seus usos, tipos etc. com certeza serão extremamente úteis para entender ainda melhor esse tipo de assunto.&lt;/p&gt;




&lt;h2&gt;
  
  
  6 - REFERÊNCIAS
&lt;/h2&gt;

&lt;p&gt;PATTERSON, D. A.; GIBSON, G.; KATZ, R. H. A Case for Redundant Arrays of Inexpensive Disks (RAID). [s.l.] University of California - Berkeley, 1987. Disponível em:&lt;a href="https://web.mit.edu/6.033/2015/wwwdocs/papers/Patterson88.pdf" rel="noopener noreferrer"&gt;https://web.mit.edu/6.033/2015/wwwdocs/papers/Patterson88.pdf&lt;/a&gt;. Acesso em: 3 set. 2023&lt;/p&gt;

&lt;p&gt;LEGATTI, E. Descomplicando RAID 01 (0+1) e RAID 10 (1+0). Disponível em: &amp;lt;&lt;a href="https://eduardolegatti.blogspot.com/2008/03/descomplicando-raid-01-01-e-raid-10-10.html" rel="noopener noreferrer"&gt;https://eduardolegatti.blogspot.com/2008/03/descomplicando-raid-01-01-e-raid-10-10.html&lt;/a&gt;&amp;gt;. Acesso em: 3 set. 2023.&lt;/p&gt;

&lt;p&gt;RAID - GTA UFRJ. Disponível em: &amp;lt;&lt;a href="https://www.gta.ufrj.br/grad/07_1/hd/raid.html" rel="noopener noreferrer"&gt;https://www.gta.ufrj.br/grad/07_1/hd/raid.html&lt;/a&gt;&amp;gt;. Acesso em: 3 set. 2023.&lt;/p&gt;

&lt;p&gt;What is mean time between failure? - IBM. Disponível em: &amp;lt;&lt;a href="https://www.ibm.com/topics/mtbf" rel="noopener noreferrer"&gt;https://www.ibm.com/topics/mtbf&lt;/a&gt;&amp;gt;. Acesso em: 3 set. 2023.&lt;/p&gt;

&lt;p&gt;FERREIRA, D. A.; MATAYOSHI, G. Y. Aplicação de RAID em Sistema de Arquivos Distribuídos. Campus Universitário Darcy Ribeiro, Asa Norte, Brasília - DF, Brasil: Universidade de Brasília - Instituto de Ciências Exatas (Departamento de Ciência da Computação), 24 jun. 2016. Disponível em: &lt;a href="https://bdm.unb.br/bitstream/10483/16024/1/2016_DiogoAssisFerreira_GetulioYassuykiMatayoshi_tcc.pdf" rel="noopener noreferrer"&gt;https://bdm.unb.br/bitstream/10483/16024/1/2016_DiogoAssisFerreira_GetulioYassuykiMatayoshi_tcc.pdf&lt;/a&gt;. Acesso em: 3 set. 2023.&lt;/p&gt;

&lt;p&gt;LOBATO, D. C. Proposta de um Ambiente de Simulação e Aprendizado Inteligente para RAID. [s.l.] USP – São Carlos , 2000. Disponível em: &lt;a href="https://www.teses.usp.br/teses/disponiveis/55/55134/tde-26072001-181852/publico/MScDissert.dclobato.pdf" rel="noopener noreferrer"&gt;https://www.teses.usp.br/teses/disponiveis/55/55134/tde-26072001-181852/publico/MScDissert.dclobato.pdf&lt;/a&gt;. Acesso em: 3 set. 2023&lt;/p&gt;

&lt;p&gt;JUNIOR, L. O. M. Organização de Computadores Digitais. [s.d.]. Disponível em: &amp;lt;&lt;a href="https://dcm.ffclrp.usp.br/~murta/OCD/org_8_inf_digital.pdf" rel="noopener noreferrer"&gt;https://dcm.ffclrp.usp.br/~murta/OCD/org_8_inf_digital.pdf&lt;/a&gt;&amp;gt;. Acesso em: 3 set. 2023&lt;/p&gt;

&lt;p&gt;ROSÁRIO, L. G. Trabalhando com RAID (Redundant Array of Independent Disk) – Parte 01. Disponível em: &amp;lt;&lt;a href="https://imasters.com.br/data/trabalhando-com-raid-redundant-array-of-independent-disk-parte-01" rel="noopener noreferrer"&gt;https://imasters.com.br/data/trabalhando-com-raid-redundant-array-of-independent-disk-parte-01&lt;/a&gt;&amp;gt;. Acesso em: 3 set. 2023.&lt;/p&gt;

&lt;p&gt;ALBUQUERQUE, H. et al. Sistemas de Tempo Real - Tolerância a falhas. Disponível em: &lt;a href="https://www.cin.ufpe.br/~jvob/correcao.html#:~:text=C%C3%B3digo%20de%20Hamming&amp;amp;text=O%20limite%20m%C3%A1ximo%20de%20bits,n%C3%BAmero%20de%20bits%20de%20dados" rel="noopener noreferrer"&gt;https://www.cin.ufpe.br/~jvob/correcao.html#:~:text=C%C3%B3digo%20de%20Hamming&amp;amp;text=O%20limite%20m%C3%A1ximo%20de%20bits,n%C3%BAmero%20de%20bits%20de%20dados&lt;/a&gt;. Acesso em: 4 set. 2023.&lt;/p&gt;

&lt;p&gt;Código de Hamming - IME USP. Disponível em: &amp;lt;&lt;a href="https://www.ime.usp.br/~song/mac412/hamming.pdf" rel="noopener noreferrer"&gt;https://www.ime.usp.br/~song/mac412/hamming.pdf&lt;/a&gt;&amp;gt;. Acesso em: 4 set. 2023.&lt;/p&gt;

&lt;p&gt;NATARAJAN, R. RAID 2, RAID 3, RAID 4, RAID 6 Explained with Diagram. Disponível em: &amp;lt;&lt;a href="https://www.thegeekstuff.com/2011/11/raid2-raid3-raid4-raid6/" rel="noopener noreferrer"&gt;https://www.thegeekstuff.com/2011/11/raid2-raid3-raid4-raid6/&lt;/a&gt;&amp;gt;. Acesso em: 4 set. 2023.  &lt;/p&gt;

&lt;p&gt;AKITA, F. Quebrei 3 HDs: Entendendo Armazenamento. Disponível em: &amp;lt;&lt;a href="https://www.youtube.com/watch?v=lxjBgxmDZAI" rel="noopener noreferrer"&gt;https://www.youtube.com/watch?v=lxjBgxmDZAI&lt;/a&gt;&amp;gt;. Acesso em: 7 set. 2023&lt;/p&gt;

</description>
      <category>computerscience</category>
      <category>raid</category>
      <category>programming</category>
      <category>architecture</category>
    </item>
    <item>
      <title>Jornada pelo DevLinks - Rocketseat</title>
      <dc:creator>Luigi Belanda</dc:creator>
      <pubDate>Fri, 20 Jan 2023 13:11:18 +0000</pubDate>
      <link>https://dev.to/luigibelanda/jornada-pelo-devlinks-rocketseat-3jcc</link>
      <guid>https://dev.to/luigibelanda/jornada-pelo-devlinks-rocketseat-3jcc</guid>
      <description>&lt;h2&gt;
  
  
  &lt;strong&gt;📝 Introdução&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Este artigo como objetivo detalhar a minha jornada e experiência pela trilha de desenvolvimento do DevLinks, projeto criado pela &lt;a href="https://www.rocketseat.com.br/" rel="noopener noreferrer"&gt;Rocketseat&lt;/a&gt; com as aulas ministradas pelo Mayk Brito (&lt;a class="mentioned-user" href="https://dev.to/maykbrito"&gt;@maykbrito&lt;/a&gt;) para a criação de uma espécie de Linktree usando conhecimentos básicos de &lt;strong&gt;HTML, CSS e JS&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Durante esse artigo irei acabar passando um pouco por cada módulo da trilha do projeto, comentando sobre os assuntos mais importantes de cada módulo na minha visão e que foram importantes para o projeto e que eu não sabia ou que são válidos serem reforçados.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;🚶‍♂️ Módulo 1 - Primeiros passos&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Neste módulo acabamos sendo apresentados a conceitos básicos sobre o que é Front e Back-end, programas, arquivos, ferramentas que vão ser utilizadas (Visual Studio Code, Git, GitHub, Fronteditor.dev e outras) e suas funções  etc. É algo muito básico mesmo, apenas aulas teóricas com as explicações de cada assunto. &lt;/p&gt;

&lt;p&gt;Normalmente qualquer pessoa com um pouco de estudo em programação já tem uma noção do que é cada uma das coisas que são pontuadas nesse momento, mas acho super válido esses tipos de informações pois o projeto em si não é algo para pessoas intermediárias ou avançadas em programação como outros projetos que a Rocketseat faz, mas algo justamente para iniciantes e são justamente essas pessoas que normalmente tem essas dúvidas mais básicas.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;🧠 Módulo 2 - Aprendendo a aprender&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Depois de sermos apresentados à conceitos básico de programação e outras informações iniciais vamos para essa parte onde é nos apresentada algumas dicas / ideias de como estudar, o que é importante na hora do estudo, técnicas, planejamento, organização etc.&lt;/p&gt;

&lt;p&gt;Se não estou enganado, assim como o módulo acima, não é a primeira vez que ouço falar dessas coisas em conteúdos / projetos da Rocketseat. Novamente, muito pertinente esse tipo de assunto, é claro que para as pessoas iniciantes esse tipo de assunto é mais importante do que para as demais, muitas vezes por não terem uma ideia de como lidar com seus estudos, mas esse assunto pode se encaixar bem também em outras pessoas até mesmo com conhecimentos mais avançados em programação. &lt;/p&gt;

&lt;p&gt;A melhor parte na minha opinião desse módulo foram as técnicas de estudo (Pomodoro, Lozanov, Feymann e Active Recall) e como aprender na prática (gravar vídeos, áudios, escrever artigos (ora ora né) etc).&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;🖥️ Módulo 3 - Iniciando o HTML e CSS&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Aqui já começamos com alguns assuntos mais da área de programação mesmo, como o nome do módulo sugere aqui começamos a ver sobre o HTML e CSS, novamente começando bem da base com ambos os assuntos (o que é o HTML? O que é uma tag HTML? O que é o CSS? Conceitos CSS etc).&lt;/p&gt;

&lt;p&gt;Um dos pontos interessantes (e que sempre me confunde) é a questão do box model, display block e inline. Já passei por muitas complicações tentando deixar elementos um do lado do outro ou embaixo do outro, tudo por não entender direito ou confundir esses assuntos.&lt;/p&gt;

&lt;p&gt;Seguindo, começamos a criar a estrutura básica do HTML, linkar o CSS com o HTML e colocar realmente em prática alguns conceitos. Nesta parte prática a primeira coisa que chamou atenção foi no posicionamento da imagem usando o &lt;code&gt;backgound-position&lt;/code&gt;, se pegarmos e colocarmos apenas o código abaixo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nt"&gt;body&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;background-image&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sx"&gt;url(./assets/bg_mobile_dark.jpg)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;background-repeat&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;no-repeat&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;background-position&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;center&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;background-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;cover&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;O resultado será esse:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqhpjo5nnmwoskoeqqcw5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqhpjo5nnmwoskoeqqcw5.png" alt="Imagem centralizada" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E adicionando ao lado do &lt;code&gt;center&lt;/code&gt; a palavra &lt;code&gt;top&lt;/code&gt; (&lt;code&gt;background-position: top center;&lt;/code&gt;) conseguimos ajustar isso:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fceeqapqw6yhik3902om1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fceeqapqw6yhik3902om1.png" alt="Imagem centralizada" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Isso acontece pois com o &lt;code&gt;top&lt;/code&gt; centralizamos a imagem a partir do topo dela e não do centro.&lt;/p&gt;

&lt;p&gt;Outro ponto interessante foi a questão de agrupar todas as propriedades &lt;code&gt;background&lt;/code&gt;, isso pode ser feito da seguinte forma:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nt"&gt;body&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c"&gt;/* background: color image repeat positions/size */&lt;/span&gt;
  &lt;span class="nl"&gt;background&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sx"&gt;url(./assets/bg_mobile_dark.jpg)&lt;/span&gt; &lt;span class="nb"&gt;no-repeat&lt;/span&gt; &lt;span class="nb"&gt;top&lt;/span&gt; &lt;span class="nb"&gt;center&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="n"&gt;cover&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Teremos o mesmo resultado que antes, só que tudo agrupado dentro do CSS.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;⏩ Módulo 4 - Avançando o HTML e CSS&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Nesta parte como o nome do módulo sugere avançamos em conceitos um pouco mais complicados em HTML e CSS. Usamos a tag &lt;code&gt;footer&lt;/code&gt;, temos questões sobre a propriedade &lt;code&gt;display&lt;/code&gt; , &lt;code&gt;position&lt;/code&gt; etc.&lt;/p&gt;

&lt;p&gt;Um dos grandes pontos dessa parte foram as diversas formas de alinhamento usando CSS comentadas acima (display flex, position relative e absolute etc), apesar de várias vezes ver sobre esse conteúdo é rara as vezes em que não acabo me enrolando ao tentar alinhar elementos dos meus projetos as vezes e com certeza é um conteúdo essencial, facilita muito a realização de projetos pelo menos entender melhor essas questões. Teve também a realização da lógica no CSS da troca do layout de dark mode para light mode e vice-versa, isso me chamou a atenção também.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nd"&gt;:root&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="py"&gt;--text-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;white&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;--bg-url&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sx"&gt;url(./assets/bg_mobile_dark.jpg)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;--stroke-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;rgba&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;255&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;255&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;255&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0.5&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="py"&gt;--surface-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;rgba&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;255&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;255&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;255&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0.05&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="py"&gt;--surface-color-hover&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;rgba&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0.02&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="py"&gt;--hightlight-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;rgba&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;255&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;255&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;255&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0.2&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="py"&gt;--switch-bg-url&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sx"&gt;url(./assets/moon_stars.svg)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nc"&gt;.light&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="py"&gt;--text-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;black&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;--bg-url&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sx"&gt;url(./assets/bg_mobile_light.jpg)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;--stroke-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;rgba&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0.5&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="py"&gt;--surface-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;rgba&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0.05&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="py"&gt;--surface-color-hover&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;rgba&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0.02&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="py"&gt;--hightlight-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;rgba&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0.1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="py"&gt;--switch-bg-url&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sx"&gt;url(./assets/sun.svg)&lt;/span&gt; 
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Eu já tinha conhecimento sobre a criação de variáveis em CSS, mas sempre usando variáveis de cores e não a de imagens como vemos acima, usando url(). Isso foi algo novo pra mim. &lt;/p&gt;

&lt;p&gt;Outra coisa que foi algo "novo" para mim, algo que eu já tinha ouvido falar, mas nunca tinha usado praticamente é a questão de &lt;code&gt;transform&lt;/code&gt;, &lt;code&gt;translateX e Y&lt;/code&gt;, &lt;code&gt;z-index&lt;/code&gt; etc. Essas coisas acabam entrando na questão de alinhamento com CSS, mas vai um pouco além, no caso do projeto em uma parte dele essas propriedades são usadas para fazer a mudança de lado do icone de dark / light mode, fazendo ele ficar na esquerda ou direita dependendo do modo em que o site está.&lt;/p&gt;

&lt;p&gt;Aqui o código em questão que eu comentei acima que faz o ícone se reposicionar:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nf"&gt;#switch&lt;/span&gt; &lt;span class="nt"&gt;button&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;32px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;32px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="nl"&gt;background&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;white&lt;/span&gt; &lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--switch-bg-url&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nb"&gt;no-repeat&lt;/span&gt; &lt;span class="nb"&gt;center&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="nl"&gt;border&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;border-radius&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;50%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="nl"&gt;position&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;absolute&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;z-index&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;top&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;50%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;left&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;translateY&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;-50%&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nc"&gt;.light&lt;/span&gt; &lt;span class="nf"&gt;#switch&lt;/span&gt; &lt;span class="nt"&gt;button&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;right&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;left&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;initial&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  &lt;strong&gt;Módulo 5 - 🧠 Javascript&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Aqui já partimos para um dos últimos módulos do curso. Neste momento é apresentando aos iniciantes o que é um algoritmo, lógica de programação e sintaxe, somos introduzidos ao JS (vars, funções, objetos etc).&lt;/p&gt;

&lt;p&gt;Depois dessa introdução iniciamos colocando um pouco mais de lógica em nosso projeto, neste caso adicionamos um código que irá verificar se existe alguma &lt;code&gt;class light&lt;/code&gt; em nosso &lt;code&gt;document&lt;/code&gt; e abaixo podemos entender melhor.&lt;/p&gt;

&lt;p&gt;Primeiro adicionamos essa função toggleMode() no nosso switch que muda de dark mode para light mode, ai clicarmos nesse switch ele chama a função citada por conta do atributo &lt;code&gt;onclick&lt;/code&gt;.&lt;br&gt;
&lt;code&gt;&amp;lt;div id="switch" onclick="toggleMode()"&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Depois em nosso arquivo JS temos o seguinte:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;toggleMode&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// document = documento html&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;html&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;documentElement&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="cm"&gt;/*
  // se ao clicarmos no switch já existir a tag LIGHT no nosso documento HTML
  // tiramos a tag do documento e quando clicarmos de novo, adicionamos ela. Isso se repete
  if (html.classList.contains("light")) {
    // se já tiver a tag LIGHT ele remove ela
    html.classList.remove("light");
  } else {
    // se não tiver, ele adiciona ela
    html.classList.add("light");
  }
  */&lt;/span&gt;

  &lt;span class="c1"&gt;// todo o codigo acima pode ser substituido por apenas essa linha, a funcionalidade sera a mesma&lt;/span&gt;
  &lt;span class="nx"&gt;html&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;classList&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;toggle&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;light&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Essa é lógica responsável por adicionar ou tirar a class light em nosso documento HTML para conseguirmos mudar o tema do nosso site.&lt;/p&gt;

&lt;p&gt;Além de mudar o tema do nosso site, com base nos temas temos que mudar a nossa foto de avatar, isso será feito pelo JS também.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// mudando a imagem conforme o modo do app (dark / light)&lt;/span&gt;
  &lt;span class="c1"&gt;// pegamos onde nossa tag img, com o id #profile&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;img&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;querySelector&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#profile img&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;html&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;classList&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;contains&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;light&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// setAttribute irá mudar o src da nossa tag img e o alt&lt;/span&gt;
    &lt;span class="nx"&gt;img&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setAttribute&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;src&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;./assets/avatar_light.png&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nx"&gt;img&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setAttribute&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;alt&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Foto de Luigi Belanda acendendo uma vela, com uma capa da Ordem DeMolay&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;img&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setAttribute&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;src&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;./assets/avatar_dark.png&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nx"&gt;img&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setAttribute&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;alt&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Foto de Luigi Belanda segurando a bandeira nacional, usando a capa da Ordem DeMolay e também seu óculos pessoal. Ao fundo aparecem outras pessoas e um pouco na frente do Luigi uma vela acessa&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Com esse código conseguimos verificar se no nosso documento HTML temos a &lt;code&gt;class light&lt;/code&gt;, depois disso fazemos um &lt;code&gt;if&lt;/code&gt; e com base no que retornar além de mudarmos a imagem mudamos também a propriedade &lt;code&gt;alt&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Esse módulo foi mais curto, mas ao mesmo tempo um pouco mais dinâmico. As partes mais interessantes foi descobrir a questão do &lt;code&gt;html.classList.toggle("light");&lt;/code&gt;, esse código como dito acima substituiu uma parte boa de código fazendo a mesma função. Outra coisa é a parte de mudarmos a nossa imagem com base no tema atual e também mudarmos o &lt;code&gt;alt&lt;/code&gt; dela, isso era algo que eu não sabia que era possível, muitos menos que era algo simples até.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;Módulo 6 - 🐙 Git e Github&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Como último módulo vemos umas das principais ferramentas para quem é da área de programação - Git e Github, principalmente o Git no caso.&lt;/p&gt;

&lt;p&gt;Somos apresentado aos comandos mais básicos do Git além de entender um pouco qual o seu objetivo e como ele funciona, passando pela etapas até o commit de uma nova alteração.&lt;/p&gt;

&lt;p&gt;Como última partes práticas somos apresentados ao &lt;code&gt;README.md&lt;/code&gt; do nosso repositório criado e aprendemos sobre &lt;code&gt;media queries&lt;/code&gt; e &lt;code&gt;keyframes&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;No caso das &lt;code&gt;media queries&lt;/code&gt; usamos elas para conseguir criar regras para nosso site se comportar de maneiras diferentes com base em uma largura ou altura de tela, por exemplo. Assim conseguimos ajustar nosso layout para se adequar a diferentes dispositivos.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="c"&gt;/* media queries */&lt;/span&gt;
&lt;span class="k"&gt;@media&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;min-width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;700px&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nd"&gt;:root&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="py"&gt;--bg-url&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sx"&gt;url(./assets/bg_desktop_dark.jpg)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="nc"&gt;.light&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="py"&gt;--bg-url&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sx"&gt;url(./assets/bg_desktop_light.jpg)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No exemplo acima caso a largura da tela for no mínimo 700px ele usa outra imagem para para o background, aqui informamos quais tags / propriedades queremos mudar com base na regra de largura comentada acima.&lt;/p&gt;

&lt;p&gt;Sobre o &lt;code&gt;keyframes&lt;/code&gt; usamos para fazer animações em nosso site.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="c"&gt;/* animation */&lt;/span&gt;
&lt;span class="k"&gt;@keyframes&lt;/span&gt; &lt;span class="n"&gt;slide-in&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c"&gt;/* começa em left 0 */&lt;/span&gt;
  &lt;span class="nt"&gt;from&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;left&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="c"&gt;/* termina em left 0 */&lt;/span&gt;
  &lt;span class="nt"&gt;to&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;left&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;50%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;@keyframes&lt;/span&gt; &lt;span class="n"&gt;slide-back&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nt"&gt;from&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;left&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;50%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="nt"&gt;to&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;left&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Aqui criamos as animações do switch ao clicarmos para realizar a mudança de tema do nosso site, fazendo o switch deslizar mais suavemente, ai para usarmos essa animação podemos fazer isso:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.light&lt;/span&gt; &lt;span class="nf"&gt;#switch&lt;/span&gt; &lt;span class="nt"&gt;button&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c"&gt;/* chamamos a animação criada, definimos o seu tempo e colocamos o "forwards" para manter as props de quando a animação terminar */&lt;/span&gt;
  &lt;span class="nl"&gt;animation&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;slide-in&lt;/span&gt; &lt;span class="m"&gt;0.4s&lt;/span&gt; &lt;span class="n"&gt;forwards&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Sobre ambas as coisas comentadas (keyframes e media queries) eu já sabia sobre isso, o keyframes nunca usei muito, mas com certeza é algo que faz muita diferença no site, fazendo assim animações que trazem um detalhe no projeto.&lt;/p&gt;

&lt;p&gt;Por fim, aprendemos a como usar o Github Pages e subir nosso projeto online para podermos usar ele.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://luigibelanda.github.io/devlinks/" rel="noopener noreferrer"&gt;https://luigibelanda.github.io/devlinks/&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;🏁 Final&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Apesar de ser um conteúdo básico sobre HTML, CSS, JS, Git e Github consegui aprender algumas coisas interessantes até, como foi comentado no decorrer deste artigo.&lt;/p&gt;

&lt;p&gt;As aulas são todos bem explicadas, seguindo um bom padrão da Rocketseat neste aspecto.&lt;/p&gt;

&lt;p&gt;Um projeto super válido pra quem é iniciante e bom pra praticar algumas coisas, mesmo que básicas!&lt;/p&gt;

</description>
      <category>html</category>
      <category>css</category>
      <category>javascript</category>
      <category>rocketseat</category>
    </item>
    <item>
      <title>Customer Relationship Management (CRM)</title>
      <dc:creator>Luigi Belanda</dc:creator>
      <pubDate>Tue, 31 May 2022 14:32:22 +0000</pubDate>
      <link>https://dev.to/luigibelanda/customer-relationship-management-crm-e0h</link>
      <guid>https://dev.to/luigibelanda/customer-relationship-management-crm-e0h</guid>
      <description>&lt;h2&gt;
  
  
  ⭐ Introdução
&lt;/h2&gt;

&lt;p&gt;Este artigo tem como objetivo mostrar diversos detalhes sobre CRM, essa pesquisa inicialmente foi feita para um trabalho da minha faculdade &lt;strong&gt;(FATEC de Taquaritinga)&lt;/strong&gt;, a matéria para qual essa pesquisa se destinava no caso era &lt;strong&gt;Sistemas de Informação&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Neste artigo você terá os seguintes tópicos&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;O que é CRM?&lt;/li&gt;
&lt;li&gt;Tipos de CRM&lt;/li&gt;
&lt;li&gt;Características gerais dos sistemas CRM e suas funções&lt;/li&gt;
&lt;li&gt;Diferença entre CRM e Marketing de massa&lt;/li&gt;
&lt;li&gt;Alinhamento entre CRM e Estratégia Organizacional&lt;/li&gt;
&lt;li&gt;Metodologia e etapas para implantação de um CRM&lt;/li&gt;
&lt;li&gt;Vantagens e dificuldades no uso de um CRM&lt;/li&gt;
&lt;li&gt;Caso de sucesso no uso de CRM&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔎 O que é Customer Relationship Management (CRM)?
&lt;/h2&gt;

&lt;p&gt;Você pode se perguntar, como podemos entender o que é CRM? É uma tecnologia ou é uma estratégia? O surgimento do conceito de CRM (Customer Relationship Management) ou como podemos ver em alguns lugares “Gestão de Relacionamento com o Cliente”, se dá por volta da década de 1980 e 1990 e antes mesmo de entender CRM como uma tecnologia, como uma estratégia de negócio ou como qualquer outra coisa temos que entender seu conceito básico, entender sua compreensão teórica.&lt;/p&gt;

&lt;p&gt;Desde já uma coisa que podemos deixar nítida é que o CRM por estar muito ligado de como a relação com o cliente é planejada e executada muitas empresas podem entender que esta é somente uma função ou um assunto específico da área, departamento ou funcionários de marketing, mas é justamente ao contrário, o CRM é algo bem mais amplo, envolvendo diversos departamentos e processos da empresa, tentando então integrar a grande maioria das áreas da empresa e colocando várias informações dos clientes a disposição em uma base de dados de onde poderão ser gerados relatórios de tendências dos clientes, índices de satisfação etc.&lt;/p&gt;

&lt;p&gt;Outro ponto que podemos deixar claro é que muitas empresas se enganam ao achar que quanto mais complexa a tecnologia mais benefícios ela trará para a empresa, isso de certa forma é uma ideia equivocada, até por que no caso do CRM ele pode ir desde de soluções mais simples para negócios menores, mas que mesmo assim supram as necessidades do negócio, como também termos soluções bem mais robustas e elaboradas para negócios de maior porte e que também vão suprir as necessidade da empresa.&lt;/p&gt;

&lt;p&gt;Sendo assim, algumas das fontes utilizadas nesta pesquisa, a Revista de Administração Mackenzie (MARKETING DE RELACIONAMENTO (CRM): ESTADO DA ARTE, REVISÃO BIBLIOMÉTRICA DA PRODUÇÃO NACIONAL DE PRIMEIRA LINHA, INSTITUCIONALIZAÇÃO DA PESQUISA NO BRASIL E AGENDA DE PESQUISA, tópico 2) e também a dissertação de mestrado de Sandra Raquel Ribeiro Cunha (CRM – CUSTOMER RELATIONSHIP MANAGEMENT - UMA ESTRATÉGIA, Estudo de Caso Osvaldo Matos - Faculdade de Economia da Universidade de Porto, tópico 2.1), abordam a visão de diversos autores, como por exemplo dois que serão citados a seguir, Ronald Swift (2001) e Adrian Payne (2006), sobre o que é CRM.&lt;/p&gt;

&lt;p&gt;Swift defende sua ideia da seguinte forma: "CRM é uma abordagem meramente empresarial para entender e influenciar o comportamento dos clientes através de comunicações significativas; para melhorar, a aquisição de clientes, a retenção de clientes, a fidelização e a rentabilidade destes”.&lt;/p&gt;

&lt;p&gt;Payne na sua visão enxerga o CRM da seguinte forma: “CRM consiste em uma abordagem estratégica holística para gerenciar o relacionamento com clientes, a fim de criar valor para o acionista”.&lt;/p&gt;

&lt;p&gt;Se formos analisar todas as definições praticamente giram em torno de algo em comum, o cliente, que neste caso é o que pode nortear as decisões da empresa por conta dos dados que serão coletados do mesmo e assim como diversas tecnologias e ideias que surgiram alinhadas com a área da TI (tecnologia da informação) que visam aumentar a eficiência humana o CRM não é diferente, os sistemas CRM trazem diversas vantagens e facilidades para a empresa, mas então como podemos resumir o que é CRM depois de tudo que vimos? &lt;/p&gt;

&lt;p&gt;Podemos resumir que o CRM então como um conjunto de ideias, conceitos, estratégias, práticas, tecnologias, políticas de gestão, conexão com o público etc. que visam entender as vontades e tendências dos clientes da empresa, fidelizar o cliente, pois vale lembrar que o objetivo principal não é vender, é continuar vendendo, e assim traçar estratégias, métodos e processos para aumentar, por exemplo, as vendas dos produtos, aperfeiçoar ou criar novos produtos com base no feedback dos clientes, melhorar a comunicação ou também outros pontos da empresa e muito mais.&lt;/p&gt;

&lt;p&gt;Na era de negócios em que vivemos qualquer diferencial pode ser uma vantagem competitiva em relação a seus concorrentes, isso por que os clientes hoje podem ter uma variedade imensa de produtos e serviços a sua disposição quando quiserem (uso de celular para adquirir algum produto ou serviço) por conta dos avanços tecnológicos que tivemos nas últimas décadas, sendo assim é necessário satisfazê-los e claro até mesmo fidelizá-los para continuarem comprando seu produto ou adquirindo seu serviço, ou seja, você tem que entender muito bem seu cliente que nada mais é que a base de seu negócio, todos esses esforços da empresa em se relacionar e manter um vínculo mais ativo e duradouro com os clientes se reverte lá na frente em uma enorme vantagem competitiva.&lt;/p&gt;




&lt;h2&gt;
  
  
  🖥️ Tipos de CRM
&lt;/h2&gt;

&lt;p&gt;Agora que já sabemos na base teórica o que é um CRM podemos entender suas variações, seus tipos. Como vemos nas dissertação de mestrado de Sandra Raquel Ribeiro Cunha (tópico 4), já comentada anteriormente em outras partes desta pesquisa e a dissertação de doutorado de Maria Isabel Franco Barretto (UM MODELO PARA PLANEJAR, IMPLEMENTAR E ACOMPANHAR A ESTRATÉGIA DE CRM (CUSTOMER RELATIONSHIP MANAGEMENT) - Escola de Engenharia de São Carlos da Universidade de São Paulo, tópico 2.3) estas apresentam a visão de alguns autores, como por exemplo Paul Greenberg, Yuki, Peppers e Rogers e muitos outros que serão citados sobre como estes definem os tipos principais de CRM e suas visões sobre eles, no geral podemos ver três tipos principais: Operacional, Analítico e o Colaborativo. Após esses três tipos será apresentado também mais dois tipos, que no caso se trata do CRM Estratégico e depois o eCRM ou E-CRM.&lt;/p&gt;

&lt;p&gt;O CRM Operacional são aqueles que têm algum tipo de relação com algumas operações, neste caso, operações da própria empresa ou em outras palavras operações empresariais, que podem ter os mais variados objetivos, como por exemplo: atendimento ao cliente, processo de serviço de reclamação, gerenciamento de pedidos, estoque, cobrança, e automação e gerenciamento de vendas, automação do marketing e muitas outras tarefas, podemos entender então que o CRM Operacional se baseia muito em aplicativos, sistemas e/ou processos voltados para o cliente em especial, podemos entender que este tipo de CRM fica responsável então pelo centro de contato e à gerência de contatos com os clientes, além é claro de tornar os processos mais eficientes, um elemento que pode estar no espectro do CRM Operacional são os tradicionais Call Centers (centros de atendimento) e uma das vantagens deste tipo de CRM é que com as informações que por ventura sejam coletadas e armazenadas sobre cada cliente a personalização do relacionamento com o mesmo se torna um diferencial competitivo para a empresa, note que basicamente este tipo de CRM tem como foco aplicativos e/ou sistemas voltados ao cliente, uma das características segundo Paul Greenberg, Pepper e Rogers é que esse tipo de CRM se assemelha muito ao sistemas ERP, pois envolvem serviços aos consumidor, gerenciamento de pedidos e tudo que já foi comentado anteriormente, segundo eles ainda este tipo de CRM tem uma vantagem que é a possibilidade de integração com aplicativos destinados a funções de finanças e recursos humano de um sistema ERP.&lt;/p&gt;

&lt;p&gt;Agora o CRM Analítico tem como talvez sua principal característica justamente analisar de forma geral o cliente, capturando, armazenando, processando, interpretando e apresentando essas dados aos setores necessários da empresa, um ponto interessante é que este tipo de CRM está extremamente ligado ao anterior pois ele ajuda a reunir todos os dados gerados das operações e de outras fontes em um único lugar normalmente, podemos compreender então que em grande parte este tipo de CRM nos dará as informações necessárias para aperfeiçoarmos algum processo da empresa, algum produto e muito mais, ou seja, por meio dos dados coletados e com as ferramentas analíticas deste tipo de CRM podemos produzir análises das mais variadas formas (demográficas, financeiras, geográficas etc.) e assim traçar o perfil do cliente, modelos de comportamentos, níveis de satisfação e outras informações importantes, note que este tipo de CRM é praticamente a fonte do conhecimento, como podemos ver na dissertação de doutorado de Maria Isabel Franco Barretto, citada anteriormente, segundo Yuki, Peppers e Rogers na visão deles o CRM Analítico é a fonte de toda inteligência do processo, ou melhor dizendo, é a fonte das informações necessárias para os processos melhorarem e também é usado para gerar conhecimento sobre o cliente na organização, outro ponto diferente do CRM anterior é que este focava muito nos processos serem eficientes para o cliente enquanto este busca as características individuais de cada cliente, que alinhado com o CRM anterior podemos chegar a uma personalização de atendimento ainda melhor, podemos destacar a visão de Paul Greenberg onde o mesmo diz que uma das vantagens desse tipo de CRM é a capacidade de armazenar e personalizar  a utilização dos dados, basicamente, fazer diferentes análises de acordo com as necessidades.&lt;/p&gt;

&lt;p&gt;Temos também o CRM Colaborativo, ou como podemos encontrar em alguns lugares cCRM (Collaborative CRM), este tipo de CRM fica com a parte de comunicação, coordenação e colaboração necessária entre os vendedores e clientes, atuando praticamente como um centro de comunicações, tendo noção de todos os pontos de contato entre empresa e cliente e ainda englobando todos esses pontos de contato, promovendo assim ainda a colaboração entre todas as áreas da empresa para que trabalhem de maneira integrada. Segundo Teo, Devadoss e Pan, onde encontramos suas visões na dissertação de doutorado da Maria Isabel Franco Barretto, este tipo de CRM reflete muito bem como a empresa entende a relação do cliente com as funções do negócio, servindo como base ainda para a relação de ambos. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Firv9q8s33nvkitjlmmzw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Firv9q8s33nvkitjlmmzw.png" alt="Tipos de CRM" width="606" height="415"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Figura 1: CRM Operacional, analítico e colaborativo&lt;br&gt;
Fonte: Tese de doutorado de Alessandra Schweitzer - Pressupostos para o Gerenciamento de Soluções de CRM (Customer Relationship Management) - Meta Group (2000)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Agora veremos o que é um CRM estratégico. Esse tipo de CRM é definido pela combinação de funções operacionais e analíticas, além da colaboração em equipe. Analisa a competitividade de mercado de uma empresa, bem como todos os agentes internos e externos que possam impactar os resultados da organização. Assim, sugere a melhor forma de integrar esses dados para desenvolver um plano mais estratégico capaz de mobilizar recursos para atingir os objetivos da empresa.&lt;/p&gt;

&lt;p&gt;Podemos dizer que com este tipo de CRM também é possível ter uma visão geral e, ao mesmo tempo, uma visão cirúrgica do processo de vendas, permitindo a detecção de erros e erros ao longo da operação.&lt;/p&gt;

&lt;p&gt;Por fim, atualmente por conta de toda a questão da Internet / Web, sites e outros meios digitais por exemplo, podemos encontrar ainda o conceito de eCRM ou E-CRM (Electronic Customer Relationship Management), a internet proporciona a entrega das funções dos tipos de CRM anteriores, mas desta vez por meio da Web, sendo assim os Websites se tornam algo fundamental para o eCRM, ou seja, segundo Paul Greenberg (2001) temos a capacidade de interagir e administrar o cliente via Web / Internet, ou até mesmo, do cliente fazer sua autogerência on-line (Isso significa que ele mesmo pode ir no site da empresa e lá buscar os meios necessários para resolver seus problemas sozinho de forma simples e rápida sem precisar entrar em contato necessariamente com a empresa, seja por telefone, email ou qualquer outro meio de contato, dando também a possibilidade do cliente escolher na sua opinião melhor canal de comunicação ou meio de solução dos seus problemas), para o autor citado essa é a diferença entre CRM e E-CRM. Algumas vantagens e/ou características do E-CRM são por exemplo, atendimentos mais personalizáveis e novidades implementadas mais rapidamente, pesquisa fácil por parte do usuário por soluções ou outras coisas, proteção por meio de senhas nos sites e apps, chat e emails automáticos, navegação simples e livre pelo site para a busca de informações etc.&lt;/p&gt;




&lt;h2&gt;
  
  
  🕵🏻‍♂️ Características gerais do CRM e suas funções
&lt;/h2&gt;

&lt;p&gt;Agora que já entendemos na base teórica o que é CRM e quais os seus tipos podemos partir para suas características gerais e claro, suas principais funções, alguns desses pontos já até foram comentados nos tópicos anteriores, mas agora daremos mais atenção a eles.&lt;/p&gt;

&lt;p&gt;A dissertação de mestrado de Sandra Raquel Ribeiro Cunha (CRM – CUSTOMER RELATIONSHIP MANAGEMENT - UMA ESTRATÉGIA, Estudo de Caso Osvaldo Matos - Faculdade de Economia da Universidade de Porto, página 6) nos mostra em um dos momentos a visão de Hall, J. (2004) do que na visão do mesmo normalmente constitui um CRM, sabendo disso e acompanhando o raciocínio podemos ver que um CRM vai ter normalmente um Banco de Dados (BD), servindo é claro para armazenar os dados dos clientes, praticamente como uma central de informações, depois temos a parte de operação do Data Warehouse ou como podemos ver em português, Armazém de Dados, temos também as ferramentas analíticas e operacionais de Data Mining (processos que permitem explorar uma grande quantidade de dados), servindo para gerar informações mais detalhadas e relatórios com base nos dados obtidos dos clientes e por fim uma comunicação das informações para os vários stakeholders (indivíduos ou organizações impactados por ações de sua empresa), servindo para haver uma clareza e transparência na informação recolhida. Esta é a primeira visão que é nos apresentada e que podemos já levar como base para entender um pouco mais o assunto, nessa visão, entendemos então que CRM se baseia em duas grandes áreas, software e dados.&lt;/p&gt;

&lt;p&gt;Logo depois, na dissertação de mestrado de Sandra Raquel Ribeiro Cunha é nos apresentado a visão de Cherry Tree &amp;amp; Co (2000) sobre o que na visão deles constitui um CRM, eles dividem essas questão em três aspectos, sendo eles: Marketing ou como podemos encontrar em alguns lugares Marketing Automation, sendo uma área com ferramentas e/ou aplicativos para facilitar ou auxiliar a gestão e execução de campanhas de marketing da empresa, objetivar e alocar recursos no mercado alvo com maior chance de retorno financeiro para a empresa, selecionamento do melhor meio de contato com o cliente e muito mais.&lt;/p&gt;

&lt;p&gt;Como segundo aspecto temos à Força de Vendas ou Sales Force Automation, esta área tem como principal função trabalhar na administração e otimização das vendas da empresa, tendo ainda como foco o aumento da produtividade que pode se dar na visão dos autores já citados por meio de contratos, gera propostas de produtos/serviço e muito mais, tudo isso é realizado normalmente por um conjunto de softwares, outro ponto interessante é que aqui entra a integração de algumas áreas da empresa, como por exemplo, a própria área de vendas, escritório, a base de dados dos clientes etc.&lt;/p&gt;

&lt;p&gt;Por último temos o terceiro aspecto, este está relacionado com o Suporte e Serviço ao Cliente ou também Customer Service &amp;amp; Support, aqui podemos encontrar help desks (serviços de apoio a usuários para suporte e resolução de problemas) automatizados e call centers, estes dois servem para principalmente documentar as interações do cliente, isso vai para a base de dados do CRM, a fim de entender cada vez mais como interagir com o cliente e entender o que ele normalmente busca ou está buscando no momento, o objetivo disso é se reverter em ações e outras coisas que possam aumentar a satisfação do cliente.&lt;/p&gt;

&lt;p&gt;Está última visão chega a ser um pouco diferente da primeira, note que a primeira como até comentado se baseia muito na ideia do CRM com relação a software e dados, essa outra visão leva a entender que com os dados coletados e com a ajuda de softwares a empresa consegue gerar idéias / estratégias a fim de melhorar algum ponto necessário, entra aí a ideia de CRM como estratégia, sendo eficaz principalmente nos processos da organização, antes o que acabávamos vendo era a ideia de CRM como uma tecnologia, um sistema, um software etc. agora entramos já na ideia do CRM como uma estratégia de negócio, que como já dito, entra principalmente com a relação dos processos da organização e muda um pouco como podemos enxergar sua estrutura  e características gerais. &lt;/p&gt;

&lt;p&gt;Para entendermos melhor essa questão do CRM como estratégia iremos continuar ainda usando a dissertação de mestrado de Sandra Raquel Ribeiro Cunha, já citada anteriormente neste tópico, na página oito da dissertação encontramos na visão de Bryan Foss &amp;amp; Merlin Stone (2002) quais são os componentes / características de uma estratégia de CRM, como primeira parte temos a questão relacionada a visão da organização, de modo geral esse componente se refere a empresa entender o que ela pretende alcançar, quais as suas metas e objetivos para o próximo semestre, para o próximo ano ou para qualquer período de tempo.&lt;/p&gt;

&lt;p&gt;Prosseguindo temos a proposta de valor, isso representa aquilo que a empresa apresenta para o cliente, muitas vezes com base no conhecimento que tem sobre o mesmo para assim suprir talvez suas necessidades ou expectativas, sendo o diferencial do negócio essa proposta de valor.&lt;/p&gt;

&lt;p&gt;Como terceiro componente é nos apresentado o Know-How, este se refere principalmente a obtenção de conhecimentos, que como vimos até mesmo no item anterior é algo necessário para a empresa, aqui podemos ir um pouco além das informações somente do cliente e termos noção também sobre o negócio da organização, das tecnologias utilizadas e muito mais.&lt;/p&gt;

&lt;p&gt;Por fim temos a parte do plano de implementação, esse componente trata da elaboração justamente de um plano para a definição de um rumo para a empresa por exemplo, sabendo para onde a empresa deve ir, quais passos ela deve seguir e até mesmo acrescentar mais detalhes a esse plano, como por exemplo, como determinada situação será realizada, quem será o responsável etc.&lt;/p&gt;

&lt;p&gt;De tudo que vimos, desde das diversas visões de autores citadas anteriormente até a ideia de CRM como tecnologia e CRM como estratégia se assim podemos dizer, note que algo está presente em tudo que foi comentado ou se não na maioria das vezes essas questão aparece, que é o cliente, a principal característica do CRM é entender e colocar o cliente como o centro da organização, sendo o componente mais fundamental se não um dos mais fundamentais, além é claro de termos outros componentes como as pessoas, processos e procedimentos da organização, tecnologia etc.&lt;/p&gt;

&lt;p&gt;Entendendo agora quais as características de um CRM e seus componentes tanto na visão do CRM como software ou como estratégia, podemos seguir adiante a falar agora quais as funcionalidades do CRM, levando em conta sua perspectiva como software.&lt;/p&gt;

&lt;p&gt;Se lembrarmos do tópico anterior deste trabalho onde falamos quais os tipos de CRM lá já detalhamos algumas funções, como por exemplo: automação e gerenciamento de processos da empresa para o aumento da eficiência desses processos, coleta, processamento e armazenagem de dados dos clientes, geração de análises, modelos de previsão, relatórios, facilitar relação cliente-empresa, integração dos pontos de contato, ajuda na troca de informações, podemos destacar também o Marketing Automation, Sales Force Automation e muito mais. Essas no geral são algumas funções do CRM com base na ideia do mesmo como software.&lt;/p&gt;

&lt;p&gt;De forma resumida conseguimos dividir as funções do CRM nos processos da organização em três grande áreas, a primeira é OPERACIONALIZAR TODAS AS INFORMAÇÕES (aqui temos uma grande presença do CRM Operacional, essa parte serve para facilitar a comunicação e transmissão de informações entre cliente e empresa, aumenta por exemplo a facilidade em transações de negócios etc.), a segunda funcionalidade geral é COLABORAR, ou seja, ajudar em alguns processos da empresa, permitir a troca de informações entre cliente e empresa, transmissão de informações, gerência dos contatos e muito mais e como última funcionalidade geral temos a questão de ANALISAR, com os dados coletados do cliente a organização pode usar isso para gerar conhecimento sobre o cliente (o que ele quer, o que gostou, o que não gostou etc.) e com isso gerar estratégias de negócio para alcançar metas de vendas ou coisas do tipo, aqui surge por exemplo o CRM Analítico.&lt;/p&gt;




&lt;h2&gt;
  
  
  📝 Diferença entre CRM e Marketing de Massa
&lt;/h2&gt;

&lt;p&gt;Para entendermos a diferença entre CRM e Marketing de massa temos que entender o que é realmente o Marketing de massa, pois nos tópicos anteriores já conseguimos explicar o que é CRM.&lt;/p&gt;

&lt;p&gt;Na monografia de Luciana Assunção Xavier Alves (SEGMENTAÇÃO DE MERCADO COMO ESTRATÉGIA DE MARKETING: CASO GVT - UNICEUB, 2006) no tópico 2.3.1 encontramos a visão de Philip Kotler (2005) sobre o que é Marketing de massa, segundo ele, marketing de massa geralmente é difundido para produtos usados por uma quantidade razoável de pessoas, como o sabonete, sopa, geladeiras, carros, entre outros. Com o aumento da grande concorrência, o mercado tem obrigado as empresas a serem mais seletivas e marcar alvos mais definidos, utilizando-se de diferentes estratégias de mercado. Mas, ainda existem produtos e circunstâncias que o marketing de massa permanece eficaz como a Coca - Cola, o Mc Donald’s e a pasta de dente Crest.&lt;/p&gt;

&lt;p&gt;Podemos usar como exemplo para entendermos o Marketing de massa uma publicação de Esmeralda Rizzo (Mestra e Doutora em Administração de Empresas na Universidade Presbiteriana Mackenzie – Faculdades de Comunicação e Artes), no caso a publicação se chama “Uma Análise Comparativa entre o Marketing de Massa e o “One to One” Marketing, no Cenário de Empresas Competitivas”, no tópico 2 desta publicação somos apresentados ao assunto, podemos entender então que principalmente depois da revolução industrial o número de produtos que as empresas conseguiam produzir aumentou absurdamente e com isso elas precisavam de mais clientes, para conseguir o que queriam as empresas utilizavam a propaganda em massa visando convencer o máximo de clientes possíveis, fazia promoções e muito mais, com isso a sua marca sendo divulgada intensamente, os revendedores podendo fazer parcerias com as empresas, tendo estoques de seus produtos em suas lojas e ainda expondo os produtos para os clientes etc. esta organização tinha um grande holofote para si, ou seja, ocorria a oferta de um produto que agradava uma grande parte do mercado, se apoiavam nos revendedores para divulgar esse produto e alcançar os clientes necessários, faziam grandes campanhas publicitárias, preços acessíveis etc.&lt;/p&gt;

&lt;p&gt;Podemos entender desde já que o Marketing de massa então busca fazer justamente a propaganda de um produto que tenha um alto número de consumidores ou tentar alcançar esse número grande de consumidores, sem focar especificamente em um setor do mercado ou algo do tipo, em outras palavras, a propaganda é feita tentando atingir o máximo de pessoas possíveis.&lt;/p&gt;

&lt;p&gt;Agora que já entendemos o que é CRM e Marketing de massa podemos buscar ver quais são as suas diferenças, a diferença mais visível e principal é que enquanto uma estratégia tenta atingir o maior número de pessoas possíveis, tentando buscar um produto que seja aceitável para diversas pessoas e suas campanhas publicitárias buscam atrair novos clientes dos mais variados segmentos do mercado (Marketing de massa) a outra traça uma estratégia e serve para buscar entender quem são os seus clientes, entender seus gostos e interesses e aí sim gerar campanhas de publicidade com base neste tipo de conhecimento, ou seja, campanhas com alvos claros e não de forma pulverizada, igual vemos na estratégia anterior, tendo como foco ainda fidelizar seus consumidores já existentes (CRM).&lt;/p&gt;




&lt;h2&gt;
  
  
  📑 Alinhamento entre CRM e Estratégia Organizacional
&lt;/h2&gt;

&lt;p&gt;Antes é claro de irmos direto para o assunto que é entender o alinhamento entre CRM e Estratégia Organizacional primeiro temos que entender algumas coisas, já sabemos o que é CRM, mas o que podemos definir como "Estratégia Organizacional".&lt;/p&gt;

&lt;p&gt;A Estratégia Organizacional pode ser definida como um conjunto de atividades e ações para alcançar as metas que a organização já quantificou e qualificou, ou seja, como podemos notar é que necessita que toda a empresa esteja em sinergia, envolvendo as unidades departamentais da empresa, ter uma planejamento geral para no fim justamente alcançar as metas da empresa.&lt;/p&gt;

&lt;p&gt;É claro que um dos fatores que devem estar em sinergia e alinhados com a Estratégia Organizacional da empresa são as tecnologias que ela usa, neste caso por exemplo o CRM.&lt;/p&gt;

&lt;p&gt;O CRM neste caso entra como um facilitador para a empresa, fornecendo todas as funções que comentamos anteriormente, levando em conta o CRM como software, mas também temos que lembrar das vantagens que adotar o CRM como estratégia traz para o negócio, aqui surge um diferencial para a empresa, o que ajuda a superar um dos principais problemas das empresas hoje em dia, que é conseguir se manter competitiva em relação às demais do seu ramo do mercado.&lt;/p&gt;

&lt;p&gt;O alinhamento entre os pontos comentados é fundamental para que a empresa tenha reais avanços e consiga alcançar suas metas, ainda mais que com a implantação de um CRM pode ser necessário rever diversos processos, estratégias da empresa (econômicas e administrativas) e muito mais, demandando um grande esforço de diversos setores da empresa, ou seja, é necessário comprometimento de muitas pessoas, é necessário que toda a empresa esteja muito bem alinhada para começar esse processo de implantação e depois disso continuar desse modo, isso por que como comentado podem ser necessárias algumas mudanças nos aspectos gerais da empresa após a implantação do CRM, se tudo estiver bem definido e planejado, se as pessoas estiverem empenhadas e souberem o que precisam alcançar, ou seja, quais as suas metas, o processo se torna mais fácil de modo geral.&lt;/p&gt;




&lt;h2&gt;
  
  
  📅 Metodologia e etapas para implantação de um CRM
&lt;/h2&gt;

&lt;p&gt;Depois de entendermos já diversas questões sobre CRM chegou a hora de buscarmos entender alguma metodologia de implementação e suas etapas, neste caso usaremos como base a metodologia de Miriam Bretzke, essa é apenas uma das metodologias que existem, essa metodologia está presente na tese de doutorado de Alessandra Schweitzer (Pressupostos para o Gerenciamento de Soluções de CRM (Customer Relationship Management) - Universidade Federal de Santa Catarina Programa de Pós-Graduação em Engenharia de Produção, 2004, tópico 2.2.3) da onde iremos tirar os principais pontos e ensinamentos sobre essa metodologia.&lt;/p&gt;

&lt;p&gt;De início vamos começar apresentando quem é Miriam Bretzke, segundo o próprio site de sua empresa, que leva o seu sobrenome (Bretzke - Marketing de Relacionamento), Miriam é Mestre e Doutora em Marketing, pela EAESP-Fundação Getúlio Vargas, defendendo estudos (dissertação e tese) inéditos sobre Marketing de Relacionamento e o impacto das transformações propostas nas organizações para competir em tempo real. Professora de Marketing de Relacionamento nas conceituadas faculdades FGV-SP, PUC-SP, UNICAMP. Considerada a maior especialista brasileira em CRM e muito mais.&lt;/p&gt;

&lt;p&gt;Agora que já sabemos qual metodologia veremos e principalmente quem é sua criadora podemos prosseguir, Bretzke defende que sua ideia de implantação do CRM está focada em dois principais pilares, que são eles: 1º - um processo de trabalho orientado para o cliente que seja permeado e compartilhado por toda a empresa e 2º - o uso intensivo de informações do cliente, suportado pela informatização de vendas, marketing e serviços.&lt;/p&gt;

&lt;p&gt;Entendendo já as ideias principais com que se baseia a implantação de um CRM na visão da autora podemos partir para as etapas desse processo de implantação, no total encontramos quatro etapas: 1º - definição e planejamento do modelo de relacionamento, 2º - Redesenho dos processos de atendimento ao cliente, 3º - seleção da solução e por fim 4º - implantação da tecnologia de CRM. &lt;/p&gt;

&lt;p&gt;Note que a última coisa que iremos fazer é implantar o CRM em si, antes iremos passar por outras três etapas de planejamento, decisão etc. para no fim termos uma boa implantação, vale a pena ressaltar que essas etapas não são isoladas uma das outras, ou seja, todas as fases provavelmente vão ter algum nível de dependência com as anteriores e também outra característica é que elas não precisam ser feitas necessariamente da forma que foram apresentadas sequencialmente, podemos encontrar no artigo de Reginauro Luz Catunda e José Marcos Saraiva Rabêlo Júnior (Seleção e Implantação de CRM como Solução Tecnológica Empresarial: Teoria e Prática - II Encontro de Administração da Informação), que segundo eles a autora (Miriam Bretzke) afirma que “durante o processo de implantação a empresa irá enfrentar obstáculos como a resistência organizada, aprendizagem lenta e esquecimento rápido, que são superados de forma mais rápida se a empresa possui um conjunto de idéias norteadoras, articuladas por empregados no perfil certo para a função e com uma infra-estrutura de TI apoiada na estratégia de CRM.”, outro ponto que segundo eles a autora afirma é que “o redesenho dos processos ocorre antes da seleção da solução e das mudanças na estrutura organizacional, entretanto, existem muitas idas e vindas entre a segunda e a terceira etapa do modelo, que praticamente são desenvolvidas juntas”.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpwdaqent4u0q2jyq5fli.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpwdaqent4u0q2jyq5fli.png" alt="Etapas" width="600" height="144"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Figura 2: Etapas para implantação de CRM&lt;br&gt;
Fonte: Tese de doutorado de Alessandra Schweitzer - Pressupostos para o Gerenciamento de Soluções de CRM (Customer Relationship Management) - Adaptado de Bretzke (2000)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Apesar de termos noção de quais etapas compreendem esse processo, não entendemos direito o que realmente cada etapa busca alcançar, por isso iremos detalhá-las melhor agora.&lt;/p&gt;

&lt;p&gt;A primeira etapa, a de definição e planejamento do modelo de relacionamento, tem como foco abranger a alta gestão pois aqui teremos diversas mudanças no sentido de como a empresa se relaciona com o cliente, como ele é atendido e muitas outras coisas relacionadas ao mesmo, ou seja, a empresa aqui define como o cliente será atendido, como será tratado e muito mais, tudo isso passa por essa mudança para a empresa se adequar competitivamente por exemplo.&lt;/p&gt;

&lt;p&gt;A segunda etapa, o redesenho dos processos de atendimento do cliente, busca levantar quais são os processos e atividades de atendimento e comunicação com o cliente, após o levantamento desses processos e atividades caso seja necessário eles são redesenhados, como também a divisão de tarefas no atendimento do cliente pode ser remodelada etc.&lt;/p&gt;

&lt;p&gt;A terceira etapa, a seleção da solução, essa parte faz referência sobre a seleção do software que será escolhido com base no modelo de relacionamento, sendo necessário então ver qual o hardware necessário para que esse software funcione corretamente.&lt;/p&gt;

&lt;p&gt;Por fim, a quarta etapa, a implantação da tecnologia de CRM, aqui se consiste em analisar toda a empresa e revisar a forma de pensar do negócio e aplicar as mudanças necessárias para assim materializar a estratégia para o CRM e implementar o mesmo.&lt;/p&gt;

&lt;p&gt;De modo geral essa metodologia como também muitas outras começam com uma estratégia de negócio, onde a partir dessa estratégia é desencadeada as mudanças necessárias na organização, nos processos e nas pessoas tendo como apoio a TI (Tecnologia da Informação), em outras palavras, as três partes fundamentais para suportar um CRM são as pessoas, os processos e as tecnologias.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3h9huoh7txia2qb5tuyh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3h9huoh7txia2qb5tuyh.png" alt="Piramede" width="326" height="234"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Figura 3: A pirâmide CRM&lt;br&gt;
Fonte: Tese de doutorado de Alessandra Schweitzer - Pressupostos para o Gerenciamento de Soluções de CRM (Customer Relationship Management) - (Copyright 2000, Front Line Solutions, Inc. apud GREENBERG, 2001, p.63)&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  📊 Vantagens e dificuldades no uso de um CRM
&lt;/h2&gt;

&lt;p&gt;Depois de tudo que vimos até agora você deve estar se perguntando, quais são as reais vantagem no uso de um CRM? Este tópico tem como foco isso e começamos apresentando a visão de Ronald Swift, que encontramos em um artigo publicado na revista INTERFACE TECNOLÓGICA (A GESTÃO DE RELACIONAMENTO COM CLIENTES (CRM) COMO UM IMPORTANTE RECURSO PARA O CRESCIMENTO EMPRESARIAL - Thais Miria dos Santos e Gustavo Henrique Del Vechio - FATEC de Bebedouro, tópico 2.3), lá podemos ver que Swift (2001, p. 24) defende a existência de dois grandes benefícios em relação ao uso de CRM, o primeiro é que podemos segmentar melhor o público e direcionar produtos e serviços específicos para cada cliente (com base nos dados e conhecimentos gerados sobre cada cliente), segundo, temos melhorias relacionadas aos custos e direcionamento do orçamento empresarial.&lt;/p&gt;

&lt;p&gt;Ainda usando a o artigo citado acima podemos achar uma tabela construída com base na ideia de Gladys Kaplan e Blanco (2018, p. 5) sobre as vantagens e desvantagens do uso de CRM, como principais vantagens podemos encontrar os seguintes pontos: o CRM permite processar informações muita mais rápido, pode tomar decisões em pouco tempo, permite aproveitar certas oportunidades comerciais que são dadas em determinados momentos do mercado, pode ter um maior escopo para estudos e análises com o grande número de clientes processados.&lt;/p&gt;

&lt;p&gt;Por outro lado é nos apresentado as possíveis desvantagens, como por exemplo: nem todos os requisitos dos clientes podem ser processados e tem que ser levado em conta o custo de se adquirir e manter um software como o CRM.&lt;/p&gt;

&lt;p&gt;No artigo de Sigfried Vasques Dominguez (Bacharel em Administração de Empresas pela faculdade de Economia, administração e contabilidade da Universidade de São Paulo e atualmente cursando o Programa Pós-Graduação em Administração (Mestrado) da FEA/USP) chamado IMPLANTANDO O CRM – Um Estudo de Caso, publicado para o V SEMEAD (Seminários em Administração), no tópico 2 de seu artigo ele coloca o ponto de vista de Miriam Bretzke (2000) sobre os possíveis benefícios de uma implementação de um CRM, segundo Miriam esses benefícios podem ser: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Aumentar o conhecimento da empresa a respeito de seus clientes. Permite registrar, manter e tratar um grande volume de dados sobre o cliente e recuperá-los em tempo real, com o objetivo de manter um relacionamento diferenciado e rentável da empresa com o cliente, aumentando a retenção e a fidelidade do cliente.&lt;/li&gt;
&lt;li&gt;Aperfeiçoar o processo mercadológico e empresarial, contribuindo para orientar a empresa para o mercado. O compromisso com o cliente transforma-se na meta e guia para toda a organização, reduzindo os conflitos de interesse entre áreas e integrando os departamentos. &lt;/li&gt;
&lt;li&gt;Desenvolver e ofertar serviços e produtos “sob medida” para clientes, em massa, diferenciados de produtos e serviços de concorrentes, através do uso de módulos pré-definidos ou diferentes combinações.&lt;/li&gt;
&lt;li&gt;Estabelecer uma comunicação próxima e sistemática com os clientes potenciais e atuais. A empresa pode manter uma comunicação disciplinada e integrada, enviando mensagens consistentes (e personalizadas) pelas várias mídias, de seus esforços (campanhas e eventos) de conquista, ativação e retenção de clientes.&lt;/li&gt;
&lt;li&gt;Diminuir os custos da venda e do atendimento pós-venda, aumentando a eficácia de um vendedor no trabalho de conquista de novos clientes (pois o suporte para identificação de prospects e leads permite concentrar seu tempo no fechamento de venda e na conscientização do prospect sobre o produto) e no trabalho de fidelização (liberando-o para se concentrar em novas vendas para os clientes atuais e na manutenção do relacionamento, ao invés de atendimento telefônico para resolução de problemas).&lt;/li&gt;
&lt;li&gt;Agregar valor para o cliente, racionalizando os processos internos de desenvolvimento de novos produtos (permitindo que a empresa conheça as necessidades não atendidas e as características do produto desejadas por segmentos de clientes), de administração do fluxo de pedidos (reduzindo o custo do tempo e o esforço físico e psíquico de compra dos clientes) e de atendimento pós-venda (através da oferta de serviços especializados e específicos com qualidade).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;É claro que como podemos perceber todas esse benefícios ou vantagens ressaltam o foco no cliente por parte da estratégia de CRM, sendo assim com um cliente mais feliz e fidelizado as vantagens citadas anteriormente podem levar ainda a outras, como por exemplo: o aumento dos lucros da empresa, aumentos dos clientes, aumento nas vendas de produtos ou serviços e muito mais.&lt;/p&gt;

&lt;p&gt;Na dissertação de doutorado de Maria Isabel Franco Barretto podemos encontrar no tópico 2.5.3 mais algumas visões de autores sobre os benefícios que o CRM proporciona, Xu e Walton (2005) destacam como vantagens: a melhoria do nível de satisfação dos clientes; a retenção dos clientes atuais; o crescimento do ciclo de vida do cliente; o fornecimento de melhores informações estratégicas para as áreas de vendas, marketing e finanças; a atração de novos clientes e a redução de custos.&lt;/p&gt;

&lt;p&gt;Mais a frente vemos a visão de Chen e Popovich (2003), segundo eles os benefícios são: desenvolver os relacionamentos para personalizar as experiências de compras; o CRM possibilita melhores previsões dos comportamentos de compras on-line; permite a conquista de clientes pela oferta especial de bens e serviços; avalia os valores econômicos de cada cliente e, por último, a construção de relacionamentos duráveis com benefícios para as partes envolvidas.&lt;/p&gt;

&lt;p&gt;Ainda usando a dissertação de doutorado citada mais acima podemos entender quais são as dificuldades que as empresas podem ter em relação às dificuldades para implementar um sistema CRM, na dissertação novamente são apresentadas visões de diversos autores (Gummesson, Xu &amp;amp; Walton, Curry &amp;amp; Kkolou, Bull etc.), mas de maneira geral as dificuldades apontadas são: a falta de conhecimento sobre CRM, a falta de planejamento e estratégia para sua adoção, colocar a responsabilidade absoluta sobre o CRM deixando o aspecto humano de lado, não rever os processos organizacionais para assim poder mudá-los ou adquelos para assim deixá-los mais eficientes, não elaborar estratégias centradas no cliente, falta de objetivos em relação aos negócios, planejamento inadequado de recursos, custos altos, o retorno é incerto, a integração entre os sistemas, a tecnologia CRM não ser adaptada para seu negócio e muito mais.&lt;/p&gt;

&lt;p&gt;Na tese de doutorado de Alessandra Schweitzer, citada já nesta pesquisa, encontramos no tópico 1.2 algumas pesquisas que detalham melhor os motivos pelos quais as iniciativas de CRM fracassam, iremos analisar comentar sobre a pesquisa da Cap Gemini Ernst &amp;amp; Young (2001) - (CRM INDEX - pesquisa realizada no ano de 2001 nos EUA e Europa).&lt;/p&gt;

&lt;p&gt;Nesta pesquisa é nos apresentado 4 pontos do por que existem tantos fracassos quando se trata de CRM e estes são eles: &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;As empresas não têm estratégias para a medição dos resultados e do retorno em relação ao investimento realizado, segundo a pesquisa, 52% das organizações que participaram da pesquisa não conhecem o retorno das suas iniciativas em CRM;&lt;/li&gt;
&lt;li&gt;As estruturas e ideias da empresa serem voltadas não para o público / cliente e sim para o seu produto;&lt;/li&gt;
&lt;li&gt;A falta de integração dos dados do cliente em uma única base de dados, essas informações acabam ficando separadas em diversos bancos de dados normalmente em cada setor da empresa;&lt;/li&gt;
&lt;li&gt;Algumas áreas da empresa não muitas vezes não estão alinhadas com as estratégias de CRM, como principalmente exemplo, a área de TI não estar alinhada com as estratégias comentadas, segundo a pesquisa, isso acontece em 74% das empresas que foram pesquisadas.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Outra pesquisa que encontramos na tese citada anteriormente é a da Peppers &amp;amp; Roggers Group do Brasil, (pesquisa realizada no Brasil nos meses de janeiro e fevereiro de 2003, tendo com alvo 106 organizações de pequeno, médio e grande porte). Essa pesquisa mostra que a principal dificuldade é algo que encontramos até mesmo na pesquisa anterior, a dificuldade da empresa medir seus resultados e avaliar o retorno dos investimentos realizados, segundo a pesquisa, das 51 empresas com programas formais de CRM, 49% não mediam o retorno de seus investimentos.&lt;/p&gt;

&lt;p&gt;Podemos concluir então que, o principal problema é as empresas entenderem se o investimento realizado e o retorno que estão tendo está levando elas a alcançar seus objetivos e metas ou até ajudando a ter um diferencial competitivo, elas não conseguem analisar esses quesitos e por isso podem sentir que estão estagnadas ainda, mesmo depois do investimento por exemplo em uma ferramenta de CRM que claramente era para ajudá-las em diversos aspectos.&lt;/p&gt;




&lt;h2&gt;
  
  
  📈 Caso de sucesso no uso de CRM
&lt;/h2&gt;

&lt;p&gt;Como caso de sucesso no uso de CRM vamos explorar uma cooperativa que aparece no artigo publicado na revista INTERFACE TECNOLÓGICA (A GESTÃO DE RELACIONAMENTO COM CLIENTES (CRM) COMO UM IMPORTANTE RECURSO PARA O CRESCIMENTO EMPRESARIAL - Thais Miria dos Santos e Gustavo Henrique Del Vechio - FATEC de Bebedouro, tópico 3 e 4), vemos neste artigo que a cooperativa, que se chama Coopercitrus, é do ramo do agronegócio e que justamente sua vontade de adquirir esse tipo de aplicativo / sistema de CRM era mapear seu público, conseguir detalhar da melhor forma possível o tipo exato de cultura de cada propriedade, entender seus interesses e muito mais.&lt;/p&gt;

&lt;p&gt;O sistema contratado foi um com o nome de “Clover”, desenvolvido pela empresa Datacoper que tem como principal foco negócios na área agrícola, ou seja, já é uma empresa / produto que tendo a ser mais eficiente para a cooperativa por ter seu foco na mesma área de negócios da cooperativa em si.&lt;/p&gt;

&lt;p&gt;A solução contratada permitiu que fossem feitos os mapeamentos dos cooperados por região, área de atuação e cultura plantada, como vantagens disso tudo a empresa conseguiu fazer melhores roteiros de viagens evitando assim viagens desnecessárias e ajudando também ainda na redução de custos com combustível e hospedagem, melhorar sua divisão logística e consequentemente com tudo isso, com o seu custo no geral diminuindo a empresa tirou um pouco esses custos dos seus produtos, deixando eles ainda mais baratos, controle do nível de serviços e outros indicadores, geração de análises de locais adequados para abertura de novas filiais com base no mercado / clientes da região etc.&lt;/p&gt;

&lt;p&gt;Como resultado de todas essas vantagens a empresa no geral aumentou suas filiais (no começo a empresa tinha 133 filiais e depois de alguns anos com o uso do CRM a empresa alcançou a marca de 170 filiais, aumentando ainda sua participação em mais um estado do país, Goiás, antes sua atuação era restrita a São Paulo e Minas Gerais), sua receita e patrimônio líquido (os balanços gerais de seus patrimoniais líquidos anuais em 2017 eram de 2.8 bilhões de reais, em 2018 a solução de CRM foi implementada e em 2019 a empresa já chegava a marca de 4.567 bilhões de reais).&lt;/p&gt;

&lt;p&gt;Aqui vemos a primeira prova concreta de que entender melhor seus clientes, ter uma forma de tratamento aprimorada, entender o mercado da região etc. tudo isso só tende a levar ao crescimento empresarial de forma geral como vimos no último parágrafo.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔗 Fontes
&lt;/h2&gt;

&lt;p&gt;DEMO, GISELA et al. MARKETING DE RELACIONAMENTO (CRM): ESTADO DA ARTE, REVISÃO BIBLIOMÉTRICA DA PRODUÇÃO NACIONAL DE PRIMEIRA LINHA, INSTITUCIONALIZAÇÃO DA PESQUISA NO BRASIL E AGENDA DE PESQUISA. RAM. Revista de Administração Mackenzie [online]. 2015, v. 16, n. 5 [Acessado 5 Maio 2022], pp. 127-160. Disponível em: &lt;a href="https://doi.org/10.1590/1678-69712015/administracao.v16n5p127-160" rel="noopener noreferrer"&gt;https://doi.org/10.1590/1678-69712015/administracao.v16n5p127-160&lt;/a&gt;. ISSN 1678-6971. &lt;a href="https://doi.org/10.1590/1678-69712015/administracao.v16n5p127-160" rel="noopener noreferrer"&gt;https://doi.org/10.1590/1678-69712015/administracao.v16n5p127-160&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;SANTOS, T. M.; DEL VECHIO, G. H. A GESTÃO DE RELACIONAMENTO COM CLIENTES (CRM) COMO UM IMPORTANTE RECURSO PARA O CRESCIMENTO EMPRESARIAL. Revista Interface Tecnológica, [S. l.], v. 17, n. 1, p. 819–828, 2020. DOI: 10.31510/infa. v17i1.780. Disponível em: &lt;a href="https://revista.fatectq.edu.br/interfacetecnologica/article/view/780" rel="noopener noreferrer"&gt;https://revista.fatectq.edu.br/interfacetecnologica/article/view/780&lt;/a&gt;. Acesso em: 06/05/2022.&lt;/p&gt;

&lt;p&gt;CUNHA, S. R. R. CRM – CUSTOMER RELATIONSHIP MANAGEMENT - UMA ESTRATÉGIA - Estudo de Caso Osvaldo Matos. Faculdade de Economia - Universidade de Porto, 2012. Disponível em: &lt;a href="http://docplayer.com.br/9450356-Crm-customer-relationship-management-uma-estrategia.html" rel="noopener noreferrer"&gt;http://docplayer.com.br/9450356-Crm-customer-relationship-management-uma-estrategia.html&lt;/a&gt;. Acesso em: 06/05/2022.&lt;/p&gt;

&lt;p&gt;DA COSTA BARACHO, D. CUSTOMER RELATIONSHIP MANAGEMENT (CRM): gestão de relacionamento com o cliente. Universidade Federal de Minas Gerais, 2011. Disponível em: &lt;a href="https://repositorio.ufmg.br/bitstream/1843/BUBD-AQ3J6F/1/daniel_c_baracho_monografia.pdf" rel="noopener noreferrer"&gt;https://repositorio.ufmg.br/bitstream/1843/BUBD-AQ3J6F/1/daniel_c_baracho_monografia.pdf&lt;/a&gt;. Acesso em: 07/05/2022.&lt;/p&gt;

&lt;p&gt;DE OLIVEIRA, A. A. G. M. A. IMPLANTAÇÃO DE UMA ESTRATÉGIA DE CRM EM UMA INDÚSTRIA DO RAMO AUTOMOBILÍSTICO: UM ESTUDO DE CASO. Disponível em: &lt;a href="http://www.abepro.org.br/biblioteca/enegep2010_tn_wic_119_775_17137.pdf" rel="noopener noreferrer"&gt;http://www.abepro.org.br/biblioteca/enegep2010_tn_wic_119_775_17137.pdf&lt;/a&gt;. Acesso em: 07/05/2022.&lt;/p&gt;

&lt;p&gt;BARRETTO, M. I. F. UM MODELO PARA PLANEJAR, IMPLEMENTAR E ACOMPANHAR A ESTRATÉGIA DE CRM (CUSTOMER RELATIONSHIP MANAGEMENT). Escola de Engenharia de São Carlos - Universidade de São Paulo, 2007. Disponível em: &lt;a href="https://www.teses.usp.br/teses/disponiveis/18/18140/tde-07042008-104031/publico/MariaIsabelFrancoBarreto.pdf" rel="noopener noreferrer"&gt;https://www.teses.usp.br/teses/disponiveis/18/18140/tde-07042008-104031/publico/MariaIsabelFrancoBarreto.pdf&lt;/a&gt;. Acesso em: 10/05/2022.&lt;/p&gt;

&lt;p&gt;BRETZKE - MARKETING DE RELACIONAMENTO. Quem somos - Bretzke. Disponível em: &lt;a href="https://bretzke-marketing.com.br/quem-somos/#:%7E:text=MIRIAM%20BRETZKE,-Anterior%20%C3%A0%20sua&amp;amp;text=%C3%89%20Mestre%20e%20Doutora%20em,para%20competir%20em%20tempo%20real" rel="noopener noreferrer"&gt;https://bretzke-marketing.com.br/quem-somos/#:~:text=MIRIAM%20BRETZKE,-Anterior%20%C3%A0%20sua&amp;amp;text=%C3%89%20Mestre%20e%20Doutora%20em,para%20competir%20em%20tempo%20real&lt;/a&gt;. Acesso em: 14/05/2022.&lt;/p&gt;

&lt;p&gt;SCHWEITZER, A. Pressupostos para o Gerenciamento de Soluções de CRM (Customer Relationship Management). Universidade Federal de Santa Catarina, 2004. Disponível em: &lt;a href="https://repositorio.ufsc.br/xmlui/bitstream/handle/123456789/87554/205206.pdf?sequence=1&amp;amp;isAllowed=y" rel="noopener noreferrer"&gt;https://repositorio.ufsc.br/xmlui/bitstream/handle/123456789/87554/205206.pdf?sequence=1&amp;amp;isAllowed=y&lt;/a&gt;. Acesso em: 14/05/2022.&lt;/p&gt;

&lt;p&gt;REGINAURO LUZ CATUNDA, J. M. S. R. J. Seleção e Implantação de CRM como Solução Tecnológica Empresarial: Teoria e Prática. [s.l: s.n.]. Disponível em: &lt;a href="http://www.anpad.org.br/admin/pdf/EnADI276.pdf" rel="noopener noreferrer"&gt;http://www.anpad.org.br/admin/pdf/EnADI276.pdf&lt;/a&gt;. Acesso em: 15/05/2022.&lt;/p&gt;

&lt;p&gt;ALVES, L. A. X. SEGMENTAÇÃO DE MERCADO COMO ESTRATÉGIA DE MARKETING: CASO GVT. [s.l.] UNICEUB, 2006. Disponível em: &lt;a href="https://repositorio.uniceub.br/jspui/bitstream/123456789/867/2/20301330.pdf" rel="noopener noreferrer"&gt;https://repositorio.uniceub.br/jspui/bitstream/123456789/867/2/20301330.pdf&lt;/a&gt;. Acesso em: 15/05/2022.&lt;/p&gt;

&lt;p&gt;RIZZO, E. Uma Análise Comparativa entre o Marketing de Massa e o “One to One” Marketing, no Cenário de Empresas Competitivas. [s.l: s.n.]. Disponível em: &lt;a href="http://www.bocc.ubi.pt/pag/rizzo-esmeralda-analise-comparativa.pdf" rel="noopener noreferrer"&gt;http://www.bocc.ubi.pt/pag/rizzo-esmeralda-analise-comparativa.pdf&lt;/a&gt;. Acesso em: 15/05/2022.&lt;/p&gt;

&lt;p&gt;DOMINGUEZ, S. V. IMPLANTANDO O CRM – Um Estudo de Caso. [s.l: s.n.]. Disponível em: &lt;a href="http://sistema.semead.com.br/5semead/Mqi/Implantando%20o%20CRM.pdf" rel="noopener noreferrer"&gt;http://sistema.semead.com.br/5semead/Mqi/Implantando%20o%20CRM.pdf&lt;/a&gt;. Acesso em: 17/05/2022.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>braziliandevs</category>
      <category>writing</category>
      <category>crm</category>
    </item>
    <item>
      <title>Indo além do console.log 🖥️</title>
      <dc:creator>Luigi Belanda</dc:creator>
      <pubDate>Fri, 22 Apr 2022 15:13:52 +0000</pubDate>
      <link>https://dev.to/luigibelanda/indo-alem-do-consolelog-1e7h</link>
      <guid>https://dev.to/luigibelanda/indo-alem-do-consolelog-1e7h</guid>
      <description>&lt;h2&gt;
  
  
  ⭐ Introdução
&lt;/h2&gt;

&lt;p&gt;Todo dev que já usou JS / TS utilizou pelo menos uma vez na vida o famoso &lt;code&gt;console.log()&lt;/code&gt;, seja para apenas ir acompanhando passo a passo do código, para mostrar uma mensagem de retorno e muito mais, mas você aí, sabia que nem só de &lt;code&gt;console.log()&lt;/code&gt; o dev precisa viver?&lt;/p&gt;

&lt;p&gt;Abaixo você encontrará mais opções que podem até nós ajudar na hora de desenvolver nossas programas, deixando claro que não serão apresentadas todas as opções que existem.&lt;/p&gt;




&lt;h2&gt;
  
  
  🤔 console.assert
&lt;/h2&gt;

&lt;p&gt;O &lt;code&gt;console.assert()&lt;/code&gt; serve para verificar alguma expressão que passarmos e caso a mesma seja falsa, retornamos uma mensagem no terminal / console.&lt;/p&gt;

&lt;p&gt;Estrutura base:&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl3ygqase16b1273a43zk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl3ygqase16b1273a43zk.png" alt="Estrutura base console.assert" width="800" height="355"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Exemplo:&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj6brraovg6m024wt74d9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj6brraovg6m024wt74d9.png" alt="Exemplos de console.assert" width="800" height="493"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Lembrando que só receberemos a mensagem do &lt;code&gt;console.assert()&lt;/code&gt; que retornar &lt;strong&gt;false&lt;/strong&gt;, como vemos a seguir se executarmos o exemplo acima:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3cwnf41g5k3dclm6q0mz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3cwnf41g5k3dclm6q0mz.png" alt="Rodando console.assert" width="606" height="108"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  🧹 console.clear
&lt;/h2&gt;

&lt;p&gt;Esta opção serve, para como o próprio nome sugere, limparmos nosso console / terminal.&lt;/p&gt;

&lt;p&gt;Estrutura base:&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Findrcrvokl80w4otetes.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Findrcrvokl80w4otetes.png" alt="Estrutura base console.clear" width="800" height="355"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Exemplo:&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fte1rnigp7jklxj5zdz86.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fte1rnigp7jklxj5zdz86.png" alt="Exemplo console.clear" width="800" height="527"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Se executarmos o código acima iremos ver isso no nosso terminal (tudo que for mostrado no terminal antes do comando &lt;code&gt;console.clear()&lt;/code&gt; será excluído):&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqyitl73xt3j6tyoa63y1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqyitl73xt3j6tyoa63y1.png" alt="Resultado running console.clear" width="428" height="176"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;O &lt;code&gt;console.clear()&lt;/code&gt; pode ser muito bom ao final do nosso código onde podemos limpar o terminal e não nos preocuparmos com isso posteriormente.&lt;/p&gt;




&lt;h2&gt;
  
  
  ➕ console.count
&lt;/h2&gt;

&lt;p&gt;Podemos usar o &lt;code&gt;console.count&lt;/code&gt; para contar quantas vezes uma função foi executada / chamada ou quantas vezes passamos por aquele código já etc.&lt;/p&gt;

&lt;p&gt;Estrutura base:&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx58jhb5on5xm2dswls0s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx58jhb5on5xm2dswls0s.png" alt="Estrutura base console.count" width="800" height="355"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Exemplos:&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffz2jqjacovxudpcyschv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffz2jqjacovxudpcyschv.png" alt="Exemplo 1 console.count" width="800" height="493"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Neste exemplo apenas chamamos o &lt;code&gt;console.count()&lt;/code&gt; 5 vezes, o resultado disso em nosso terminal será o seguinte:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feyuod430832t53ix2dkv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feyuod430832t53ix2dkv.png" alt="Resultado exemplo 1 console.count" width="400" height="190"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Outro exemplo é o a seguir, onde podemos passar um texto que será exibido no terminal junto com a contagem padrão do próprio &lt;code&gt;console.count()&lt;/code&gt; (esse texto é um dos parâmetros que podemos passar)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk7hed5c67oycmthdwkxw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk7hed5c67oycmthdwkxw.png" alt="Exemplo 2 console.count" width="800" height="493"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;O resultado desse código no terminal será o seguinte:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzcn3nogpiyugoy01q0te.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzcn3nogpiyugoy01q0te.png" alt="Resultado exemplo 2" width="404" height="188"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E como último exemplo usaremos ele dentro de uma função, como comentado no início da explicação. O exemplo então fica assim:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4f312he7g6ofn55zzb82.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4f312he7g6ofn55zzb82.png" alt="Exemplo 3 console.count" width="800" height="563"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;O resultado no terminal:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhq96m7rpu6vsh0hduyau.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhq96m7rpu6vsh0hduyau.png" alt="Resultado exemplo 3" width="397" height="173"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  ⚠️ console.warn
&lt;/h2&gt;

&lt;p&gt;Usamos o &lt;code&gt;console.warn()&lt;/code&gt; para passar avisos ao usuário ou apenas para identificarmos algo que não está indo bem, neste caso o texto em si fica com a cor amarela.&lt;/p&gt;

&lt;p&gt;Estrutura base:&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmyfkzhfqc14f08oqsp9s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmyfkzhfqc14f08oqsp9s.png" alt="Estrtura base console.warn" width="800" height="355"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Exemplo: &lt;/p&gt;

&lt;p&gt;No caso do exemplo usaremos o console que temos nos próprios navegadores, assim quando precisamos lançar algum aviso podemos fazer da seguinte forma:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp50l581cyxahgqsya327.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp50l581cyxahgqsya327.png" alt="Exemplo console.warn navegador" width="466" height="176"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;O resultado disso será:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv0e1o1qnrv7wgk25yi8n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv0e1o1qnrv7wgk25yi8n.png" alt="Resultado console.warn navegador" width="460" height="227"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Neste caso executamos manualmente o código indo até o console do navegador, mas esse comando pode ser dado no seu código JS e ser executado depois que o usuário fazer alguma ação em sua página HTML, seja por exemplo enviar um forms ou clicar em algum botão.&lt;/p&gt;




&lt;h2&gt;
  
  
  ❌ console.error
&lt;/h2&gt;

&lt;p&gt;Quase igual o &lt;code&gt;console.warn&lt;/code&gt; o &lt;code&gt;console.error&lt;/code&gt; serve justamente para mostrarmos possíveis erros no console / terminal, desta vez o texto ficará com a cor vermelha.&lt;/p&gt;

&lt;p&gt;Estrutura base:&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F260ypk3uo2soyugoc8t9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F260ypk3uo2soyugoc8t9.png" alt="Estrutura base console.error" width="800" height="355"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Exemplo:&lt;/p&gt;

&lt;p&gt;Assim como no exemplo anterior também usaremos o próprio console do navegador e no geral o código não muda muita do exemplo anterior, ficando assim neste caso:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjufakppbfs6l4tquxuon.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjufakppbfs6l4tquxuon.png" alt="Exemplo console.error" width="462" height="163"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;O que iremos ver ao executar o código será isso:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffhausgzzjfsdutqiw09w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffhausgzzjfsdutqiw09w.png" alt="Resultado console.error" width="466" height="248"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  ❓ console.info
&lt;/h2&gt;

&lt;p&gt;Praticamente idêntico ao tradicional &lt;code&gt;console.log()&lt;/code&gt; que usamos normalmente, neste caso podemos usar o &lt;code&gt;console.info()&lt;/code&gt; para realmente saber que aquilo é uma informação necessário e entendermos melhor o código, por que de resto não há diferenças igual os exemplos anteriores onde a cor das letras e outras coisas acabam mudando. No Firefox e Chrome, um pequeno ícone "i" pode ser apresentado próximo aos items do log do console.  &lt;/p&gt;

&lt;p&gt;Estrutura base:&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuvxha6fdimnhgnp4cx32.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuvxha6fdimnhgnp4cx32.png" alt="Estrutura base console.info" width="800" height="355"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Exemplo:&lt;/p&gt;

&lt;p&gt;Seguindo o exemplo acima, mas apenas alterando a mensagem que será exibida, iremos obter um resultado mais ou menos como está representado na imagem abaixo.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe961tq89x4uhcwuaujc9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe961tq89x4uhcwuaujc9.png" alt="Exemplo console.info" width="395" height="126"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Como dito no começo desta parte a diferença para o &lt;code&gt;console.log()&lt;/code&gt; é nenhuma ou mínima, como comentado que em alguns navegadores pode surgir uma ou outra diferença entre usar o &lt;code&gt;console.info()&lt;/code&gt; e o &lt;code&gt;console.log()&lt;/code&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  📋 console.table
&lt;/h2&gt;

&lt;p&gt;O &lt;code&gt;console.table()&lt;/code&gt; pode ser uma grande ajuda quando queremos visualizar melhor algumas informações no console, justamente usando o &lt;code&gt;console.table()&lt;/code&gt; iremos criar uma tabela no console onde iremos ver as informações que passamos para ele.&lt;/p&gt;

&lt;p&gt;Estrutura base:&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnnjlb4gwwqddlxhl7x13.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnnjlb4gwwqddlxhl7x13.png" alt="Estrutura base console.table" width="800" height="355"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Exemplos:&lt;/p&gt;

&lt;p&gt;Como podemos ver na estrutura base passamos para o &lt;code&gt;console.table()&lt;/code&gt; o que queremos que seja exibido em formato de tabela, esse parâmetro pode ser um array, um objeto etc.&lt;/p&gt;

&lt;p&gt;No exemplo abaixo estamos usando o &lt;code&gt;console.table()&lt;/code&gt; passando para ele um array com o nome &lt;code&gt;frutas&lt;/code&gt; que contém os seguinte elementos &lt;code&gt;["Banana", "Maça", "Uva", "Morango", "Kiwi"]&lt;/code&gt;. O código então fica mais ou menos assim:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fer0cjh3xr2ippxrpjm9y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fer0cjh3xr2ippxrpjm9y.png" alt="Exemplo 1 console.table" width="800" height="335"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Se executarmos esse código iremos ver algo parecido com isso:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa37tfaoxuzfta218cqnw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa37tfaoxuzfta218cqnw.png" alt="Resultado 1 console.table" width="800" height="233"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj5i0hqgr32lfcpqf2utr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj5i0hqgr32lfcpqf2utr.png" alt="Resultado 2 console.table" width="296" height="204"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Note que em ambos os casos ele cria uma tabela com duas colunas, uma com o índice de cada elemento do array e o dado que está em cada um desses índices.&lt;/p&gt;

&lt;p&gt;Outro exemplo que podemos explorar é passando um objeto para o &lt;code&gt;console.table()&lt;/code&gt;, neste caso iremos criar um objeto chamado &lt;code&gt;eu&lt;/code&gt; com as propriedades &lt;code&gt;{ age: 18, name: "Luigi Belanda", language_favorite: "JS"}&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg0b7uniwcfx9a5n46cav.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg0b7uniwcfx9a5n46cav.png" alt="Exemplo 2 console.table" width="800" height="563"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Se executarmos o código do exemplo acima teremos os seguintes resultado:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxzxuwueo6potaclgv69v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxzxuwueo6potaclgv69v.png" alt="Resultado 3 console.table" width="800" height="143"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg9qa1hvzk1lghayq0ry9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg9qa1hvzk1lghayq0ry9.png" alt="Resultado 4 console.table" width="336" height="170"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Note que novamente foi criada uma tabela com duas colunas, a primeira com o nome de nossas propriedades e a segunda com o valor / dado de cada uma delas.&lt;/p&gt;




&lt;h2&gt;
  
  
  👥 console.group
&lt;/h2&gt;

&lt;p&gt;Com o &lt;code&gt;console.group()&lt;/code&gt; podemos justamente agrupar algumas informações para conseguirmos visualiza-las da melhor forma, de uma forma que delimitaremos esses grupos (nos exemplos a seguir veremos isso) e ainda para ajudar as mensagem vão ficando indentadas dentro de nosso &lt;code&gt;console.group()&lt;/code&gt; para ajudar ainda mais nossa visualização.&lt;/p&gt;

&lt;p&gt;Estrutura base:&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F01odd4xxyhloxccvh4zc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F01odd4xxyhloxccvh4zc.png" alt="Estrutura base console.group" width="800" height="563"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Note que precisamos abrir e fechar nosso grupo, abrimos com o &lt;code&gt;console.group()&lt;/code&gt; e fechamos com o &lt;code&gt;console.groupEnd()&lt;/code&gt;, só assim mostramos no código onde começa e termina nosso grupo de informações, mas você deve estar se perguntando, entre essas duas linhas (&lt;code&gt;console.group()&lt;/code&gt; e &lt;code&gt;console.groupEnd()&lt;/code&gt;)  eu coloco o que? Neste caso como está no exemplo você pode por &lt;code&gt;console.log()&lt;/code&gt;, &lt;code&gt;console.warn()&lt;/code&gt; e muito mais.&lt;/p&gt;

&lt;p&gt;Exemplos:&lt;/p&gt;

&lt;p&gt;No primeiro exemplo iremos criar 2 grupos, um contendo os alunos que estavam presentes na sala e os que faltaram, o código fica mais ou menos assim:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwgwquzlf3easplba018t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwgwquzlf3easplba018t.png" alt="Exemplo 1 console.group" width="800" height="804"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Se executarmos o exemplo acima iremos ter o seguinte resultado:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuisc8onpb5s0h7fwesmw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuisc8onpb5s0h7fwesmw.png" alt="Resultado exemplo 1 console.group" width="800" height="434"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4d008c4xm3hk2p1ohb2s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4d008c4xm3hk2p1ohb2s.png" alt="Resultado exemplo 1 console.group" width="392" height="225"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ainda usando o contexto de alunos que estavam presentes ou que faltaram temos o segundo exemplo, neste caso iremos criar outro grupo, mas dentro de outro (mostrando a questão da indentação das informações como comentando no começo dessa parte). No exemplo temos ainda os dois grupos principais (alunos presentes e os que faltaram), mas dentro do grupo dos presentes temos uma outra divisão indicando aqueles alunos que ficaram apenas durante as 2 primeiras aulas.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbbt9vvpv0tihx2ayalqj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbbt9vvpv0tihx2ayalqj.png" alt="Exemplo 2 console.group" width="800" height="577"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A indentação no exemplo acima não se faz necessária para que o código funcione corretamente, é apenas para ficar mais fácil de visualizar que existe um grupo dentro do outro.&lt;/p&gt;

&lt;p&gt;Executando o código do exemplo acima obtemos os seguintes resultados:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxk4oj8n12taabnx6nv2w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxk4oj8n12taabnx6nv2w.png" alt="Resultado exemplo 2 console.group" width="800" height="472"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd83lo3x5xj3gnj6tx1vn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd83lo3x5xj3gnj6tx1vn.png" alt="Resultado exemplo 2.1 console.group" width="433" height="257"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;No lugar do &lt;code&gt;console.group()&lt;/code&gt; podemos usar o &lt;code&gt;console.groupCollapsed()&lt;/code&gt;, desta forma nosso grupo de informações irá vir recolhido, ou seja, iremos precisar ir até o console e clicar no botão para o grupo se abrir / expandir e vermos as informações.&lt;/p&gt;

&lt;p&gt;Seguindo o exemplo acima iremos apenas mudar para  &lt;code&gt;console.groupCollapsed()&lt;/code&gt; o &lt;code&gt;console.group()&lt;/code&gt; presente no grupo de alunos que estiveram presentes apenas nas 2 primeiras aulas, o resultado final dessa mudança é esse:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fml6mzwcwsubgk6j4w1vs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fml6mzwcwsubgk6j4w1vs.png" alt="Resultado exemplo 2.2" width="800" height="412"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Nota que como dito o grupo de informações vem fechado / recolhido, se quisermos visualizar quais alunos estiveram presentes apenas nas 2 primeiras aulas temos que ir até o console e clicar no botão para o grupo se abrir / expandir.&lt;/p&gt;




&lt;h2&gt;
  
  
  🕑 console.time
&lt;/h2&gt;

&lt;p&gt;Já pensou em ver quanto tempo leva para uma determinada parte do seu código rodar completamente? É pra isso que o &lt;code&gt;console.time()&lt;/code&gt; serve, ele irá mostrar ao final de tudo quanto tempo levou para chegar ao final desde da chamada do &lt;code&gt;console.time()&lt;/code&gt; até a chamada do &lt;code&gt;console.timeEnd()&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Estrutura base:&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzzcmgxat0swrhw0175or.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzzcmgxat0swrhw0175or.png" alt="Estrutura base console.time" width="800" height="492"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Dentro do &lt;code&gt;console.time()&lt;/code&gt; passamos como parâmetro um nome para nosso timer podemos assim dizer, já no &lt;code&gt;console.timeEnd()&lt;/code&gt; passamos o mesmo nome para assim indicar que a contagem de tempo deve ser finalizada.&lt;/p&gt;

&lt;p&gt;Exemplo:&lt;/p&gt;

&lt;p&gt;No exemplo abaixo iremos criar um loop for que irá rodar 1000 vezes executando a linha &lt;code&gt;console.log("Oi")&lt;/code&gt;, no final veremos quanto tempo isso leva para terminar.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftbrzq8j41nma6yu42p24.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftbrzq8j41nma6yu42p24.png" alt="Exemplo 1 console.time" width="800" height="440"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Se rodarmos o código do exemplo acima iremos ter os seguintes resultados:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdmcb5frsxg9wj7lg421x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdmcb5frsxg9wj7lg421x.png" alt="Resultado 1 console.time" width="800" height="133"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Futgkg6qajwziwfuvq1c3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Futgkg6qajwziwfuvq1c3.png" alt="Resultado 1.2 console.time" width="422" height="254"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Um método parecido com o que acabamos de ver é o &lt;code&gt;console.profile()&lt;/code&gt;, que não será abordado neste post.&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  🛣️ console.trace
&lt;/h2&gt;

&lt;p&gt;Com o &lt;code&gt;console.trace()&lt;/code&gt; conseguimos fazer uma trilha de como o código está sendo executado, passo a passo.&lt;/p&gt;

&lt;p&gt;Estrutura base:&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F58p6xemk48265pmn6ckn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F58p6xemk48265pmn6ckn.png" alt="Estrutura base console.trace" width="800" height="355"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Exemplo:&lt;/p&gt;

&lt;p&gt;No exemplo abaixo iremos apenas criar 2 funções, uma função chamada &lt;code&gt;funcao1&lt;/code&gt; que irá chamar a outra função &lt;code&gt;funcao2&lt;/code&gt;, está que por sua vez irá ter um &lt;code&gt;console.trace()&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmshc7r49lx9x0iavsl81.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmshc7r49lx9x0iavsl81.png" alt="Exemplo console.trace" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Abaixo podemos ver o resultado caso executemos o código do exemplo acima:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9zzh3rjilu51l17dqmc7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9zzh3rjilu51l17dqmc7.png" alt="Resultado exemplo console.trace" width="800" height="211"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Podemos notar que como comentado ele mostra uma trilha de quais funções foram chamadas.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔗 Fontes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Web/API/console" rel="noopener noreferrer"&gt;https://developer.mozilla.org/en-US/docs/Web/API/console&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/devsmitra/javascript-console-methods-a-cheat-sheet-for-developers-44mc"&gt;https://dev.to/devsmitra/javascript-console-methods-a-cheat-sheet-for-developers-44mc&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.w3schools.com/jsref/obj_console.asp" rel="noopener noreferrer"&gt;https://www.w3schools.com/jsref/obj_console.asp&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>javascript</category>
      <category>beginners</category>
      <category>braziliandevs</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Cloud Computing / Computação na nuvem (surgimento, características, vantagens etc.)</title>
      <dc:creator>Luigi Belanda</dc:creator>
      <pubDate>Wed, 20 Apr 2022 01:01:48 +0000</pubDate>
      <link>https://dev.to/luigibelanda/cloud-computing-computacao-na-nuvem-surgimento-caracteristicas-vantagens-etc-31i8</link>
      <guid>https://dev.to/luigibelanda/cloud-computing-computacao-na-nuvem-surgimento-caracteristicas-vantagens-etc-31i8</guid>
      <description>&lt;h2&gt;
  
  
  🔴 Aviso
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;Todo esse texto foi criado para uma pesquisa / trabalho da matéria &lt;strong&gt;Arquitetura e Organização de Computadores&lt;/strong&gt; da minha faculdade, o texto pode apresentar erros e desde já deixo claro que isso é apenas a base sobre o assunto, recomendo o uso das fontes citadas no final desse post para consulta e melhor entendimento no geral do assunto. Qualquer sugestão sobre o texto / assunto será de extrema importância e ajuda. &lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  💡 Surgimento
&lt;/h2&gt;

&lt;p&gt;A Cloud Computing é um dos alicerces da construção do mundo conectado atualmente, servindo de grande apoio para o Big Data, IOT e muitas outras tecnologias / conceitos, podemos desde já deixar claro que apesar de estarmos falando de uma tecnologia nova, o conceito / ideia de “Cloud Computing” é mais antigo do que se parece, segundo alguns relatos históricos essa ideia tem seu surgimento em meados da década de 60.&lt;/p&gt;

&lt;p&gt;Um dos grandes nomes para a ciência da computação, John McCarthy &lt;strong&gt;[1]&lt;/strong&gt;, inventor de um dos termos que anda em alta já há alguns anos, inteligência artificial, fez uma vez a defesa da proposta de “time-sharing”, em outras palavras podemos dizer computação por tempo compartilhado.&lt;/p&gt;

&lt;p&gt;O cientista disse que a computação poderia permitir que uma máquina de computador pudesse ser utilizada de forma simultânea por dois ou mais usuários. Neste caso, as pessoas poderiam realizar tarefas e aproveitar o tempo disponível dos recursos. Na visão do mesmo esse compartilhamento poderia reduzir custos e além disso permitir o pagamento conforme o período de uso dos serviços. Aqui se dava os primeiros passos para os conceitos fundamentais da Cloud Computing.&lt;/p&gt;

&lt;p&gt;Essa teoria, com esse modelo, foi apresentada pelo cientista durante um discurso no Massachusetts Institute of Technology (MIT), nos Estados Unidos, no ano de 1961. Nesse discurso, ele sugeriu a criação da “Utility Computing” ou podemos dizer computação como serviço de utilidade pública.&lt;/p&gt;

&lt;p&gt;Pesquisando sobre o termo “Utility Computing” ou “The Computer Utility” podemos entender ele um pouco melhor, a computação utilitária é um modelo / processo de prestação / fornecimento de serviços de computação com forte vínculo na ideia de cobrança sob demanda e pagamento por uso, em vez de se pagar uma taxa fixa, outra parte importante disso tudo é que esse modelo segue a ideia do fornecedor disponibilizar seus recursos computacionais e o mesmo irá gerenciar e operar sua infraestrutura, os usuários / clientes / assinantes acessam esses recursos disponibilizados quando necessário, seja por meio de contratos, planos de assinatura, aluguéis etc.&lt;/p&gt;

&lt;p&gt;Já em 1962, Joseph Carl Robnett Licklider &lt;strong&gt;[2]&lt;/strong&gt; (a influência mais importante no desenvolvimento da ARPANET), do MIT, já falava sobre a criação de uma rede que seria interligada por uma rede de computadores, John McCarthy e o Joseph Carl Robnett Licklider, foram os pioneiros do conceito já citado.&lt;/p&gt;

&lt;p&gt;Após muito tempo, apenas em 1997 o termo “Cloud Computing” foi usado pela primeira vez pelo professor de sistemas de informação, Ramnath Chellappa &lt;strong&gt;[3]&lt;/strong&gt;, em uma palestra acadêmica em 1999, o professor até hoje é considerado aquele que fundou o termo amplamente utilizado, aliás apenas por curiosidade empresa Salesforce &lt;strong&gt;[4]&lt;/strong&gt; foi a primeira a disponibilizar aplicações empresariais pela web e dentro de alguns anos as empresas começaram a fazer sua migração para a nuvem.&lt;/p&gt;

&lt;p&gt;Mas afinal, por que o nome “Cloud Computing”? A origem de seu nome vem dos diagramas das antigas redes de dados ISDN &lt;strong&gt;[5]&lt;/strong&gt; (Services Digital Network, ou rede de serviços digitais, projetadas pelas operadoras de telefonia. A interligação dessas redes era demonstrada por desenhos de nuvens, como pode ser visto nas imagens abaixo, para sinalizar algo que estava fora do alcance das empresas. Por isso, a palavra sugere uma ideia de um ambiente desconhecido, toda a infra e recursos computacionais ficam “escondidos”, onde o usuário tem o acesso apenas a uma interface padrão.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcdci1wq34kfzatqktp4p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcdci1wq34kfzatqktp4p.png" alt="Diagrama ISDN" width="572" height="270"&gt;&lt;/a&gt; &lt;br&gt;
&lt;em&gt;Exemplo de diagrama ISDN (note o símbolo de nuvem, ressaltando o que foi dito na explicação sobre o nome “Cloud”)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Finalmente, o que podemos definir como "computação em nuvem"? A computação em nuvem nada mais é do que um servidor remoto que conecta o dispositivo de um usuário a recursos centralizados em um servidor, que por sua vez armazena todos os dados e programas de que você precisa e pode estar localizado em qualquer lugar geograficamente.&lt;/p&gt;

&lt;p&gt;Exemplos mais comuns de de serviços de Cloud Computing: O AWS Amazon, o iCloud, o Google Drive e o Microsoft Azure, assim como os streaming de músicas e de vídeos são exemplos de plataformas que utilizam esta tecnologia.&lt;/p&gt;




&lt;h2&gt;
  
  
  📝 Características
&lt;/h2&gt;

&lt;p&gt;Apesar de já sabermos que Cloud Computing é algo que às vezes nem sabemos onde fica o servidor que estamos acessando, na máximo que país fica o servidor / data center &lt;strong&gt;[6]&lt;/strong&gt;, que não temos tanto controle muitas vezes sobre o hardware que vamos usar, que é necessário conexão com a internet e muito mais, mas podemos citar como principais características da computação em nuvem os seguintes pontos: Elasticidade e Escalonamento, Faturamento e medição de uso, Autoatendimento sob demanda, Amplo acesso, Serviços mensuráveis, Customização e Pool de recursos. Todos esses pontos tem uma breve explicação abaixo.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Elasticidade e Escalonamento (praticamente sempre que necessário serão providos recursos adicionais para o usuário caso a demanda aumente, como também a diminuição dos recursos computacionais do usuário caso a demanda diminua);&lt;/li&gt;
&lt;li&gt;Faturamento e medição de uso (uma vez que o usuário tem a opção de requisitar e utilizar somente a quantidade de recursos e serviços que ele julgar necessário, os serviços devem ser precificados com base, por exemplo, no número de horas de uso, as nuvens devem implementar recursos que garantam um eficiente comércio de serviços, um exemplo disso é a questão do monitoramento e otimização de uso, custos / tarifação adequada, contabilidade e faturamento);&lt;/li&gt;
&lt;li&gt;Autoatendimento sob demanda (se o usuário quiser aumentar as capacidades computacionais de seus serviços ele pode fazer isso muitas vezes até sem atendimento humano, só efetuando a compra de um outro plano ou algo do tipo);&lt;/li&gt;
&lt;li&gt;Amplo acesso (os serviços da nuvem são muitas vezes acessíveis de diversas plataformas, desde PCs, celulares etc com esse ponto ainda ganhamos outra coisa que é a mobilidade, se podemos acessar os serviços de quase qualquer dispositivo e tendo conexão com internet então não precisamos estar na empresa para isso, podemos analisar alguma coisa sempre que necessário de qualquer lugar praticamente etc.);&lt;/li&gt;
&lt;li&gt;Serviços mensuráveis (os serviços são controlados e monitorados automaticamente, ficando nítido para o consumidor o que pode ser feito para otimizar sua utilização e para o provedor a cobrança dos recursos);&lt;/li&gt;
&lt;li&gt;Customização (no atendimento a múltiplos usuários verifica-se a grande disparidade entre as necessidades dos mesmos, tornando essencial a capacidade de personalização dos recursos da nuvem);&lt;/li&gt;
&lt;li&gt;Pool de recursos (os recursos computacionais da nuvem ficam reunidos geograficamente, seus recursos virtuais são dinamicamente atribuídos ou retribuídos pelo cliente conforme sua demanda, mas o cliente não possui controle sobre a real localização dos recursos que está utilizando, tendo somente uma ou outra informação mais ampla, como por exemplo, o país em que se encontra o servidor / data center, estado, situação do servidor etc).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fma1emmf6veo9ibv5p0b1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fma1emmf6veo9ibv5p0b1.png" alt="Características da computação em nuvem" width="784" height="425"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Imagem com algumas características já citadas e outras não sobre computação em nuvem&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  🔒 Segurança
&lt;/h2&gt;

&lt;p&gt;Sobre essa questão podemos escutar muito o termo “Segurança da Nuvem” ou até mesmo “Segurança em Nuvem”, este é um termo amplo que engloba a tecnologia e as práticas recomendadas criadas para proteger os dados e as informações em uma arquitetura de nuvem, um ponto importante é que pelo fato da arquitetura em nuvem ser distribuída e dinâmica há pontos específicos quando tratamos de segurança.&lt;/p&gt;

&lt;p&gt;Apesar de haver pontos específicos da segurança na nuvem, muitas das preocupações são as mesmas de um sistema de TI convencional, como por exemplo: uma eventual exposição e vazamento de dados não autorizados, seja por conta de alguma vulnerabilidade do sistema, algum ataque, phishing etc. controles de acesso fracos (contas com acessos desnecessários, não registrar em logs quem acessou o sistema e muito mais), suscetibilidade a ataques e interrupções na disponibilidade.&lt;/p&gt;

&lt;p&gt;Sendo assim, alguns dos pontos principais da segurança da nuvem são, por exemplo: controles de segurança, melhorias de processo para proteger os sistemas, alertar possíveis invasores, segurança dos dados e detectar incidentes ocorridos e até mesmo outros pontos.&lt;/p&gt;

&lt;p&gt;Todos esses pontos citados tem como objetivos principais:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Possibilitar a recuperação no caso de perda de dados (seja por meio de backups, por exemplo);&lt;/li&gt;
&lt;li&gt;Proteger o armazenamento e as redes contra roubo malicioso de dados (controles de acesso, logs, regras bem definidas de autenticação);&lt;/li&gt;
&lt;li&gt;Determinar se houve erro humano ou negligência na causa vazamento de dados (levantamento e gerenciamento dos riscos);&lt;/li&gt;
&lt;li&gt;Mitigar o impacto de qualquer comprometimento de dados ou sistemas.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Muitas coisas são usadas para a maior segurança possível do serviço, como criptografia dos dados, utilização de VPNs &lt;strong&gt;[7]&lt;/strong&gt; para transferência dos dados, gerenciamento de identidade e acesso, etc.&lt;/p&gt;

&lt;p&gt;Vale destacar que como boas práticas de segurança em nuvem temos os seguintes pontos: Autenticação Multifator (MFA), Classificação de dados (entender quais dados estão sendo armazenados, como estão sendo armazenados, quais dados são sigilosos e muito mais), Identificação e Autenticação (nesta questão não envolve só controlar o acesso de usuários, mas também controlar o acesso de aplicações, APIs etc.), Criar contas separadas e controladas para administradores (não é nada recomendado criar uma conta única para a empresa, onde se essa conta for comprometida tudo é perdido) e Logs (com os Logs podemos registrar cada ação na nuvem, assim alertando os administradores sobre ações suspeitas / perigosas e acessos de máquinas indevidos).&lt;/p&gt;

&lt;p&gt;Uma questão importante é que não devemos pensar na questão de segurança da nuvem apenas como software ou hardware, tudo começa com um levantamento e gerenciamento dos riscos, pensar no que pode dar errado e como isso afeta o negócio, mesmo que a chance disso acontecer seja muito baixa.&lt;/p&gt;

&lt;p&gt;Como benefícios de se aprimorar no quesito segurança, temos maior proteção contra ataques, maior disponibilidade e confiabilidade dos serviços e muito mais.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fllure0x69mit0ohnns15.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fllure0x69mit0ohnns15.jpg" alt="Questões de segurança AWS" width="800" height="398"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Imagem com exemplos de ideias para segurança na nuvem, em questão muitas das coisas contidas na imagem fazem parte da AWS&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  🗼 Arquitetura
&lt;/h2&gt;

&lt;p&gt;A arquitetura de nuvem é a forma como as tecnologias individuais são integradas para criar nuvens, é a organização de componentes e subcomponentes em uma estrutura lógica, permitindo que esses componentes trabalhem juntos e assim criando uma nuvem.&lt;/p&gt;

&lt;p&gt;A arquitetura de nuvem varia de acordo com o que você quer fazer. No entanto, a maioria das nuvens requerem software de automação, gerenciamento, middleware e hardware. A maioria das nuvens também usam a virtualização para abstrair os recursos de hardware com gerenciamento central. Já outras nuvens conhecidas podem conectar os clientes diretamente ao hardware. De forma geral os componentes mais básicos são redes, roteadores, switches, servidores, firewalls &lt;strong&gt;[8]&lt;/strong&gt;, sistemas de segurança e muito mais.&lt;/p&gt;

&lt;p&gt;Indo um pouco mais além podemos dividir a arquitetura de nuvem em quatro níveis: funções, atividades, componentes e subcomponentes.&lt;/p&gt;

&lt;p&gt;As funções são divididas em Consumidor de nuvem (pessoa ou empresa que usa o serviço de nuvem), Provedor de nuvem (pessoa ou companhia que fornece os serviços para criar os servidores, máquinas virtuais, armazenamento de dados etc.), Corretor de nuvem (pessoa ou empresa que gerencia o uso e desempenho da nuvem para o cliente), Operadora da nuvem (provedor de serviços que conecta uma empresa à nuvem) e Auditor de nuvem (pessoa ou empresa que realiza a auditoria de um provedor de nuvem).&lt;/p&gt;

&lt;p&gt;As parte de atividades definem o acesso e o consumo de SaaS, PaaS e IaaS (serão explicados logo mais), incluindo principalmente nesta parte as questões de orquestração (gerenciamento de um ambiente de nuvem para cumpri determinados objetivos), auditorias (análises na questão de segurança, desempenho e conformidade do provedor) e segurança (confidencialidade, integridade dos dados e disponibilidade).&lt;/p&gt;

&lt;p&gt;Já a parte de componentes visa escolher os componentes necessários da arquitetura da nuvem para chegar a um objetivo, nessa questão entram decisões, como por exemplo, se a nuvem é privada, pública ou híbrida. Outros dois pontos fundamentais para a escolha dos componentes são a interoperabilidade e a portabilidade. Tudo isso deve ser levado em conta para que a empresa em questão não fique presa em uma estrutura inadequada ou sofra com isso.&lt;/p&gt;

&lt;p&gt;Por fim, a parte dos subcomponentes visa permitir que a empresa trate de outras questões, como por exemplo, gerenciamento de SLA, provisionamento rápido e mudanças de recursos.&lt;/p&gt;

&lt;p&gt;Todos os equipamentos comentados no começo dessa sessão e conceitos comentados nos últimos parágrafos fazem parte da arquitetura / estrutura básica de nuvem, declarando quem faz o que e com quais ferramentas e muito mais.&lt;/p&gt;

&lt;p&gt;Podemos falar brevemente ainda de mais três coisas que podemos definir em uma estrutura / arquitetura de computação na nuvem: os Atores, Camadas e Cenários da nuvem. Existem três atores principais na computação em nuvem (prestadores de serviços -  desenvolvem e deixam os serviços acessíveis aos usuários através de interfaces baseadas na Internet, usuários do serviço e os prestadores da infraestrutura - fornecedores da infraestrutura para criação dos serviços).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faao7vmri61thok9pf9nf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faao7vmri61thok9pf9nf.png" alt="Diagrama de atores" width="692" height="576"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Exemplo de imagem que ilustra os três atores&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;As camadas são divididas em infraestrutura (camada mais baixa), plataforma (abstração mais elevada e provê serviços para que as aplicações possam ser desenvolvidas) e aplicação (alto nível de abstração, e aquela que oferece diversas aplicações como serviços para os usuários), no qual podemos entender melhor na imagem a seguir.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9xcvax83fmgwyofd25dq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9xcvax83fmgwyofd25dq.png" alt="Exemplo das camadas" width="719" height="285"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Imagem representando as camadas&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;E os Cenários? Os cenários são como os serviços são disponibilizados para os usuários, no caso como SaaS, PaaS e IaaS, mas o que cada uma dessas siglas representa?Resumidamente:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Saas: o cliente pode usar o software de um computador ou servidor, exemplos comuns (Office 365 e Gmail), a única coisa necessário é que o cliente tenha um dispositivo conectado à internet;&lt;/li&gt;
&lt;li&gt;Paas: oferece para o cliente uma forma de provisionar, implantar ou criar software;&lt;/li&gt;
&lt;li&gt;IaaS: permite que a empresa crie seu próprio data center virtual (vDC).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Por conta das diferenças de cada um dos tópicos acima a arquitetura de nuvem comentada anteriormente pode variar dependendo de qual modelo ela segue (SaaS, PaaS e IaaS, como também se é uma nuvem privada, híbrida ou pública), mas no geral ela se mantém com a maioria dos pontos já comentados acima.&lt;/p&gt;




&lt;h2&gt;
  
  
  ⭐ Vantagens
&lt;/h2&gt;

&lt;p&gt;Depois de tudo que foi dito você estar se perguntando, quais são as reais vantagens da computação na nuvem? Pois bem, talvez a vantagem mais marcante para muitos de nós seja a possibilidade de conexão / acesso aos dados e aplicações de qualquer lugar, nos gerando assim uma economia de tempo pois assim o compartilhamento de arquivos, por exemplo, fica muito mais fácil e rápido, desde que haja conexão com a internet, assim ganhamos algumas coisas importantes como, por exemplo: mobilidade e flexibilidade.&lt;/p&gt;

&lt;p&gt;A possibilidade de fazer o pagamento mediante ao seu uso dos recursos da “Cloud” ajuda a pagar somente o necessário e evitar desperdícios dos recursos.&lt;/p&gt;

&lt;p&gt;Indo um pouco mais a fundo na questão da flexibilidade podemos ainda tocar em um ponto muito importante também que é a possibilidade do usuário escalar sua aplicação / serviço, caso necessário, ampliando a disponibilidade dos recursos, seja contratando um plano mais caro e com mais recursos, por exemplo.&lt;/p&gt;

&lt;p&gt;Outras flexibilidades consistem em facilitar a utilização dos serviços e compartilhamento de recursos, além da confiabilidade dos serviços, até por que as empresas que prestam serviços de Cloud Computing são avaliadas por sua reputação, principalmente pela capacidade de manter os dados seguros através de cópias de segurança, criptografia, controle de acesso rigoroso, conseguir administrar eventuais falhas e ataques, prestar esclarecimento quando necessário etc.&lt;/p&gt;

&lt;p&gt;Se pensarmos bem também veremos que a empresa pode obter uma produtividade maior utilizando cloud computing, tirando algumas preocupações de seu alcance, como por exemplo: e se o hardware quebrar? Neste caso, como a empresa não tem acesso ao hardware o provedor do serviço de cloud computing deve se preocupar com isso e muitas outras coisas. Essa questão ainda pode se tornar uma vantagem competitiva para a empresa, isso porque a empresa poderá focar em outras coisas de seu negócio e se preocupar menos com alguns pontos que serão comentados a seguir.&lt;/p&gt;

&lt;p&gt;Outra questão é a redução de custos, usando um serviço de cloud computing a empresa não precisa se preocupar com a manutenção do hardware, com mão de obra para manter os serviços no ar, com a energia gasta etc. óbvio que tudo isso vai estar colocado nos preços de contratos / assinaturas pelo provedores para o uso dos serviços de computação na nuvem, mas provavelmente os gastos com isso serão infinitamente menores se comparados com a ideia da empresa construir seu próprio serviço de computação na nuvem etc.&lt;/p&gt;

&lt;p&gt;A facilidade de se configurar esses serviços na nuvem também é um fator crucial para sua adoção pela empresas, até mesmo aspectos individuais como: controles de acesso, senhas etc. podem ser configurados facilmente muitas vezes por meio de interfaces, o que agiliza e muito na hora de colocar no ar seu serviço de computação na nuvem, sua aplicação etc.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpv91c3ea8449gbs0dzoq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpv91c3ea8449gbs0dzoq.png" alt="Benefícios Cloud Computing" width="640" height="545"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Imagem com exemplos de vantagens da computação na nuvem&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  😓 Desvantagens
&lt;/h2&gt;

&lt;p&gt;Como é óbvio temos desvantagens na computação em nuvem, esses pontos são os mesmos que dificultam um pouco a adoção da mesma, por exemplo: segurança, escalabilidade, interoperabilidade, confiabilidade e disponibilidade.&lt;/p&gt;

&lt;p&gt;Dos pontos citados acima talvez o mais impactante seja o fator da segurança, antes tínhamos um modelo onde nossas informações ou a de nossos sistemas ficavam armazenadas localmente, com a computação em nuvem essas informações ficam em locais normalmente desconhecidos por nós e não sabemos se existem mais dados sendo armazenados com os nosso, não temos muito controle também sobre o hardware, perdemos de certa forma o controle direto sobre as informações armazenadas etc, outra questão é o vazamento de dados, se as transferências de dados não forem criptografadas, representam um ponto adicional para possíveis fugas de dados.&lt;/p&gt;

&lt;p&gt;Outro ponto próximo ao da segurança é a confiabilidade, quem nos garante que se o sistema falhar nossos dados na nuvem vão continuar intactos? O sistema falha muitas vezes? Sendo assim é nítido que as aplicações para a nuvem devem ser confiáveis, o serviço deve garantir que caso aconteçam falhas os dados permaneçam como estão e colocar de pé o quanto antes novamente os sistemas.&lt;/p&gt;

&lt;p&gt;Atrelado à confiabilidade está a questão da disponibilidade, em sistemas / serviços na nuvem estamos fadados a depender de conexão com a internet, como também que o sistema ou serviço em si esteja no ar. &lt;/p&gt;

&lt;p&gt;Normalmente, os serviços de computação em nuvem vão ser utilizados por várias empresas, ou seja, o uso de servidores e recursos compartilhados por diferentes empresas e utilizadores, favorece a possibilidade de falhas de acesso que geram acessos não autorizados. Com esse número grande de clientes utilizando os serviços de computação em nuvem, até mesmo “dividindo o mesmo espaço”, pode algum dia sobrecarregar o serviço e assim deixá-lo fora do ar.&lt;/p&gt;

&lt;p&gt;A escalabilidade é um recurso fundamental da computação em nuvem como já vimos anteriormente, isso permite que os recursos usados ​​sejam alterados conforme necessário, mas para fazer isso, os aplicativos e seus dados devem ser suficientemente flexíveis, devem estar até mesmo estruturados para essa flexibilidade. Essa tarefa pode não ser simples e geralmente depende da implementação e da construção da aplicação e até mesmo de como o serviço de nuvem foi construído.&lt;/p&gt;

&lt;p&gt;Um ponto que pode ser complicado para algumas empresas é o controle limitado, toda infraestrutura do serviço de cloud computing é controlado pelo provedor do serviço, dando ao cliente a opção de gerenciar apenas suas aplicações e dados, por exemplo, questões de mais baixo nível, como atualizações nos servidores, atualização de firmware &lt;strong&gt;[9]&lt;/strong&gt; não são passadas aos clientes / usuários.  &lt;/p&gt;

&lt;p&gt;Outro ponto que pode deixar as empresas preocupadas é a questão da interoperabilidade, capacidade dos usuários de executar os seus programas e os seus dados em diferentes nuvens e plataformas, os usuários têm a preocupação de não conseguirem retirar seus dados e seus programas de uma nuvem e colocá-los em outra com relativa facilidade, havendo a sensação de que os dados ficam presos em uma determinada nuvem.&lt;/p&gt;




&lt;h2&gt;
  
  
  📚 Conteúdos extras
&lt;/h2&gt;

&lt;p&gt;[1] “John McCarthy foi um cientista da computação estadunidense. Conhecido pelos estudos no campo da inteligência artificial e por ser o criador da linguagem de programação Lisp. Recebeu o Prêmio Turing de 1972 e a Medalha Nacional de Ciências dos Estados Unidos de 1991.”&lt;/p&gt;

&lt;p&gt;[2] “J.C.R. Licklider, na íntegra Joseph Carl Robnett Licklider, nascido em 11 de março de 1915, St. Louis, Missouri, EUA — falecido em 26 de junho de 1990, Arlington, Massachusetts, cientista da computação americano que ajudou a estabelecer as bases para redes de computadores e ARPANET, a antecessora da Internet.”&lt;/p&gt;

&lt;p&gt;[3] “Desde 1997, Ramnath K. Chellappa fundou o que é amplamente considerado como a primeira definição acadêmica de computação em nuvem, descrevendo-a como “um modelo computacional em que os limites não serão determinados pela tecnologia, mas pelas capacidades financeiras de todos”.”&lt;/p&gt;

&lt;p&gt;[4] “A Salesforce foi fundada em 1999, nos Estados Unidos, por Marc Benioff, ex-executivo da Oracle. Atualmente, a companhia é uma das líderes mundiais em soluções de CRM, conhecida, principalmente, pela plataforma Sales Cloud. Ao longo de sua história, a Salesforce ganhou destaque no mercado por sua capacidade de inovação.”&lt;/p&gt;

&lt;p&gt;[5] “A sigla ISDN (Integrated Services Digital Network) representa uma rede digital que integra serviços de diversas naturezas, como voz, dados, imagens etc, devendo substituir gradualmente a infra-estrutura física de comunicações, em que cada serviço tende a trafegar por segmentos independentes.”&lt;/p&gt;

&lt;p&gt;[6] “Um centro de processamento de dados, também conhecido como data center, é um local onde estão concentrados os sistemas computacionais de uma empresa ou organização, como um sistema de telecomunicações ou um sistema de armazenamento de dados, além do fornecimento de energia para a instalação.”&lt;/p&gt;

&lt;p&gt;[7] “VPN significa “Virtual Private Network” (rede virtual privada): um serviço que protege a sua conexão de Internet e privacidade online. Ela cria um túnel criptografado para os seus dados, protege a sua identidade online, oculta o seu endereço de IP e permite que você use pontos de acesso de Wi-Fi públicos com segurança.&lt;/p&gt;

&lt;p&gt;[8] “Um firewall é um dispositivo de segurança da rede que monitora o tráfego de rede de entrada e saída e decide permitir ou bloquear tráfegos específicos de acordo com um conjunto definido de regras de segurança.”&lt;/p&gt;

&lt;p&gt;[9] “Em eletrônica e computação, firmware é uma classe específica de software de computador que fornece controle de baixo nível para o hardware específico do dispositivo”&lt;/p&gt;




&lt;h2&gt;
  
  
  🔗 Fontes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.brascloud.com.br/blog/cloud-computing-uma-breve-historia-sobre/" rel="noopener noreferrer"&gt;https://www.brascloud.com.br/blog/cloud-computing-uma-breve-historia-sobre/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.estabil.is/a-historia-da-cloud-computing/" rel="noopener noreferrer"&gt;https://blog.estabil.is/a-historia-da-cloud-computing/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://pt.wikipedia.org/wiki/John_McCarthy#cite_note-2" rel="noopener noreferrer"&gt;https://pt.wikipedia.org/wiki/John_McCarthy#cite_note-2&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.britannica.com/biography/J-C-R-Licklider" rel="noopener noreferrer"&gt;https://www.britannica.com/biography/J-C-R-Licklider&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.dell.com/learn/br/pt/brbsdt1/sb360/social_cloud" rel="noopener noreferrer"&gt;https://www.dell.com/learn/br/pt/brbsdt1/sb360/social_cloud&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://hightechnews.info/ramnath-k-chellappa-tres-perguntas-ao-homem-que-criou-o-termo-computacao-em-nuvem/" rel="noopener noreferrer"&gt;https://hightechnews.info/ramnath-k-chellappa-tres-perguntas-ao-homem-que-criou-o-termo-computacao-em-nuvem/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://canaltech.com.br/empresa/salesforce/" rel="noopener noreferrer"&gt;https://canaltech.com.br/empresa/salesforce/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://imasters.com.br/cloud/uma-breve-historia-da-cloud-computing" rel="noopener noreferrer"&gt;https://imasters.com.br/cloud/uma-breve-historia-da-cloud-computing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.cisco.com/c/dam/en/us/support/docs/dial-access/integrated-services-digital-networks-isdn-channel-associated-signaling-cas/15925-ISDN-3Rt.gif" rel="noopener noreferrer"&gt;https://www.cisco.com/c/dam/en/us/support/docs/dial-access/integrated-services-digital-networks-isdn-channel-associated-signaling-cas/15925-ISDN-3Rt.gif&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.cisco.com/c/dam/en/us/support/docs/dial-access/integrated-services-digital-networks-isdn-channel-associated-signaling-cas/14222-40.gif" rel="noopener noreferrer"&gt;https://www.cisco.com/c/dam/en/us/support/docs/dial-access/integrated-services-digital-networks-isdn-channel-associated-signaling-cas/14222-40.gif&lt;/a&gt;
-&lt;a href="https://www.ic.unicamp.br/%7Educatte/mo401/1s2011/T2/Artigos/G04-095352-120531-t2.pdf" rel="noopener noreferrer"&gt;https://www.ic.unicamp.br/~ducatte/mo401/1s2011/T2/Artigos/G04-095352-120531-t2.pdf&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.gta.ufrj.br/ensino/eel879/trabalhos_vf_2010_2/fernando/caracteristicas.html" rel="noopener noreferrer"&gt;https://www.gta.ufrj.br/ensino/eel879/trabalhos_vf_2010_2/fernando/caracteristicas.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.vmware.com/br/topics/glossary/content/cloud-security.html" rel="noopener noreferrer"&gt;https://www.vmware.com/br/topics/glossary/content/cloud-security.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.kaspersky.com.br/resource-center/definitions/what-is-cloud-security" rel="noopener noreferrer"&gt;https://www.kaspersky.com.br/resource-center/definitions/what-is-cloud-security&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.redhat.com/pt-br/topics/security/cloud-security" rel="noopener noreferrer"&gt;https://www.redhat.com/pt-br/topics/security/cloud-security&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nordvpn.com/pt-br/what-is-a-vpn/#:%7E:text=VPN%20significa%20%E2%80%9CVirtual%20Private%20Network,Wi%2DFi%20p%C3%BAblicos%20com%20seguran%C3%A7a" rel="noopener noreferrer"&gt;https://nordvpn.com/pt-br/what-is-a-vpn/#:~:text=VPN%20significa%20%E2%80%9CVirtual%20Private%20Network,Wi%2DFi%20p%C3%BAblicos%20com%20seguran%C3%A7a&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.redhat.com/pt-br/topics/cloud-computing/what-is-cloud-architecture" rel="noopener noreferrer"&gt;https://www.redhat.com/pt-br/topics/cloud-computing/what-is-cloud-architecture&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.dinamio.com.br/blog/2019/10/25/cloud-computing-conceitos-e-caracteristicas-de-iaas-paas-e-saas/" rel="noopener noreferrer"&gt;https://www.dinamio.com.br/blog/2019/10/25/cloud-computing-conceitos-e-caracteristicas-de-iaas-paas-e-saas/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.techopedia.com/definition/14622/utility-computing" rel="noopener noreferrer"&gt;https://www.techopedia.com/definition/14622/utility-computing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://jornadaparanuvem.com.br/fundamentos-de-cloud-computing/as-cinco-caracteristicas-essenciais/" rel="noopener noreferrer"&gt;http://jornadaparanuvem.com.br/fundamentos-de-cloud-computing/as-cinco-caracteristicas-essenciais/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://i2.wp.com/jornadaparanuvem.com.br/wp-content/uploads/2021/03/cloudnist.jpg?w=1250" rel="noopener noreferrer"&gt;https://i2.wp.com/jornadaparanuvem.com.br/wp-content/uploads/2021/03/cloudnist.jpg?w=1250&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.icloud.com.br/wp-content/uploads/2018/10/caracteristicas-da-computacao-em-nuvem.png" rel="noopener noreferrer"&gt;https://www.icloud.com.br/wp-content/uploads/2018/10/caracteristicas-da-computacao-em-nuvem.png&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.ohub.com.br/ideias/wp-content/uploads/2019/04/beneficios-cloud-computing.png" rel="noopener noreferrer"&gt;https://www.ohub.com.br/ideias/wp-content/uploads/2019/04/beneficios-cloud-computing.png&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.envisiontecnologia.com.br/wp-content/uploads/2017/03/03_03.fw_.png" rel="noopener noreferrer"&gt;https://www.envisiontecnologia.com.br/wp-content/uploads/2017/03/03_03.fw_.png&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.apd.pt/vantagens-e-desvantagens-do-cloud-computing/" rel="noopener noreferrer"&gt;https://www.apd.pt/vantagens-e-desvantagens-do-cloud-computing/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/@eunerd/vantagens-desvantagens-cloud-computing-e86b82e4e336" rel="noopener noreferrer"&gt;https://medium.com/@eunerd/vantagens-desvantagens-cloud-computing-e86b82e4e336&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://goizueta.emory.edu/faculty/profiles/ramnath-k-chellappa" rel="noopener noreferrer"&gt;https://goizueta.emory.edu/faculty/profiles/ramnath-k-chellappa&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.trendmicro.com/pt_br/what-is/cloud-security.html#:%7E:text=Seguran%C3%A7a%20em%20nuvem%20%C3%A9%20a,fornecem%20infraestrutura%20de%20nuvem%20segura" rel="noopener noreferrer"&gt;https://www.trendmicro.com/pt_br/what-is/cloud-security.html#:~:text=Seguran%C3%A7a%20em%20nuvem%20%C3%A9%20a,fornecem%20infraestrutura%20de%20nuvem%20segura&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.trendmicro.com/pt_br/what-is/cloud-security/cloud-architecture.html" rel="noopener noreferrer"&gt;https://www.trendmicro.com/pt_br/what-is/cloud-security/cloud-architecture.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/pt/blogs/aws-brasil/criando-uma-jornada-segura-na-nuvem-aws/" rel="noopener noreferrer"&gt;https://aws.amazon.com/pt/blogs/aws-brasil/criando-uma-jornada-segura-na-nuvem-aws/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.cisco.com/c/pt_br/products/security/firewalls/what-is-a-firewall.html" rel="noopener noreferrer"&gt;https://www.cisco.com/c/pt_br/products/security/firewalls/what-is-a-firewall.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://pt.wikipedia.org/wiki/Firmware" rel="noopener noreferrer"&gt;https://pt.wikipedia.org/wiki/Firmware&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.gta.ufrj.br/ensino/eel879/trabalhos_vf_2009_2/seabra/arquitetura.html" rel="noopener noreferrer"&gt;https://www.gta.ufrj.br/ensino/eel879/trabalhos_vf_2009_2/seabra/arquitetura.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>cloud</category>
      <category>pesquisa</category>
      <category>beginners</category>
    </item>
    <item>
      <title>readme-cli-create, detalhes do projeto e minha primeira experiência desenvolvendo um projeto próprio e aberto ao público</title>
      <dc:creator>Luigi Belanda</dc:creator>
      <pubDate>Sat, 09 Apr 2022 19:06:45 +0000</pubDate>
      <link>https://dev.to/luigibelanda/readme-cli-create-detalhes-do-projeto-e-minha-primeira-experiencia-desenvolvendo-um-projeto-proprio-e-aberto-ao-publico-4pdl</link>
      <guid>https://dev.to/luigibelanda/readme-cli-create-detalhes-do-projeto-e-minha-primeira-experiencia-desenvolvendo-um-projeto-proprio-e-aberto-ao-publico-4pdl</guid>
      <description>&lt;h2&gt;
  
  
  Início da ideia
&lt;/h2&gt;

&lt;p&gt;Depois de um bom tempo estudando JS, Node etc. e criando diversos repositórios no GitHub tive uma pequena ideia, algo que iria facilitar um pouco minha vida na hora de escrever os READMEs dos meus repositórios, surge então o &lt;strong&gt;readme-cli-create&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  O que é o projeto?
&lt;/h2&gt;

&lt;p&gt;O projeto não é nada de mais, basicamente o que eu criei foi uma &lt;strong&gt;CLI (Command Line Interface)&lt;/strong&gt; onde nela passamos alguns dados que vão melhor explicado mais a frente, com isso é gerado um arquivo README.md para ser usado no seu repositório GitHub, com uma estrutura já pré-definida e o suficiente para agilizar o processo e não ter que começar a escrever tudo do zero, a parte boa é que alem de tudo está CLI foi colocada no &lt;a href="https://www.npmjs.com/package/readme-cli-create" rel="noopener noreferrer"&gt;NPM&lt;/a&gt;, ou seja, você pode instalar ela na sua maquina de forma global e usa-lá em todas / grande maioria das pastas do seu PC.&lt;/p&gt;




&lt;h2&gt;
  
  
  Como funciona?
&lt;/h2&gt;

&lt;p&gt;Depois de instalarmos ela basta usarmos o comando &lt;code&gt;readme-cli-create&lt;/code&gt; no diretório que queremos criar o arquivo README.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhbhqmxzbe060wo7onqiv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhbhqmxzbe060wo7onqiv.png" alt="comando no terminal" width="800" height="428"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Após rodarmos esse comando iremos receber algumas perguntas, onde as respostas que dermos vão ser usadas para já ajustar algumas partes do nosso arquivo.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr43654f9x1u2naufevfh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr43654f9x1u2naufevfh.png" alt="perguntas da cli" width="800" height="433"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A próxima etapa é com a CLI, ela irá verificar algumas coisas e se tudo der certo iremos ver uma tela parecida com essa dizendo que nosso arquivo foi gerado sem nenhum problema.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F44en498872m8j8usvee3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F44en498872m8j8usvee3.png" alt="arquivo criado com sucesso" width="800" height="433"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Após isso é podemos ver se realmente deu tudo certo vendo o arquivo em si.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj9x55m0ice56xe3xm799.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj9x55m0ice56xe3xm799.png" alt="conteudo do arquivo" width="800" height="429"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F522ea0dy3hwfw05b654m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F522ea0dy3hwfw05b654m.png" alt="conteudo do arquivo 2" width="800" height="431"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Note que em algumas partes, como podemos ver na primeira imagem, que uma das nossas respostas foi usada para ser o título e a descrição do nosso arquivo README&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  E como está sendo a experiência de desenvolver isso?
&lt;/h2&gt;

&lt;p&gt;Primeiro que esse projeto era pra ser algo particular, a ideia não era deixar ele público e muito menos publicar no NPM, então aqui temos a primeira grande mudança de como esta sendo desenvolver esse projeto, antes como era algo particular de certa forma eu não precisava me preocupar com alguns detalhes, agora com o projeto público isso já muda.&lt;/p&gt;

&lt;p&gt;Em compensação a vontade agora é de expandir ainda mais essa ideia, melhorando a parte do usuário, colocando novos modelos para os READMEs, mas acima de tudo, conseguir aprender algo novo sempre, esse é outro ponto muito importante dessa jornada até aqui, aprender algo e realmente colocar isso em prática e até mesmo entendo melhor alguns conceitos ou ideias.&lt;/p&gt;

&lt;p&gt;Confesso que já cai em alguns problemas durante o desenvolvimento que tive certa dificuldade para resolver, mas hoje já sei como posso passar por cima disso, um dos exemplos que mais me marcou foi a verificação para ver se já existe um arquivo "README.md" no diretório que o comando foi executado, tive sérios problemas nessa parte e resolvi isso depois com poucas linhas, talvez seja a melhor solução? Acho que com certeza não, mas por enquanto é o que da para ser feito.&lt;/p&gt;

&lt;p&gt;Um detalhe importante que eu vejo que eu melhorei a na organização do que eu preciso fazer em relação ao projeto, realmente separar os problemas em partes menores, conseguir estruturar melhor as ideias e muito mais.&lt;/p&gt;

&lt;p&gt;Essas são umas das coisas mais importantes que eu pude ver que aprendi fazendo esse projeto, além é claro do básico, que é entender mais a linguagem que usei e tudo mais.&lt;/p&gt;




&lt;h2&gt;
  
  
  Recomendações
&lt;/h2&gt;

&lt;p&gt;Eu pessoalmente recomendo muito dar uma olhada no projeto no GitHub caso queira usa-lo, existem algumas coisas que não cheguei a explicar, como por exemplo o parâmetro "-y" na hora de executar o comando da CLI, isso pode fazer a diferença na hora de usar a CLI e lá também está tudo mais detalhado sobre o projeto, o que é necessário ter no PC para usar a CLI e muito mais.&lt;/p&gt;




&lt;p&gt;GitHub: &lt;a href="https://github.com/LuigiBelanda/readme-cli-create" rel="noopener noreferrer"&gt;readme-cli-create&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;NPM: &lt;a href="https://www.npmjs.com/package/readme-cli-create" rel="noopener noreferrer"&gt;readme-cli-create&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Linkedin: &lt;a href="https://www.linkedin.com/in/luigi-belanda/" rel="noopener noreferrer"&gt;Luigi Belanda&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>node</category>
      <category>npm</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
