Nas últimas semanas,
passamos muito tempo aprendendo a
construir e implantar um servidor de API REST completo,
dominando tecnologias como o Express Framework e o banco de dados INNOSQL, como o MongoDB.
Essa abordagem oferece controle total sobre como você cria e implanta seu servidor back-end.
Mas, em muitas situações,
podemos ter muito pouco tempo para configurar um servidor e, em seguida, implantá-lo rapidamente.
Então, por exemplo, você é uma startup que precisa chegar ao mercado muito, muito rapidamente,
então você pode querer andaime rapidamente o servidor back-end juntamente com
um aplicativo front-end e chegar ao mercado muito, muito rapidamente.
Nessas circunstâncias, podemos fornecer
o suporte de back-end na forma de
um serviço que pode ser configurado e implantado rapidamente?
Isso é exatamente o que discutiremos com mais detalhes nesta palestra e
nos exercícios subsequentes nesta lição e na lição seguinte.
Então, como aprendemos neste curso,
dominamos as tecnologias,
as estruturas necessárias para construir um servidor de API REST back-end completo.
Agora, é claro, como aprendemos ao longo das últimas semanas,
esta abordagem requer a configuração de nosso próprio servidor e, em seguida, configurar o servidor,
precisamos configurar nosso banco de dados back-end e, em seguida,
configurar os vários aspectos do banco de dados back-end.
Precisamos desenvolver a API REST e várias rotas para nossa API REST,
e também podemos precisar criar
serviços adicionais, como entrega de notificações push para o
usuário, gerenciamento de usuários, serviços de redes sociais e assim por diante.
Então, tudo isso significa que o desenvolvimento de um banco de pleno direito requer muito esforço.
Agora, podemos empacotar toda essa abordagem em um serviço que pode ser
configurado e implantado rapidamente sem
ter que gastar tanto tempo configurando nosso servidor?
Agora você está olhando para mim estranhamente e dizendo:
“Você passou as últimas três semanas nos treinando em
todas essas tecnologias e agora você está dizendo que é muito fácil
configurar um servidor usando um back-end como
um serviço para fornecer todos esses vários recursos de nosso back-end.”
Bem, cada abordagem vem com suas próprias vantagens e desvantagens.
Vamos aprender um pouco mais sobre back-end como serviço antes de decidirmos
se a abordagem completa de desenvolvimento de servidor
que aprendemos até agora é a maneira certa para nós,
ou configurar e implantar rapidamente back-end
como serviço é a abordagem que irá satisfazer nossas necessidades.
Então, o que exatamente é back-end como um serviço?
O back-end é um serviço projetado como um modelo para fornecer
desenvolvedores móveis e web para vincular seus aplicativos à nuvem back-end.
Normalmente, o back-end como um serviço é hospedado na nuvem e, em seguida, você expõe
o back-end ao front-end por meio de
uma interface bem projetada, como os endpoints da API REST.
Um back-end totalmente empacotado, como vemos nesta lição,
é um fenômeno relativamente recente e tem tomado o mundo da web pela tempestade.
Vamos olhar para alguns exemplos com um pouco mais de detalhes.
Agora, isso fornece uma ponte entre o armazenamento de dados front-end e back-end e
o gerenciamento de banco de dados back-end por meio de uma API unificada.
E também muitos desses back-end como provedores de serviços fornecem
seu próprio kit de desenvolvimento de software que permitirá que
você comece rapidamente no desenvolvimento de front-end.
Esta abordagem, é claro, libera os desenvolvedores de ter que se concentrar na
construção de um back-end e, em vez disso, concentrar-se em seu desenvolvimento front-end,
ou tentar projetar e implantar
a experiência do usuário dentro do front-end seja na forma de
um aplicativo angular ou seja no forma de um aplicativo móvel.
Agora, se você estiver familiarizado com a computação em nuvem,
tenho certeza de que já ouviu termos como infraestrutura
como serviço, plataforma como serviço e software como serviço.
Agora, o back-end móvel como serviço, ou BaaS,
está essencialmente desenvolvendo essa abordagem e direcionando desenvolvedores móveis e web
com acesso a serviços de nuvem back-end e um ambiente muito mais empacotado.
Então, é assim que o back-end como serviço permite que você
aproveite o back-end da nuvem para oferecer suporte ao seu aplicativo front-end.
É claro que a próxima pergunta que surge em sua mente é o que
o back-end como um serviço fornece para você normalmente?
Um back-end típico como um serviço fornece para você enviar
notificações automaticamente incorporadas ao suporte de nuvem de back-end.
Ele fornece armazenamento de arquivos e compartilhamento de arquivos.
Ele fornece a você integração de redes sociais.
Muitos desses provedores de serviços back-end fornecem
integração de rede social automaticamente para você.
Ele fornece recursos de mensagens e bate-papo que você pode
aproveitar em seu front-end para proporcionar uma melhor experiência ao usuário.
Ele também fornece gerenciamento de usuários.
Como vimos quando criamos nosso gerenciamento de usuários e
suporte de autenticação dentro do nosso servidor Express plus MongoDB,
tivemos que construir no servidor de autenticação de pleno direito,
precisávamos construir nos serviços de back-end,
precisávamos fazer o gerenciamento de token tanto no back-end quanto no front-end e autenticação do usuário e assim por diante.
Todos eles podem ser embalados e entregues a você como uma unidade com
o kit de desenvolvimento de software que vem com o back-end como um serviço.
E também, back-end, uma vez que é um serviço de pacotes,
eles também construíram um monte de ferramentas de análise de uso que permitem que você
obtenha uma visão geral rápida de como os usuários estão interagindo com seu back-end.
Então, essas ferramentas de uso fornecem muitas
informações sobre o comportamento do usuário de dentro de seu back-end.
Além disso, muitos desses serviços de back-end fornecem um método de
criação e implantação de sua própria lógica personalizada
no back-end para atender às suas necessidades específicas.
Claro, eles fornecem a estrutura dentro da qual você pode
projetar sua lógica de negócios personalizada para atender às suas necessidades específicas.
Então, para resumir, um back-end típico fornece uma API de armazenamento de dados para
armazenamento em nuvem, onde você pode carregar e baixar arquivos e também acessar esses arquivos,
algum tipo de armazenamento binário para seus dados,
talvez sincronização de dispositivos e recursos de cache.
Assim, por exemplo, quando você cria seu front-end,
os dados back-end serão automaticamente armazenados em cache no front-end.
Eles também podem suportar a operação off-line do seu front-end.
Assim, mesmo com seu dispositivo de usuário desconectado da rede,
você ainda fornecerá quantidade suficiente de
informações para o usuário com recursos off-line.
Assim, tanto o fluxo de trabalho online e offline para que você possa até mesmo permitir que o usuário
execute suas atividades off-line e, posteriormente, sincronize com o back-end.
Integração de terceiros.
Assim, muitas vezes muitos desses back-end como provedores de serviços
permitem que desenvolvedores de terceiros desenvolvam plugins que podem
ser aproveitados junto com o back-end para fornecer
extensões aos serviços que o back-end já fornece para você.
Conectividade segura entre o aplicativo front-end e o back-end,
e também muitas vezes gera automaticamente
os pontos finais da API REST para você com base nos dados armazenados no back-end.
Veremos exemplos disso especialmente com
LoopBack como veremos mais tarde nos exercícios.
E também como mencionei,
muitos desses back-end como provedores de serviços fornecem
seus próprios kits de desenvolvimento de software para que você
possa facilmente começar com seu desenvolvimento front-end.
O SDK vem com todo o código necessário para que
seu aplicativo front-end interaja automaticamente com seu aplicativo back-end.
Assim, por exemplo, o SDK pode já conter
serviços que seu aplicativo angular pode utilizar para falar com
o back-end automaticamente para que você possa ser deixado apenas com
a implementação dos componentes e dos modelos front-end para seu aplicativo.
Toda a interação com o back-end é
gerenciada automaticamente pelo SDK do pacote fornecido para você.
Você verá exemplos disso tanto com o
Firebase que veremos em um pouco mais tarde, como
também com LoopBack que discutiremos na próxima lição.
Claro, qualquer abordagem tem dois lados para a moeda.
Então, vamos examinar algumas das vantagens e desvantagens do back-end como um serviço.
Agora, uma vantagem, é claro, é que, com
o back-end, ele fornece componentes testados e testados pré-construídos.
Assim, o back-end é empacotado para você, de
modo que o provedor de serviços back-end teria assegurado que
todo o back-end é bem testado e entregará o serviço conforme prometido aos usuários, aos
desenvolvedores front-end.
Portanto, você não precisa gastar mais tempo tendo que
se preocupar em testar e garantir que seu back-end funcione corretamente ou não.
Ao contrário de quando você constrói seu próprio
back-end personalizado usando as estruturas que vimos anteriormente,
você é totalmente responsável por garantir que seu back-end funcione corretamente.
A segunda vantagem é, naturalmente,
a redução concomitante nos esforços do lado do servidor que você precisa colocar em.
Assim, uma vez que o lado do servidor vem como uma unidade empacotada,
você pode se concentrar principalmente no desenvolvimento front-end e deixar
o lado do servidor para o back-end como um provedor de serviços para lidar com.
E você está simplesmente aproveitando a flexibilidade que eles
fornecem para você no desenvolvimento do front-end.
E o backend típico como um provedor de serviços se
encarregará de integrar quaisquer desenvolvimentos tecnológicos recentes
em seu backend e fornecer
versões atualizadas do backend como e quando as tecnologias mais recentes se tornarem disponíveis.
Assim, você, como desenvolvedor de front-end, está
completamente livre de se preocupar com a forma como o backend precisa evoluir.
Isso é automaticamente cuidado pelo provedor BaaS para você.
Claro, tudo vem com o outro lado do cartão.
Então, vamos examinar quais são algumas das desvantagens de ir backend como um serviço.
Em primeiro lugar, a maioria dos backends operam como uma caixa preta.
Você não sabe exatamente como o back-end é implementado.
Se você estiver usando um backend de código aberto como LoopBack,
por exemplo, você tem acesso a esse código de back-end inteiro,
mas ainda por que você gostaria de gastar tempo explorando os detalhes do back-end,
quando você tem a garantia de que o back-end foi
construído bem e testado bem para você.
Então você pode simplesmente tratá-lo como uma caixa preta por muito tempo.
Como você tem confiança de que esta caixa preta vai
fornecer os serviços que você espera que ela forneça,
você pode simplesmente usar o backend sem
ter que se preocupar com como ele é realmente implementado.
O segundo aspecto é que,
se você optar por usar um back-end como um provedor de serviços,
há a questão do bloqueio do fornecedor.
Assim que escolher um dos provedores de BaaS,
você ficará preso ao ambiente e à maneira como eles armazenam seus dados.
Muitas vezes, uma vez que você adotar um desses back-end como um provedor de serviços,
todos os seus dados ficam bloqueados em seus serviços e você pode ter que
passar por um esforço excessivo para
recuperar os dados que você já armazenou no back-end,
caso você opte por migrar de um como um provedor de serviços para outro.
Portanto, implantar seu serviço usando um backend é uma tarefa muito simples,
mas se você optar por mudar seu provedor de
BaaS, isso será uma batalha difícil para você.
Portanto, isso é algo que você deve estar totalmente ciente antes de se comprometer
a usar um dos back-end como um provedor de serviços.
Este problema não se torna um problema quando você está
fazendo seu desenvolvimento completo de back-end por conta própria.
Mais uma vez, você ganha alguns e você perde alguns.
Então, sempre levamos isso com toda a imagem deles em mente.
Portanto, a perda de flexibilidade que você
acarreta ao usar um dos back-end como provedores de serviços pode ser algo
com o qual você está disposto a viver devido ao fato de que você reduziu o
tempo de desenvolvimento de back-end e você pode se
concentrar mais em entregar seu produto para o mercado.
Então, se você confia no provedor BaaS,
então você pode simplesmente ir com seu provedor BaaS selecionado e, em seguida,
não se preocupar muito com a perda de flexibilidade que se segue por causa disso.
Novamente, como eu disse, nem tudo vem com apenas vantagens,
há sempre vantagens e desvantagens para qualquer abordagem que você
escolher para desenvolver e implantar seu back-end.
BaaS é apenas uma alternativa que pode ser a abordagem
que você escolher para suas necessidades específicas.
E, finalmente, é claro,
nem todos os BaaS vêm sem seu próprio conjunto de requisitos de treinamento adicionais.
Se você precisa usar um dos provedores de BaaS,
em vez da caixa preta, você precisa aprender a API,
você precisa aprender como configurá-la,
você precisa aprender a personalizar partes dela caso você escolha fazê-lo, e assim por diante.
Assim, o esforço de treinamento que você
gastou aprendendo estruturas específicas ou genéricas como Express e bancos de dados como o MongoDB,
em vez disso, você estará gastando tempo aprendendo
suas especificidades de seu backend como um serviço que você escolher usar.
Então, é uma questão de onde você quer passar o seu tempo.
O treinamento adicional estará sempre envolvido,
exceto que, com um provedor de BaaS, você poderá começar
mais rapidamente do que criar seu próprio back-end personalizado.
O mercado de BaaS está repleto de várias opções.
E, de fato, essas escolhas continuam aumentando a cada dia.
Agora, quando você entrar no mercado de BaaS,
você pode ver fornecedores comerciais.
Aqui está uma pequena lista de vendedores comerciais.
Novamente, há mais e mais que são adicionados por dia a esta lista,
e eu acabei de listar apenas um pequeno subconjunto deles.
Claro, se o seu provedor de BaaS favorito não está nesta lista, não me culpe,
talvez eu não esteja ciente deles ou talvez eles sejam apenas muito
novos no mercado e então eu não me deparei com eles.
Mas aqui está uma lista de alguns dos fornecedores comerciais que fornecem serviços BaaS para nós.
Em particular, vou me concentrar no firebase,
que é fornecido pelo Google.
Nesta lição, vamos explorar como fazer uso do firebase em um
pouco detalhado nesta lição nos exercícios que se seguem.
Agora, se você quiser ir com um provedor de código aberto,
há muitas alternativas de código aberto disponíveis para nós,
é claro que lá você estará
adquirindo este software de código aberto e, em seguida, construindo seu servidor end e implantando-o.
Exceto que ele virá como
uma entidade pré-empacotada que você pode configurar e implantar rapidamente no back-end.
Veremos o LoopBack como um dos exemplos de um software de código aberto que
pode ser implantado muito rapidamente para construir seu back-end.
E como eu disse, mais e mais escolhas estão chegando ao mercado, dia a dia.
Então, você deve explorar o mercado amanhã para encontrar novos provedores de BaaS?
Por todos os meios, examine o que é fornecido por eles,
que tipo de serviços eles fornecem.
Será que esses serviços que eles fornecem atendem às suas necessidades e você pode
aproveitar rapidamente o serviço que eles fornecem para chegar ao mercado rapidamente.
Portanto, estas são questões que vos deixarei dentro de um dia.
Como disse, devemos analisar
todas as alternativas possíveis e, em seguida, tomar as nossas próprias decisões de forma independente.
Mas a menos que estejamos cientes das alternativas, não seremos capazes de fazer escolhas informadas.
Então é por isso que as últimas lições deste curso que estou
gastando em explorar alguns exemplos de backend como provedores de serviços.