Pplware

Tutorial: Todo o processo para desenvolver uma plataforma

Durante o último ano construí uma plataforma online, que tem como objetivo simplificar a encomenda de refeições em Lisboa.

Neste artigo partilharei a experiência que adquiri ao desenvolver esta plataforma, os erros que cometi e abordarei as principais tecnologias que utilizei.

Como referi, desenvolvi uma plataforma online. Esta plataforma designa-se Magnar e é uma app mobile em que o utilizador pode encontrar e encomendar almoços de restaurantes locais. Existe também uma app em que os restaurantes gerem vendas e pedidos de refeições.

De seguida podem encontrar todo o processo por detrás do desenvolvimento e criação desta plataforma, todas as tecnologias que utilizei e alguns prós e contras.

Arquitetura

A solução de software utilizada segue uma arquitetura clássica cliente/servidor:

Nos próximos capítulos abordarei cada um dos componentes que integra a plataforma.

Apps Mobile

O desenvolvimento mobile pode seguir três abordagens principais:

Sou quase sempre contra apps híbridas porque:

Tecnologias de cross-platform nativo, como por exemplo o Xamarin, por outro lado, acabam por oferecer uma experiência nativa aos utilizadores e benefícios óbvios na programação.

A experiência que tenho em desenvolvimento mobile nativo (Swift e Kotlin) levou-me a optar por esse caminho neste projeto. Hoje teria optado por Xamarin: o tempo de desenvolvimento poderia ser semelhante, mas ganharia quando começasse a adicionar novas funcionalidades.

 

O fastlane é uma ferramenta de Continuous Integration que permite automatizar tarefas como o lançamento de versões, geração de screenshots, manutenção de provisioning profiles, entre outras. É comparável ao Jenkins e ao Bamboo.

Apesar de ter sido desenvolvida para iOS, já conta com algumas ferramentas para Android.

Esta tecnologia traz benefícios para qualquer projeto, tornando-se mais necessária quanto mais frequentes forem as publicações de novas versões.

Para lidar com traduções usei o Twine, que permite ter um ficheiro de strings (master) e a partir dele exportar para vários formatos: iOS, Android, gettext e jQuery. Os ficheiros são gerados a partir da linha de comandos. É portanto imprescindível em projetos que precisam de suportar mais que uma língua.

Backend

Na altura em que iniciei o projeto, o Parse era a plataforma líder de BaaS (backend as a service), muito útil para programadores sem experiência em backend. Entretanto o Facebook, que o comprou em 2013, decidiu fechá-lo no início de 2016, disponibilizando o Parse-Server, o mesmo que o Parse mas hospedado pelo programador. Neste momento, o Firebase, mantido pela Google, é um substituto à altura.

Com o fim do Parse à vista, decidi aproveitar para criar um backend à medida daquilo que preciso.

Web application framework

O Spring Boot é a web application framework web ideal para construir microserviços de forma rápida. Integra anos de experiência com o Spring, adota a técnica ‘convention over configuration‘ e é facilmente personalizado através de bibliotecas-plugin. É equivalente ao Ruby on Rails ou ao Laravel, mas para Java (embora também possa ser usado com Kotlin ou Groovy).

Sendo uma web application framework, apoia imenso em tarefas comuns, nomeadamente, na construção de APIs REST ou na criação de repositórios de dados.

Autenticação de utilizadores

Decidi manter a autenticação de utilizadores do Parse pelos seguintes motivos:

Pagamentos

Qualquer sistema que aceite, processe, guarde ou transmita dados de cartão de crédito tem de seguir um conjunto de medidas de segurança criadas pela Payment Card Industry Data Security Standard (PCI DSS). Seguir estas medidas é extremamente complicado e por isso surgem serviços como a PayPal e o Stripe, que abstraem esta complexidade permitindo a qualquer empresa processar pagamentos de forma segura.

Neste momento existem dois líderes no mercado dos pagamentos mobile:

Existe outra opção, vinda de França, que vale a pena conhecer também: Lemonway.

Mercado

Um mercado permite ter clientes e vendedores na plataforma, sendo que os pagamentos são feitos ao dono do mercado e redirecionados por ele para a conta dos vendedores.

Esta funcionalidade é extremamente importante neste projeto porque nos permite:

O mercado do Braintree ainda só está disponível no EUA e foi essa a principal razão que me levou a optar pelo Stripe.

Integração

A integração consiste em duas partes:

  1. Frontend: em que se recolhem os dados do cartão de crédito. O SDK trata de enviar os dados do cartão de crédito para o Stripe de forma segura e de retornar um token que é enviado para o backend. Desta forma, o programador nunca tem de lidar com informação sensível.
  2. Backend: recebe o token e o valor a debitar, e utiliza o SDK do Stripe para processar o pagamento.

Push Notifications

Push notifications são mensagens que os utilizadores recebem nos smartphones, normalmente enviadas pelo backend. As notificações que recebemos de emails, de conversas de whatsapp e ofertas de marketing são alguns exemplos de push notifications.

O OneSignal destaca-se dos outros serviços pelos seguintes aspetos:

Não oferecem SDK para o backend, mas facilmente se criam bibliotecas a partir da API REST que disponibilizam.

Analytics

A utilização de analytics em negócios online é fundamental a vários níveis. No caso da Magnar há quatro métricas que me interessam bastante:

O Fabric, desenvolvido pelo Twitter e comprado recentemente pela Google, inclui tudo isto através de dois serviços: Answers (analytics) e Crashlytics (relatórios de erros).

Existem outros serviços de analytics mobile bastante fortes; alguns já oferecem heatmap (bastante comum na web). A escolha do serviço deve ser baseada principalmente nas métricas que se pretendem obter.

Conclusão

Existem vários aspetos a ter em conta durante a escolha de tecnologias, entre eles:

Depois da publicação, é necessário continuar a iterar e a melhorar o produto regularmente:

Deixo também alguma leitura complementar:

Exit mobile version