
Você vai entender o que é uma systems design interview e do que ela é composta.
Veremos um estudo de caso real de entrevista de systems design.
Precisamos entender o que é concorrência e como implementar o paralelismo para superar problemas e manter o nível de serviço desejado
Veremos alguns problemas típicos de concorrência e como solucioná-los
O que é? Para que serve? O uso de GPUs em processamento vetorial em larga escala é muito popular, e uma das aplicações é em cripto ativos.
Veremos mecanismos e técnicas para promover a concorrência ou o processamento paralelo.
O que é escalabilidade?
Há muitos "trade-offs" quando falamos em escalabilidade. Vamos ver alguns deles nessa aula.
Veremos os principais problemas e como resolvê-los com o mecanismo de escalabilidade adequado.
Principais formas de integração entre serviços.
Veremos formas de integração assíncrona entre componentes.
Utilizar mensagens assíncronas é uma excelente forma de integração de baixo acoplamento, e que adiciona alta disponibilidade.
Processamento de streams está por trás das principais empresas de tecnologia, como: Tiktok e Spotify, mas também em sistemas de monitoração de sensores.
Introdução à otimização.
Veja os recursos para otimizar o desempenho da sua aplicação web.
Eu sempre digo: Em caso de backpressure, suspeite sempre de queries não otimizadas e falta de cache em banco de dados.
O uso de cache com banco de dados pode melhorar muito o desempenho da sua aplicação, evitando backpressure.
Introdução aos microsserviços.
Essa aula veio diretamente do meu canal e complementa a introdução.
Veremos alguns padrões frequentemente utilizados com arquitetura de microsserviços.
Service mesh ou malha de serviços, é uma maneira de controlar e distribuir os microsserviços.
Introdução à resiliência de software.
Veremos como aplicar os principais padrões de resiliência em aplicações.
Veremos uma introdução aos sistemas distribuídos.
Entender os trade offs entre Disponibilidade, Consistência e Tolerância a partições é fundamental.
É preciso conhecer os principais serviços em nuvem para sistemas distribuídos, geralmente oferecidos pelos provedores de hospedagem em nuvem.
Assista ao vídeo mais de uma vez e baixe o arquivo PDF anexado antes de fazer o exercício.
Tente fazer sua versão antes de assistir a esta aula.
Vamos apresentar o problema para você trabalhar nele.
Veremos uma possível solução para este problema.
Este é um curso para desenvolvedores experientes que buscam novas oportunidades de emprego, ou seja, não é para iniciantes ou estudantes, embora possa ensinar conceitos importantes.
Atenção:
Não é um curso para iniciantes em programação e infraestrutura. Requer algum conhecimento e experiência com aplicações, servidores e Linux.
O curso é ministrado utilizando ambiente Linux (Debian). Se você utiliza MS Windows ou MacOS, podem haver diferenças. Na medida do possível, eu explico algumas dessas diferenças, mas vale a afirmação: O curso é voltado para Linux.
Para melhor experiência de aprendizado, é importante já possuir alguma experiência como desenvolvedor profissional.
Hoje em dia há muitas oportunidades para desenvolvedores de software, inclusive em empresas estrangeiras e trabalhando remotamente, o que é muito bom. Porém, também há muito mais desenvolvedores buscando oportunidades, portanto, as entrevistas estão ficando mais e mais difíceis.
Para conseguir uma boa oportunidade é necessário saber os 3 fundamentos da engenharia de software:
- Algoritmos e estruturas de dados
- Arquitetura de software
- Sistemas operacionais e redes
A parte de algoritmos e estruturas de dados eu trato no meu outro curso aqui na Udemy: Detonando no code challenge com python e java.
Conhecer bem arquitetura de software na prática, ou seja, como desenhar soluções escaláveis e de alto desempenho, é um requisito fundamental e é o objeto deste curso.
O processo seletivo para pessoal de alto nível em TI (Desenvolvedores, Devops e SRE – Site Reliability Engineer) envolve conhecimento prático de arquitetura, operação e otimização de infraestrutura de processamento, seja em ambiente de nuvem ou “on premises”. Geralmente, no caso de desenvolvedores, este processo é composto pelas etapas:
1 – Fit interview;
2 – Code challenge;
3 – Systems design;
4 – Entrevista gerencial;
Se você chegar à quarta etapa, considere-se uma pessoa bem sucedida e com grandes chances de conseguir a vaga.
Cada etapa tem objetivos, pessoas e formato específicos. Por exemplo, a parte de algoritmos e estruturas de dados é questionada na entrevista de code challenge e a parte de arquitetura e infraestrutura é tratata na systems design interview (entrevista de projeto de sistemas).
Este curso lhe ajudará a conhecer este tipo de entrevista com exemplos reais e participar de entrevistas e casos de estudo simulados, para lhe preparar para uma carreira de sucesso no emprego dos seus sonhos.
É claro que, no caso de empresas estrangeiras, o inglês é muito importante, portanto, recomendo desde já que você estude e pratique conversação em inglês.
E por que eu posso lhe ajudar? Para começar, sou um profissional muito experiente, com mais de 45 anos de profissão e também sou professor universitário, onde lecionei muitos anos, em cursos de gratuação e pós-graduação em TI. E, finalmente, já passei em diversas entrevistas deste tipo e atualmente trabalho em uma empresa estrangeira.
Se isso não bastar, tem o fato de que eu mesmo já entrevistei diversos candidatos para vagas de desenvolvimento.