1. 0.1Главная
  2. 0.2О нас
  3. 0.3Сервисы
  4. 0.4Тематические исследования
  5. 0.5Блог
  6. 0.6Контакт

Построение платформы AI SaaS для здравоохранения и наук о жизни с использованием AWS CDK: кейс компании Nextnet


nextnet

Краткое содержание

Nextnet — компания из Кремниевой долины, разрабатывающая корпоративное программное обеспечение на базе ИИ, с фокусом на рынок здравоохранения и наук о жизни. Компания успешно создала и развернула комплексную платформу SaaS с поддержкой искусственного интеллекта, используя управляемые сервисы AWS и подход Infrastructure as Code (IaC). Этот кейс показывает, как AWS CDK и грамотный выбор сервисов AWS позволили достичь высокой скорости разработки, стабильного развертывания в разных средах и интеграции современных возможностей ИИ при сохранении корпоративной безопасности и масштабируемости, соответствующих проверкам уровня венчурных инвесторов.

Ключевые результаты:

  • Безсерверная архитектура с минимальными затратами на управление инфраструктурой.
  • Развертывание в нескольких средах (разработка, стейджинг, продакшн) с единообразной конфигурацией и управлением изоляцией/совместным использованием ресурсов.
  • Возможности на базе ИИ с использованием AWS Bedrock и Retrieval-Augmented Generation (RAG).
  • Межаккаунтная модель безопасности с автоматической делегацией DNS.
  • Полная воспроизводимость инфраструктуры нажатием одной кнопки «Deploy».
  • Современная и безопасная аутентификация без пароля на базе AWS Cognito и AWS Amplify Gen 2.

Обзор проекта

Бизнес-задача

Nextnet стремится:

  • Стать самым надёжным AI-платформенным источником знаний по здоровью и благополучию человека.
  • Предоставить возможности чата и поиска с ИИ, а также полностью интерактивный граф взаимосвязей, основанный на научных данных.
  • Обеспечить мгновенные ответы при обработке петабайтов структурированных, полуструктурированных и неструктурированных мультимодальных данных.
  • Предложить учёным не только диалоговый интерфейс, но и визуальный инструмент для исследования знаний в форме связанного графа.
  • Обрабатывать аутентификацию, авторизацию и матрицу доступа к функциям.
  • Учитывать переменную нагрузку и динамические паттерны использования.
  • Поддерживать сегментированные идентичные среды для итераций, научной валидации и отказоустойчивости.
  • Обеспечить корпоративную безопасность и соответствие нормативам США и Европы.

Архитектура решения

Решение полностью построено на управляемых сервисах AWS и оркестрировано через AWS CDK, что исключает необходимость ручного развертывания и обеспечивает согласованность конфигураций, валидируемых на этапе сборки по принципам AWS Well-Architected.

Техническая архитектура

Примечание: приведённые фрагменты — анонимизированные отрывки кода инфраструктуры. Фронтенд-часть опущена.

Основные компоненты инфраструктуры

1. Фронтенд и хостинг

// 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], … });

Используемые сервисы AWS:

  • AWS Amplify Gen 2 — CI/CD и серверлесс-хостинг
  • Amazon Route53 — DNS-управление с межаккаунтной делегацией
  • AWS Certificate Manager — автоматизация SSL/TLS-сертификатов
  • Amazon CloudFront — глобальная доставка контента
  • AWS CodeCommit — система контроля версий на Git

2. Аутентификация и 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 } } … });

Сервисы:

  • AWS Cognito — аутентификация и авторизация пользователей
  • AWS AppSync — управляемый GraphQL API с подписками в реальном времени
  • AWS DynamoDB — масштабируемая NoSQL-база данных
  • AWS OpenSearch — полнотекстовый поиск
  • AWS Amplify Gen 2 — модуль «auth» и «data»

3. Интеграция AI/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}`], }) );

Сервисы:

  • Amazon Bedrock — модели Claude и Amazon Titan
  • Amazon S3 — мультимодальное хранилище
  • Amazon Bedrock Knowledge Base — реализация RAG
  • AWS RDS — pgVector векторная база данных
  • AWS Amplify Gen 2 — AI Kit с генеративной логикой

4. Хранение и управление данными

// 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"])], }), });

Сервисы:

  • Amazon S3 — для хранения файлов, резервных копий и источников знаний
  • Amazon DynamoDB — с точкой восстановления
  • AWS Amplify Gen 2 — для хранения и доступа через CDN

Многоуровневая архитектура

Cross-Account стратегия

Решение реализует сложную стратегию с несколькими аккаунтами:

// 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", });

Разделение сред:

  • Продакшн — основная рабочая нагрузка
  • Разработка — с базовой авторизацией
  • Стейджинг — для валидации индустриальными экспертами
  • Root Account — управление доменами и IAM

Преимущества AWS CDK

1. Преимущества IaC

Воспроизводимость: Каждый компонент инфраструктуры описан в коде, что обеспечивает идентичное развертывание во всех средах.

// 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)), … }); }

Контроль версий: все изменения отслеживаются в Git

Последовательность: единые имена, теги, настройки

Минимализм: один репозиторий содержит всё

2. Преимущества управляемых сервисов

Отсутствие необходимости в управлении инфраструктурой: Используя полностью управляемые сервисы, команда исключила необходимость в:

  • Подготовке и обслуживании серверов
  • Администрировании баз данных
  • Установке обновлений безопасности
  • Планировании ресурсов
  • Управлении резервным копированием

И самое главное — удалось предоставить функциональность на уровне отраслевых стандартов при минимальном бюджете и в кратчайшие сроки.

Автоматическое масштабирование: Сервисы вроде DynamoDB, Lambda и Amplify автоматически масштабируются в зависимости от нагрузки, устраняя необходимость в ручном вмешательстве.

Встроенная безопасность: Благодаря модели разделения ответственности AWS, управляемые сервисы обеспечивают безопасность корпоративного уровня "из коробки":

  • Шифрование в состоянии покоя и при передаче
  • Интеграция с IAM
  • Изоляция в VPC при необходимости
  • Соответствие требованиям сертификаций

3. Оптимизация затрат

Модель оплаты по мере использования: Безсерверная архитектура обеспечивает масштабирование затрат в прямой зависимости от объема использования.

// DynamoDB with on-demand billing const table = new Table(this, "Table", { billingMode: BillingMode.PAY_PER_REQUEST, pointInTimeRecovery: true, });

Отсутствие простаивающих ресурсов: Функции Lambda и другие безсерверные сервисы требуют оплаты только при активной обработке запросов.

Иногда для оптимизации каждой копейки из ежемесячного счета AWS требуется креативность в архитектуре решения. Но если вы работаете в хорошей инженерной компании, можно поддерживать очень низкий уровень затрат. Например, позволить разработчикам создавать и удалять базу данных по запросу через Slack-сообщение. Автоматически удалять базу данных, если она не используется в течение 1 часа.

Расширенные возможности

Возможности ИИ

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}`], }) );

Мультимодельная стратегия

  • Claude 3.5 Haiku — генерация ключевых слов
  • Claude 3.7 Sonnet — анализ и RAG
  • Claude 4 Sonnet — чат и логика

Безопасность

Межаккаунтный доступ

const crossAccountPolicy = new PolicyDocument({ statements: [ new PolicyStatement({ actions: ["route53:ChangeResourceRecordSets"], resources: [hostedZone.hostedZoneArn], conditions: { "ForAllValues:StringEquals": { "route53:ChangeResourceRecordSetsActions": ["UPSERT", "DELETE"], }, }, }), ], });

Управление секретами

new secretsManager.Secret(this, "SecretKey", { secretName: "secret-key", secretStringValue: SecretValue.unsafePlainText(props.secretKey), });

Интеграция платежей

// Stripe event processing with EventBridge new Payments(backend.createStack('payments'), 'payments', { destinationId: env.STRIPE_EVENTBRIDGE_DESTINATION_ID, graphqlApi: backend.data.resources.graphqlApi, … });

Стратегия развертывания

Разделение по средам

Конфигурация CDK автоматически адаптируется в зависимости от переменных окружения:

// 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`, }); }

Интеграция CI/CD

Amplify поддерживает:

  • Автоматические билды при пуше в Git
  • Развертывания по средам
  • Откаты
  • Хранение артефактов сборки

Производительность и мониторинг

Стек наблюдаемости

// 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') ], … });

Защита данных

// Point-in-time recovery for all AWS DynamoDB tables Object.values( backend.data.resources.cfnResources.amplifyDynamoDbTables ).forEach((tableConfig) => { tableConfig.pointInTimeRecoveryEnabled = true; });

Результаты и влияние на бизнес

Технические достижения

  • 100% Безсерверное решение: Отсутствие нагрузки на управление серверами.
  • Готовность к мульти-регионам: Архитектура поддерживает глобальное расширение.
  • Автоматическое масштабирование: Обрабатывает резкие всплески трафика без ручного вмешательства.
  • Экономичность: Модель оплаты по мере использования оптимизирует операционные расходы.

Скорость разработки

  • Быстрое прототипирование: Новые функции разворачиваются за минуты, а не часы.
  • Единообразие сред: Среды разработки полностью соответствуют продакшену.
  • Автоматизированное тестирование: Изменения инфраструктуры тестировались перед развертыванием.
  • Командное взаимодействие: Изменения инфраструктуры проходят ревью, как и код приложения.

Операционное совершенство

  • Высокая доступность: Встроенное резервирование по зонам доступности AWS (AZ).
  • Восстановление после сбоев: Автоматические резервные копии и восстановление до определенного момента времени.
  • Соответствие требованиям безопасности: Безопасность корпоративного уровня без дополнительной нагрузки.
  • Мониторинг: Полный обзор состояния с минимальной настройкой.

Уроки и лучшие практики

Реализованные лучшие практики CDK

  • Параметризация окружения: Использование переменных окружения для различий в конфигурации.
  • Тегирование ресурсов: Внедрение единой стратегии тегирования для точного распределения затрат и управления.
  • Безопасность по умолчанию: Принцип минимальных привилегий во всех политиках IAM.
  • Модульный дизайн: Переиспользуемые конструкции для общих шаблонов.

Стратегия использования управляемых сервисов AWS

  • Отдавать предпочтение управляемым сервисам, а не самостоятельному управлению: Выбирать управляемые сервисы для снижения операционных затрат.
  • Использовать интеграцию сервисов: Применять нативные интеграции AWS для повышения производительности.
  • Планировать масштабируемость: Проектировать с учётом возможностей авто-масштабирования с самого начала.
  • Мониторить всё: Реализовать комплексный мониторинг и систему оповещений.

Заключение

Это кейс-стади демонстрирует, как AWS CDK и управляемые сервисы AWS позволяют организациям создавать сложные приложения с ИИ без традиционной инфраструктурной сложности. Используя подход инфраструктуры как кода и выбирая правильные облачные инструменты, Nextnet достиг:

  • Быстрого выхода на рынок: Сократил время настройки инфраструктуры с месяцев/недель до дней/часов.
  • Сниженных операционных затрат: Исключил нагрузку по управлению инфраструктурой.
  • Повышенной надежности: Использовал проверенные управляемые сервисы AWS.
  • Улучшенной безопасности: Встроенные функции безопасности корпоративного уровня.
  • Масштабируемой архитектуры: Готовность к глобальному расширению и росту трафика.

Сочетание AWS CDK для определения инфраструктуры и управляемых сервисов AWS для выполнения обеспечивает надежную основу для современного развития приложений. Организациям, планирующим строить решения на AWS, настоятельно рекомендуется рассмотреть этот подход за его баланс гибкости, надежности и простоты эксплуатации.

Хотите построить такое же?

Несколько советов:

  • Начинайте с CDK: Запускайте инфраструктурные проекты с AWS CDK с первого дня.
  • Используйте управляемые сервисы: Предпочитайте управляемые сервисы AWS самостоятельному управлению.
  • Реализуйте стратегию мульти-сред: Планируйте разработку, staging и продакшен с самого начала.
  • Вкладывайтесь в мониторинг: Настройте полный обзор и мониторинг на ранних этапах проекта.
  • Планируйте интеграцию ИИ: Рассматривайте возможности AI/ML как важный элемент архитектуры.

Этот архитектурный шаблон предоставляет дорожную карту для создания современных, масштабируемых и легко поддерживаемых приложений на AWS, минимизируя операционную сложность и максимизируя скорость разработки.

Этот кейс — реальный пример применения лучших практик AWS при разработке готовых к продакшн решений с помощью IaC и управляемых сервисов.

#тематическое-исследование


Больше статей


Контакт

Главное управление
Tone Singleton SPR
6, Rue Henri Werriestr.
1090 Brussels
Belgium
Tone Singleton Ptd Ltd
60 Paya Lebar Road #07-54
Paya Lebar Square
409051 Singapore


  • LinkedIn
Условия и положенияPrivacy Policy