
Краткое содержание
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 и управляемых сервисов.
#case-study