Microsserviços e AWS

Manter todas as soluções do seu site ou aplicativo funcionando de forma harmônica e ágil, pode ser um grande desafio diário. Neste momento, é importante contar com o auxílio das tecnologias disponíveis para te ajudar em alguns processos e automatizar atividades que lhe pouparão tempo, custos e burocracia, e que contribuem para a otimização de alguns processos dentro da sua solução, de forma segura.

Computação em Nuvem e sua relação com os Microsserviços

A computação em nuvem é o termo usado para definir a utilização de serviços e recursos de computação através da internet, como armazenamento de dados, a capacidade de processamento, banco de dados, rede, softwares, entre outros. Nela, você paga apenas pelos serviços que você ou sua empresa utilizam. 

Já os Microsserviços são um modelo de Arquitetura de Software que consiste no desenvolvimento de pequenos serviços independentes e com baixo acoplamento dentro de um sistema, criados para atender a recursos específicos, cada serviço é projetado e gerenciado por uma pequena equipe especializada naquela solução, utilizando o seu próprio banco de dados e base de códigos. 

Cada serviço pode ser implementado, atualizado e escalado de forma individual para atender a uma demanda ou função específica de uma solução maior. Os serviços se comunicam por meio de API’s bem definidos e não necessariamente compartilham da mesma biblioteca, tecnologia ou estrutura arquitetural. Saiba mais sobre a arquitetura de microsserviços no nosso post: O que são microsserviços e quais são as suas diferenças da arquitetura monolítica?

Como cada serviço dentro de um microsserviços funciona de forma autônoma e independente, é possível utilizar a Computação em Nuvem para desenvolver, gerenciar e disponibilizar cada um dos serviços do sistema do software. Conheça as vantagens:  

  • Redução dos custos: elimina-se gastos com investimentos em hardware, software, data centers e suas manutenções. Além da redução de custos com profissionais de TI voltados para o gerenciamento desta estrutura;

  • Otimização de Recursos: sua empresa tem a possibilidade de ajustar os recursos de acordo com as necessidades de cada serviço do sistema;

  • Produtividade: Elimina-se a necessidade de datacenters locais o que possibilita a concentração de esforços da equipe de TI na obtenção de metas comerciais mais importantes;

  • Escalabilidade: É mais ágil e econômico escalar diferentes serviços dentro de um sistema;

  • Maior estabilidade ao sistema: Como cada serviço funciona de forma independente e autônoma, uma sobrecarga de demanda não afetará o funcionamento do restante do sistema. Além disso,como a maioria dos serviços de computação em nuvem funcionam com autosserviço sob demanda, as solicitações para determinadas demandas com maior quantidade de recursos de computação podem ser feitas em minutos. 

  • Segurança: Cada serviço possui seu próprio banco de dados e os provedores de nuvem oferecem políticas, tecnologias e controles eficientes que garantem a segurança destes dados.

E para que a sua solução funcione de forma adequada e eficiente é importante que a sua empresa invista em uma plataforma de nuvem de confiança, abrangente e inovadora, como é o caso da Amazon Web Services (AWS).   

Por que a AWS proporciona um funcionamento eficiente de Microsserviços?

A AWS é a plataforma de nuvem da empresa Amazon. É a mais abrangente plataforma do segmento e oferece mais de 175 serviços completos de datacenters em todo o mundo. Possui em sua carteira de clientes startups de crescimento rápido, grandes empresas e alguns dos maiores órgãos governamentais. A AWS oferece alguns dos serviços que são essenciais e auxiliam para o perfeito funcionamento da computação em nuvem e dos microsserviços,  como:

Docker

A Docker é uma plataforma do software que permite a criação, o teste e a implantação de aplicações rapidamente. O Docker cria pacotes menores de unidades padronizadas, que são conhecidas como containers,  sua funcionalidade é essencial para manter o serviço, pois possibilita realizar a escala individual de cada um dos serviços, isso faz com que seja possível disponibilizar a performance adequada para cada um dos serviço da sua solução.

Amazon S3 (Amazon Simple Storage Service)

A Amazon Simple Storage Service é um sistema da AWS que foi desenvolvido para facilitar a computação de escala na web para os desenvolvedores. Ele permite o armazenamento e recuperação de qualquer tipo de dados, em qualquer momento e lugar na web. Este sistema é altamente dimensionável, rápido, econômico, confiável e seguro, e permite a escalabilidade do serviço pela própria AWS, sem precisar de atuação manual. A Amazon S3 tem recursos para banco de dados no cycle, que atualmente é totalmente introduzida nas aplicações para microsserviços. Ele consiste em ser rápido e flexível para os aplicativos, diminuindo o tempo de resposta para o cliente.

Amazon RDS

Para facilitar a configuração, operação e a escalabilidade do banco de dados relacionais dentro da nuvem, o sistema Amazon Relational DataBase Service (RDS) oferece uma gama de banco de dados populares disponível no mercado, tornando mais fácil a escalabilidade e backup desse recurso. 

Application Load Balancer

O Application load balance oferece serviços de rede com latências baixíssimas de comunicação, possibilitando o balanceamento e configuração de carga do tráfego de rede http e https.

Amazon EC2 (Amazon Elastic Compute Cloud)

O Amazon Elastic Compute Cloud (EC2) oferece uma capacidade de computação dimensionável na nuvem da AWS, foi projetado para desenvolver e implantar aplicativos de forma rápida, eliminando a necessidade de investir em hardwares. O EC2 também possibilita o gerenciamento da expansão ou redução do tráfego do servidor, proporcionando maior flexibilidade nos momentos de pico em determinados serviços.

AWS CloudTrail

O AWS CloudTrail  grava continuamente todo o histórico de eventos e rastreia tudo que aconteceu em seu sistema de rede e infraestrutura da sua aplicação, esse histórico promove maior segurança, rastreia as alterações de recursos, facilita a solução de problemas e detecta atividades incomuns na conta. Isso contribui para o seu sistema ser mais seguro e possibilita o registro de operações realizadas no sistema.

AWS X-Ray

O AWS X-Ray funciona para aplicativos simples e complexos, em ambientes de desenvolvimento e produção. Ele rastreia as solicitações do usuário enquanto percorrem o aplicativo, agrega os dados gerados por serviços e recursos individuais, oferecendo uma visão completa de planejamento. Esse sistema permite a visualização centralizada de logs e o monitoramento de uma resposta rápida para problemas complexos entre microsserviços. Disponibilizando uma visualização completa sobre as solicitações e mostrando um mapa dos componentes do aplicativo, o X-Ray analisa os aplicativos que estão em produção e possibilita entender sua performance dentro do serviço.

A AWS é uma plataforma extremamente confiável, que reúne tecnologias e serviços que garantem um funcionamento eficiente, seguro, econômico e menos burocrático para toda a arquitetura de microsservices da sua solução. Quer saber mais? Entre em contato com o time da Viceri! Temos um time de completo de engenheiros certificados em AWS que ajudarão a fazer o seu negócio crescer.  

LGPD: prazos, penalidades e recomendações

Anteriormente prevista para entrar em vigor em agosto de 2020, a Lei Geral de Proteção de Dados sofreu um adiamento de sua data para entrada em vigor. A nova data afora é 3 e maio de 2021. A crise do COVID-19 e sua quarentena causaram suspensão e atraso de prazos e determinações legais. Isso dá maior prazo para as empresas adequarem suas políticas e rotinas à nova lei.

Essa regulação vem em um momento em que a proteção de dados se torna uma questão de extrema importância, principalmente devido ao modo como a tecnologia vem se relacionando com o nosso dia a dia. Para entender melhor como a LGPD precisa ser atendida em todas as empresas, é necessário entender a relação desta lei com o Cambridge Analytica.

A LGPD e o Cambridge Analytica

A origem da LGPD começa com um professor de psicologia chamado Aleksander Kogan, que lecionava na Universidade de Cambridge. Ele obteve permissão do Facebook para coleta de dados para um aplicativo chamado thisisyourdigitallife que tinha fins meramente acadêmicos.

O aplicativo gerava testes de personalidade baseados em séries famosas da grande parte do público usuário do Facebook. Foi através desses testes que Aleksander conseguiu coletar nome, endereço e conteúdos de likes de 270 mil usuários da rede social. Até esse ponto da história, tudo ocorreu legalmente, por mais duvidável que seja. O problema começa quando o professor decide vender todo esse volume de dados para uma empresa chamada Cambridge Analytica, que não possui nenhuma relação com a universidade.

De acordo com o Facebook, a rede social possui condições de uso do software que proíbe o repasse de dados para terceiros. Em 2015 essa violação de dados se tornou do conhecimento do Facebook, que removeu o aplicativo do professor da rede e solicitou que esses dados vendidos fossem completamente apagados. Mas depois ficamos sabendo que isso não aconteceu com todos os dados.

Essa “brecha” que permitiu o vazamento de informações de mais de 270 mil pessoas trouxe à tona a discussão da proteção de dados. Apesar de muito grave, o caso do Cambridge Analytica aconteceu devido a um consentimento oculto dos usuários do Facebook, que tratou o assunto como quebra de conduta ao invés de uma falha de segurança na própria rede.

Quer saber mais sobre a nova Lei Geral de Proteção de Dados? Acesse o nosso whitepaper especial “Tudo sobre a LGPD” e confira vários conceitos e dicas para adequar o seu negócio à nova legislação!

Tratamento de dados e as exceções da LGPD

É preciso entender que, a partir do momento da implementação da Lei Geral de Proteção de Dados, o titular é o dono dos dados. Ou seja, a pessoa física natural é que terá o direito de confirmar a existência de tratamento dos seus dados pessoais, acessar, corrigir, anonimizar, bloquear ou eliminar os dados pessoais, além de solicitar a portabilidade, obter informações sobre o compartilhamento de dados e revogar o consentimento dado anteriormente.

Segundo uma pesquisa realizada pela Capterra, somente 40% dos pequenos e médios empresários estão totalmente preparados para a LGPD no Brasil. Como explica a advogada especialista em Direito Digital Flávia Carvalho, a lei vale para todo mundo, inclusive para lojas físicas. “Ela aplica-se apenas quando o tratamento de dados tiver fins econômicos”, explica. “Por exemplo, se eu pegar vários dados pessoais para fazer um churrasco beneficente, tudo bem, porque eu não estou visando ganhar dinheiro com isso ou obter alguma vantagem econômica”, complementa.

Entendendo os objetivos desta lei, entende-se que ela se aplica aos dados pessoais de indivíduos localizados. Ou seja, quando o tratamento desses dados se dá no Brasil e na oferta de bens e serviços para indivíduos no Brasil. A lei não vai tratar somente de dados de brasileiros e sim de todo indivíduo que estiver em território brasileiro.

A lei de proteção de dados não vai se aplicar a:

  • Dados oriundos destinados a outros países que apenas transitem pelo território brasileiro;

  • Uso pessoal ou não comercial;

  • Fim jornalísticos;

  • Fins acadêmicos;

  • Fins de segurança pública.

Como uma empresa deve se adequar à LGPD

A especialista Flávia Carvalho afirma que, após o entendimento do que é a Lei Geral de Proteção de Dados, o primeiro passo para a conformidade é a revisitação de contratos. “É preciso olhar cada um desses documentos e atuar preventivamente, ou seja, procurar brechas de dados”, aconselha a advogada. “O objetivo é que o cliente seja informado quais dados estão sendo coletados e qual a finalidade deles”.

O recomendado é que as mesmas pessoas responsáveis pela revisitação de contratos elejam um profissional que ficará encarregado, um Data Protection Officer, que pode ser uma pessoa física ou jurídica. O DPO será o ponto de contato dos titulares desses dados e das autoridades de fiscalização. Diante desse entendimento, a empresa precisa começar a trabalhar para adequação aos princípios da lei e também procurar um advogado especialista para tal.

A pessoa eleita como DPO da empresa precisa identificar quem utiliza sistemas, que tipos de dados cada sistema possui e armazena. Também deve identificar quem trata os dados pessoais (nome, CPF, RG, endereço, telefone, e-mail) e dados mais sensíveis (origem étnica, orientação sexual, religiosa, dados biométricos), além da forma como estes dados são trabalhados, se esses dados são transmitidos de alguma forma internamente ou externamente.

Quais são as penalidades da LGPD?

Como lembra a advogada Flávia Carvalho, o prazo para a LGPD entrar em vigor ainda está indefinido. “Muitos defendem o adiamento justamente por causa da crise da COVID-19 e porque o órgão fiscalizador ainda não foi completamente formado”, explica ela. A entrada em vigor está marcada para 3 de maio de 2021.

As penalidades para a não-adequação da Lei Geral de Proteção dos dados são:

  • Uma advertência;

  • Multa de até 2% do faturamento da pessoa jurídica no seu último ano de exercício (com uma limitação de 50 milhões de reais por infração);

  • Multa diária observando a limitação citada acima;

  • Bloqueio dos dados pessoais;

  • Eliminação desses dados pessoais da base de dados da instituição;

  • Suspensão ou proibição da atividade de tratamento desses estados;

  • Publicização da infração.

É importante ressaltar que a lei não foi criada para vedar o uso dos dados pessoais pelas empresas, mas sim para estabelecer princípios e regras para o tratamento desses dados. Caso tenha dúvidas, a Viceri conta com um time de especialistas para ajudar a sua empresa a entrar em conformidade com a nova lei de proteção de dados.

Inteligência Artificial: como ela agrega valor ao seu negócio e aos seus clientes

A inovação é o que ajuda as pessoas a viverem melhor. A tecnologia possibilita novas oportunidades e faz com que as empresas desenvolvam novos produtos e serviços. Inovação e tecnologia, juntas, possibilitaram a Inteligência Artificial (IA), que faz com que máquinas aprendam com experiências, se ajustem e se adaptem a novos dados, além de serem capazes de performar com exatidão em tarefas cotidianas.

A ideia de Inteligência Artificial é relativamente antiga. Nasceu por volta da década de 50, e posterior a ela a ideia de aprendizagem de máquina – ou Machine Learning – por volta da década de 60. 

Como toda a história da evolução humana, onde há problema, ali existem pessoas procurando soluções. A IA surgiu da necessidade de descobrir resoluções de problemas e métodos simbólicos. 

Depois disso, o Departamento de Defesa dos EUA começou a treinar computadores para imitar o raciocínio básico humano. A Defense Advanced Research Projects Agency (DARPA) conseguiu, através da IA, mapear ruas nos anos 70 e, bem antes de conhecermos a Siri, já haviam sido criados assistentes pessoais inteligentes. 

Porém, naquela época, os recursos computacionais não eram tão avançados e a quantidade de dados não era tão grande e disponível para realizar 100% da prática desses conceitos. 

Foram esses primeiros pequenos passos que construíram essa trajetória sólida para o raciocínio formal e a automação que hoje conhecemos nos computadores – sistemas de apoio à decisão e sistemas de pesquisa inteligentes que potencializam a capacidade humana.

A Inteligência Artificial é uma subárea da ciência da computação e mesmo assim é bem ampla. Ela é uma tecnologia que tem o propósito de simular o processo humano para tomada de decisões. Isso se dá através de vários dados e suas previsões podem ser feitas através de machine learning, redes neurais e outras técnicas. 

Os principais conceitos da Inteligência Artificial

Antes de você saber como a IA agrega valor ao seus negócios e aos negócios dos seus clientes, é preciso entender alguns dos principais conceitos que estão envolvidos nestes processos.

Para isso, conversei com o Gestor do Núcleo de Tecnologia da Informação da Universidade Federal de Santa Maria, unidade de Palmeira das Missões, Heitor Scalco Neto. Ele elencou e descreveu os principais conceitos a seguir:

Big Data 

O termo “Big Data” pode ser entendido como a capacidade de analisar uma enorme quantidade de dados, com objetivo de obter informações importantes sobre um negócio ou situação. Essas informações muitas vezes são impossíveis de serem extraídas com uma quantidade reduzida de dados.

A aplicação de Big Data tem um grande potencial e ignorá-la pode ser um erro, visto que com a enorme quantidade de dados disponíveis podemos prever tendências e mudanças no mercado, comportamento de compra dos clientes e, até mesmo, a efetividade das suas campanhas de marketing. Exemplos de aplicações envolvendo Big Data podem ser:

          – Identificar falhas de produção em tempo real;

         – Criar anúncios baseados no histórico de compra dos clientes;

         – Acusar fraudes (Ex.: Cartões de crédito);

         – Identificar performance anormal de indicadores de gestão;

         – Alertar gestores sobre previsões financeiras.

A Netflix, por exemplo, gera um histórico de utilização dos seus clientes. Com o passar do tempo, ela já tem dados suficientes para criar modelos preditivos para novos produtos e serviços, classificando os principais atributos de produtos ou serviços passados. Com informações como: público-alvo, preferência de gênero e duração média dos episódios assistidos, fica fácil para a Netflix saber como será a sua próxima série ou filme lançado.

Machine Learning

Já a técnica de Machine Learning ou, no português, Aprendizado de Máquina, utiliza conjuntos de dados (assim como o Big Data) para ensinar a máquina padrões existentes nesses dados. Por exemplo, posso ensinar a uma máquina qual é o padrão de qualidade de um produto que sai da linha de produção. Com isso, automaticamente posso descartar produtos defeituosos, melhorando assim a qualidade de entrega aos clientes.

Quando falamos de Machine Learning a regra é: quanto mais dados sobre determinada situação eu tiver, melhor. É por esse motivo que Big Data pode ser muito bem utilizado com Machine Learning.

O aprendizado de máquina é feito, geralmente, por regressões matemáticas, onde todas as amostras de dados são apresentadas e testadas incansavelmente, até que um padrão seja estabelecido. Porém, existem também outras formas de aprendizado. Modelos de classificação, por exemplo, são frequentemente utilizados. 

Deep Learning 

Deep Learning pode ser entendido como um subgrupo de Machine Learning, já que utiliza uma técnica de Machine Learning chamada Redes Neurais Artificiais. Essa técnica tenta imitar o comportamento do cérebro humano, formando uma rede de neurônios com várias “sinapses”. Conforme a imagem abaixo, as informações X0, X1, X2 … Xn, entram em todos os neurônios. Em cada neurônio é formado um coeficiente de peso que aquela informação. 

Quanto maior peso uma informação tiver, mais relevante ela é para que o resultado seja alcançado. Após todos os dados passarem repetidas vezes por este processo, um padrão é estabelecido.

Fonte da imagem: https://bit.ly/2VwDBNo

 

 NLP 

O Natural Language Processing ou, no português, Processamento de Linguagem Natural, é uma técnica de Inteligência Artificial que tem como objetivo fazer as máquinas entenderem a linguagem dos seres humanos. Essa compreensão da linguagem está relacionada ao reconhecimento do contexto, análise sintática, semântica e morfológica (assim como as sugestões de correção do Microsoft Word), fazer resumos, interpretar os sentidos, analisar sentimentos e aprender conceitos.

Esse tipo de técnica é utilizada, por exemplo, ao fazer um pedido para os equipamentos de automação, assim como Alexa e Apple Home.

As principais soluções práticas de IA nas empresas

Utilizar Inteligência Artificial é um caminho sem volta. O leque de oportunidades existentes com a implementação de IA nos negócios é amplo. Segundo Heitor Scalco Neto, ela é tão importante para as empresas pois representa a melhora contínua dos seus processos.

“A empresa pode oferecer melhores recomendações de produtos para os clientes, automação dos atendimentos via chat bots, detecção de falhas de produção, detecção de comportamento anômalo de funcionários e até mesmo previsões de vendas para os próximos anos, considerando possíveis crises econômicas”, afirma.

Por fim, a criação de sistemas de recomendação com Inteligência Artificial pode ser um excelente ponto de referência para gestores de todas as áreas, desde a área de vendas até o chão de fábrica.

Existem vários cases de sucesso com a implementação de IA em empresas, como por exemplo:

  • Automação de atendimento ao cliente (Chat Bots);

  • Sistemas de recomendação (compra e venda de ações);

  • Segurança da Informação (Firewalls e Detectores de Intrusão Inteligentes);

  • Definição de estratégia de vendas e marketing baseado no perfil dos clientes;

A implementação desses cases permitiu que as empresas pudessem definir as melhores estratégias para a gestão e planejamentos futuros.

Categorizando a Inteligência Artificial

A Inteligência Artificial pode ser categorizada em três tipos teóricos importantes. São eles:

Inteligência cognitiva: É um conceito mais avançado do que a Inteligência Artificial. As técnicas de IA aprendem um padrão e seguem aquele mesmo padrão, até que um novo treinamento da técnica seja realizado. No caso da inteligência cognitiva é um pouco diferente. Além da técnica aprender padrões, ela tem capacidade de agir com base no aprendizado e raciocínio, sendo capaz de fazer deduções e ampliar conhecimentos. Como exemplo de aplicação, podemos citar um sistema que gerencia a frota de uma empresa, podendo solicitar o agendamento da manutenção preventiva, prever problemas e solicitar peças automaticamente.

Inteligência emocional: A Inteligência Artificial Emocional é a capacidade da tecnologia reconhecer emoções nos seres humanos. A partir da imagem do rosto das pessoas, é possível reconhecer emoções como: raiva, temor, desejo, alegria, medo, ódio, amor, entre outros. Esse tipo de aplicação tem sido muito utilizada em videogames, diagnóstico médico, educação, segurança automotiva e recrutamento de pessoal.

Inteligência humanizada: A Inteligência Humanizada traz com ela a inteligência social, que tem autoconsciência e é adaptável. Porém, ainda estamos muito longe dela. Conseguimos copiar os aspectos cognitivos e até mesmo emocionais do ser humano, mas ainda não conseguimos tornar robôs, humanos.

Para facilitar, vamos dar um exemplo: pense num robô, programado para executar uma atividade definida e repetitiva em uma linha de montagem. Podemos dizer que esse sistema automatizado possui uma IA fraca, pois apenas realiza as ações que estavam programadas.

Por mais que o robô tenha algumas opções automatizadas para casos de erros, baseados em seus sensores, ele não pensa e não consegue tomar uma decisão que não tenha sido programada. Por outro lado, uma IA forte sugere um sistema que consegue perceber o ambiente e é capaz de generalizar tomando uma ação não premeditada. Nesse caso esse sistema foi treinado para isso.

Com tudo que falamos aqui, fica claro que o objetivo da Inteligência Artificial é fornecer softwares que raciocinem sobre entradas e justifiquem saída de dados. Ela possibilita interações quase humanas, e, mais do que isso, serve de apoio para tarefas específicas e soluções cotidianas.  Quer saber mais? Envie uma mensagem para a gente e saiba mais sobre como levar essa metodologia de trabalho para a sua empresa.

Engenharia de features e dados: como ter um aprendizado de máquina eficiente

A engenharia de features é o que vai ensinar como ter um aprendizado de máquina eficiente. Assim, de forma bem direta. E é dessa forma direta que faço a seguinte pergunta: quanto mais features, melhor? 

Antes de dar um overview sobre a engenharia de features, é importante entendermos algumas definições. Suponhamos que se tenha dados brutos tabulados – ou em um banco de dados – para servir de input para uma análise de um treinamento de aprendizado. 

Estes dados tabulados seriam compostos por linhas e colunas, onde as colunas representariam os atributos, e as linhas as instâncias – ou seja, a quantidade de exemplos para o conjunto de atributos. 

Os atributos portanto, representam a propriedade de um objeto e definem um valor específico para uma certa instância. Só que nem todos os atributos devem estar presentes nesse conjunto de dados, ou dataset.

Por exemplo: para se fazer uma previsão de ocorrência de acidente de trânsito, baseada nos atributos dos clientes, podemos perceber que os atributos CPF e RG não fazem diferença, e na verdade podem até atrapalhar a construção do aprendizado de uma rede neural. Neste sentido, utilizamos a palavra feature para definir um atributo que tenha mais importância e mais significado. 

Então, respondendo a pergunta acima: não necessariamente. Mais features precisam de maior monitoramento e com isso mais engenharia.

É e dessa forma que começamos a falar sobre o processo de engenharia de features, que tem por objetivo filtrar ainda mais essas features. Existem casos em que necessitamos expandir, selecionar ou excluir algumas delas. Como a feature idade, que pode ser excluída se tivermos a feature data de nascimento, já que elas são redundantes e o modelo pode não convergir tão bem. 

Agora, vamos por partes. Separei aqui os principais tópicos para discutirmos sobre engenharia de features e dados.

O que são features?

Como já falamos acima, Features ou, em português, características, são fatores utilizados para definir um atributo que tenha mais importância e significado. Podemos ter como exemplo um conjunto de dados utilizado para treinar um sistema de um veículo autônomo, esse conjunto é composto por informações como: 

  • Aceleração;

  • Distância do objeto da frente;

  • Combustível;

  • Temperatura;

  • Tempo de viagem.

 

Cada uma dessas informações é chamada de feature. Para ficar mais claro, conversei com o Gestor do Núcleo de Tecnologia da Informação da Universidade Federal de Santa Maria, unidade de Palmeira das Missões, Heitor Scalco Neto e ele citou o seguinte exemplo:

Imagine uma planilha do Microsoft Excel (Figura 1): no topo há um cabeçalho, informando qual tipo de informação está contida em cada coluna. Sendo assim, cada coluna representa uma feature.

Figura 1: Exemplo de base de dados.

Então o que é a engenharia de features?

O trabalho de engenharia de features consiste em elencar as características mais importantes dos dados e, dependendo do modelo utilizado, normalizar os valores contidos na base de dados. 

A normalização de dados geralmente ocorre com a definição dos valores máximos e mínimos encontrados na base de dados, a partir desse momento é realizado o cálculo para que todos os valores fiquem entre 0 e 1. Para entender melhor, seguimos com os exemplos citados por Heitor:

Vamos iniciar com a feature “Irradiação Solar” (Figura 2), podemos perceber que o maior valor encontrado é “466.375”, que será representado por 1, e o menor valor é “40.775”, que será representado por 0. Na Figura 3 podemos ver a feature “Irradiação Solar” normalizada.

 

Figura 2: Base de dados, obtendo o maior e o menor valor de uma feature.

 

Figura 3: Feature “Irradiação Solar” normalizada.

 

Por que a engenharia de features é importante para um aprendizado eficiente de máquina?

O processo de engenharia de features é a fase mais importante e trabalhosa quando se deseja ter um aprendizado de máquina eficiente. Se, por exemplo, a modelagem estiver razoável, porém, com excelente tratamento dos dados, teremos um melhor resultado do que com uma modelagem excelente e dados com uma preparação mais pobre, seja por inconsistência, ruídos, dados faltantes ou até mesmo pouca quantidade de informação.

Podemos dizer então que é um processo iterativo para transformar dados brutos em características que melhor representam o problema.  Um caso muito comum disso são os modelos de deep learning que recebem dados brutos e internamente já identificam as melhores features como as bordas, linhas e texturas em uma classificação de imagem. 

No processo de engenharia de features, temos primeiro a fase de brainstorming, depois a criação, seleção e avaliação. E esse processo funciona de forma cíclica. 

Na fase de brainstorming, entendemos o domínio do problema, reunindo informações para descobrirmos quais poderiam ser as minhas features. Na fase de criação produzimos as features. Na etapa de seleção podemos remover ou ainda expandir algumas features e na fase de avaliação realiza-se uma estimativa da qualidade do modelo, utilizando as features selecionadas.

Algumas técnicas e algoritmo podem ser usados para a aplicação do processo de engenharia de features. Após a fase de brainstorming, e para a fase de criação, pode se utilizar as técnicas de feature extraction ou feature construction. 

Aqui se trabalha com a etapa de extração do que é mais importante em observações muito volumosas, como mídias. Para esses casos é realizada frequentemente uma redução de dimensionalidade. Essa construção pode ser manual, ou até utilizando a deep learning, numa técnica chamada feature learning. 

Após a etapa de criação pode-se utilizar a técnica de feature importance para pontuar as melhores features, e assim mantê-las ou quebrá-las em mais. Aqui os algoritmos de árvore de decisão, como random forest e gradient boosting machine podem ser utilizados. 

As técnicas de Machine Learning têm uma certa sensibilidade ao aprender o padrão dos dados. Desta forma, o processo de engenharia de features é extremamente importante, pois retira o possível ruído dos dados. Segundo Heitor Scalco Neto, outro processo importante de engenharia de features é a escolha das características mais relevantes. 

“Em vários casos, algumas features ajudam o estabelecimento de padrões, porém, em outros, a utilização de determinadas features acabam atrapalhando o processo de aprendizagem. Isso acontece porque existe um aumento da complexidade do aprendizado e a necessidade de mais amostras de dados, a cada feature adicionada”, destaca. Por isso, deve-se realizar um estudo da importância de cada feature antes de utilizá-la no treinamento da técnica de Machine Learning.

Exemplos sobre o uso de dados na engenharia de features

Podemos dividir os dados em qualitativos e quantitativos. Dados qualitativos podem ser nomes de categorias, clientes, produtos ou qualquer dado descrito com uma ou mais palavras. 

Eles ainda podem ser separados em nominais – quando não se tem ordem, por exemplo idiomas ou cores – e ordinais – quando existe uma ordenação, como por exemplo o nível de escolaridade.

Já os dados quantitativos são expressos por numerais, geralmente são features que possuem um valor de distância entre si, por exemplo: tensão elétrica, quantidade de casos de determinada situação, área construída, dimensões e etc.

São números que podem ser discretos – geralmente definem quantidade de algo – ou contínuos – podendo ser ainda em intervalos como range de temperatura, ou em proporções como peso, altura, comprimento.

Esses dados são importantes porque evitam problemas com cálculos estatísticos. Pense num caso de se atribuir o valor (1) para graduação, (2) para mestrado e (3) para doutorado. Isso não quer dizer que doutorado é três vezes a graduação. 

Diversas técnicas de estatísticas são utilizadas nesta fase de pré-treinamento, sendo a medida do coeficiente de correlação uma das mais frequentes.

Gostou do artigo e quer saber mais? Envie uma mensagem para a gente e saiba mais sobre como levar essa metodologia de trabalho para a sua empresa.

Dicas de programação: melhore a qualidade e facilite a manutenção de softwares

Como já disse Steve Maguire, em seu excelente livro Writing Solid Code, se você colocar um programador em cima de um penhasco com uma corda e uma asa delta e falar pra ele descer, não é possível adivinhar o que ele vai usar pra descer, mas pode ter certeza que ele vai pensar muito a respeito, antes de tomar a decisão. Contudo, o mesmo programador, quando for escrever um programa, é bastante provável que só irá pensar em tamanho e velocidade, mas não no risco do método que está utilizando. Se você aplicar a mesma metodologia na descida do penhasco, o jeito mais rápido (e mais arriscado) de descer seria pular!

Sendo assim, convido você a se atentar a todas as dicas de programação que citarei a seguir. Espero que elas ajudem a otimizar sua maneira de programar!

Dicas de programação que aprendi durante a minha trajetória

No começo da década de 90, eu fui contratado em um dos meus primeiros empregos porque eu conhecia a linguagem de programação C++. Apesar de ser uma empresa pequena, que tinha somente 5 funcionários, já contando comigo, ela tinha uma excelente base de clientes e um potencial muito bom na área. 

Nessa mesma época, eu me considerava um profissional bom, visto que conhecia muito da linguagem C++ e executava programas que eram verdadeiras obras de arte, com algoritmos muito inteligentes. Além disso, eu enxergava a qualidade no meu trabalho porque utilizava, em programas bastante enxutos, alguns comandos que só especialistas na linguagem seriam capazes de conhecer. 

Durante essa experiência, tive a oportunidade de trabalhar com um colega que tinha fama de ser um dos melhores programadores de C++ de toda a cidade. Pouco tempo depois da minha contratação, enquanto esse meu colega estava em uma viagem, precisei fazer algumas alterações em um código dele, pois um cliente estava fazendo essa solicitação com bastante urgência. 

Comecei a olhar o que ele havia escrito e fiquei muito surpreso. O pensamento que me veio na hora foi o seguinte: “Nossa, uma criança de 5 anos de idade poderia escrever um código assim”. Eu imaginava que uma pessoa com a experiência e fama que ele tinha, poderia escrever algo infinitamente melhor. Em poucos minutos consegui entender como funcionava o código dele, fiz as alterações solicitadas pelo cliente e tudo foi resolvido, de maneira rápida. 

Depois de poucas horas trabalhando no código do meu colega, ao voltar para meu próprio código, tive dificuldade em seguir o funcionamento e entender o que eu havia escrito antes! Esse episódio me ensinou uma lição muito importante, que há anos venho tentando seguir, e essa é a primeira das dicas de programação que quero trazer para vocês hoje: faça códigos simples. Não use técnicas avançadas para fazer seu código parecer mais moderno se você não precisa disso. Minha dica é que você programe pensando que amanhã uma criança de 5 anos de idade consiga realizar uma manutenção dentro do seu programa. 

É claro que, em alguns momentos, será necessário escrever algo um pouco mais complexo. Mas minha sugestão, para esses casos, é que você coloque comentários explicando o que esse código faz, o motivo deste método ter sido escolhido e o motivo de não ter utilizado outra técnica. Isso vai facilitar, e muito, a realização da manutenção deste código, principalmente caso ela aconteça em um futuro distante. Lembre-se: você está tentando escrever um código que funcione sem erros e de fácil manutenção. Você não está tentando mostrar aos seus colegas que conhece mais comandos do que eles – isso não é uma competição. 

Utilize chaves  

No caso das linguagens C, C++ e C Sharp, você pode colocar um bloco de código dentro de chaves {} e, assim, utilizar em um IF, por exemplo, se a condição for verdadeira, todos os comandos no bloco serão executados. 

if(condição) {

     comando 1

     comando 2

     …

}

Durante minha trajetória profissional, observei muitos programadores experientes falando que em programações de um único comando, não há necessidade de utilizar chaves, que isso é coisa para iniciantes:

if (condição)

     comando 1

Porém, quantos deles não esqueceram desse detalhe na hora de fazer uma manutenção no software? Assim, adicionaram mais comandos na programação que não ficaram dentro do IF, pois esqueceram de adicionar chaves. Depois disso, pense quanto tempo não levaram para descobrir o motivo de a manutenção não ter dado certo:

if (condição)

     comando 1

     comando 2

     …

Neste terceiro exemplo, o comando 2 é executado independente da condição ser verdadeiro ou não.

Esse exemplo serve também para VB (Visual Basic), linguagem de programação produzida pela Microsoft. Pode-se colocar um IF seguido da condição e de um comando, tudo na mesma linha. Porém, a dica aqui é que você crie o hábito de colocar sempre o comando na linha seguinte e finalizar o bloco com END IF, isso irá facilitar a manutenção do seu software.

Não use

If condição Then comando

Use

If condição Then

     comando

End If

Comece a usar a linguagem a seu favor ao invés de brigar com ela!

Se atente às nomenclaturas

Independentemente da linguagem que você estiver trabalhando, uma das minhas dicas de programação é que você preste bastante atenção ao padrão que a empresa utiliza para criar nomes de rotinas, nomes de estruturas e variáveis. Existem empresas que preferem criar nomes somente em inglês, visto que, atualmente, vivemos em uma aldeia global. 

Durante um período da minha trajetória profissional, trabalhei em um projeto onde um módulo de atendimento ao cliente era chamado de Customer Attendance. Esse termo não tem nada a ver com atendimento ao cliente. A palavra Attendance significa comparecimento, quando traduzida de inglês para português. Porém, a empresa achou que estava correto ao encontrar esse termo na internet, mas não sabia que era um site nacional que possuía textos em inglês com diversos erros. Ou seja, no caso da preferência pela criação em inglês, a dica é que você pesquise qual seria a melhor palavra utilizando insights de origem inglesa, para não cometer erros desse tipo. 

Em poucas palavras, a minha dica é que você se familiarize com os padrões de programação impostos pela sua empresa e os siga à risca na hora de criar novos nomes. 

Separe, treine e aceite sugestões 

Se a função do programa que você está escrevendo está ficando pesada ou com uma lógica muito complexa, faça como os macedônios faziam 300 anos antes de Cristo. Divida e conquiste. Separe o seu problema em partes menores ou funções distintas quantas vezes for necessário para torná-lo mais fácil de compreender. Essa divisão ajuda bastante, principalmente se você estiver executando as mesmas funções em vários lugares distintos. Agrupe-as em uma função à parte!

Outra dica muito importante, e talvez uma das mais dolorosas, é que por mais que o programa seja seu filho e você tenha colocado um pedaço da sua alma dentro daquele código, ele sempre tem como ficar melhor! Muitas vezes, quem está lendo o seu código de fora enxerga uma forma completamente diferente de fazê-lo do que aquela que você utilizou. Nessas horas, é preciso deixar o orgulho de lado e escutar todas as sugestões que receber. Terão sugestões que não farão muito sentido e terão as que vale a pena ouvir, porque isso deixará o seu código ainda melhor. 

Por último, e não menos importante, está a nossa dica relacionada ao treinamento. Existem inúmeros sites na internet que apresentam quebra-cabeças de programação para que pessoas do mundo inteiro possam tentar suas soluções. Um desses sites é o Code Wars, onde são apresentados desafios de programação de todos os níveis possíveis – desde os mais simples até os extremamente complexos. 

Depois de completar um quebra-cabeças dentro do site, você pode ver as soluções de outros programadores do mundo inteiro. Eu já participei de inúmeros desses projetos e, depois, olhando o código das outras pessoas, aprendi como melhorar o meu próprio código! Muitas vezes, eu estava pensando de forma equivocada em como solucionar os problemas ou estava usando o comando errado. Porém, em ambos os casos eu aprendi uma forma de melhorar o meu programa. 

Todas essas dicas podem parecer um pouco simples mas, na verdade, são dicas muito importantes, que vão melhorar a qualidade do seu código, diminuir a quantidade de possíveis bugs e facilitar futuras manutenções. Espero que as dicas te ajudem e, para outras dúvidas sobre programação, basta entrar em contato conosco clicando aqui.

Business Intelligence x Data Science: qual a diferença?

Geralmente muitas pessoas que não são da área imaginam que Business Intelligence e Data Science sejam termos similares, quando na verdade um complementa o outro.

 Enquanto o business intelligence usa a coleta de dados para tomar melhores decisões e saber se os investimentos feitos estão trazendo bons resultados para a empresa, a data science analisa os dados para subsidiar a tomada de decisões e gerar insights ao negócio e a produtos desenvolvidos. Ou seja, o BI olha o passado, a Data Science também é preditiva.

Neste artigo, vamos explicar de uma maneira simples a diferença entre ambos e suas principais aplicabilidades. Inicialmente, para compreender o tema é importante entender a evolução dos sistemas analíticos. Acompanhe a leitura! 

A evolução dos sistemas analíticos

Numa evolução dos sistemas analíticos, após os sistemas de Business Intelligence (BI), temos os chamados sistemas de Business Analytics (BA) que usam modelos preditivos para tentar identificar prováveis eventos futuros e indicar quais seriam as ações capazes de afetar positivamente um negócio. 

Nessa categoria temos os sistemas de apoio à decisão. Portanto, é no business analytics que se aplica a data science. Essa capacidade de indicar o que aconteceu e tentar prever o que poderá acontecer são traduzidas em quatro tipos de análises:

1. Descritiva: visa explicar o que aconteceu com relação a determinado evento;

2. Diagnóstica: visa indicar porque algo aconteceu, baseado em dados históricos e muitas vezes comparando períodos similares de semanas, meses ou anos distintos; 

3. Preditiva: visa prever a probabilidade do que pode acontecer no futuro.

4. Prescritiva: visa prescrever o que poderia ser feito para que tal possibilidade se torne uma realidade.

A importância do modelo preditivo para as empresas

As empresas estão usando os modelos preditivos para prever as próximas movimentações do segmento, como:

  • identificar oportunidades futuras de negócio;

  • otimizar estratégias de marketing;

  • mapear o comportamento e hábito de consumidores e colaboradores; 

  • operar com mais eficiência.

É necessário apontar que o business intelligence e o business analytics são um processo e ambos exigem o emprego de técnicas, tecnologias e software para funcionarem com êxito.

Qual a diferença entre business intelligence e data science

A tecnologia motivou o aumento da competitividade e o surgimento de novos mercados, tornando o cenário corporativo muito mais sagaz. Tal cenário fez com que métodos antiquados precisassem ser mudados e nesse caminho surgiram então, o business intelligence e a data science, dois processo técnicos que facilitam a sistematização e a organização dos dados de empresas com o objetivo de orientá-las às melhores decisões estratégicas.

Ambos conceitos têm muita coisa em comum. Os dois utilizam dados para trabalhar a fim de atingir seu objetivo, porém, diferem na tecnologia e na abordagem. Vamos explicar essas diferenças para você agora. Continue a leitura!

O que é business intelligence?

O business intelligence (BI) é um conjunto de metodologias, processos, tecnologias e estruturas que transformam grandes quantidades de dados que, sozinhos, podem não ser tão úteis, em informações essenciais para uma boa gestão. 

Com o agrupamento de informações estruturadas em uma só ferramenta ou sistema analítico, uma empresa consegue identificar o que sabe e o que não sabe sobre suas operações como um todo, além de ser capaz de expandir seus lucros e aprimorar sua capacidade competitiva. 

No business intelligence é necessário verificar os dados para descobrir as características que ajudam a entender o que havia acontecido ou estava acontecendo, essa é a função dos modelos descritivos, os quais buscam identificar padrões. 

Assim sendo, o sistema de BI analisa fatos ocorridos em função de determinadas dimensões, por exemplo: pode-se analisar a saída de produtos do estoque em função do tempo, dia, mês ou ano e em função da localidade ou região na qual os clientes que compraram esses produtos estão estabelecidos, identificando assim, para quais regiões foram feitas mais entregas ao longo do tempo.

O que é data science?

O que impulsionou o crescimento exponencial da data science foi o Big Data. Apesar de não ser tão recente, esse fenômeno promoveu a construção de modelos preditivos com níveis de precisão cada vez maiores nos últimos anos e determinou a criação de um outro conceito, o Big Data Analytics, que extrai conhecimento desse grande conjunto de dados.

Para o especialista em TI, Maurício Delajustine a data science dentro de um negócio é importante em diversos aspectos principalmente por extrair dos dados insights úteis para as tomadas de decisões dentro do negócio. “Com insights assertivos sobre seu público alvo, identificando quais são seus desejos e necessidades a empresa pode realizar ações mais direcionadas e conquistando cada vez mais o cliente por exemplo.” comenta.

É importante também dizer que dentro do processo de data science, aplicamos os conceitos de BI, com as análises descritiva e diagnóstica, mas expandimos as possibilidades com as outras duas categorias de análise – preditiva e prescritiva. Como expoente dessas outras duas categorias citamos o Machine Learning, que se baseia no desenvolvimento de algoritmos que treinam máquinas virtuais e assim são capazes de tomar decisões mais assertivas sobre tomadas de decisões no futuro. A precisão do acerto se baseia na qualidade dos dados passados para a aplicação. 

Em uma pesquisa recente da McKinsey & Company, metade dos executivos de todas as regiões e setores relataram maior dificuldade em recrutar cientistas de dados e talentos analíticos do que qualquer outro tipo de habilidade. A retenção também é um problema de acordo com 40% dos pesquisados. 

Quer trabalhar com data science? Maurício, traz dicas valiosas para ser um bom profissional da área:

  • Saber trabalhar com Big Data e ter conhecimento de ferramentas que ajudam a lidar com um grande volume de dados tratados;

  • Ter conhecimento de algoritmos de Machine Learning para tomada de decisão;

  • Saber utilizar variações de linguagens de programação;

  • Ter foco analítico para gerar soluções técnicas para resolução de problemas complexos;

  • Construir um bom relacionamento com a equipe, pois o profissional vai ter contato com as áreas de TI e negócios.

Para finalizar podemos afirmar de forma sintetizada que a data science é um termo mais abrangente que o BI, englobando suas capacidades de análise e as expandindo.

Já o BI serve, principalmente, para que o gestor possa ter uma visão geral atual acerca do seu negócio, visto que os dados de todos os setores existentes em uma empresa são capturados e armazenados em um banco de dados único que será analisado (seguindo indicadores pré-determinados), para auxiliar na busca por oportunidades e também a identificação de possíveis riscos. 

Esperamos que esse artigo tenha ajudado você a compreender as diferenças entre o business intelligence e a data science. Curte tecnologia? Então continue acompanhando o nosso blog, semanalmente divulgamos conteúdos novos por aqui!

RASA: Conheça o software em python utilizado para criação de chatbots

Vivemos em uma era em que a tecnologia faz parte da nossa rotina e não saberíamos mais como viver sem ela. A cada dia que passa, novos softwares são desenvolvidos e nós vamos ficando cada vez mais dependentes da inteligência artificial. Totalmente inseridos nesse cenário, criamos um conteúdo completo sobre o RASA, um software em python que é utilizado para criação de chatbots e que é capaz de transformar totalmente o seu negócio e a forma que os seus clientes o enxergam.

Convidamos você a ler o nosso conteúdo com muita atenção e, assim, ficar por dentro de todas as informações desse software que chegou para impactar negócios de todos os nichos ao redor do mundo.

Como funciona o RASA?

O RASA é um software que foi desenvolvido na Alemanha, no ano de 2016 e, de maneira bastante resumida, é uma ferramenta de inteligência artificial utilizada para criar chatbots. Como muitas outras tecnologias, o RASA evolui de maneira constante: só nos últimos 6 meses foram lançadas mais de 5 versões diferentes do software.

Esse programa é extremamente poderoso, não é à toa que grandes empresas como Allianz, BMW, Toyota e Adobe estão o utilizando em suas automações.

Componentes

O software é dividido em dois componentes principais, que o permitem desenvolver todas as suas tarefas. A seguir, vamos te explicar exatamente como funciona cada um deles.

O primeiro componente pode ser considerado o raciocínio e a inteligência da conversa de um usuário com um chatbot, é um software livre: ele é gratuito e você pode usar e alterá-lo à vontade. Esse componente também pode ser chamado do núcleo do RASA e para utilizá-lo, você só precisa adicionar a interface de usuário e as integrações que deseja fazer com outros sistemas.

Já o segundo componente oferece ferramentas mais elaboradas que permitem que a empresa administre a aprendizagem do chatbot. Ele possui código fechado, sendo assim, não é possível incrementar ou adaptá-lo. A empresa tem a opção de trabalhar com uma versão comunitária mais básica ou compre uma licença do Rasa para acessar todos os recursos.

Intenções e respostas nos chatbots

O RASA permite que a própria empresa que adotou a plataforma defina frases de exemplo para determinadas situações, que são as chamadas intenções. A criação dessas intenções exige que seja seguido um processo estruturado, realizando uma série de pesquisas, incluindo um mapeamento das dúvidas mais frequentes dos usuários, processos do serviço e, até mesmo, o que o usuário pode querer buscar dentro da sua plataforma. A criação das intenções precisa ser feita com muita atenção, visto que esse é um dos pontos chave para que seu chatbot consiga manter uma comunicação assertiva com os usuários da sua plataforma.

Além das intenções, o software também permite a exibição de respostas em formato de frases ou de opções (múltipla escolha) para que o usuário possa selecionar aquele assunto do qual deseja mais informações.

Um exemplo de interação entre as intenções e as respostas pode ser uma simples conversa coerente entre um chatbot e um usuário. Observe a seguir:

— Usuário: Bom dia
— Chatbot RASA: Bom dia para você também, como vai?
— Usuário: Muito bem, obrigada!
— Chatbot RASA: Que bom, fico feliz em ouvir isso.

Uma simples interação, como a citada acima, precisa conter vários tipos de histórias, ou seja, uma resposta para cada intenção. Afinal, o chatbot precisa responder de maneira coerente e precisa estar preparado para caso o usuário responda que está bem, que não está, ou que está com algum problema específico.

Uma maneira de deixar o chatbot cada vez mais humanizado é definir várias respostas para a mesma intenção. Assim, o próprio chatbot vai escolher de maneira aleatória qual resposta será enviada naquele momento. Essa variedade de opções faz com que o usuário não receba sempre as mesmas respostas ao iniciar uma conversa para tirar dúvidas.

As formas de execução do RASA

Ele pode ser executado de várias formas, cada uma para uma função ou objetivo diferentes. Separamos, a seguir, algumas maneiras de execução do RASA para que você possa entender um pouco mais das diversas funcionalidades oferecidas pelo sistema.

Uma das principais formas de utilização do software, chamada de treino, faz uma “compilação” de todas as frases de exemplo (histórias e respostas) criadas pela sua empresa e forma um arquivo chamado modelo. Esse arquivo gera informações para a rede neural, que vai fornecer a inteligência por trás da conversa. Resumindo, o RASA oferece a funcionalidade de entender exatamente o que o usuário está falando e escolher a resposta mais adequada para aquilo, utilizando uma redes neural – ou seja, simulando o funcionamento do cérebro humano.

O RASA também permite a criação de formulários, onde o chatbot solicita informações ao usuário para poder fornecer respostas mais personalizadas. Um exemplo utilizado pelo próprio software é a possibilidade de o próprio bot sugerir restaurantes que possam agradar o usuário. Isso acontece da seguinte maneira: Após o preenchimento do formulário com informações demográficas, o robô consegue direcionar o usuário para estabelecimentos que combinam com o seu perfil e localização.

Outro exemplo é a busca por médicos, onde o usuário pode questionar ao bot qual é o centro médico mais próximo ao seu endereço, e o robô enviará, de maneira imediata, todas as opções próximas à localização do usuário.

O servidor de chatbot permite acessar a inteligência do RASA através de uma interface Web (HTTP), o que permite a integração com a sua própria aplicação. Além disso, o software já possui funcionalidades prontas para conectar e configurar a interação com chats padrões como, por exemplo, Facebook, Telegram e Google Hangouts.

Já o chamado servidor de ações executa ações personalizadas (definidas pela sua empresa) por meio de, também, uma interface Web.

Citamos várias funções nesse artigo, porém, o RASA é um sistema muito completo e oferece diversas outras facilidades, por meio de automatizações via inteligência artificial. Aproveite para utilizá-lo dentro do seu negócio.

Software em python

Uma informação muito importante sobre o RASA é que ele foi totalmente programado em python, ou seja, em código aberto. Isso facilita diversas questões como, por exemplo, modificações e a programação de interações mais complexas e customizadas para os chatbots. Essa programação permite que o bot capte informações do usuário e faça pesquisas sobre ele em seu sistema, exemplo: quando foi a última vez que essa pessoa acessou o site?

Por ser um software de código aberto, o RASA possui um suporte colaborativo. Atualmente, eles possuem um fórum na internet com mais de 7 mil pessoas trocando experiências, dúvidas e informações.

Os benefícios de utilizar chatbots

Conversei com um especialista em Sistemas de Informação para passar para vocês os maiores benefícios da utilização de chatbots dentro da sua empresa. Confira abaixo!

Como já citado anteriormente, a inteligência artificial é algo muito importante no nosso dia a dia. Ela apresenta vários benefícios, e cada um desses benefícios é vantajoso de um jeito, dependendo do nicho de atuação de cada negócio.

“Em todos os nichos, com certeza a automação é um dos maiores benefícios da inteligência artificial, principalmente devido à interação com o consumidor, e o chatbot é um exemplo muito bom disso, onde você automatiza um processo inteiro de comunicação com os clientes, simplifica processos e facilita para o usuário tirar dúvidas”, afirmou o especialista em Sistemas de Informação, Eduardo Souza.

Outro grande benefício da utilização de chatbots, para Eduardo, é o fato de ele estar disponível 100% do tempo para o usuário, ou seja, 24 horas por dia e 7 dias por semana. Essa facilidade também é conhecida como real time assistance, onde o consumidor não precisa esperar nem um minuto sequer para obter uma resposta aos seus problemas.

Em resumo, as principais vantagens na utilização de um chatbot são a facilidade na comunicação entre o consumidor e o seu negócio, o real time assistance e uma facilitação do entendimento do usuário sobre diversas questões, afinal, a experiência do usuário fica mais satisfatória.

A Viceri facilita o uso de chatbots

Como você já percebeu, a RASA é um programa complexo e está em constante evolução. Como a Viceri entra nisso?

A Viceri é especialista em RASA e Python, e damos suporte aos nossos clientes em relação ao RASA. Escrevemos integrações com os sistemas dos nossos clientes para que eles possam consultar informações por meio do chatbot e, também, desenvolvemos todos os diálogos que são treinados dentro do sistema.

A criação dos diálogos (interações) dentro do chatbot precisam ser feita de maneira muito cuidadosa, para que não aconteçam conflitos entre os discursos do próprio bot. Nossa função é evitar qualquer tipo de confusão.

Além disso, estamos presentes no fórum de dúvidas, citado anteriormente, ajudando a resolver todos os problemas que surgem, respondendo perguntas e abrindo relatórios de erros encontrados no programa e sugestões de melhorias.

Espero que tenham gostado! Esse assunto com certeza será tratado muitas outras vezes aqui dentro do nosso blog.
Caso se interesse em saber mais informações sobre o RASA, clique aqui e fale conosco agora mesmo.

O que é DevOps, quais os seus benefícios e como implementar essa técnica no seu negócio

Não é novidade que as áreas de TI são cada vez mais importantes para as empresas, uma vez que são fundamentais para responder a alta demanda dos consumidores por produtos digitais e a exigência constante de eficiência operacional para a sobrevivência no mercado atual. De acordo com a previsão do Gartner, os investimentos globais em tecnologia da informação devem somar US$ 3,9 trilhões em 2020.

Porém, além de investimentos, essa área precisa de agilidade, processos bem definidos, boa comunicação e a possibilidade de inovar para criar novas soluções para o mercado. Nessa perspectiva, a implementação de práticas e ferramentas DevOps nas organizações é fundamental para alcançar essas exigências e garantir excelência plena tanto para a área de desenvolvimento quanto para a de infraestrutura de software.

Para você entender melhor o que é DevOps, os benefícios para o negócio e como implantá-lo, reuni uma série de informações neste artigo para que a sua organização utilize dessa técnica para fazer as transformações que o futuro exige acontecerem.

O que é DevOps

Como o próprio nome já diz, o DevOps objetiva quebrar a separação entre Desenvolvimento e Operações, reunindo essas duas áreas da TI em uma só. Na prática, ele é um conjunto de práticas e ferramentas adotadas por desenvolvedores e profissionais da infraestrutura de software para ter mais agilidade, segurança, estabilidade e inovação em cada entrega, proporcionando mais confiabilidade aos serviços.

Em uma cultura tradicional, assim que a equipe de desenvolvimento termina o código em si de um determinado software, ela utiliza uma parte grande do seu tempo com processos secundários e de versionamento, que incluem testes e build, para só então encaminhar o projeto ao time de infraestrutura. Esse, por sua vez, precisa realizar o deploy e disponibilizar esse software em um servidor. Esse é fluxo de trabalho muito linear em muitos casos aumenta o tempo de entrega e abre margem para erros de programação e falhas de execução do software.

Com o DevOps, todos os processos são integrados, de modo que o desenvolvimento executa sua parte do software visando facilitar o trabalho da área de operações. Além disso, várias atividades manuais que tomam um tempo preciso da equipe são realizadas por ferramentas de automação.

Qual a importância de implementar DevOps no seu negócio? 

Antes de mais nada, é importante destacar que agilidade e inovação não servem mais como um mero diferencial. Elas são imperativas no mercado e empresas que não tiverem essas características não sobreviverão ao futuro. Com a tecnologia modificando a forma como fazemos negócios, qualquer empresa precisa dessas qualidades em sua área de TI.

A cultura DevOps é uma das chaves para construir essas características, uma vez que agrega inúmeros benefícios às rotinas de produção de software e, por consequência, aumenta a qualidade de cada entrega. Confira alguns motivos para implementar essa técnica no seu negócio:

Exigência de mercado

Muitas grandes empresas já perceberam a necessidade de adotar essa forma de trabalho na sua área de tecnologia. De acordo como a IDC, o mercado global de ferramentas para DevOps atingiu a marca de US$ 5,2 bilhões em 2018, valor que deve subir para US$ 15 bilhões em até 2023. Além disso, um estudo divulgado pelo Fórum Econômico Mundial aponta a Engenharia da Computação com foco em DevOps como uma das 96 profissões emergentes mais promissoras dos próximos anos, revelando o interesse cada vez maior das companhias nesses profissionais.

DevOps aumenta a capacidade de uma empresa se reinventar constantemente e focar mais em seu core business, já que a preocupação com processos é reduzida. Assim, empresas que não adotarem esse modelo podem ficar para trás dos concorrentes em termos de rapidez e qualidade de entrega, lançamento de produtos digitais e operações internas.

Mais agilidade de entrega 

Com um alinhamento mais preciso entre os times de desenvolvimento e infraestrutura, eles podem trabalhar facilitando as atividades um do outro. Além disso, o uso de ferramentas de automação específicas para DevOps reduz significativamente o tempo gasto em atividades de versionamento e deploy. Com a necessidade constante de adaptação por conta do mercado atual, essa agilidade é especialmente valiosa para a produção de MVPs e de suas atualizações posteriores.

Liberdade de inovação para a equipe 

Com DevOps, os profissionais ficam mais livres para exercitar sua criatividade em cada entrega, garantindo softwares diferenciados e com scripts de melhor qualidade. Como uma parte importante dos processos de versionamento do software é realizada por automação, há mais tempo para criar soluções arrojadas. Além disso, com a infraestrutura acompanhando o desenvolvimento do software e com os desenvolvedores mais próximos de sua operação, essas novas ideias podem ser criadas com mais segurança, minimizando falhas.  

Menor possibilidade de falha humana 

Apesar da evolução de tecnologias como IA e Machine Learning, há habilidades humanas como criatividade e improvisação que as máquinas estão longe de alcançar. Entretanto, elas possuem habilidades matemáticas mais precisas. Com ferramentas de automação, atividades repetitivas, como testes e build, possuem mais confiabilidade, uma vez que não correm o risco de erros causados por desatenção, cansaço ou falha de comunicação entre os profissionais responsáveis. Além disso, caso ocorra algum desses erros, o tempo de ação para correção dele é muito mais rápido. 

Como implementar a cultura DevOps na sua empresa?

Assim como muitas outras mudanças necessárias para a transformação das empresas, a implementação de DevOps depende de muitos estudos, decisões e investimentos. Por isso, a implementação dessa cultura depende de criação de uma cultura, processos bem definidos em desenvolvimento e infraestrutura, além de um bom ambiente de trabalho. 

Confira algumas dicas que separamos para adotar esse modelo a sua área de TI:

Processos bem definidos 

Para realizar a implantação do DevOps, é fundamental ter processos bem definidos, tanto da área de desenvolvimento quanto de infraestrutura. Assim, é necessário fazer um estudo profundo desses processos e da rotina profissional da TI da sua empresa para assim identificar quais atividades podem ser automatizadas através de ferramentas.

Ambiente de trabalho seguro

De acordo com o relatório Accelerate State of DevOps de 2019, produzido pelo Google Cloud e pela Dora, desenvolver um ambiente de trabalho psicologicamente seguro, utilizar sistemas para monitorar a motivação e o nível de estresse dos profissionais e balancear demandas para proporcionar equilíbrio entre trabalho e vida pessoal são algumas das chaves para uma cultura que favorece o alinhamento entre desenvolvimento e operações e garantem mais produtividade através do modelo DevOps.  

Ferramentas de automação

Embora insuficiente sem a adoção do mindset e cultura necessários ao DevOps, a tecnologia é fundamental para implementar essa forma de trabalho na área de TI da sua empresa. Por isso, considere as necessidades do seu time e contrate as ferramentas de automação que revolvam melhor a essas questões. Algumas das nossas sugestões são:

Ficou com alguma dúvida ou quer saber mais sobre DevOps? Envie uma mensagem para a gente e saiba mais sobre como levar essa metodologia de trabalho para a sua empresa.

O manual da segurança de dados na AWS e as responsabilidades compartilhadas

Sempre que você tem uma infraestrutura e precisa migrá-la para nuvem surge um questionamento: será que esse procedimento é seguro para o meu banco de dados? Será que as informações da minha empresa estão protegidas em um ambiente totalmente digital? Quão confiável pode ser uma estrutura em nuvem? 

A segurança do banco de dados na nuvem pode ser muito parecida com a segurança dos datacenters locais, mas com menor custo de manutenção. Em um ambiente digital você usa ferramentas que protegem o fluxo de informação da sua empresa. É o caso da AWS (Amazon Web Services), uma das infraestruturas mais seguras do mundo, onde você pode criptografar, mover e gerenciar dados com confiabilidade. 

Segurança na nuvem e porque você deve se preocupar com isso 

A segurança da computação na nuvem oferece as mesmas funcionalidades do modo “tradicional”. Isso quer dizer que todas as informações essenciais estão protegidas contra vazamentos, roubos ou possíveis exclusões. Basicamente, a segurança na nuvem não vai alterar seu modo de gerenciamento atual, mas vai fazer com que a prevenção, detecção e correção de falhas seja feita de uma forma muito mais ágil. 

Além disso, o serviço de armazenamento de dados necessita de requisitos de conformidade, principalmente em informações de saúde ou bancárias, por exemplo. Por isso, muitos serviços oferecem relatórios de auditoria, elaborados por terceiros, para atestar a eficiência do processo interno no gerenciamento de dados. 

Cada vez mais é preciso ter controle e confiança para exercer um trabalho de retenção de banco de dados. Para isso é necessário ter de uma rede que proteja informações, identidades e aplicações, além de atender a requisitos de proteção e confidencialidades de dados. Afinal de contas, uma nova lei de proteção de dados vem aí e, mais do que nunca, é preciso ser extremamente cuidadoso com seu banco. 

No Amazon Web Services é possível automatizar tarefas de segurança de forma manual, pagando apenas pelo que for usado pela sua empresa. O serviço tem ofertas tão seguras para cargas secretas de trabalho que empresas como a Netflix, o Slack e até o governo americano trabalham na nuvem da AWS. E acredite, do menor ao maior negócio, a segurança e credibilidade continuam iguais. 

Mas como isso funciona na prática? 

A AWS foi projetada para ser um dos serviços de cloud computing mais seguros disponíveis no mundo. Uma infraestrutura criada para satisfazer um alto rigor de segurança, com requisitos para atender organizações com informações altamente confidenciais como bancos globais e serviços militares. Segundo a própria plataforma, a AWS conta com 90 normas de segurança e certificações de conformidade e todos seus serviços de armazenamento de dados oferecem criptografia.

Independentemente do serviço contratado dentro da AWS, suas cargas de trabalho são protegidas com uma série de níveis de proteção que são básicos da plataforma. Isso garante a confiabilidade do processo. 

Proteção de dados e da infraestrutura

A AWS protege seus dados, contas e cargas de trabalho de acessos não autorizados. A plataforma fornece criptografia para os 117 tipos de armazenamento e também gerenciamento de chaves e detecção de ameaças. 

Além disso, a plataforma ainda protege sua infraestrutura com regras que você mesmo cria, possibilitando o bloqueio de padrões comuns de ataque. Isso tudo porque faz um monitoramento contínuo das atividades na rede. 

AWS IAM

O Identity and Access Management permite que você gerencie as identidades e permissões de acesso a nuvem. Você configura e habilita seus usuários através de um token físico ou virtual, tudo na forma ideal para que você gerencie o mais rápido sua forma de trabalho. 

Testes de penetração 

A AWS permite em sua plataforma avaliações de segurança e testes de penetração em sua infraestrutura. Alguns testes não são permitidos e precisam ser informados com antecedência para a AWS, como ataques de negação de serviço, por exemplo. Se qualquer tipo de desalinhamento ou problema de segurança for detectado, é necessário entrar em contato imediatamente com a AWS Security.

E o que são as responsabilidades compartilhadas? 

Independentemente da atuação no mercado, toda empresa se preocupa com a segurança dos seus dados. Por este motivo, a AWS oferece controle e propriedade sobre os dados através de uma ferramenta avançada que permite gerenciar permissões, acessos, armazenamentos e mais diversos recursos do sistema. Tudo para que nada seja acessado sem a devida autorização. 

As responsabilidades compartilhadas são um ponto crucial dentro da segurança na AWS. Da mesma forma com que a AWS trata e protege os dados, também é necessário que o cliente tenha certos cuidados. Segundo a plataforma, a AWS é responsável pela segurança “da nuvem” e o cliente pela segurança “na nuvem”. Basicamente, a AWS se responsabiliza por proteger a infraestrutura que executa os serviços oferecidos: hardware, software, redes e instalações. 

As responsabilidades do cliente são com relação ao sistema operacional de visitantes, de toda a parte de criptografia e transferência de dados, tanto dados em repouso quanto dados em trânsito. O cliente determina onde o conteúdo será armazenado, o tipo de armazenamento e a região. A AWS dá todo o suporte e chaves de criptografia para que ele consiga operar sua responsabilidade da forma mais correta e eficiente possível. Tudo muito bem configurável. 

A responsabilidade do cliente é definida pelos serviços contratados e selecionados por ele na nuvem. Isso determina a quantidade de operações que ele deverá executar como suas responsabilidades de segurança. Alguns serviços, inclusive, exigem que o cliente tenha total liberdade para fazer configurações e gerenciamentos de segurança. 

A computação em nuvem permite que você inove e transforme totalmente a área de tecnologia do seu negócio. Com a certeza da segurança do seu banco de dados é muito mais fácil poder pensar a escalabilidade da sua empresa. Isso fica muito mais simples com um serviço que monitora 24 horas por dia, 7 dias na semana e ajuda a proteger a confidencialidade, integridade e a disponibilidade de dados.

Facilitar a forma de trabalho das empresas é apenas um dos nossos objetivos. Quer saber mais? Fale com a Viceri. Nós temos um time completo, certificado em AWS e pronto para ajudar você a fazer o seu negócio crescer. 

Como funciona a migração de banco para AWS em empresas de médio porte?

Uma empresa de médio porte enfrenta desafios como uma gigante. Isso acontece diariamente e todo gestor é bem ciente disto. Mas muito além de todos estes desafios, ainda é preciso se preocupar com a segurança da sua base de dados. Arquitetar, proteger, migrar entre outras coisas, são necessidades que poderiam ser mais práticas se seu banco estivesse na nuvem. Isto daria mais tempo para  você se ocupar com o crescimento dos negócios.

As necessidades de uma empresa se transformam com o tempo e, por este motivo, a forma como trabalhamos também precisa mudar. Fazer a migração  do banco de dados para um serviço de nuvem gerenciado é uma vantagem para que você tenha um controle maior sobre as escalabilidade dos seus dados. E neste sentido, a AWS (Amazon Web Services) oferece o AWS Database Migration Service, um serviço disponibilizado pela Amazon para migrar os dados, tabelas e chaves primárias para a nuvem.

Como este tipo de migração acontece

O AWS Database Migration Service faz a migração do banco de dados para a AWS de um jeito muito rápido e em segurança. O banco de dados de origem pode permanecer operacional durante o processo, dependendo do tipo de migração que será feita. O AWS Database Migration Service viabiliza migrações homogêneas, onde o banco de dados de origem e destino são totalmente compatíveis. Viabiliza também migrações heterogêneas, onde o sistema gerenciador de banco de dados de origem e destino são diferentes.  

Sem complicações e com baixo custo

O AWS Database Migration é muito simples de usar. Você não precisa instalar um driver ou aplicativo e praticamente não são exigidas mudanças no banco de dados de origem. A migração do banco de dados pode ser feita em poucos cliques no Console de Gerenciamento da AWS. A complexidade do processo fica por conta do DMS, que replica automaticamente qualquer alteração que ocorra nos bancos de origem durante o processo. 

Também é possível configurar uma tarefa de migração, ou seja, os parâmetros que o serviço irá utilizar para executar o trabalho. Tudo isso em poucos minutos dentro do AWS Database Migration Service. É possível fazer configurações de conexões com bancos de dados de origem e destino e também a escolha da instância de replicação usada para executar o processo de migração. Depois, a mesma tarefa pode ser usada para teste antes que o trabalho seja de fato executado. 

O outro ponto positivo é que o AWS Database Migration Service tem um custo baixo. Você paga pelos recursos computacionais usados no processo de migração e por armazenamentos adicionais de log. Seja qual for o tipo de migração, é um grande contraste com a maioria dos métodos que geralmente são muito caros.

Compatibilidade 

No AWS Database Migration Service é possível fazer a migração da maioria dos bancos de dados comerciais e de código aberto utilizados. Elas podem ocorrer de bancos de dados locais para o Amazon RDS ou o Amazon EC2, bancos em execução no EC2 para o RDS, vice-versa, ou de um banco do RDS para outro RDS. Ele também permite migrar dados entre SQL, NoSQL e destinos baseados em textos.

Bancos RDS

O RDS (Relational Database Server) é um serviço que oferece uma abstração para um determinado banco de dados suportado (MySQL e PostgreSQL, por exemplo) com objetivo de facilitar o gerenciamento de bancos de dados relacionais na nuvem, tornando mais fácil a escalabilidade e backup desse recurso. 

RDS é um serviço para banco de dados relacional que serve apenas para isso. Se difere por ser autogerenciável. Você não tem acesso a máquina de modo geral, só ao banco de dados. 

Bancos EC2

O EC2 é um serviço da Amazon com o objetivo de oferecer instâncias computacionais (máquinas) escaláveis sob demanda, que podem ser utilizadas para fins mais gerais. Nesse serviço, é possível utilizar essas instâncias para hospedar uma aplicação web ou até mesmo um banco de dados. Lá você tem acesso ao sistema operacional convidado, com liberdade para usá-lo por completo, configurar firewall, instalar aplicações, entre outras coisas. É como se fosse um computador pessoal, mas hospedado na nuvem. 

Por que fazer a migração do meu banco de dados? 

Existe uma série de vantagens de migrar um banco de dados para a nuvem. Desde as vantagens financeiras e a diminuição de gastos, passando pelos processos diários de trabalho que são facilitados, e chegando até às questões jurídicas com a adequação da sua empresa com a nova LGPD.

◼️ Leia também: Tudo o que você precisa saber sobre a proteção de dados na sua empresa

Vantagens econômicas e de processos de trabalho

Com a migração do banco de dados para nuvem você terá um controle maior da escalabilidade. Por exemplo, vamos supor que sua equipe dimensionou um computador para o banco de dados existente. No entanto, você tem uma previsão de duplicar seu banco no próximo ano. Você irá comprar um servidor maior, pois está com a ideia de que no próximo ano precisará do dobro de tamanho. Então acontece um superdimensionamento, e enquanto você não usa metade da disponibilidade do servidor, a sua máquina se desvaloriza,  tempo passa e ela fica ultrapassada. 

Ao contrário da nuvem. Com a migração do banco de dados para a nuvem você pode começar com um dimensionamento mais conservador e aumentar de acordo com a sua necessidade. Quando necessitar de um servidor maior, com alguns cliques você pega outro e seleciona uma máquina maior. Dessa forma, não tem prejuízo com um sistema defasado e nem a necessidade de comprar uma nova máquina.

É importante pensar que o impacto nos custos e os benefícios financeiros vão variar de acordo com a infraestrutura de tecnologia da empresa, de quais aplicativos são executados e também dos serviços de nuvem que já estão em uso, entre outros diversos fatores.

Vantagens jurídicas e adequações à nova LGPD

As adequações à nova Lei Geral de Proteção aos Dados Pessoais podem ser bem complicadas. No entanto, fazer a migração do banco de dados para a nuvem pode ser uma decisão acertada que deixa o processo mais tranquilo. Só ao migrar a carga de trabalho para a nuvem já garante que a empresa cumpra boa parte dos pontos estabelecidos. 

Pois bem, “boa parte” não é todo o processo. Mesmo após migrar tudo para nuvem, ainda é preciso rever alguns processos de tratamento de dados. Isso inclui regras de captação de dados, mapeamento de informações que a empresa já possui, políticas de acesso, entre outras coisas. 

A facilitação das formas de trabalho tem se tornado uma estratégia de negócio para as empresas. São novas maneiras de se atualizar no mercado e garantir mais segurança ao banco de dados da sua empresa. Quer saber mais? Fale com a gente. A Viceri tem um time de engenheiros certificados em AWS prontos para ajudar você a fazer o seu negócio crescer.