Integração com plataforma Steam

À medida que a indústria de jogos continua a evoluir, a integração com plataformas de distribuição tornou-se vital para o sucesso de desenvolvedores e publishers. Neste artigo, mergulharemos no universo da Steam, a plataforma líder no mercado de games digitais, e exploraremos como aproveitar ao máximo suas ferramentas de integração.

A Steam e a Importância da Integração

O Steam, uma plataforma líder na distribuição de jogos digitais para computadores, é muito mais do que apenas uma loja virtual. Fundado pela Valve Corporation em 2002, inicialmente como uma solução para atualizações de jogos, o Steam evoluiu rapidamente para se tornar uma rede social e uma comunidade ativa de jogadores. Com uma biblioteca abrangente e uma comunidade global engajada, o Steam se tornou o epicentro dos jogadores de PC em todo o mundo.

No entanto, sua relevância transcende o entretenimento puro. A integração entre a Steam e diferentes sistemas ou aplicativos desempenha um papel crucial na garantia de uma experiência de jogo completa e harmoniosa para os usuários. Esse processo envolve a troca de dados e a sincronização de atividades entre diversas plataformas, tornando-se uma parte vital do cenário dos jogos digitais. Vamos explorar mais a fundo como essa integração funciona e por que é tão essencial neste universo em constante evolução.

Integração

A integração refere-se ao processo de conectar sistemas ou aplicativos diferentes para que possam trocar informações e funcionar de forma harmoniosa em conjunto. Envolve a transferência de dados e a sincronização de atividades entre diferentes sistemas. Uma plataforma de integração é uma ferramenta projetada para facilitar esse processo, oferecendo recursos específicos para conectar sistemas de maneira eficiente, automatizar fluxos de trabalho e garantir a comunicação adequada entre diferentes aplicativos ou serviços.

API

A API (Interface de Programação de Aplicativos) é uma ferramenta essencial no desenvolvimento de software e web, permitindo a comunicação e compartilhamento de dados entre diferentes aplicativos de forma segura e eficiente. Ela define regras e protocolos para que os aplicativos possam interagir, possibilitando a realização de diversas tarefas, como compras online e acesso a informações de GPS. As APIs aceleram o desenvolvimento de novos aplicativos ao oferecer funcionalidades prontas para uso, facilitam a integração entre sistemas e adaptam os serviços às necessidades específicas dos usuários.



Como funciona o processo de Integração com a Steam?

  • Introdução

O Steam disponibiliza uma Web API baseada em HTTP para acessar recursos do Steamworks, incluindo métodos públicos acessíveis por qualquer aplicativo capaz de fazer requisições HTTP e métodos protegidos que exigem autenticação de aplicativos de backend confiáveis.

  • Formato das requisições

As requisições são feitas através de HTTP ou HTTPS para o URI api.steampowered.com ou https://partner.steam-api.com para distribuidoras. A URI segue o formato https://api.steampowered.com/<interface>/<metodo>/v<versao>/ com parâmetros GET ou

POST.

  • Autenticação

Muitos métodos da Web API exigem autenticação, o que significa que uma chave única precisa ser passada junto com a solicitação. É necessário entender o processo de autenticação com chaves da Web API para garantir acesso aos métodos protegidos.

  • Parâmetros vetorizados

Alguns métodos aceitam vetores de parâmetros, indicados por sufixos [0] nos nomes, com um parâmetro “count” especificando a quantidade de itens no vetor.

  • Interfaces de serviço

Existem interfaces de serviço que aceitam argumentos em formato JSON, passados via parâmetro “input_json”.

  • Consulta de exemplo

A documentação fornece exemplos de consultas para diferentes métodos da Web API. Estudar esses exemplos ajuda a compreender como realizar solicitações específicas e interpretar os resultados retornados.

Exemplo fornecido pela Steam:

Ele recupera as 3 notícias mais recentes para Team Fortress 2.

A requisição específica que a resposta deve ser retornada como JSON e inclui: um parâmetro “appid” obrigatório (o AppID do Team Fortress 2 é 440) e um parâmetro “count” opcional para limitar a quantidade de resultados retornados.

GET /ISteamNews/GetNewsForApp/v2/?appid=440&count=3\r\n

Host: api.steampowered.com/r/n

Content-Length: 0\r\n\r\n

Resultados dessa consulta pelo link:

https://api.steampowered.com/ISteamNews/GetNewsForApp/v2/?appid=440&count=3

Ler mais sobre a chamada específica: ISteamNews/GetNewsForApp

  • Recuperação do ID Steam do usuário

A identificação de usuários é feita usando o ID Steam de 64 bits.

  • Endereços de hospedagem da Web API, firewalls

O serviço público está atrás do cache de borda da Akamai, com endereços IP variáveis. Para maior disponibilidade, as distribuidoras devem usar o serviço exclusivo para parceiros. É possível definir endereços IP permitidos para chamadas à Web API como camada adicional de segurança.

  • Integração com Serviços Específicos:

Além das chamadas comuns à Web API, existem interfaces de serviços que funcionam de forma semelhante, permitindo passar argumentos como um blob JSON. É necessário entender como utilizar essas interfaces para integrar serviços específicos do Steam.

  • Consulta da Comunidade e Suporte

Caso haja dúvidas ou dificuldades durante o processo de integração, é recomendável buscar ajuda na comunidade Steam ou entrar em contato com o suporte técnico para obter orientações adicionais.

Seguindo esses passos e utilizando a documentação fornecida pela Steam, é possível realizar com sucesso a integração de uma plataforma com o Steam, aproveitando os recursos disponíveis na Web API para oferecer uma experiência mais completa aos usuários. Ao garantir uma integração eficiente, os desenvolvedores podem potencializar as funcionalidades da Steam em seus próprios sistemas, agregando valor aos jogos e serviços oferecidos. Portanto, ao explorar as possibilidades da Web API do Steamworks e compreender as melhores práticas de integração, os profissionais da indústria de jogos estarão preparados para oferecer aos usuários uma experiência de jogo ainda mais envolvente e integrada.

Autora: Carolina de Moraes

Referências:

Web API Overview (Steamworks Documentation)

https://partner.steamgames.com/doc/features/community

https://plugg.to/diferenca-entre-hub-de-integracao-e-plataforma-de-integracao/

https://tecnoblog.net/responde/o-que-e-steam-tudo-sobre-a-loja-valve/

https://ebaconline.com.br/blog/o-que-e-uma-api-seo

Robôs nas Empresas

A automação visa otimizar determinadas atividades das organizações, reduzindo a necessidade de tarefas manuais. Com isso, proporcionando o aumento da produtividade, na redução de custos e na melhoria da eficiência dos processos. Atualmente, existe vários métodos de automação em uso, como o envio automatizado de faturas para os clientes, o atendimento ao cliente e automatização de estratégias de marketing, entre outros. Nessa perspectiva, os robôs também desempenham um papel fundamental nos processos. 

Continue lendo “Robôs nas Empresas”

Bancos de dados para Bigdata: Hadoop e Spark

Introdução

O grande volume de dados produzidos pelas empresas nos dias de hoje se tornou um problema para armazenamento, o Hadoop e o Spark surgiram como soluções para essa situação, mas cada um tem sua particularidade.

O hadoop surgiu nos anos 2000 com o foco em dados em disco, por serem mais baratos do que a memória RAM (hoje é mais barata), já a característica principal do  Spark é o uso extensivo da memória RAM.

Esse artigo tem como objetivo explicar cada um dos bancos de dados e fazer um comparativo entre eles ajudando a tomar a melhor decisão na hora de escolher.

Continue lendo “Bancos de dados para Bigdata: Hadoop e Spark”

Amazon SES: Entenda as vantagens e desvantagens de se usar

Email

No mundo atual, manter um contato contínuo com clientes e parceiros pode ser uma tarefa difícil, ainda mais para grandes empresas. Uma forma de realizar essa comunicação é utilizando e-mails. Porém, o monitoramento para que eles realmente cheguem a um destinatário pode ser difícil e até mesmo de alto custo. Assim, a utilização de um meio externo para realizar esse trabalho é uma ótima opção.

Continue lendo “Amazon SES: Entenda as vantagens e desvantagens de se usar”

Autenticação e autorização: Segurança de Acesso a Recursos

O avanço e a popularização das tecnologias abriu aos usuários a possibilidade de navegar livremente pela internet, podendo contratar e utilizar diversos serviços remotamente por exemplo. Assim, tornou-se fundamental investir em estratégias que possam adicionar maior segurança e confidencialidade nos métodos de identificação dos usuários (ALVES et al., 2017). Através de processos de autenticação e autorização pode-se proteger o acesso a um determinado recurso, estabelecendo regras e permissões que podem variar dependendo de quem o requisita, e para isso existem padrões e protocolos que especificam a melhor forma de projetar estas etapas do sistema, como gerenciar a identidade, mover dados pessoais com segurança e decidir quem pode acessar aplicativos e dados.

Continue lendo “Autenticação e autorização: Segurança de Acesso a Recursos”

Frameworks NODE JS

Um framework é uma combinação de bibliotecas, auxiliares e ferramentas que auxiliam a construir e executar aplicativos da web com menos esforços. “É de conhecimento público que existem mais frameworks para desenvolvimento web, que estrelas na via láctea”. Com isso, foi realizado uma pesquisa para descobrir os frameworks mais utilizados atualmente para node JS.

Continue lendo “Frameworks NODE JS”

Autenticação

A Autenticação em sistemas computacionais consiste em confirmar a autenticidade de uma pessoa dentro de um determinado contexto e está relacionado diretamente à segurança do sistema verificando a permissão e os limites de acesso do usuário.

Há diversas formas de autenticação dentro de um sistema como por exemplo: os Smart Cards conhecidos como tokens, a biometria e a mais difundida e aceita que é o uso de senha.

Continue lendo “Autenticação”

Como funciona a autenticação com Facebook e com o Google

Com tantos sites e aplicações disponíveis no mundo digital hoje, muitas vezes, para utilizar os serviços e/ou acessar seus conteúdos, é necessário possuir um cadastro. Imagine a quantidade de senhas a serem gerenciadas para cada site e aplicação, se cada vez que queira acessar algo novo, ter que criar um novo cadastro? Ou criar e gerenciar novas senhas? Até porque esse numero elevado de senhas, desgasta o usuário em questão de criatividade, e muitos acabam utilizando senhas fracas, e ou também utilizando a mesma senha para mais de uma aplicação.

Continue lendo “Como funciona a autenticação com Facebook e com o Google”

O que é e onde aplicar Angular JS

AngularJS

No passado usavam-se sites estáticos, sem iteração com os usuários, porém logo surgiram aplicações Web, essas sim necessitavam de recursos e o nível de complexidade aumentou.

Inicialmente usou-se JavaScript/Jquery mas nem sempre ela garantia a alta produtividade e a facilidade na manutenção de código.

O que é o Angular JS?

AngularJS é um framework front-end que auxilia a criação de Single Page Aplications(SPA), e vem ganhando destaque desde de seu surgimento em 2011-2012 por Misko Every e Adam Ebrons, cujo objetivo era facilitar a criação de aplicações web. É baseado em um modelo MVW(Model View Whatever), uma brincadeira da Google dando um ponto final a uma longa discussão entre a comunidade de desenvolvedores que não chegavam em um acordo sobre o modelo utilizado cujos principais eram: MVC(Model View Controller), MVP(Model View Presenter) e MVVM(Model View View Model).

O começo:

Angular JS, foi desenvolvido por Misko Hevery em um projeto pessoal com o objetivo de aprimorar o desempenho de aplicações Web. Pouco tempo depois, Hevery entrou para o Google e aplicou sua framework no projeto Google feedback, diminuindo o número de linhas do código e aumentou sua performance. Google feedback e uma ferramenta que está presente em todos os produtos da Google como: Google+, Chrome, Hangouts entre outros, onde você pode enviar impressões do que estão acontecendo nos produtos como: erros, críticas e com isso o suporte vai poder observar se usuário final está gostando ou não dos produtos. Atualmente, o Google e o principal contribuinte para o código do AngularJs.

O AngularJS veio para padronizar a estrutura de desenvolvimento de aplicações para web, fornecendo um template com base nos padrões client-side.

Quem usa AngularJS:

Muitos clientes de grande porte usam Angular, devido a sua performance com simplicidade, os sites possuem o framework Angular: Airlines, paypal, cvs shop ,Micro Soft, Google Play,ABC News, San Disk, Trello.

Por que usar?

Usar este framework facilita a produtividade pelo reuso de código. Também visando a continuidade, hoje o mesmo está sendo mantido pelo Google, tendo como a certeza que ele não deixará o mercado tão cedo, tendo esforços de grandes equipes na linha de desenvolvimento, o angular segue muito bem o mantra da produtividade. Por ser orientado a componentes, é muito rápido e fácil programar com ele.

Praticamente qualquer coisa que se precisa já tem pronta por aí nos milhares de repositórios do GitHub. Existe inclusive um site que reúne mais de 2000 módulos open-source para facilitar a busca https://angular.io/guide/ngmodules. Possui comunidade Sólida o Repositório do Angular no GitHub tem 49 mil estrelas e mais de mil contribuintes, além de mais que 150 mil repositórios com scripts que utilizam a tecnologia.

No Stack Overflow, a maior comunidade de perguntas e respostas do mundo, temos quase 180 mil perguntas. Caso o interesse seja em vídeos sobre o assunto, o YouTube nos dá uma marca impressionante de 470 mil vídeos. O interesse da comunidade tem subido exponencialmente nos últimos anos, de acordo com o Google.

O Angular está sendo conhecido pela internet também pela sua curva de aprendizado. Em poucos minutos você aprende seus conceitos e já está desenvolvendo seu primeiro app.

O AngularJS usa em sua arquitetura o modo MVC (Model View Controller), que é um padrão para dividir uma aplicação em diferentes partes (modelo, visão e controle), cada uma com suas respectivas responsabilidades. Contando com três camadas de comunicação, que são elas:

  • Controller : Sempre que você pensar em manipulação de dados, pense em model. Ele é responsável pela leitura e escrita de dados, e também de suas validações.
  • View: Simples: a camada de interação com o usuário. Ela apenas faz a exibição dos dado.
  • O responsável por receber todas as requisições do usuário. Seus métodos chamados actions são responsáveis por uma página, controlando qual model usar e qual view será mostrado ao usuário.

Um exemplo disso seria um restaurante, o Controller é o pessoal da cozinha que prepara o prato, mas não sabe para quem irá fazer, a View é o cliente que apenas recebe o prato e consome, mas não sabe quem fez, o Scope é como se fosse o garçom que faz o meio de campo entre Controller e View.

Outro recurso interessante para economia de dados e melhor performance é carregar apenas uma página principal, recursos de aplicação e outras páginas são carregadas por demanda, deixando a experiência mais fluida. Essa funcionalidade é conhecida como Route Engine. Este mecanismo de rotas é disponibilizado com o nome de angular-route.js.

A utilização deste framework torna a aplicação mais rápida e mais enxuta do que as outras formas de desenvolver interface para web.

 

Autor: Michel Toffolo

Fonte de referências:

https://tasafo.org/2014/11/26/porque-utilizar-angularjs-no-seu-proximo-projeto/

http://blog.algaworks.com/o-que-e-angularjs/

https://waldyrfelix.com.br/8-motivos-que-me-levaram-a-usar-o-angularjs-como-primeira-op%C3%A7%C3%A3o-em-meus-projetos-cccc222fd22e

 

Comunicando com sistemas embarcados

Se você já precisou integrar sistemas embarcados com aplicação de terceiros, servidores e banco de dados, a primeira idéia que vem naturalmente é o uso de WebService. Imagine agora, como isso era feito na época que não existia essa tecnologia, e dessa forma você poderá ter uma pequena dimensão do impacto gerado por ela no mundo da automação e dos sistemas embarcados.

O presente artigo objetiva uma breve abordagem sobre o conceito da tecnologia WebService e como está tecnologia de comunicação entre sistemas teve profundos impactos no desenvolvimento e na integração sistemas embarcados.

Como fazer?

Na base de tudo está a Internet, sem ela seria impossível o surgimento da tecnologia WebService. Basicamente o WebService faz com que os recursos de uma determinada aplicação possam estar disponíveis sobre a rede de forma padronizada, desta forma uma aplicação pode invocar outra para executar tarefas que podem ser simples ou complexas, mesmo que as duas sejam escritas em linguagens diferentes.

O principal motivo que torna o WebService tão atraente é o fato que utiliza tecnologias padronizadas como o protocolo HTTP/HTTPS para transporte de dados, os quais são transferidos sobre XML encapsulados no protocolo SOAP (Simple Object Access Protocol). Também é muito comum a utilização do protocolo REST (Representational transfer protocol) como protocolo de transferência, neste caso os dados são encapsulados em notação JSON que é mais leve que o XML.

Na maioria dos casos, os grandes fabricantes de hardware embarcado já provem um WebService que abstrai todas as funções de baixo nível de comunicação, assim o desenvolvedor somente deve acessar uma url fornecida pelo fabricante com os métodos disponíveis para enviar e receber dados ao equipamento.

Uso de padrões facilita muito a vida

Além dos grandes fabricantes de hardware, também existem empresas especializadas em conectividade, que fornecem softwares com protocolos específicos para centenas de equipamentos de diferentes fabricantes. Estes sistemas normalmente são divididos em três camadas, conforme mostra a figura abaixo.

Figura 1

A primeira camada concentra os drivers proprietários de cada fabricante que efetivamente fazem a comunicação funcionar. Esta é a camada de mais baixo nível que é totalmente abstraída ao usuário final da informação.

A segunda camada é uma seríe de serviços que rodam em nível servidor e compreendem normalmente os padrões OPC-DA e IoT, ambos os padrões fornecem uma normatização de como a informação será coletada ,armazenada e disponibilizada para a camada superior.

A terceira e última camada fornece as interfaces para comunicação com aplicação de terceiros, normalmente uma API REST que o cliente pode consumir para transferir e receber dados dos sistemas embarcados.

Agora que entendemos um pouco mais sobre as bases sob as quais a tecnologia foi desenvolvida, podemos considerar que qualquer sistema embarcado que possua uma conexão  Ethernet é capaz de enviar e receber dados através de um WebService. Portanto, a construção de penosas rotinas proprietárias de difícil manutenção e atualização tornaram-se praticamente obsoleta nos dias atuais.

Autor: Alex Sandro Meireles Da Cruz

Links relacionados:

 http://mqtt.org

https://opcfoundation.org

https://www.kepware.com

9 Frameworks de Desenvolvimento Multiplataforma Móvel

Capturando a funcionalidade comum a várias aplicações.

A escolha de um framework ou plataforma depende muito de suas habilidades e de seus objetivos com a aplicação.O desenvolvimento multiplataforma tem ganhado muitos adeptos ao longo dos anos. Com isso, o mercado também se expandiu consideravelmente. Logo, novas ferramentas cross-platform foram surgindo no mundo do desenvolvimento mobile. Continue lendo “9 Frameworks de Desenvolvimento Multiplataforma Móvel”

Diagramas Estruturais da UML: Diagrama de Pacotes

Os analistas de software se deparam com a modelagem de sistemas grandes e muito complexos, porem pensando no desenvolvimento e manutenção futura, necessitam de algo que os auxiliem a não tornar essas tarefas muito complicadas.

Nos últimos tempos, surgem sistemas cada vez mais complexos, com estruturas de classes imensas e arquiteturas de camadas muito divididas. Para evitar com que o software se torne tão complexo ao ponto de se perder o “controle”, houve-se a necessidade de quebrar um grande complexo em menores partes de menor complexidade, principalmente para um entendimento mais fácil de quem irá desenvolver e dar manutenção nessas aplicações. Além da quebra em subpartes, houve a necessidade dessas subpartes interagirem entre si, pelos mesmos motivos descritos a cima.

Com isso veio o conceito definido pela UML diagrama de pacotes ou também conhecidos como diagramas de módulos. Esses diagramas têm como conceito agrupadores lógicos de pedaços dos sistemas (nível superior) com dependência entre eles (interação de pacotes), ou seja, pacotes podem depender de outros pacotes. Esses elementos agrupados podem ser diagramas, classes, outros pacotes, entre outros. Os pacotes sempre têm um nome próprio e dentro alguns elementos que são agrupados conforme os tipos de elementos descritos a cima. Na realidade, não existem propriamente diagramas de pacotes em UML, em vez disso, pacotes e relações entre pacotes aparecem noutros diagramas, de acordo com o tipo de pacote:

  • Pacotes de classes (pacotes lógicos) – em diagramas de classes
  • Pacotes de componentes – em diagramas de componentes
  • Pacotes de nós – em diagramas de distribuição
  • Pacotes de casos de utilização – em diagramas de casos de utilização

Existem nos diagramas de pacotes 3 tipos de dependências:

  • Dependências Simples: Uma alteração do pacote destino influencia no pacote origem.
  • Dependências <<access>>: O pacote origem acede a elementos exportados pelo pacote de destino.
  • Dependências <<import>>: O conteúdo público do pacote de destino é adicionado ao pacote de origem.

Existem 3 tipos de visibilidades de elementos dentro dos pacotes:

  • + (público) : visível por todos que importam ou acedem ao pacote.
  • # (protegido): visível só pelos pacotes-filhos (por relação de generalização)
  • – (privado): visível só por outros elementos do pacote.

Concluísse assim que diagramas de pacotes, são agrupadores genéricos de vários elementos vistos nos diagramas UML, tendo em vista deixar as aplicações com uma menor complexidade quebrando esses sistemas em subpartes menores, para uma fase de desenvolvimento mais tranquila, e para futuras manutenções se tornarem mais ágeis e “limpas”. Bem analisado e com o conceito de diagramas de pacotes bem maduro por quem for pensar, levantar os requisitos do sistemas e montar os diagramas possibilita as empresas terem softwares complexos e de fácil desenvolvimento e manutenção, permitindo uma agilidade na correção de bugs e realização de melhorias, aumentando o respeito do software no mercado e possibilitando o aumento de vendas e evitando ter aquele velho conhecido das empresas de softwares, que o código do “fulano” só ele sabe dar manutenção.

 

Pietro Zanandrea

Bando de dados in-Memory, o que muda daqui em diante?

Gordon E. Moore, fez sua profecia, na qual o número de transistores dos chips teria um aumento de 100%, pelo mesmo custo, a cada período de 18 meses” (Wikipédia).

Isso significa que o poder de processamento dos chips praticamente dobraria até hoje. Não se sabe ao certo até quando essa lei ira prevalecer. Mas essa teoria esta presente na evolução do computador e principalmente em relação ao poder de processamento. Peças chaves do computador como processador e memória RAM são influenciadas diretamente (o HD que vem sendo substituído por discos de SSD que se mostram extremamente velozes). Em relação a custo e velocidade a memória RAM tem mostrado uma tendência a tornar-se mais vantajosa em relação a custo beneficio.

Hierarquia de memória Fonte: http://m.eet.com/images/eetimes/2017/01/1331205/Besang01.png

Normalmente as informações estão salvas em discos rígidos, que apresentam grande volume de espaços, porem com uma velocidade muito inferior a memória RAM e processador. Surge então, uma nova proposta tratando-se  de SGDB, banco de dados em memória(IMDB). Tecnologia está que promete acelerar drasticamente o processo.  Os fabricantes de SGDB já mostram-se adaptados a esse nova maneira, mais adiante veremos alguns dos mais conhecidos.

Quando se tem um volume de terabytes e pouco tempo  para analisar?

Trabalhar com mais informações e de forma mais rápida tende sempre a gerar melhores resultados. Velocidade e agilidade são primordiais, imaginem computadores analisando informações para a cura do câncer, ou big datas projetando ações futuras para as ações da empresa, não há tempo para perder ou esperar. Atualmente o volume de dados e informações pode ultrapassar terabytes e analisar estes grandes volumes de informações são fundamentais para a melhor tomada de decisão. Porém, isso pode tomar um tempo que não temos.

No entanto, você deve estar pensando “mas a memória RAM é volátil, não é muito arriscado perder dados?”. Se pensou assim, você está parcialmente certo, a RAM é volátil, ou seja, uma queda de luz, ou simples desligar da máquina poderiam levar seu banco para o espaço. Mas esse é o primeiro problema percebido e o primeiro a ser tratado. Os bancos de dados em memória irão sim utilizar o disco rígido ou memórias flash, para a persistência de dados. É como se um backup estive-se nessa memória permanente porém o processo e execução dos dados ocorre diretamente na RAM. Ai está o ganho de performasse sem correr o risco de perder informação. Dessa forma a utilização dos dados sempre presentes na memória otimiza a performance eliminando o tempo duplo gasto na transferência dos arquivos do banco de dados para o buffer e vice-versa.

Oracle TimesTen In-Memory Database and Oracle In-Memory Database Cache https://docs.oracle.com/cd/E18283_01/timesten.112/e14261/img/findingrecords.gif

 

Mesmo sendo uma tecnologia relativamente nova já existem muitas opções, pagas ou gratuitas. Aqui veremos algumas das mais conhecidas, SAP Hanna, Oracle Database in-Memory, MongoDB

Interessou-se pelo assunto, vamos ver a seguir alguma opções tratando-se de IMDB.

SAP HANA:

Spa é uma empresa alemã que atualmente é uma das maiores referências em gestão empresarial. Através de excelentes frameworks que alinham seus processos eliminando a margem de erro.

Acesse qualquer dado a partir de qualquer dispositivo, transforme os dados em recursos inteligentes. Alta disponibilidade e segurança, com ferramentas de monitoramento e serviços locais ou em nuvem. Capaz de produzir insights valiosos em tempo real.

Recursos oferecidos pelo SAP HANNA são:

  • Serviço de Banco de dados
  • Processamento de funções analíticas
  • Desenvolvimento de app
  • Acesso a dados
  • Administração
  • Segurança

saiba mais em: https://www.sap.com/brazil/product/technology-platform/hana.html

Oracle Database In-Memory:

Atuante em mais de 145 países. Especializada no desenvolvimento e comercialização de hardware e softwares e referencia mundial em banco de dados.

  • Analise de dados em tempo real
  • Dados relevante na velocidade de um toque
  • Centro de serviços para o consumidor
  • Altíssima compatibilidade
  • 100x mais rápido em buscas (Queries)
  • Pronto para a nuvem

Saiba mais em: https://www.oracle.com/GOTO/IN-MEMORY

Mondongo in-memory Storege Engine:

Fundada em 2007 por Dwight Merriman, Eliot Horowitz and Kevin Ryan. É uma tecnologia open source que traz consigo uma ideologia com os seguintes princípios:

  1. pensar grande para ir longe,
  2. fazer é o que importa,
  3. construir em conjunto,
  4. ser intelectualmente honesto e
  5. fazer o que você quer

MongoDB é uma excelente alternativas para banco de dados não relacionais. Seus pontos chaves são:

  • Alta performasse
  • Rica linguagem de busca (Query language)
  • Alta disponibilidade
  • Scalabilidade horizontal
  • suporte para vários mecanismos de armazenamento

Veja como configurar o mongodb para trabalhar in-memory: https://docs.mongodb.com/manual/core/inmemory/

Escolher banco de dados in-memory?

Como acompanhamos no início do artigo, fazer rápido é essencial. E fazer certo é fundamental, aqui acompanhamos ferramentas que de fato influenciam na velocidade e performance com que você pode trabalhar as informações no seu negócio. Analise sempre a situação,  veja qual solução é ideal para sua empresa.

Conheça também outros modelos de banco de dados:

Banco de Dados não relacionais

Banco de dados Relacionais

Tags: Bando dados, imdb, mongodb, oracle, database in-memory, sap hanna

Referencias:

Oracle Database In-Memory – Youtube

A Comparative Study of Main Memory Databases and Disk-Resident Databases F. Raja, M.Rahgozar, N. Razavi, and M. Siadaty

https://www.sap.com/brazil/product/technology-platform/hana.html

https://www.oracle.com/GOTO/IN-MEMORY

https://docs.mongodb.com/manual/core/inmemory/

https://docs.oracle.com/cd/E18283_01/timesten.112/e14261/overview.htm

Autor: João Mello Corrêa

 

Padrões de Arquiteturas MVC, MVP e Pipeline

A arquitetura de softwares é importante no desenvolvimento de sistemas pois consiste nas definições dos componentes do software, propriedades externas e relacionamentos com outros softwares. Alguns dos mais conhecidos padrões de arquiteturas são o MVC (Model-View-Controller), MVP (Model-View-Presenter) e Pipeline.

Quando iniciamos um projeto temos que nos preocupar com a arquitetura da aplicação, nesta etapa é definida a plataforma a ser utilizada e como os componentes irão se organizar. Alguns padrões de arquitetura já foram criados com a finalidade de resolver os problemas mais corriqueiros de um projeto e em alguns casos são utilizadas combinações de padrões para atender melhor conforme as necessidades dos projetos.

O padrão de arquitetura Model View Controller (MVC) divide a aplicação ou um pedaço da sua interface em três partes distintas: modelo (Model), visão (View) e controlador (Controller). Ele foi desenvolvido inicialmente para mapear o método tradicional de entrada, processamento e saída, já utilizado por diversos programas.

A camada modelo contém as regras de negócio e os dados da aplicação, ele é o responsável por gerenciar um ou mais elementos, responder perguntas sobre o seu estado e quais as instruções necessárias para mudar seu mesmo. É o modelo que sabe o que o aplicativo deseja fazer e modela o problema a ser resolvido. A camada de visão tem a responsabilidade de apresentar as informações para o usuário, através de uma interface com gráficos, textos, imagens. A visão não tem conhecimento sobre o que a aplicação está fazendo, ela somente recebe instruções do modelo e do controlador e exibe-as na tela. Assim como a visão recebe as instruções das outras duas camadas, ela também envia o seu estado de volta para ambas.

O fluxo básico do padrão MVC começa com a interação do usuário com a interface e o controlador gerenciando este evento de entrada criado pelo usuário, ou seja, a interface é exibida pela camada de visão e controlada pelo controlador. O controlador irá acessar o modelo para realizar as alterações e atualizar os dados conforme a ação do usuário e após retorna as informações para a visão poder exibir para o usuário. Neste caso o modelo também não possui conhecimento direto da camada de visão, somente recebe requisições vindas pelo controlador e retorna informações ao controlador que irá repassar para a visão.

Alguns dos frameworks que possibilitam o desenvolvimento através da arquitetura MVC são ASP.NET MVC (.Net), Spring MVC (Java), Laravel (PHP) entre diversos outros.

Figura 1: Objetos utilizados no MVC e suas interações.

O padrão Model View Presenter (MVP) é uma variação do padrão MVC, com seu surgimento através da IBM e tem como objetivo principal separar a camada de apresentação das camadas de regras de negócio e dados, evitando que o modelo se comunique diretamente com a visão, sem passar pelo controlador. A camada presenter (apresentação) é similar a camada Controller do MVC, cuja função principal é ser mediadora entre as camadas. Ela atua sobre a camada de visão e a camada de modelo, recebendo dados do modelo, formatando-os e enviando para a visão exibir ao usuário. Em outras palavras a camada de apresentação é encarregada de atualizar a visão quando o modelo é alterado, e também de sincronizar o modelo em relação a visão.

Na camada de modelo estão os objetos a serem manipulados, este objeto implementa uma interface que irá expor os campos que a apresentação deverá atualizar quando sofrer alterações pela visão. Esta é a camada que se conecta com o banco de dados e tem a lógica necessária para processar os dados.

A camada de visão irá apresentar a interface com o usuário, possuindo as suas validações específicas de interface com o usuário. Esta camada processa os dados obtidos com o usuário e disponibiliza de forma adequada para as outras camadas. Um exemplo de camada MVP no C# é o Windows Forms.

O padrão MVP pode ser implementado de duas formas:

Passive View: A apresentação é a responsável pela ligação (binding) dos dados entre o modelo e a visão e vice-versa, com isso a visão se torna mais independente do modelo.

Supervising Presenter: A própria visão é responsável pela ligação (binding) dos dados do modelo.

Figura 2: Objetos utilizados no MVP e suas interações.

O Pipeline, também conhecido como Pipe and Filter é uma estrutura para sistemas que processam cadeias de dados, estes processos são encapsulados em filtros e os dados são passados pelos canos (pipes) localizados entre os filtros. A saída de cada elemento de processamento é a entrada para o próximo elemento. O Pipeline é considerado como uma rede em que os dados fluem de uma origem até o destino através de pipes e os dados são manipulados e transformados quando são processados nos filtros.

Os pipes possibilitam o fluxo dos dados e os filtros são responsáveis pelo processamento desses dados, enviando para os pipes antes de todos os dados de entrada serem consumidos. Ele funciona de forma iterativa, onde o pipe se conecta a um filtro, porém não pode ser conectado a outro pipe e nem um filtro se conectar com outro filtro. A nível de arquitetura, o processamento é mapeado pelos filtros e os pipes são os condutores dos dados.

O uso de pipeline é indicado para dividir em uma sequência de pequenas tarefas uma tarefa de processamento maior. Algumas de suas vantagens são sua forma de encapsulamento, recombinação e reuso de dados, dando suporte a sua reutilização. Sistemas com arquitetura pipeline podem ser facilmente estendidos e modificados, tornando-se fácil a implementação em processadores paralelos ou multi-threads em processadores simples. Devido ao processamento ser em lotes, torna-se difícil criar aplicações interativas e pode haver exigência de um buffer de tamanho limitado para evitar sobrecargas na análise dos dados.

Figura 3: Sequência da arquitetura Pipeline

Nos dias atuais do desenvolvimento de sistemas percebemos a importância do uso de uma arquitetura adequada ao sistema, onde utilizando padrões de arquitetura é possível melhorar os atributos de qualidade de um sistema, sendo o mesmo determinante para o sucesso do sistema desenvolvido.

Autor: Thomas Milton Bellaver

Links Relacionados:

Introdução ao Padrão MVC. Disponível em: http://www.devmedia.com.br/introducao-ao-padrao-mvc/29308. Acessado em 25/04/2017.

Model-View-Presenter. Disponível em: https://pt.wikipedia.org/wiki/Model-view-presenter. Acessado em 25/04/2017

MVP: Model View Presenter – Revista .net Magazine 100. Disponível em: http://www.devmedia.com.br/mvp-model-view-presenter-revista-net-magazine-100/26318 Acessado em 25/04/2017

Pipes e filtros. Disponível em: https://pt.wikipedia.org/wiki/Pipes_e_filtros. Acessado em 25/04/2017

Padrões Arquiteturais de Sistemas. Disponível em: https://pt.slideshare.net/santanavagner/padroes-arquiteturais-de-sistemas. Acessado em 25/04/2017