DESAFIO PROFISSIONAL – SISTEMAS E APLICAÇÕES DISTRIBUÍDAS
Seja bem-vindo(a) ao Estudo de Caso da disciplina de Sistemas e Aplicações Distribuídas. Você assume o papel de desenvolvedor(a)/arquiteto(a) de software responsável por analisar um cenário realista, propor uma arquitetura distribuída e justificar decisões com base em conceitos da disciplina.
O que é um Desafio Profissional?
O Desafio Profissional é uma atividade estruturada que coloca você no centro do processo educativo, convocando-lhe a mobilizar conhecimentos, habilidades e atitudes para resolver um estudo de caso ou projeto técnico em situação real ou simulada. Seu papel é interpretar o contexto, aplicar teoria de sistemas distribuídos e apresentar soluções plausíveis, coerentes e bem justificadas.
Apresentação do Desafio
A empresa CityConnect Services desenvolve uma plataforma que integra serviços urbanos de uma grande cidade:
Consulta de horários de ônibus e metrô.
Informações de trânsito em tempo quase real.
Agendamento de atendimentos presenciais em órgãos públicos.
Notificações para cidadãos (alertas de trânsito, clima extremo, emergências).
A primeira versão foi criada como uma aplicação monolítica centralizada, com um único backend integrando todos os serviços externos. Por causa do aumento do número de usuários e de integrações, surgiram problemas:
Qualquer instabilidade em um serviço externo (por exemplo, API de transporte) afeta todo o sistema. O tempo de resposta varia muito, pois chamadas a serviços diferentes concorrem no mesmo backend. A equipe tem dificuldade de escalar partes específicas da aplicação; só consegue escalar tudo junto.
A disponibilidade é crítica: cidadãos dependem das informações em situações de urgência.
A direção decidiu evoluir a plataforma para uma arquitetura de sistema distribuído, separando responsabilidades, aumentando resiliência e facilitando a evolução, mas a equipe ainda consolida conceitos de sistemas e aplicações distribuídas.
Missão
Compreender como organizar a CityConnect Services tal qual um sistema distribuído (módulos, serviços, comunicação entre nós).
Propor uma arquitetura conceitual com múltiplos serviços/aplicações distribuídas, indicando responsabilidades e formas de comunicação.
Discutir aspectos de disponibilidade, tolerância a falhas, desempenho e consistência.
Problema central
Como projetar uma arquitetura de sistemas e aplicações distribuídas para a CityConnect Services que aumente disponibilidade, resiliência e escalabilidade, mantendo a integração entre vários serviços urbanos?
Materiais de referência e ambientação.
Considere que você terá acesso, na disciplina, a materiais como:
Textos sobre fundamentos de sistemas distribuídos (nós, comunicação, transparência, falhas).
Conceitos de serviços distribuídos, microsserviços, RPC, REST, filas de mensagens e event-driven.
Materiais sobre tolerância a falhas, replicação, balanceamento de carga e escalabilidade.
Tarefa 1 – Três aspectos mais relevantes
A partir dos materiais de referência, escolha três aspectos que você considera essenciais para o caso da CityConnect, tais como:
Separação em serviços distribuídos com responsabilidades bem definidas.
Estratégias de comunicação entre serviços (síncrona e/ou assíncrona).
Mecanismos de tolerância a falhas e alta disponibilidade.
Para cada aspecto, responda:
O que chamou sua atenção.
Porque esse aspecto é importante para o cenário da CityConnect Services.
Estudante, escreva aqui os três pontos escolhidos e justifique cada um.
Estruturação da solução distribuída
Nesta etapa, você proporá uma arquitetura conceitual de sistema/aplicação distribuída para a plataforma.
Tarefa 2 – Elementos da arquitetura
Descreva e justifique os itens a seguir:
Decomposição em serviços distribuídos
Sugira como dividir a aplicação em serviços/módulos (por exemplo, serviço de transporte, de trânsito, de agendamentos, de notificações, gateway de API).
Explique os critérios de decomposição (domínio de negócio, independência, capacidade de escalar separadamente).
Comunicação entre serviços
Indique quais interações podem ser síncronas (por exemplo, REST) e quais podem ser assíncronas (por exemplo, filas de mensagens, eventos).
Explique como essas escolhas ajudam a reduzir acoplamento e a lidar com lentidão/falhas de alguns serviços.
Disponibilidade e tolerância a falhas
Proponha estratégias para que a falha de um serviço (por exemplo, trânsito) não derrube toda a plataforma (uso de timeouts, circuit breaker, respostas degradadas).
Comente a possibilidade de replicar serviços críticos em múltiplas instâncias para alta disponibilidade.
Escalabilidade e balanceamento de carga
Explique como instâncias de serviços distribuídos podem ser escaladas horizontalmente de forma independente.
Comente o uso de balanceadores de carga para distribuir requisições entre instâncias.
Dados e consistência
Discuta, em nível conceitual, se cada serviço terá seu próprio banco de dados ou se haverá um repositório compartilhado.
Aborde trade-offs entre consistência forte e eventual em um sistema distribuído de informações urbanas.
Estudante, descreva e justifique cada um dos itens apresentados para a arquitetura da CityConnect Services.
Levantamento de conceitos teóricos
Agora, você organizará uma “maleta” de conceitos de Sistemas e Aplicações Distribuídas.
Tarefa 3 – Lista comentada de conceitos
Monte uma lista com conceitos-chave, explicando cada um em 2 ou 3 linhas, por exemplo:
Sistema distribuído.
Transparência de localização e de falhas.
Comunicação síncrona e assíncrona.
Acoplamento fraco.
Replicação e tolerância a falhas.
Escalabilidade horizontal.
Consistência eventual.
Para cada conceito, registre:
Nome do conceito.
Definição curta.
Como ajuda a entender ou solucionar o caso da CityConnect Services.
Estudante, registre aqui sua lista comentada de conceitos teóricos.
Aplicação dos conceitos ao caso
Nesta etapa, você conectará teoria e prática na solução proposta.
Tarefa 4 – Conectando teoria e prática
Em forma de tópicos, responda, por exemplo:
Como o conceito de sistema distribuído se aplica ao fato de a CityConnect usar vários serviços cooperando via rede?
De que forma a comunicação assíncrona ajuda a lidar com instabilidades em APIs externas de transporte ou trânsito?
Como a replicação de serviços críticos melhora disponibilidade para os cidadãos em situações de emergência?
Por que a ideia de escalabilidade horizontal é importante quando o número de usuários cresce em horários de pico?
Como o conceito de consistência eventual pode ser aceitável em alguns tipos de informação (como notificações) e não em outros?
PRODUTO – Memorial Analítico
O produto será um Memorial Analítico, relatando o caminho percorrido: o que você estudou, como interpretou o caso, quais conceitos utilizou e quais decisões tomou para a arquitetura distribuída.
Sugestão de estrutura:
Resumo da solução proposta para o sistema distribuído da CityConnect (1 parágrafo).
Contextualização do desafio (1 parágrafo: descrição da plataforma atual, problemas e necessidades).
Análise (1 parágrafo usando 2 a 3 conceitos centrais de sistemas distribuídos para explicar os problemas do modelo monolítico centralizado).
Descrição da arquitetura proposta (1 a 2 parágrafos explicando serviços, comunicação, disponibilidade, escalabilidade e dados).
Benefícios, riscos e desafios (1 a 2 parágrafos discutindo ganhos, complexidade adicional, possíveis falhas e cuidados).
Conclusão reflexiva (1 a 2 parágrafos sobre o que você aprendeu de sistemas e aplicações distribuídas e sua relevância prática).
Referências (apenas os materiais realmente utilizados).
Autoavaliação (1 parágrafo sobre seu próprio processo de estudo e solução).
TANENBAUM, A. S.; VAN STEEN, M. Distributed Systems: Principles and Paradigms.
COULOURIS, G. et al. Distributed Systems: Concepts and Design.
NEWMAN, S. Building Microservices.
SILBERSCHATZ, A.; GALVIN, P.; GAGNE, G. Sistemas Operacionais (conceitos de concorrência e distribuição).
Referências técnicas online
IBM – What is a Distributed System?
https://www.ibm.com/topics/distributed-systems
AWS – What are Microservices?
https://aws.amazon.com/microservices/
TEMPLATE PADRÃO ÚNICO
| 1 x de R$69,99 sem juros | Total R$69,99 | |
| 2 x de R$34,99 sem juros | Total R$69,99 |
