Tecnologia embarcada

Technology stack

  • Devops

    Para cumprir os requisitos de devops, indispensáveis hoje em dia, apoiamos o desenvolvimento em Gitlab, Docker, Kubernetes.

  • Monitoramento e performance

    O monitoramento, quando somos acionados, usamos o graphana e o prometeus, os testes de performance são feitos com jmeter ou k6.

  • Desenvolvimento

    Estamos codificando com Golang, C#, VB-net e Phyton.
    Banco de dados: Oracle ou SQL-Server, Redis e Postgre.

  • Event sourcing (arquitetura)

    Append only event;
    Find any bugs, cause you can replay any situation;
    Implement news funcionalities like it was ever;
    No longer lose information;
    You can use it like log system;
    You can trust your snapshots, if they are build from the events;
    You can use memory cashing without fear of lose it anyway;
    Do migrations by simple replaing all events into a new snapshot project.

  • CQRS (arquitetura)

    É a separação das bases de atualização (command) da base de consulta (query), visando performar melhor nos dois lados.
    A querystack é uma base desnormalizada, que permite uma consulta "flat", num banco não relacional, e com isso evitando joins.
    A commandstack pode ser atualizada de forma assíncrona, dispostas numa fila e comandadas por via de tratamento por eventos, que mudam o status no banco principal e disparam um comando de atualização da base de consulta.

    Sincronização
    Estratégias para sincronizar a commandstack com a querystack
    Atualização automática (síncrona)
    Atualização eventual (assíncrona)
    Atualização agendada (dispara conforme planejado)
    Sob demanda (a consulta dispara se estiver desatualizada)


    Vantagens
    Comandos assíncronos processados em fila, diminuindo o tempo de espera.
    Regras de negócios geram processos apenas do lado command.
    Consultas são realizadas de forma independente.
    Podemos escalar separadamente os processos de commandstack e querystack.

  • Microsserviços

    Em termos de arquitetura Elefer, a nossa solução é hibrida e assim será por um tempo, pois estamos gradualmente trocando o monolito para microsserviços. Essa é a estratégia recomendada pelos principais evangelistas dessa arquitetura, uma vez que constam várias experiências negativas de construções "from scratch". Com isso estamos obtendo mais rapidez no desenvolvimento, tendo em vista um código menor, mais simples, desacoplado dos demais e agnóstico em relação ao seu meio, numa equipe independente (uma ou duas pizzas) e com a condição de aplicar o fluxo da "pipeline" de CI e CD, com mais facilidade, absorvendo plenamente a cultura DevOps, em escalabilidade, monitoramento e observabilidade. "Mixed stack", é a possibilidade que se abre para que possamos desenvolver cada microsserviço na tecnologia - linguagem, banco, etc…- que seja mais conveniente àquela função específica, Como efeito colateral o processo de "deploy" fica independente, da mesma forma que o "fault isolation", pois focaliza o episódio apenas no microsserviço em questão não provocando impactos maiores no entorno da produção.

  • Desacoplamento

    Ou acoplamento fraco, é o que usamos para fragmentar o monolito em microlitos e depois em microsserviços, utilizando a ACL - anti corruption layer, assim como base de dados específicas do microsserviço, para atingir a arquitetura que possa garantir a blindagem desses módulos, que vão sendo desenvolvidos gradualmente na medida em que identificamos a necessidade de desacoplar por conta da flexibilidade do negócio, facilitando muito a sua distribuição e encaixe.

  • Qualificação constante

    Desenvolvedores em busca constante da evolução do próprio perfil profissional a partir de estudos para certificações e participação em cursos, congressos nacionais e conferências internacionais , assim como pesquisa, desenvolvimento e treinamento interno, para a aplicação de tecnologias e metodologias de ponta, agregando valor o mais rápido possível ao negócio dos clientes.

  • Elefer Cloud