Blog da Tecnologia

Navigate back to the homepage

Porquê decidimos adotar uma nova tecnologia para desenvolvimento de aplicativos móveis

Tiago Boeing
December 1st, 2020 · 5 min read

Relatório produzido pelo departamento de Pesquisa e Arquitetura da Senior Sistemas para adoção de uma tecnologia.

Este artigo é o resumo dos resultados obtidos em nossa análise.

Confira o relatório completo.

Tecnologias para desenvolvimento de aplicativos móveis têm sido um importante marco para a transformação digital nas últimas décadas. Embora em 1983 Steve Jobs tenha previsto um mercado de aplicativos (1983 to today: a history of mobile apps, 2015) e em 1997 o Nokia 6110 embutiu um jogo arcade chamado de “Snake”, sendo o que muitos consideram como o primeiro aplicativo móvel (The History of Mobile Apps, 2019), apenas em 2008, um ano após o lançamento do iPhone que a App Store foi apresentada ao mundo e revolucionou a forma de consumo e distribuição de aplicativos.

Atualmente não possuímos uma cultura mobile first, os aplicativos normalmente replicam funcionalidades dos produtos já existentes, não necessariamente com uma experiência específica para cada contexto, embora nossos times já diferenciam bem as “técnicas de construções”, tratando aplicativos móveis à parte de web e desktop. Não temos uma área alocada apenas para mobilidade e dentro dos times nossos desenvolvedores não necessariamente possuem experiência com desenvolvimento para dispositivos móveis.

Nossa situação atual acaba exigindo que muitas vezes necessitemos realizar manutenção em código legado ou em bibliotecas da comunidade. Como os aplicativos são escritos em diferentes tecnologias e versões, sendo algumas completamente distintas umas das outras, este cenário acaba impossibilitando a geração de uma ampla base de conhecimento e dificultando a evolução das soluções. Dentre essas tecnologias, temos Firemonkey (Delphi), Ionic (1, 3 e 4), Corona, Flutter, Xamarin, Android (Java) e React Native.

Considerando as informações, analisamos diversas alternativas tecnológicas que podem auxiliar a atingir o padrão de excelência que buscamos. Aplicamos uma metodologia para tentar entender o quanto cada tecnologia “se encaixa” com nossos princípios e realidade. Abaixo, um resumo sobre a metodologia utilizada.


Metodologia

Para mais detalhes consulte o relatório completo.

Consideramos apenas tecnologias cross-platform e deixamos de lado o desenvolvimento integralmente nativo por se contrapor aos nossos princípios no momento. Como não temos uma única aplicação para todos os produtos, entendemos que determinados cenários poderão exigir um desenvolvimento integralmente nativo, porém nestes casos analisaremos de forma isolada.

Nossa metodologia se baseou em:

  • analisar os aplicativos existentes;
  • contatar as equipes de desenvolvimento e buscar entender mais sobre suas aplicações, como tem sido o fluxo de desenvolvimento e as perspectivas futuras;
  • elencar categorias e critérios que desejamos avaliar essas tecnologias.

Os times atualmente já estão habituados a lidar com tecnologias cross-platform, o cenário evidencia que possuímos oito diferentes frameworks/tecnologias sendo utilizadas, sete são cross-platform. Através dos contatos percebemos que atualmente várias equipes lidam com problemas semelhantes e buscam alternativas para reescrita e/ou atualização dos aplicativos mantidos.

Evidenciando a importância da preocupação com estabilidade, ao ampliarmos a complexidade dos aplicativos e a necessidade de interação com recursos nativos, dependendo do framework escolhido podemos estar maximizando a exposição a instabilidades, atualmente o cenário demonstra que 14 aplicativos, dos 35 possuem a necessidade de acessar recursos nativos.


Tecnologias analisadas

Avaliamos React Native, Ionic framework (versão 5), Flutter e Kotlin em seu recurso Kotlin Multiplatform Mobile. Nossos critérios técnicos levam em consideração inúmeros fatores, como a maturidade da mobilidade na Senior e nossas perspectivas como departamento de arquitetura para prover soluções aos times de desenvolvimento e ferramentas de produtividade.

Em uma análise prévia a esta chegamos a realizar a filtragem das tecnologias que seriam avaliadas, incluindo Xamarin, que acabou não fazendo tanto sentido para nós devido a distância com nossa stack tecnológica atual. Entendemos ainda que desejamos uma abordagem arquitetural mais próxima do nativo e naturalmente buscamos tecnologias capazes de ofertar isto.


Resultados obtidos

Aplicando a metodologia em cada uma das categorias e critérios obtivemos dados relevantes para entender melhor o quanto cada tecnologia poderá auxiliar em nossa jornada.

Com base no que buscamos temos:

  • Flutter com 94,75% de atendimento aos critérios propostos;
  • React Native com 82,32%;
  • Ionic framework com 81,21%; e
  • Kotlin Multiplatform Mobile com 76,59%.
graph1
Atendimento em cada categoria
graph2
Detalhes da tecnologia x categoria

Próximos passos

Foi desafiador elaborar uma análise tão extensa, importante e complexa de tecnologias extremamente diferentes em poucas semanas. Consideramos inúmeros fatores, mas sempre relacionando com questões como: “o que precisamos?”, “o que temos no momento?”, “aonde queremos chegar?”, “quais riscos são toleráveis?” e “o que estamos dispostos a abrir mão?”.

Nosso departamento de Pesquisa e Arquitetura recomendou Flutter como framework cross-platform oficial. Acreditamos que a tecnologia tem potencial de se adequar às necessidades atuais de nossos aplicativos móveis e suprir perspectivas futuras. A expectativa é de que possamos ter as soluções mais recentes caminhando para o Flutter e em algum tempo contar com um rico codebase na tecnologia.

Considerando dados relacionados à comunidade do Flutter, temos o potencial de desenvolvê-la através de nosso engajamento como empresa, e nosso departamento recomendou fortemente o compartilhamento público das descobertas ao longo da jornada de implantação da tecnologia, visando fomentar a comunidade e contribuir ativamente a estas iniciativas open source. Todos os desenvolvedores possuem papel fundamental como evangelizadores dentro dos times. Ponderando os requisitos gerais, Flutter sem dúvidas é uma ótima escolha.

“Para aplicativos de negócios habituais com pequenas animações e aparência brilhante, a tecnologia não importa em nada.” (INVERITA, 2020)

A escolha da tecnologia é apenas uma fração para que possamos alcançar o patamar desejado em aplicativos móveis. Este é um trabalho a ser realizado de forma conjunta com diversas áreas da empresa, além de que investimentos no desenvolvimento de abstrações e ferramentas de produtividade devem ser realizados.

Agradecimentos

Aos integrantes dos times de desenvolvimento que forneceram dados relacionados aos aplicativos mantidos, realizaram demonstrações e auxiliaram de incontáveis formas, meu gerente Carlos Pereira por confiar este desafio de realizar a análise técnica e sugerir abordagens, a meu coordenador Ivan Alves por atender prontamente sempre que solicitado e auxiliar com dicas para a produção do material, meu time por lidar com as demandas em meio às minhas atividades relacionadas ao relatório, Adriner Andrade sugestões de melhorias na aplicação dos critérios, Lucas Reichert e Kaianne Premoli pelas revisões e sugestões e Ricardo Futata coordenador da equipe de arquitetura da Mega pelas informações relacionadas ao levantamento realizado anos antes na unidade.


Referências

1983 to today: a history of mobile apps. The Guardian, 2015. Disponivel em: https://www.theguardian.com/media-network/2015/feb/13/history-mobile-apps-future-interactive-timeline. Acesso em: 10 nov. 2020.

APPLE. App Store Review Guidelines. App Store — Apple. Disponivel em: https://developer.apple.com/app-store/review/guidelines/#design. Acesso em: 26 nov. 2020.

GOOGLE. Google Trends — Flutter x Ionic x Kotlin x React Native. Google Trends, 2020. Disponivel em: https://trends.google.com.br/trends/explore?geo=BR&q=Flutter,React%20Native,Kotlin,Ionic. Acesso em: 26 nov. 2020.

INVERITA. Flutter vs React Native vs Native: Deep Performance Comparison. Medium, 2020. Disponivel em: https://medium.com/swlh/flutter-vs-react-native-vs-native-deep-performance-comparison-990b90c11433. Acesso em: 21 nov. 2020.

IONIC FRAMEWORK. Ionic vs Flutter. Ionic Framework, 2020. Disponivel em: https://ionicframework.com/resources/articles/ionic-vs-flutter-comparison-guide. Acesso em: 26 nov. 2020.

JETBRAINS. Kotlin Multiplatform Mobile Goes Alpha. JetBrains Blog, 2020. Disponivel em: https://blog.jetbrains.com/kotlin/2020/08/kotlin-multiplatform-mobile-goes-alpha/. Acesso em: 21 nov. 2020.

KEETON, B. J. The 11 Best Code Editors for 2019. Elegant Themes, 2019. Disponivel em: https://www.elegantthemes.com/blog/resources/best-code-editors. Acesso em: 19 nov. 2020.

THE History of Mobile Apps. InventionLand, 2019. Disponivel em: https://inventionland.com/inventing/the-history-of-mobile-apps/. Acesso em: 16 nov. 2020.

More articles from Tecnologia Aplicativos

Indisponibilidades nos serviços BotFactory e Sara Senior Google Assistant

Na data de hoje (04), identificamos e corrigimos uma indisponibilidade que afetou o serviço BotFactory , impedindo a conversação com os bots…

June 4th, 2021 · 1 min read

Nova funcionalidade: Assinatura eletrônica no GED

Agora é possível enviar documentos do GED para coleta de assinaturas.

April 27th, 2021 · 2 min read
© 2020–2021 Tecnologia Aplicativos
Link to $https://github.com/SeniorSA