Voltar aos projectos

// estudo de caso

Webserv

Implementação de um servidor web inspirado no NGINX, focado em networking, parsing e controlo de fluxo, desenvolvido em equipa com divisão de responsabilidades e liderança técnica.

// narrativa visual

Galeria do projecto

Uma estrutura visual inspirada em case studies editoriais: capa principal, detalhes de arquitetura e momentos-chave do produto.

Visão geral da arquitectura do Webserv

Arquitectura orientada a eventos com separação de responsabilidades.

imagem 1
Visão geral das funcionalidades do Webserv

Visão das principais funcionalidades: parsing HTTP/1.1, virtual hosts, CGI e gestão concorrente de conexões.

imagem 2
context

Contexto

Projecto desenvolvido no âmbito da 42, com o objectivo de construir um servidor HTTP/1.1 sem recorrer a frameworks de alto nível, explorando profundamente o funcionamento interno de sistemas web.

challenge

Desafio

Gerir múltiplas conexões concorrentes, implementar parsing robusto de HTTP e configuração, e garantir comportamento consistente sob restrições de C++98. Em paralelo, coordenar uma equipa de três pessoas, distribuindo responsabilidades e mantendo alinhamento técnico.

solution

Solução

Estruturei o desenvolvimento com divisão clara de componentes e responsabilidades, permitindo trabalho paralelo. O servidor foi implementado com arquitectura modular, separando parsing, gestão de conexões e construção de respostas.

architecture

Arquitectura

Arquitectura orientada a eventos com I/O não bloqueante usando poll(). O sistema é composto por módulos como ConfigParser, PollManager, ClientManager, RequestParser e ResponseBuilder, garantindo isolamento de responsabilidades e facilidade de evolução.

result

Liderança e execução

Assumi o papel de coordenação técnica, distribuindo tarefas de acordo com a complexidade dos componentes e desbloqueando o progresso sempre que surgiam dificuldades. A liderança focou-se em manter consistência de arquitectura, resolver bloqueios e garantir que todas as partes convergiam para um sistema coeso.

stack

Tecnologias

C++98, Sockets, poll(), HTTP/1.1, CGI, Linux, Parsing de configuração estilo NGINX

impact

Impacto

Consolidação de conhecimentos em programação de sistemas, networking e design modular, aliada à experiência prática em coordenação de equipa técnica e resolução de problemas em contexto real de desenvolvimento.