SeaCloud est un hébergeur proposant des VPS (Virtual Private Server) pour les développeurs. Outre la présentation de l'entreprise et de ses services, le site permet aux développeurs de créer un compte, puis de déployer des serveurs en quelques clics.
En tant que développeur web travaillant chez SeaCloud, vous êtes chargé de développer le site internet d'après l'intégration fournie par les graphistes et en relation avec les autres développeurs chargés de la mise en place de la plateforme de déploiement des serveurs.
💡 Les fichiers fournis par les graphistes se trouvent dans le dossier integration.
-
Diagramme de classes
Le diagramme suivant présentent les classes sur lesquelles vous vous êtes accordés avec l'équipe de développement de la plateforme de déploiement des serveurs. Prenez soin de respecter l'implémentation décrite ci-dessous.
Notes :
-
La classe App\Entity\User doit hériter le l'interface Symfony\Component\Security\Core\User\UserInterface afin de pouvoir sécuriser l'espace client.
-
Les constantes STATE_PENDING, STATE_STOPED et STATE_READY représentent l'état d'un serveur, respectivement «En attente», «Arrêté» et «Démarré».
-
La classe App\Service\NameGenerator générera le nom d'un serveur (si laissé vide par le client) selon le modèle :
SC-[datacenter.code]-[distribution.code]-[server.id]
Example : SC-NY-Ubuntu-01
-
La classe App\Service\Notifier enverra un email au client (User) pour l'avertir que son serveur est déployé (STATE_READY).
-
-
Plan du site
Nom Url Description Template Home GET / Page d'accueil index.html About GET /about Présentation de l'entreprise about.html Services GET /services Listes des prestations services.html Contact GET /contact Formulaire de contact contact.html Signup GET /sign-up Création de compte client sign-up.html Sign in GET /sign-in Connexion au compte client sign-in.html Logout GET /logout Déconnexion du compte client 🔒 Dashboard GET /account Tableau de bord account_dashboard.html 🔒 Profil GET /account/profil Information client account_profil.html 🔒 New server GET /account/new-server Formulaire de création d'un nouveau serveur account_new-server.html 🔒 Server detail GET /account/[server-id] Détail du serveur ayant l'identifiant [server-id] account_new-server.html 🔒 Reboot server GET /account/[server-id]/reboot Redémarrer le serveur ayant l'identifiant [server-id] 🔒 Reset server GET /account/[server-id]/reset Réinstaller le serveur ayant l'identifiant [server-id] 🔒 Delete server POST /account/[server-id]/delete Supprimer le serveur ayant l'identifiant [server-id] Server ready GET /api/[server-id]/ready Marquer un serveur comme "Démarré" (appelée par la plateforme de déploiement) 💡 Les pages marquées d'un cadenas (🔒) sont sécurisées : l'internaute doit être authentifié (connecté) pour y accéder.
-
Cycle de vie d'un serveur
- L'état initial d'un serveur est «En attente» (STATE_PENDING).
- Une fois le serveur déployé, la plateforme de déploiement (gérée par d'autres développeurs) appelera
l'url
GET /api/[server-id]/ready
pour marquer le serveur comme étant «Prêt» (STATE_READY). Un email sera automatiquement envoyé au client pour l'informé du déploiement de sont serveur. - Si le client décide de redémarrer un serveur, ce dernier passera en statut «Arrêté» (STATE_STOPED).
Une fois redémarré, la plate forme de déploiement appellera de nouveau l'url
GET /api/[server-id]/ready
. - Si le client décide de réinitialiser un serveur, ce dernier passera en statut «En attente»
(STATE_PENDING). Une fois re-déployé, la plate forme de déploiement appellera de nouveau l'url
GET /api/[server-id]/ready
.
- Liste des datacenters
Nom | Code |
---|---|
New York | NY |
San Francisco | SF |
Amsterdam | AM |
Singapore | SI |
London | LO |
Frankfurt | FR |
Toronto | TO |
Bangalore | BA |
- Liste des distributions
Nom | Code |
---|---|
Ubuntu 20.04 (LTS) x64 | Ubuntu |
FreeBSD 12.2 x64 | FreeBSD |
Fedora 34 x64 | Fedora |
Debian 10 x64 | Debian |
CentOS 8.3 x64 | CentOS |