System administrator
Target roles: IT support and systems technician, Junior Linux system administrator
- 3 learning paths
- 15 labs
- 33 h 50 min
Each lab drops you into a real company case. You solve it yourself, on a real server, and you come away with what theory never gives you: confidence.
Your first lab is free.
Each career brings together the learning paths that lead to it, in the order to take them. Pick yours: you'll know where to start.
Target roles: IT support and systems technician, Junior Linux system administrator
Target roles: Junior DevOps engineer, AWS cloud administrator
Target roles: Junior back-end developer, AWS cloud developer
Target roles: Junior data analyst, SQL developer
Target roles: Junior SOC analyst, Cybersecurity technician
Target roles: IoT technician, Junior IoT developer
A series of labs that follow on from each other, from your first day on the job to the production incident. Take them in order: each one builds on the last.
À Dakar, la chambre froide de Baobab Market est restée ouverte tout un week-end, et personne ne l'a su. Une carte ESP32 y mesure maintenant la température. Pendant l'atelier d'électronique, la carte mesure ; dans ce parcours, vous apprenez à transformer cette mesure en décision, dans le cloud. Cinq ateliers suivent la chambre froide : connecter la carte à AWS IoT Core avec un certificat et une politique au moindre privilège, ranger ses mesures dans DynamoDB et S3 avec une règle IoT, prévenir Awa par e-mail sans fausse alerte grâce à une fonction Lambda, piloter à distance le compresseur de secours avec le Device Shadow, même quand la carte est hors ligne, puis faire résumer chaque nuit par un modèle de langage open source qui tourne sur votre propre serveur. Le défi final réunit tout : une flotte de trois cartes, cinq pannes, trois heures pour les trouver. Chaque atelier se joue dans une vraie console AWS et dans AWS CloudShell, sans compte AWS à ouvrir ni carte bancaire à donner. La carte est simulée ; ceux qui ont gardé leur ESP32 retrouvent chaque geste dans le code Arduino. Des contrôles vérifient ce que vous avez construit.
Learning pathMireille Ekambi launched Sawa Express in Douala: parcels delivered by motorbike across the city. Everything still runs on WhatsApp and a spreadsheet, and customers call all day long to find out where their parcel is. Patrick is writing the mobile app. You build the API, on AWS. Four workshops follow the app: a serverless HTTP API with AWS Lambda, API Gateway and DynamoDB, photo proof of delivery processed asynchronously with S3, EventBridge and SQS, a containerized pricing service with Docker, Amazon ECR and ECS Fargate, then an API protected by Amazon Cognito and JWTs, with its secrets in Secrets Manager and its data encrypted with KMS. Each workshop runs in a real AWS console and in AWS CloudShell, with no AWS account to open and no credit card to give. You write the code, deploy it, test the API the way the app will call it, and checks verify what you built. Each workshop ends with exam questions: the path prepares you for the AWS Certified Developer - Associate certification (DVA-C02). Eight hours of hands-on practice, from intermediate to advanced.
Jeudi soir, Radio Akwa, à Douala. Ernest lance son sondage de la semaine à l'antenne, et le standard tombe en vingt minutes. Il ne vous demande pas une application : il demande une adresse à donner aux auditeurs. Quatre missions suivent ce sondage, de la première image à la nuit de la finale : le mettre en ligne et y poser votre propre question, ne plus perdre un seul vote quand un conteneur est remplacé, tout relancer en une commande avec Compose, puis le remettre debout au matin d'une coupure de courant et le servir sur une seule adresse derrière Nginx. Chaque lab part d'une panne réelle, que vous diagnostiquez avec les outils du métier (docker logs, docker inspect, les codes de sortie) avant de la corriger. Et à chaque fois, vos proches votent pour de vrai depuis leur téléphone.
Akwaba Market, la boutique en ligne de pagnes wax et d'artisanat de Madame Aya Koné, à Treichville, ouvre samedi. Le prestataire qui l'a montée est parti, et c'est vous qui devez la sécuriser. Quatre missions suivent les premiers jours de la boutique, chacune partie d'un problème signalé : un client développeur qui voit ce que le site laisse échapper, des robots qui essaient des mots de passe toute la nuit, une cliente qui tombe sur la facture d'une autre, un avis qui change la page chez tout le monde. À chaque fois, vous trouvez la cause, vous la corrigez, et vous vérifiez comme un inconnu que la porte est fermée. Le parcours couvre quatre catégories du Top 10 de l'OWASP 2025 (mauvaise configuration, authentification, contrôle d'accès, injection), toujours du côté de la défense, sur une sandbox qui vous appartient.
Pick your next challenge. Every lab is built by practitioners, from missions they carry out in companies across Africa.
1–12 of 52 labs
Saturday, 9:10 a.m. Mireille, from customer service at Fujima, the electricity supplier of Yaoundé, calls you: forty-one complaints since Thursday. July bills that won't open anymore, October bills nowhere to be found, and since last night no new bill at all. The CEO found out on Facebook. Serge, the developer, "tightened the security of the bills" before leaving on vacation. Three errors hide the bills in the Amazon S3 bucket. Find them and fix them: a lifecycle rule in too much of a hurry, bills filed under the wrong path, KMS encryption that blocks the generator. Then the CEO's real request: know before the customers do. You connect the upload measurements and set up two CloudWatch alarms that send an email when a bill is late or when nothing arrives anymore. Saturday Outage is a challenge with no step-by-step guide: one mission, one broken sandbox, two hours. The solution comes out the following Saturday, along with the next outage.
Saturday, 8:40 a.m. Fatou, from Baobab Market's customer service, calls you: since 7 a.m., customers have been paying for their orders on the site and getting their confirmation, but the packing workshop in Thiès has received nothing. The delivery riders are waiting at the door. Moussa "plugged in the real table" on Friday evening, then switched off his phone. Four errors block the order pipeline, and each one hides another. Your job: follow an order from the Amazon SQS queue to the packers' table, read what the Lambda function's logs say, fix things without opening every table, and find Friday evening's orders. Saturday Outage is a short challenge with no step-by-step guide: one mission, one broken sandbox, one hour. The solution comes out the following Saturday, along with the next outage.
Saturday morning, Awa calls you. The Baobab Market showcase website has been online since last night, the weekend sale has been announced on WhatsApp, and customers only see a blank page: "403 Forbidden". Moussa published the site on Amazon S3, then "secured everything, following best practices" before boarding a plane to Abidjan. He isn't answering. Four errors hide behind this 403, and each one hides another. Your job: trace what a customer sees back to the setting that blocks them, and bring the site back online with its sale page, without opening the bucket to just anyone. Saturday Outage is a short challenge with no step-by-step guide: one mission, one broken sandbox, one hour. The solution comes out the following Saturday, along with the next outage.
Saturday morning. Last night's report announces 412,000 FCFA in sales. Mama Ngo counted 287,000 in the drawer and on her phone, three times. For a week, her new cash register has had an evening report, written by Ludovic before he left for the weekend. And for a week, it has been lying. Four errors are hiding in this report, and each day of the week shows a different one. It is up to you to trace the view back to the calculation, find what skews each day, then fix the report without breaking the export the accountant imports every Monday. Saturday Outage is a short challenge with no step-by-step guide: a mission, a broken database, one hour. The solution is at the end of the guide, folded: play first, read afterwards.
Chez Baobab Market, à Dakar, la porte de la chambre froide est restée entrouverte tout le week-end : la marchandise de la semaine est perdue, et personne ne l'a su avant lundi. Une carte ESP32 avec un capteur de température y est pourtant installée. Elle devait tout envoyer sur Internet, mais elle ne s'est jamais connectée. Vous la connectez à AWS IoT Core. Vous enregistrez la carte dans le registre, vous lui donnez une identité avec un certificat X.509 et sa clé privée, et vous écrivez une politique IoT qui ne l'autorise qu'à se connecter sous son nom et à publier sur son topic. Puis vous diagnostiquez pourquoi elle ne se connectait jamais, et vous faites arriver ses mesures en MQTT, en direct dans la console. La carte est simulée par un programme Python dans AWS CloudShell : seul le capteur est imaginaire, la connexion, le certificat et les messages sont réels. Ceux qui ont gardé leur ESP32 retrouvent chaque geste dans le code Arduino. Premier atelier du parcours AIoT : de la mesure d'une carte ESP32 à la décision dans le cloud.
Chez Baobab Market, à Dakar, la carte de la chambre froide publie ses mesures, mais personne ne les garde : elles traversent AWS IoT Core et disparaissent. Awa veut revoir la courbe de la nuit de samedi, que la carte a gardée en mémoire pendant une coupure du Wi-Fi, et voir la température tout de suite quand elle ouvre son application. Vous écrivez une règle IoT : une requête SQL qui choisit les mesures de la carte, et deux actions qui les rangent dans Amazon DynamoDB, pour l'écran d'Awa, et dans Amazon S3, pour l'historique. Puis la table reste vide, sans la moindre erreur. Vous ajoutez une action d'erreur, lisez enfin le refus, et donnez au rôle de la règle le seul droit qui lui manque. Vous retrouvez alors la nuit de samedi en une requête, et la courbe montre ce qui s'est passé : une porte restée entrouverte entre 2 h et 4 h 30. Deuxième atelier du parcours AIoT : de la mesure d'une carte ESP32 à la décision dans le cloud.
Chez Baobab Market, à Dakar, Awa voit maintenant la courbe de chaque nuit de la chambre froide. Mais elle la voit le lendemain, quand la marchandise est perdue. Elle veut être prévenue pendant l'incident, par e-mail, sans être dérangée chaque fois que Fatou ouvre la porte pour ranger une livraison. Vous créez un topic Amazon SNS et y abonnez votre adresse. La première alerte, une règle IoT qui publie chaque mesure au-dessus de 5 °C, montre aussitôt le problème : quatre e-mails pour vingt secondes de porte ouverte. Vous la remplacez par une fonction AWS Lambda qui attend : elle garde dans DynamoDB depuis quand la chambre froide est trop chaude, ignore les pics, et n'envoie qu'un e-mail par incident. La carte simulée joue les deux scénarios, une livraison et une porte restée ouverte, et les journaux de la fonction racontent chaque décision. Troisième atelier du parcours AIoT : de la mesure d'une carte ESP32 à la décision dans le cloud.
Chez Baobab Market, à Dakar, l'alerte de la chambre froide arrive à 3 h 10 : le compresseur vient de tomber en panne. Moussa a branché un compresseur de secours sur un relais de la carte ESP32, et Awa veut l'allumer depuis son téléphone, sans aller à la boutique. Si le Wi-Fi a coupé, l'ordre doit attendre la carte. Vous donnez l'ordre par le Device Shadow d'AWS IoT Core : l'état voulu, l'état réel, et l'écart entre les deux. Puis la carte publie ses mesures comme d'habitude, mais n'allume jamais le secours. Vous trouvez pourquoi, et réécrivez sa politique avec une variable : une seule politique pour toute une flotte, chaque carte enfermée dans ses propres topics. Vous coupez ensuite la carte, donnez un ordre pendant qu'elle est hors ligne, et la regardez l'appliquer à sa reconnexion. Enfin, une règle envoie la température dans Amazon CloudWatch, pour suivre la tendance. Quatrième atelier du parcours AIoT : de la mesure d'une carte ESP32 à la décision dans le cloud.
Chez Baobab Market, à Dakar, Awa reçoit les alertes de la chambre froide et peut en voir la courbe. Mais chaque matin, elle veut seulement savoir comment s'est passée la nuit : quatre phrases en français, et ce qu'il faut vérifier. Sans que les données de la boutique partent chez un tiers. Vous entrez sur le serveur IA de la boutique, une machine Graviton sans aucun port ouvert, où tourne un modèle de langage open source, Qwen2.5 3B, avec Ollama. Vous lui donnez d'abord les 72 mesures brutes d'une nuit, et le voyez inventer un maximum et une cause. Puis vous écrivez le code qui calcule les faits, la durée au-dessus du seuil, le maximum, la cause probable, et ne laissez au modèle que la rédaction, sous le contrôle d'un garde-fou qui refuse tout nombre inventé. Trois nuits, trois résumés : une porte restée ouverte, une nuit calme, et un compresseur qui faiblit, signe avant-coureur de la panne. Cinquième atelier du parcours AIoT : de la mesure d'une carte ESP32 à la décision dans le cloud.
Baobab Market a maintenant trois chambres froides à Dakar : au Plateau, aux Almadies et à Mermoz. Moussa a tout installé, puis il est parti en congé. Cette nuit, rien n'a marché : aucune alerte alors que les Almadies sont montées à plus de 9 °C, un écran qui n'affiche que le Plateau, et pas de résumé ce matin. Moussa a laissé un dossier : trois cartes enregistrées et leurs certificats, sa politique, ses règles, sa fonction d'alerte et le serveur IA. Cinq pannes s'y cachent. Sans pas-à-pas, vous remettez la flotte en ligne avec une politique de flotte, faites ranger les mesures des trois cartes, réparez l'alerte qui ne partait pas, allumez à distance le compresseur de secours, et faites rédiger par le modèle open source le résumé de la nuit gardée par une carte. Chaque mission a son cahier des charges, ses critères de réussite, un indice et une solution repliés. Vous avez trois heures pour chercher. Défi final du parcours AIoT : de la mesure d'une carte ESP32 à la décision dans le cloud.
At Sawa Express, in Douala, the phone rings all day: forty customers a day want to know where their parcel is. Patrick is finishing the mobile app that will let them track their deliveries on their own. All he is missing is the API, and he wants it by Friday. You build it on AWS, with no server to manage: an AWS Lambda function for the logic, Amazon API Gateway for the public address, Amazon DynamoDB for the parcels. From AWS CloudShell, you create the table, deploy the function, give it the one permission it lacks, then expose three routes: create a parcel, track it, move its delivery forward. You then test the API the way Patrick's app will, and find out what a first version lets through: a parcel with no recipient accepted, an unknown number that makes the server crash. You turn it into an API that always returns the right code, 201, 200, 400 or 404, and keeps its internal errors for its logs. The first lab of the AWS path for developers, which prepares you for the AWS Certified Developer - Associate certification (DVA-C02).
At Sawa Express, a customer swears she never received her parcel, which the rider says he handed to her neighbor. Nobody can prove anything, and the company pays her back. Mireille wants a photo for every delivery, and a text message to the customer as soon as the parcel is delivered, without anyone at the office pressing a button. You build a chain that works on its own, in the background. The rider's app uploads the photo straight into a private Amazon S3 bucket, through a presigned URL. S3 triggers an AWS Lambda function that marks the parcel as delivered and publishes the event on an Amazon EventBridge bus. A rule routes it to an Amazon SQS queue, from which a second function sends the text message. Along the way, you meet what the exam asks about again and again: the event received twice, the event published before the rule exists, the mistyped number that fails over and over. You make every step idempotent, and you set failed messages aside in a dead-letter queue without blocking the others. The second lab of the AWS path for developers, which prepares you for the AWS Certified Developer - Associate certification (DVA-C02).