Only Deus pode mim julga
2 years ago
Olá Pessoal,
Meu objetivo neste post é mostrar a vocês a variedade de tecnologias que são utilizadas para desenvolver um projeto em tecnologia, que no meu caso é essa plataforma.
Abaixo segue uma imagem da topologia como funciona.
No momento, a infraestrutura ainda esta dividida entre GCP (Google Cloud Platform ) e Azure , mas em um futuro não tão distante tudo será migrado para a Azure, a final de contas essa é a plataforma que eu uso diariamente no trabalho, então faz mais sentido focar em uma plataforma só.
Explicando um pouco o diagrama acima, note que existem 2 formas dos usuarios acessarem a plataforma.
Via Mobile Application
Via Web Browser
Por enquanto, ainda estou planejando criar um App Desktop.
No desenvolvimento mobile, estou utilizando uma tecnologia chamada Flutter .
Flutter é um Framework construído utilizando a linguagem Dart, criada pelo google com o objetivo de ser uma linguagem multi-plataforma, ou seja, com a mesma base de código é possível fazer aplicações para IOs, Android, Windows, Mac, Linux Web.
Desenvolvimento Web é basicamente Javascript, então com a variedade de frameworks Javascripts que temos hoje é realmente dificil tomar uma decisão, sendo que todos os dias sai um framework novo.
Após fazer um teste com alguns dele, eu decidi utilizar o NextJS, que é feito utilizando ReactJS, então imagine, é um framework do framework 😂 .
A vantagem de utilizar o NextJS, é que ele resolve um problema que chamados de SSR (Server Side Rendering), o que é muito importante quando falamos em performance e SEO, pois a chamadas do Backend são feitas no lado do servidor, renderizado pelo Framework e exibidas na página como HTML.
Aqui eu optei por utilizar a linguagem GO, que também foi criada pelo google e tem como objetivo o processamento concorrente, nela temos a instrução go, que você pode especificar qualquer funciona e ela será executada em segundo plano. Assim como os Channels, que nos permite comunicar com essas Go Routines enquanto elas executam em segundo plano.
Como banco de dados eu utilizo o PostgresSQL, simplesmente pelo fato de eu ja ter experiencia, no inicio do projeto eu tentei utilizar MongoDB, por ser uma tecnologia que também já trabalhei bastante no passado, mas pela natureza da aplicação, que é relacional, eu acabei tendo que trocar para PostgreSQL, pois as queries estava ficando muito complexas no MongoDB, mas em SQL são joins nao tao complicados.
Toda essa parte de deploy é feita utilizando o Github Actions e Docker, então imagine que todas as vezes em que eu faço um commit de uma nova versão do meu projeto, a pipeline é automaticamente acionada, seguindo esses passos:
Compila a aplicação gerando os respectivos pacotes
Criar uma imagem do Docker com a aplicação dentro
Amarzena a imagem do Docker no Azure Container Registry
Faz o deploy da imagem no Azure Container Apps
Por exemplo como na imagem abaixo:
E ai o deploy e realizado no Container Apps, onde todas as varias de ambiente para conexão com as integrações, ja estão definidas.
Eai? Voce ja sabia de todos esses aspectos sobre o desenvolvimento de aplicações?