-
Notifications
You must be signed in to change notification settings - Fork 12
Home
ITA-Challenges es una API que subministra reptes de programació (Challenges) per a estudiants, assignant puntuació a les solucions lliurades i facilitant mecanismes de seguiment per a que l’usuari pugui comprovar la seva millora tècnica i avaluar els coneixements. ITA-Challenges està patrocinat i impulsat per la IT Academy i creat per desenvolupadors Java prèviament formats a l’entitat.
La documentació complerta de la API (en desenvolupament) està disponible a: http://dev.ita-challenges.eurecatacademy.org:9080/swagger-ui/index.html
A fi d’implementar suport tècnic als requeriments funcionals, es van seguir els següents passos:
L’aplicatiu ha de ser capaç de :
- Mantenir un repositori de reptes amb informació que capaciti a l’usuari per a resoldre’ls.
- Permetre als/les usuaris/es enregistrar solucions als reptes.
- Validar les soluciones aportades.
- Enregistrar usuaris i facilitar mecanismes de seguiment dels seu progrés.
- ¿Què és un servei?
Es el component de software independent i desplegable per si mateix que implementa alguna funcionalitat útil.
- ¿Quin tipus d’operacions executa?
Dos tipus d’operacions: ordres i consultes (quèries).
-
¿Quina arquitectura utilitzar?
-
Arquitectura de Microserveis (alt nivell): es divideix el software en serveis específics i independent en les seves funcions i tasques.
-
Arquitectura Hexagonal: Implementada dins de cada microservei.
-
-
¿Perquè arquitectura de microserveis? Atès l’escenari tècnic del projecte, s’observen diversos avantatges importants:
- Escalabilitat: Cada microservei pot escalar de forma independent pel que s’optimitzen els serveis
- Desacoblament: S’accelera el desenvolupament, implementació i canvis de cada servei de forma independent.
- Diversitat tecnològica: Permet que cada micorservei faci servir tecnologies i eines diferents.
- Resiliència: Si falla un servei permet que els altres continuïn operant sense interrupció.
-
Hexagonal: Divideix la lògica en tres capes principals: domini, aplicació i infraestructura.
-
Capa de Domini: És la capacitat més interna, inclou la lògica de neogoci i les entitats de domini. Sense dependència cao a l'exterior.
-
Capa d'Aplicaicó: Dirigeix el flux de l'aplicació i coordina l'ús de la capa de domini i la capa d'infraestructura.
-
Capa d'Infraestructura: És la capa més externa i s'encarrega de totes les operacions d'entrada i sortida (persistència de dades, comunicaió amb els altres sistemes , interfícies d'usuari, etc..).
-
-
Spring Boot i Arquitectura Hexagonal:
-
Controller: Capa d’adaptadors primaris o d’entrada a l’arquitectura hexagonal. Es gestionen les sol.licituds entrants i les passa a la capa de serveis per al seu processament.
-
Service: Capa d’aplicació a l’arquitectura hexagonal. S’encarrega de la lògica de negoci i coordina les operacions entre la capa d’entrada (Controller) i la capa de sortida (Repository).
-
Repository**: Capa d’adaptadors secundaris o de sortida a l’arquitectura hexagonal. Es responsabilitza de la persistència de dades i qualsevol operació de sortida del sistema.
-
- Challenge: Subministra la informació relativa dels reptes. El microservei es comunicarà amb Score que es qui atorgarà la puntuació.
- User: Permet assignar reptes predilectes i solucions noves.
- Document: Es fa servir per conectar-se a la documentació de cadascun dels microserveis restants. Implementa Circuit Breaker Pattern per a la tolerància d’errors.
- Auth: Rep el token d’autenticació desde l’API Gateway i comunica si és vàlid o no. La resta de funcionalitats relacionades amb l’autenticitat es gestionen amb un SSO (Single Sign On).
- Score: Conté el nucli de la lògica de negoci del projecte: compilar, executar (en un entorn segur) i assignar una puntuació a les solucions lliurades per els/les uauaris/es de l’aplicatiu.
- API Gateway: Proporciona un únic punt d’entrada per al client, redirigint cada petició al microservei que correspongui (consulteu http://microservices.io/patterns/apigateway.html).
Per tractar aquest punt clau, es va decidir utilitzar ZeroMQ per la seva facilitat d’ús. El seu ús a la comunicació entre microserveis és fonamental degut a la seva capacitat per proporcionar patrons de missatgeria asincrònica, que permet als diferents microserveis interactuar sense necessitat d’estar constantment connectats. ZeroMQ permet diferents models de transport, incloent TCP, IPC i multicast, que facilita la configuració de la comunicació entre microserveis independentment de la seva ubicació. A més, proporciona una sèrie de característiques que son essencials en un entorn de microserveis, com la tolerància d’errors, la capacitat de dominar grans volums de tràfic i la possibilitat d’establir patrons de missatgeria complexos, com sol.licituds de resposta, publicació-subscripció i push-pull.
L’aplicació, implementa patrons de missatgeria REQ-REP, actualment s’utilitzen 3 servidors i 3 clients per dur a terme aquestes sol.licituds.
© 2023 Proyecto Challenge - IT Academy