
Résumé
Nextnet est une entreprise de logiciels d’entreprise basés sur l’IA, située dans la Silicon Valley, ciblant en priorité les secteurs des sciences de la vie et de la santé. L'entreprise a conçu et déployé avec succès une plateforme SaaS complète propulsée par l'IA, en tirant parti des services managés d'AWS et de l’infrastructure en tant que code (IaC). Cette étude de cas démontre comment l'utilisation de l'AWS CDK et une sélection avisée de services AWS ont permis un développement rapide, des déploiements cohérents sur plusieurs environnements et une intégration fluide de capacités d’IA de pointe, tout en assurant une sécurité et une scalabilité de niveau d’entreprise, capables de satisfaire aux exigences de diligence technique des fonds de capital-risque de premier plan.
Résultats clés
- Architecture serverless avec une réduction significative de la charge liée à la gestion de l’infrastructure.
- Déploiement multi-environnements (développement, préproduction, production) avec des configurations cohérentes et une isolation et un partage des ressources.
- Fonctionnalités basées sur l’IA, utilisant AWS Bedrock, avec des capacités de génération augmentée par la récupération (RAG).
- Modèle de sécurité inter-comptes avec délégation DNS automatisée pour la gestion automatique des domaines et des sous-domaines.
- Reproductibilité complète de l’infrastructure grâce à un simple clic sur le bouton « Déployer ».
- Flux d’authentification moderne et sécurisé sans mot de passe, reposant sur AWS Cognito et AWS Amplify Gen 2.
Aperçu du projet
Enjeux métiers
Nextnet vise à :
- Devenir la plateforme de connaissances basée sur l’IA la plus fiable au monde pour tous les aspects de la santé et du bien-être humains.
- Offrir des capacités de recherche et de conversation alimentées par l’IA, ainsi qu’une analyse interactive des liens sous forme de graphe, fondée sur des preuves scientifiques concrètes.
- Fournir des résultats instantanés malgré l’ingestion de pétaoctets de données multimodales structurées, semi-structurées et non structurées.
- Mettre à disposition des scientifiques non seulement une interface conversationnelle, mais aussi un outil d’exploration immersif sous forme de graphe de connaissances fortement interconnecté, permettant de passer facilement d’un à l’autre.
- Gérer l’authentification, l’autorisation des utilisateurs et une logique complexe d’accès aux fonctionnalités.
- S’adapter aux variations du trafic et des modèles d’utilisation.
- Maintenir des environnements identiques mais isolés pour permettre une itération rapide, une validation scientifique par un comité d’experts reconnus du secteur et garantir des charges de travail de production résilientes et tolérantes aux pannes.
- Assurer une sécurité et une conformité de niveau d’entreprise, en vue des exigences réglementaires futures aux États-Unis et en Europe.
Architecture de la solution
La solution repose sur des piles de services managés AWS, entièrement orchestrées via AWS CDK. Cela élimine le besoin de provisionnement manuel de l’infrastructure et garantit des déploiements cohérents, reproductibles et validés dès la phase de construction, conformément aux principes du framework AWS Well-Architected.
Architecture technique
Remarque : Les extraits présentés sont des versions anonymisées de la livraison IaC. Le code du front-end a été omis.
Composants d'infrastructure principaux
1. Frontend et hébergement
// AWS Amplify Gen 2 pour le hosting web serverless et distribué.
const app = new App(this, 'App', {
appName: 'Core Application',
sourceCodeProvider: new CodeCommitSourceCodeProvider({ repository }),
customRules: [CustomRule.SINGLE_PAGE_APPLICATION_REDIRECT],
//…
});Services AWS utilisés :
- AWS Amplify Gen 2 : hébergement web serverless avec CI/CD intégré et une expérience développeur (DX) optimisée.
- Amazon Route 53 : gestion des enregistrements DNS avec délégation entre comptes.
- AWS Certificate Manager : automatisation des certificats SSL/TLS.
- Amazon CloudFront : réseau mondial de diffusion de contenu (CDN).
- AWS CodeCommit : gestion de l'historique de l'évolution du code basée sur Git.
2. Authentification et API
// AWS Cognito pour la gestion d'utilisateurs, authentification et authorisation.
const userPool = new UserPool(this, 'UserPool', {
customDomain: { domainName: `auth.${domain}` }
//…
});
// AWS AppSync pour une API GraphQL serverless.
const api = new GraphqlApi(this, 'Api', {
authorizationConfig: {
defaultAuthorization: { authorizationType: AuthorizationType.USER_POOL }
}
//…
});Services AWS utilisés :
- AWS Cognito : authentification et autorisation des utilisateurs.
- AWS AppSync : API GraphQL gérée par AWS avec des connexions WebSockets, entre autres.
- AWS DynamoDB : base de données NoSQL avec scalabilité automatique.
- AWS OpenSearch : moteur de recherche en texte intégral avec index inversé.
- AWS Amplify Gen 2 : les parties « auth » et « data » du framework.
3. Intégration IA/ML
// AWS Bedrock Knowledge Base pour le RAG.
const knowledgeBase = new KnowledgeBaseVector(this, "KnowledgeBase", {
id: env.KNOWLEDGE_BASE_ID,
executionRoleArn: env.KNOWLEDGE_BASE_EXECUTION_ROLE_ARN,
});
// Les fonctions AWS Lambda avec intégration AWS Bedrock.
backend.chat.resources.lambda.addToRolePolicy(
new PolicyStatement({
actions: ["bedrock:InvokeModelWithResponseStream"],
resources: [`arn:aws:bedrock:*::foundation-model/${modelId}`],
}));Services AWS utilisés :
- Amazon Bedrock : modèles de base (Claude 4.6 Haiku, Claude 4.6 Sonnet, Amazon Nova Pro, Amazon Titan v2).
- AWS S3 : stockage multimodal de documents.
- Amazon Bedrock Knowledge Base : Retrieval-Augmented Generation (RAG).
- AWS RDS : base de données vectorielle alimentée par PostgreSQL via pgVector.
- AWS Amplify Gen 2 : kit d’IA pour la logique conversationnelle agentique et générationnelle.
4. Stockage et gestion des données
// Seaux AWS S3 pour des types de données différents
const storage = defineStorage({
name: "storage",
access: (allow) => ({
"profile-pictures/*": [allow.authenticated.to(["read", "write"])],
"knowledge-base-sources/*": [allow.authenticated.to(["read"])],
}),
});Services AWS utilisés :
- Amazon S3 : stockage d’objets, de documents, de sources de la base de connaissances et des sauvegardes.
- Amazon DynamoDB : base de données principale avec récupération à un instant donné (point-in-time recovery).
- Amplify Gen 2 : stockage dans le cloud (CDN) intégré à l’authentification pour les ressources statiques.
Architecture multi-environnement
Stratégie multi-compte
La solution met en œuvre une stratégie multi-comptes sophistiquée :
// Compte de production
const crossAccountDelegationRole = new Role(this, "CrossAccountRole", {
assumedBy: new AccountPrincipal("111111111111"),
roleName: "CrossAccountDelegationRoleCoreApplicationProduction",
});
// Compte de développement
const devDelegationRole = new Role(this, "DevDelegationRole", {
assumedBy: new AccountPrincipal("222222222222"),
roleName: "CrossAccountDelegationRoleCoreApplicationDevelopment",
});Séparation des environnements :
- Compte de production : charge de travail complète en production avec déploiement depuis la branche principale.
- Compte de développement : environnement de développement avec authentification basique.
- Compte de préproduction (Staging/Preview) : pour une validation approfondie par le comité d’experts et de conseillers du secteur.
- Compte racine (Root) : gestion centralisée des domaines et des rôles IAM entre les comptes.
Principaux avantages de l’implémentation avec AWS CDK
1. Avantages de l’infrastructure sous forme de code (IaC)
Reproductibilité : chaque composant d’infrastructure est défini dans le code, ce qui garantit des déploiements identiques dans tous les environnements.
// Configurations spécifiques aux environnements
if (process.env.ENV === 'prd') {
const main = app.addBranch('main', {
//…
});
} else {
const develop = app.addBranch('develop', {
basicAuth: BasicAuth.fromCredentials('SOME_USERNAME',
SecretValue.unsafePlainText(process.env.SOME_PASSWORD)),
//…
});
}Contrôle de version : toutes les modifications d’infrastructure sont suivies, révisées et approuvées via des workflows de développement standard.
Cohérence : AWS CDK garantit une uniformité dans la nomination, le tagging et la configuration des ressources dans tous les environnements.
Minimalisme : l’ensemble de la livraison est réuni en un seul dépôt de code.
2. Avantages des services gérés par AWS
Gestion d’infrastructure minimale : en s’appuyant sur des services entièrement gérés par AWS, l’équipe a éliminé :
- le provisionnement et la maintenance des serveurs
- l’administration des bases de données
- la gestion des correctifs de sécurité
- la planification de la capacité
- la gestion des sauvegardes
Surtout, cela a permis de fournir rapidement des fonctionnalités conformes aux normes de l’industrie, tout en respectant un budget très serré.
Scalabilité automatique : des services tels que DynamoDB, Lambda et Amplify s’adaptent automatiquement à la demande, sans intervention manuelle.
Sécurité intégrée : grâce au modèle de responsabilité partagée AWS, les services managés offrent nativement des fonctionnalités de sécurité de niveau entreprise :
- chiffrement au repos et en transit
- intégration IAM
- isolation via VPC lorsque nécessaire
- conformité aux certifications
3. Optimisation des coûts
Modèle Pay-per-Use : l’architecture serverless garantit que les coûts varient directement en fonction de l’utilisation.
// DynamoDB avec facturation à la demande
const table = new Table(this, "Table", {
billingMode: BillingMode.PAY_PER_REQUEST,
pointInTimeRecovery: true,
});Pas de ressources inactives : les fonctions Lambda et autres services serverless ne génèrent des coûts que lorsqu’ils traitent des requêtes.
Parfois, il faut faire preuve de créativité dans l’architecture de la solution pour optimiser chaque centime de la facture AWS mensuelle. Mais dans une bonne équipe d’ingénierie, il est possible de travailler avec un budget très limité. Par exemple, permettre aux développeurs de créer et supprimer une base de données à la demande via un message Slack, avec une destruction automatique si la base n’est pas utilisée pendant 1 heure.
Mise en œuvre de fonctionnalités avancées
Capacités alimentées par l’IA
Retrieval-Augmented Generation (RAG)
// Knowledge base integration for contextual AI responses
backend.retrieveAndGenerateResponse.resources.lambda.addToRolePolicy(
new PolicyStatement({
actions: ["bedrock:Retrieve", "bedrock:RetrieveAndGenerate"],
resources: [`arn:aws:bedrock:*:*:knowledge-base/${knowledgeBaseId}`],
})
);Stratégie IA multi-modèles
- Claude 4.6 Haiku : génération de mots-clés et tâches légères
- Claude 4.6 Sonnet : réponses complexes RAG et analyse de documents et fonctionnalités avancées de chat et raisonnement
- Amazon Nova et Titan v2 : pour la véctorisation des données brutes
Mise en œuvre de la sécurité
Contrôle d’accès inter-comptes
const crossAccountPolicy = new PolicyDocument({
statements: [
new PolicyStatement({
actions: ["route53:ChangeResourceRecordSets"],
resources: [hostedZone.hostedZoneArn],
conditions: {
"ForAllValues:StringEquals": {
"route53:ChangeResourceRecordSetsActions": ["UPSERT", "DELETE"],
},
},
}),
],
});Gestion des secrets
new secretsManager.Secret(this, "SecretKey", {
secretName: "secret-key",
secretStringValue: SecretValue.unsafePlainText(props.secretKey),
});Intégration des paiements
// Gestion d'évenements Stripe avec EventBridge
new Payments(backend.createStack('payments'), 'payments', {
destinationId: env.STRIPE_EVENTBRIDGE_DESTINATION_ID,
graphqlApi: backend.data.resources.graphqlApi,
//…
});Stratégie de déploiement
Déploiements spécifiques à l’environnement
La configuration CDK s’adapte automatiquement en fonction des variables d’environnement :
// Configuration de l'environnement de la production
if (env.ENV === "prd") {
this.hostedZone = new PublicHostedZone(this, "HostedZone", {
zoneName: "domainname.com",
caaAmazon: true,
});
} else {
// Development configuration
this.hostedZone = new PublicHostedZone(this, "HostedZone", {
zoneName: `${env.ENV}.domainname.com`,
});
}Intégration CI/CD
AWS Amplify offre une CI/CD intégrée avec :
- Builds automatiques à chaque commit de code
- Déploiements spécifiques à chaque environnement
- Fonctionnalités de rollback
- Gestion des artefacts de build
Performance et supervision
Stack d’observabilité
// AWS X-Ray tracing pour les systèmes distribués
backend.data.resources.cfnResources.cfnGraphqlApi.xrayEnabled = true;
// AWS CloudWatch logging
const graphQlApiLogsRole = new Role(backend.data, 'GraphQlApiLogsRole', {
assumedBy: new ServicePrincipal('appsync.amazonaws.com'),
managedPolicies: [
ManagedPolicy.fromAwsManagedPolicyName('service-role/AWSAppSyncPushToCloudWatchLogs')
],
//…
});Protection des données
// Recouvrement Point-in-time pour toutes les tables AWS DynamoDB
Object.values(
backend.data.resources.cfnResources.amplifyDynamoDbTables
).forEach((tableConfig) => {
tableConfig.pointInTimeRecoveryEnabled = true;
});Résultats & impact business
Réalisations techniques
- 100 % serverless : aucune gestion de serveur nécessaire.
- Prêt multi-régions : architecture conçue pour une expansion mondiale.
- Scalabilité automatique : gère les pics de trafic sans intervention manuelle.
- Rentabilité : le modèle pay-per-use optimise les coûts opérationnels.
Vitesse de développement
- Prototypage rapide : déploiement de nouvelles fonctionnalités en quelques minutes, pas en heures.
- Environnements cohérents : les environnements de développement reproduisent fidèlement la production.
- Tests automatisés : les modifications d’infrastructure sont testées avant le déploiement.
- Collaboration d’équipe : les changements d’infrastructure sont revus comme le code applicatif.
Excellence opérationnelle
- Haute disponibilité : redondance intégrée au sein des zones de disponibilité (AZ) d’AWS.
- Reprise après sinistre : sauvegardes automatisées et récupération instantanée.
- Conformité sécuritaire : sécurité accrue sans frais supplémentaires.
- Supervision : observabilité complète avec une configuration minimale.
Enseignements tirés & bonnes pratiques
Bonnes pratiques CDK implémentées
- Paramétrage des environnements : utilisation de variables d’environnement pour gérer les différences de configuration.
- Tagging des ressources : mise en place d’une stratégie de tagging cohérente pour une allocation et une gestion précises des coûts.
- Sécurité par défaut : application du principe du moindre privilège dans toutes les politiques d’IAM.
- Conception modulaire : création de composants réutilisables pour les motifs courants.
Stratégie des services gérés par AWS
- Privilégier les services gérés plutôt que la gestion manuelle : choisir des services gérés par AWS pour réduire la charge opérationnelle.
- Exploiter l’intégration des services : utiliser les intégrations natives d’AWS pour une meilleure performance.
- Planifier la scalabilité : concevoir dès le départ avec des capacités d’auto-expansion.
- Surveiller tout : mettre en place une supervision et des alertes complètes.
Conclusion
Cette étude de cas illustre comment AWS CDK et les services managés AWS permettent aux organisations de créer des applications sophistiquées et alimentées par l’IA, sans la complexité traditionnelle liée à l’infrastructure. En traitant l’infrastructure comme du code et en choisissant les bons outils cloud, Nextnet a réussi à :
- Réduire le Time-to-Market : mise en place d'une infrastructure réduite de mois/semaines à jours/heures.
- Diminuer les coûts opérationnels : élimination de la gestion manuelle de l’infrastructure.
- Améliorer la fiabilité : l’exploitation des services managés éprouvés d’AWS.
- Renforcer la sécurité : fonctionnalités de sécurité professionnelles intégrées.
- Assurer une architecture scalable : prête pour une expansion mondiale et une croissance du trafic.
La combinaison d’AWS CDK pour la définition de l’infrastructure et des services managés AWS pour les capacités d’exécution offre une base solide pour le développement d’applications modernes. Les organisations souhaitant se développer sur AWS devraient fortement envisager cette approche, qui allie flexibilité, fiabilité et simplicité opérationnelle.
Envie de le construire aussi ?
Quelques conseils :
- Commencez directement avec le CDK : lancez vos projets d’infrastructure avec AWS CDK dès le premier jour.
- Adoptez les services gérés par AWS : privilégiez ces services plutôt que les solutions que vous devrez gérer vous-mêmes.
- Mettez en place une stratégie multi-environnement : prévoyez dès le départ les environnements de développement, de préproduction et de production.
- Investissez dans la supervision : instaurez une observabilité complète dès les premières phases du projet.
- Planifiez l’intégration de l’IA : Intégrez les capacités d’IA et de ML comme éléments essentiels de votre architecture.
Ce modèle d’architecture offre une feuille de route pour construire des applications modernes, scalables et maintenables sur AWS, tout en minimisant la complexité opérationnelle et en maximisant la rapidité de développement.
Cette étude de cas illustre une mise en œuvre concrète des meilleures pratiques AWS, démontrant la puissance de l’Infrastructure as Code, combinée aux services managés, pour bâtir des applications prêtes pour la production.

