Prévia do material em texto
📚 RESUMO COMPLETO PARA PROVA 1. Arquiteturas de Software 1.1 Monolítica • O que é: Modelo tradicional onde toda a aplicação (interface, lógica e banco de dados) está em um único projeto. • Exemplo: Sistemas legados de bancos, ERPs antigos. • Vantagens: • Mais simples de desenvolver inicialmente. • Fácil de testar em ambientes pequenos. • Desvantagens: • Dificuldade em escalar partes específicas da aplicação. • Manutenção complexa conforme o projeto cresce. • Qualquer alteração exige o reempacotamento de toda a aplicação. 🔗 Analogia: Pensa num bloco de LEGO gigante — se você quiser mudar uma pecinha, precisa refazer o bloco todo. 1.2 Arquitetura em Camadas • O que é: A aplicação é dividida em camadas específicas: • Apresentação: Interface com o usuário. • Lógica de Negócio: Processamento de dados e regras. • Dados: Acesso e persistência em banco de dados. • Objetivo: Melhor organização e separação de responsabilidades. 🔗 Analogia: Como uma empresa — o atendimento (camada de apresentação), a gerência (camada de lógica) e o arquivo (camada de dados) são setores separados. • Benefícios: • Código mais organizado. • Facilidade de manutenção e testes. 1.3 Orientada a Serviços (SOA) • O que é: Arquitetura onde a aplicação é composta por vários serviços independentes que se comunicam por protocolos padrões (ex.: SOAP, REST). • Exemplo: Um sistema bancário onde “Empréstimo”, “Conta Corrente” e “Cartões” são serviços separados. • Benefícios: • Reutilização de serviços. • Facilidade de integração com outros sistemas. • Desvantagens: • Overhead de comunicação entre serviços. • Pode ser difícil de gerenciar sem governança adequada. 1.4 Model-View-Controller (MVC) • O que é: Padrão arquitetural que separa: • Model (Modelo): Dados e regras de negócio. • View (Visão): Interface com o usuário. • Controller (Controle): Mediação entre Model e View. • Benefícios: • Organização do código. • Facilita manutenção e testes. • Exemplo: Aplicações web em Django, Rails ou Laravel. 2. Microsserviços • Definição: Arquitetura que divide a aplicação em pequenos serviços independentes, cada um responsável por uma funcionalidade específica. • Comunicação: Via APIs, HTTP, mensagens assíncronas (RabbitMQ, Kafka). • Vantagens: • Modularidade: cada serviço pode ser desenvolvido e implantado independentemente. • Escalabilidade: só os serviços necessários são escalados. • Resiliência: falha de um serviço não derruba o sistema todo. • Desvantagens: • Complexidade: gerenciar muitos serviços e suas comunicações não é trivial. • Orquestração: necessidade de ferramentas como Kubernetes para coordenar. 🔗 Analogia: Uma cidade: a polícia, o hospital, o correio — cada um é responsável pela sua função e atua independentemente, mas todos compõem a cidade. 3. Frameworks Backend 3.1 Flask (Python) • O que é: Framework leve e minimalista para web em Python. • Características: • Baseado no padrão WSGI. • Usa Jinja2 para templates HTML. • Integração fácil com bancos via SQLAlchemy. • Ideal para APIs REST rápidas e protótipos. 3.2 Node.js com Express • O que é: Plataforma baseada em JavaScript que roda no servidor. • Express: • Framework minimalista para gerenciamento de rotas e middlewares. • Diferenciais: • Assíncrono: ótimo para aplicações que precisam lidar com múltiplas conexões (chat, streaming). • Escalabilidade: fácil de criar aplicações performáticas. 🔗 Dica: Node.js é excelente para aplicações em tempo real como chats (ex.: WhatsApp Web). 3.3 PHP PDO (PHP Data Objects) • O que é: Interface padronizada para acesso seguro e eficiente a bancos de dados. • Características: • Segurança: prevenção contra SQL Injection. • Compatibilidade: suporte a vários bancos (MySQL, PostgreSQL). • Flexibilidade: troca de banco sem mudar o código. 3.4 Java JDBC • O que é: API Java para comunicação com bancos de dados relacionais. • Características: • Usa drivers específicos para cada banco. • Permite envio de comandos SQL a partir do Java. • Padrão de mercado para aplicações corporativas. 4. Ferramentas para Testes e Monitoramento 4.1 Postman • O que é: Ferramenta para desenvolvimento e teste de APIs. • Funcionalidades: • Envio de requisições HTTP (GET, POST, PUT, DELETE). • Automação de testes: criar scripts para validar respostas. • Documentação: gerar e compartilhar documentação de APIs. • Benefícios: • Interface amigável. • Facilita o teste de endpoints antes da integração. 1. O que é uma arquitetura monolítica? Uma única aplicação onde toda a lógica, interface e acesso a dados estão em um único projeto. 2. Cite duas vantagens da arquitetura em camadas. Separação de responsabilidades e organização do código. 3. Como funciona a comunicação em uma arquitetura SOA? Via protocolos padrões como REST e SOAP, com troca de mensagens entre serviços. 4. Quais são as três partes de um sistema MVC? Modelo (dados), Visão (interface) e Controle (lógica). 5. Explique o conceito de microsserviços em uma frase. Arquitetura onde uma aplicação é dividida em pequenos serviços independentes que se comunicam entre si. 6. Qual a principal vantagem do Flask? Leveza e facilidade para desenvolver APIs REST rápidas. 7. Qual o principal benefício do Express no Node.js? Gerenciamento fácil de rotas e middlewares com alta escalabilidade. 8. O que o PHP PDO ajuda a prevenir? SQL Injection. 9. O que é necessário para Java usar o JDBC? Um driver específico para o banco de dados em uso. 10. Para que serve o Postman? Desenvolver, testar e documentar APIs de maneira prática. Referências Extras (para aprofundar) • Martin Fowler: Microservices • Postman Docs • Oracle JDBC Guide • Flask Official Documentation • Node.js Express Guide 🧠 MAPAS MENTAIS 🌐 Arquiteturas de Software Arquiteturas de Software ├── Monolítica │ ├── Um único bloco │ ├── Simples de desenvolver │ └── Difícil de escalar e manter ├── Em Camadas │ ├── Separação: Apresentação, Lógica, Dados │ ├── Código organizado │ └── Facilidade de manutenção ├── SOA (Orientada a Serviços) │ ├── Serviços independentes │ ├── Comunicação via protocolos │ └── Reutilização de serviços └── MVC (Model-View-Controller) ├── Model: Dados ├── View: Interface └── Controller: Lógica 🧩 Microsserviços Microsserviços ├── Definição │ └── Serviços pequenos e independentes ├── Comunicação │ └── APIs, HTTP, Mensageria ├── Vantagens │ ├── Modularidade │ ├── Escalabilidade │ └── Resiliência └── Desvantagens ├── Complexidade de orquestração └── Gestão de comunicação 🛠 Frameworks Backend Frameworks Backend ├── Flask (Python) │ ├── Leve e minimalista │ ├── WSGI + Jinja2 │ └── SQLAlchemy ├── Node.js com Express │ ├── JavaScript no backend │ ├── Assíncrono │ └── Gerenciamento de rotas ├── PHP PDO │ ├── Interface para bancos │ ├── Segurança (SQL Injection) │ └── Multibancos (MySQL, PostgreSQL) └── Java JDBC ├── API para bancos ├── Drivers específicos └── Aplicações corporativas 🔎 Ferramentas de Teste e Monitoramento Postman ├── Testes de API (GET, POST, PUT, DELETE) ├── Automatização de testes └── Geração de documentação