
Résumé Exécutif
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 d'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 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-environnement (développement, préproduction, production) avec des configurations cohérentes et une isolation/partage des ressources.
- Fonctionnalités basées sur l’IA utilisant AWS Bedrock avec des capacités de génération augmentée par récupération (RAG).
- Modèle de sécurité inter-comptes avec délégation DNS automatisée pour la gestion automatisée des domaines et 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 connaissance basée sur l’IA la plus fiable au monde pour tous les aspects de la santé et du bien-être humain.
- 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é, avec la possibilité de passer facilement de l’un à l’autre.
- Gérer l’authentification, l’autorisation des utilisateurs et une logique complexe d’accès aux fonctionnalités.
- S’adapter à des variations de trafic et de 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 entreprise, en vue des futures exigences réglementaires 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 selon les 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 Infrastructuraux Principaux
1. Frontend et Hébergement
// AWS Amplify Gen 2 for serverless, distributed web hosting and more.
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 DNS avec délégation inter-comptes
- AWS Certificate Manager : Automatisation des certificats SSL/TLS
- Amazon CloudFront : Réseau de diffusion de contenu (CDN) mondial
- AWS CodeCommit : Gestion de version du code basée sur Git
2. Authentification et API
// AWS Cognito for user management, authentication and authorisation
const userPool = new UserPool(this, 'UserPool', {
customDomain: { domainName: `auth.${domain}` }
…
});
// AWS AppSync for a serverless GraphQL API
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 managée avec abonnements en temps réel
- 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 for RAG
const knowledgeBase = new KnowledgeBaseVector(this, "KnowledgeBase", {
id: env.KNOWLEDGE_BASE_ID,
executionRoleArn: env.KNOWLEDGE_BASE_EXECUTION_ROLE_ARN,
});
// AWS Lambda functions with AWS Bedrock integration
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 3.5 Haiku, Claude 3.7 Sonnet, Claude 4 Sonnet, Amazon Titan v2)
- AWS S3 : Stockage multimodal de documents
- Amazon Bedrock Knowledge Base : RAG (Retrieval-Augmented Generation)
- AWS RDS : Base de données vectorielle alimentée par pgVector
- AWS Amplify Gen 2 : Kit IA pour la logique conversationnelle agentique et générationnelle
4. Stockage et Gestion des Données
// AWS S3 buckets for different data types
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 pour fichiers, sources de la base de connaissances et sauvegardes
- Amazon DynamoDB : Base de données principale avec récupération à un instant donné (point-in-time recovery)
- Amplify Gen 2 : Stockage 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 :
// Production Account
const crossAccountDelegationRole = new Role(this, "CrossAccountRole", {
assumedBy: new AccountPrincipal("111111111111"),
roleName: "CrossAccountDelegationRoleCoreApplicationProduction",
});
// Development Account
const devDelegationRole = new Role(this, "DevDelegationRole", {
assumedBy: new AccountPrincipal("222222222222"),
roleName: "CrossAccountDelegationRoleCoreApplicationDevelopment",
});
Séparation des Environnements :
- Compte Production : Charge de travail complète en production avec déploiement depuis la branche principale
- Compte Développement : Environnement de développement avec authentification basique
- Compte Préproduction (Staging/Preview) : Pour une validation approfondie par le comité d’experts et conseillers du secteur
- Compte Racine (Root) : Gestion centralisée des domaines et des rôles IAM inter-comptes
Principaux Avantages de l’Implémentation AWS CDK
1. Avantages de l’Infrastructure en tant que Code
Reproductibilité : Chaque composant d’infrastructure est défini dans le code, garantissant des déploiements identiques à travers tous les environnements.
// Environment-specific configurations
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 sur tous les environnements.
Minimalisme : L’ensemble de la livraison est contenu dans un unique dépôt de code.
2. Avantages des Services Managés AWS
Gestion d’Infrastructure Nulle : En s’appuyant sur des services entièrement managés, 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 standards de l’industrie, avec un budget très serré.
Scalabilité Automatique : Des services comme 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 assure que les coûts évoluent directement en fonction de l’utilisation.
// DynamoDB with on-demand billing
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 activement des requêtes.
Parfois, il faut faire preuve de créativité en architecture de solution pour optimiser chaque centime de la facture AWS mensuelle. Mais dans une bonne équipe d’ingénierie, il est possible de fonctionner avec un budget très réduit. 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-Modeles
- Claude 3.5 Haiku : Génération de mots-clés et tâches légères
- Claude 3.7 Sonnet : Réponses complexes RAG et analyse de documents
- Claude 4 Sonnet : Fonctionnalités avancées de chat et raisonnement
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
// Stripe event processing with 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 :
// Production configuration
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 for distributed systems
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
// Point-in-time recovery for all AWS DynamoDB tables
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 déploiement.
- Collaboration d’Équipe : Les changements d’infrastructure sont revus comme le code applicatif.
Excellence Opérationnelle
- Haute Disponibilité : Redondance intégrée à travers les zones de disponibilité (AZ) AWS.
- Reprise après Sinistre : Sauvegardes automatisées et récupération à un instant donné.
- Conformité Sécuritaire : Sécurité de niveau entreprise sans charge supplémentaire.
- 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 gestion précise des coûts.
- Sécurité par Défaut : Application du principe du moindre privilège dans toutes les politiques IAM.
- Conception Modulaire : Création de composants réutilisables pour les motifs courants.
Stratégie des Services Managés AWS
- Privilégier les Services Managés plutôt que l’Auto-gestion : Choisir des services managés pour réduire la charge opérationnelle
- Exploiter l’Intégration des Services : Utiliser les intégrations natives AWS pour une meilleure performance
- Planifier la Scalabilité : Concevoir dès le départ avec des capacités d’auto-scaling
- 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 de 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 de l’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é : Exploitation des services managés éprouvés d’AWS.
- Renforcer la Sécurité : Fonctionnalités de sécurité intégrées de niveau entreprise.
- 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 par CDK : Lancez vos projets d’infrastructure avec AWS CDK dès le premier jour
- Adoptez les Services Managés : Privilégiez les services managés AWS plutôt que les solutions auto-gérées
- Mettez en Place une Stratégie Multi-Environnement : Prévoyez dès le départ les environnements développement, préproduction et production
- Investissez dans la Supervision : Implémentez une observabilité complète dès les premières phases du projet
- Planifiez l’Intégration de l’IA : Intégrez les capacités IA/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.
#case-study