
Короткий огляд
Nextnet — це компанія з Кремнієвої долини, що розробляє корпоративне AI-програмне забезпечення для індустрії наук про життя та охорони здоров'я як свого першого цільового ринку. Компанія успішно створила та розгорнула комплексну AI-платформу SaaS, використовуючи керовані сервіси AWS та інфраструктуру як код (IaC). Цей кейс демонструє, як AWS CDK та обґрунтований вибір сервісів AWS забезпечили швидку розробку, послідовні розгортання в кількох середовищах та безшовну інтеграцію передових AI-можливостей, зберігаючи при цьому безпеку та масштабованість корпоративного рівня, здатні витримати будь-який рівень технічної перевірки з боку провідних венчурних фондів.
Ключові результати:
- Безсерверна архітектура зі значно зниженими витратами на управління інфраструктурою.
- Розгортання в кількох середовищах (розробка, стейджинг, продакшн) з послідовними конфігураціями та ізоляцією/спільним використанням ресурсів.
- AI-функції на базі Amazon Bedrock із можливостями генерації з доповненням пошуком (RAG).
- Модель безпеки з крос-акаунтним доступом та автоматизованим делегуванням DNS для автоматичного управління доменами та піддоменами.
- Повна відтворюваність інфраструктури простим натисканням кнопки "Deploy".
- Сучасний та безпечний потік автентифікації без паролів на базі AWS Cognito та AWS Amplify Gen 2.
Огляд проєкту
Бізнес-виклик
Nextnet прагне:
- Стати найнадійнішою у світі AI-платформою знань з усіх аспектів здоров'я та благополуччя людини.
- Забезпечити AI-чат та можливості пошуку, а також повністю інтерактивний графовий аналіз зв'язків, заснований на реальних наукових доказах.
- Миттєві результати попри петабайти поглинутих структурованих, напівструктурованих та неструктурованих мультимодальних даних.
- Надати науковцям не лише розмовний інтерфейс, а й імерсивний інструмент дослідження у формі густо взаємопов'язаного графа знань, а також можливість безшовно перемикатися між ними.
- Забезпечити автентифікацію, авторизацію користувачів та складну матрицю логіки доступу до функцій.
- Обробляти змінні патерни трафіку та використання.
- Підтримувати ізольовані ідентичні середовища для швидкої ітерації, наукової валідації обраною радою ключових лідерів думок галузі та гарантії стійких, відмовостійких продакшн-навантажень.
- Забезпечити безпеку та відповідність корпоративного рівня в підготовці до майбутніх перевірок відповідності в США та Європі.
Архітектура рішення
Рішення використовує стеки керованих сервісів AWS, повністю оркестровані через AWS CDK, що усуває потребу в ручному розгортанні інфраструктури та забезпечує послідовні, повторювані розгортання, які також валідуються відповідно до принципів AWS Well-Architected під час збірки.
Технічна архітектура
Примітка: Представлені фрагменти коду є анонімізованими витягами з IaC-поставки. Фронтенд-код був опущений.
Основні компоненти інфраструктури
1. Фронтенд та хостинг
// AWS Amplify Gen 2 для безсерверного, розподіленого вебхостингу та іншого.
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 та покращеним DX (Developer Experience)
- 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 Cognito для керування користувачами, автентифікації та авторизації
const api = new GraphqlApi(this, 'Api', {
authorizationConfig: {
defaultAuthorization: { authorizationType: AuthorizationType.USER_POOL }
}
…
});Використані сервіси AWS:
- AWS Cognito: Автентифікація та авторизація користувачів
- AWS AppSync: Керований GraphQL API з підписками в реальному часі
- AWS DynamoDB: NoSQL-база даних з автоматичним масштабуванням
- AWS OpenSearch: Повнотекстовий пошуковий рушій зі зворотним індексом.
- AWS Amplify Gen 2: Частини фреймворку 'auth' та 'data'.
3. Інтеграція AI/ML
// AWS Bedrock Knowledge Base для 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}`],
})) Використані сервіси AWS:
- Amazon Bedrock: Базові моделі (Claude 4.6 Haiku, Claude 4.6 Sonnet, Amazon Nova та Titan v2)
- AWS S3: Для мультимодального сховища документів
- Amazon Bedrock Knowledge Base: RAG
- AWS RDS: Векторна база даних на основі pgVector
- AWS Amplify Gen 2: AI Kit для агентної розмовної та генеративної логіки
4. Зберігання та управління даними
// Бакети AWS S3 для різних типів даних
const storage = defineStorage({
name: "storage",
access: (allow) => ({
"profile-pictures/*": [allow.authenticated.to(["read", "write"])],
"knowledge-base-sources/*": [allow.authenticated.to(["read"])],
}),
});Використані сервіси AWS:
- Amazon S3: Об'єктне сховище для файлів, джерел бази знань та резервних копій
- Amazon DynamoDB: Основна база даних з відновленням на момент часу
- Amplify Gen 2: Для хмарного CDN-сховища статичних ресурсів з інтеграцією автентифікації
Мультисередовищна архітектура
Крос-акаунтна стратегія
Рішення реалізує складну мульти-акаунтну стратегію:
// Продакшн-акаунт
const crossAccountDelegationRole = new Role(this, "CrossAccountRole", {
assumedBy: new AccountPrincipal("111111111111"),
roleName: "CrossAccountDelegationRoleCoreApplicationProduction",
});
// Акаунт для розробки
const devDelegationRole = new Role(this, "DevDelegationRole", {
assumedBy: new AccountPrincipal("222222222222"),
roleName: "CrossAccountDelegationRoleCoreApplicationDevelopment",
});Розділення середовищ:
- Продакшн-акаунт: Повне продакшн-навантаження з розгортанням з гілки main
- Акаунт розробки: Середовище розробки з базовою автентифікацією
- Стейджинг (Preview) акаунт: Для ретельної валідації обраною радою фахівців та консультантів галузі
- Кореневий акаунт: Централізоване управління доменами та крос-акаунтні IAM-ролі
Ключові переваги впровадження AWS CDK
1. Переваги інфраструктури як коду
Відтворюваність: Кожен компонент інфраструктури визначений у коді, що забезпечує ідентичні розгортання в усіх середовищах.
// Конфігурації, специфічні для середовища
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)),
…
});
}Контроль версій: Усі зміни інфраструктури відстежуються, перевіряються та затверджуються через стандартні робочі процеси розробки.
Послідовність: CDK забезпечує послідовне іменування ресурсів, тегування та конфігурацію в усіх середовищах.
Мінімалізм: Уся поставка міститься в одному репозиторії коду.
2. Переваги керованих сервісів AWS
Нульове управління інфраструктурою: Використовуючи повністю керовані сервіси, команда усунула:
- Розгортання та обслуговування серверів
- Адміністрування баз даних
- Оновлення безпеки
- Планування потужностей
- Управління резервними копіями
Найважливіше — це дозволило забезпечити функціональність галузевого стандарту за дуже обмеженого бюджету та у стислі терміни.
Автоматичне масштабування: Такі сервіси, як DynamoDB, Lambda та Amplify, автоматично масштабуються відповідно до попиту, усуваючи потребу в ручному втручанні.
Вбудована безпека: Завдяки моделі спільної відповідальності AWS керовані сервіси забезпечують функції безпеки корпоративного рівня з коробки:
- Шифрування в стані спокою та при передачі
- Інтеграція з IAM
- Ізоляція VPC за потреби
- Відповідність для сертифікацій
3. Оптимізація витрат
Модель оплати за використання: Безсерверна архітектура забезпечує пряму залежність витрат від обсягу використання.
// DynamoDB з оплатою on-demand
const table = new Table(this, "Table", {
billingMode: BillingMode.PAY_PER_REQUEST,
pointInTimeRecovery: true,
});Відсутність простоюючих ресурсів: Lambda-функції та інші безсерверні сервіси генерують витрати лише під час активної обробки запитів.
Іноді потрібна певна креативність архітектора рішень, щоб вичавити кожну копійку з місячного рахунку AWS. Але якщо ви в хорошій інженерній компанії, можна працювати з дуже низьким рівнем витрат. Наприклад, дозволити розробникам створювати та видаляти базу даних за запитом, надіславши повідомлення в Slack. Автоматично знищувати базу даних після 1 години неактивності.
Реалізація розширених функцій
AI-можливості
Генерація з доповненням пошуком (RAG)
// Інтеграція бази знань для контекстних відповідей ШІ
backend.retrieveAndGenerateResponse.resources.lambda.addToRolePolicy(
new PolicyStatement({
actions: ["bedrock:Retrieve", "bedrock:RetrieveAndGenerate"],
resources: [`arn:aws:bedrock:*:*:knowledge-base/${knowledgeBaseId}`],
})
);Мультимодельна AI-стратегія
- Claude 4.6 Haiku: Генерація ключових слів та легкі задачі
- Claude 4.6 Sonnet: Складні RAG-відповіді, аналіз документів та розширена функціональність чату й міркування
- Amazon Nova та Titan v2: Ембедінги та векторизація
Реалізація безпеки
Крос-акаунтний контроль доступу
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 за допомогою EventBridge
new Payments(backend.createStack('payments'), 'payments', {
destinationId: env.STRIPE_EVENTBRIDGE_DESTINATION_ID,
graphqlApi: backend.data.resources.graphqlApi,
…
});Стратегія розгортання
Розгортання для конкретних середовищ
Конфігурація CDK автоматично адаптується на основі змінних середовища:
// Продакшн-конфігурація
if (env.ENV === "prd") {
this.hostedZone = new PublicHostedZone(this, "HostedZone", {
zoneName: "domainname.com",
caaAmazon: true,
});
} else {
// Конфігурація для розробки
this.hostedZone = new PublicHostedZone(this, "HostedZone", {
zoneName: `${env.ENV}.domainname.com`,
});
}Інтеграція CI/CD
AWS Amplify забезпечує вбудований CI/CD з:
- Автоматичні збірки при комітах коду
- Розгортання для конкретних середовищ
- Можливості відкату
- Управління артефактами збірки
Продуктивність та моніторинг
Стек спостережуваності
// AWS X-Ray tracing для розподілених систем
backend.data.resources.cfnResources.cfnGraphqlApi.xrayEnabled = true;
// AWS CloudWatch логування
const graphQlApiLogsRole = new Role(backend.data, 'GraphQlApiLogsRole', {
assumedBy: new ServicePrincipal('appsync.amazonaws.com'),
managedPolicies: [
ManagedPolicy.fromAwsManagedPolicyName('service-role/AWSAppSyncPushToCloudWatchLogs')
],
…
});Захист даних
// Відновлення на певний момент часу для всіх таблиць AWS DynamoDB
Object.values(
backend.data.resources.cfnResources.amplifyDynamoDbTables
).forEach((tableConfig) => {
tableConfig.pointInTimeRecoveryEnabled = true;
});Результати та бізнес-вплив
Технічні досягнення
- 100% безсерверна: Нульові витрати на управління серверами.
- Готовність до мультирегіонального розгортання: Архітектура підтримує глобальне розширення.
- Автомасштабування: Обробка сплесків трафіку без ручного втручання.
- Економічна ефективність: Модель оплати за використання оптимізує операційні витрати.
Швидкість розробки
- Швидке прототипування: Нові функції розгортаються за хвилини, а не за години.
- Послідовні середовища: Середовища розробки дзеркально відтворюють продакшн-середовище.
- Автоматизоване тестування: Зміни інфраструктури тестувалися перед розгортанням.
- Командна співпраця: Зміни інфраструктури перевіряються так само, як код додатку.
Операційна досконалість
- Висока доступність: Вбудована надлишковість у зонах доступності AWS (AZ).
- Аварійне відновлення: Автоматизоване резервне копіювання та відновлення на момент часу.
- Відповідність безпеки: Безпека корпоративного рівня без додаткових витрат.
- Моніторинг: Комплексна спостережуваність з мінімальною конфігурацією.
Отримані уроки та найкращі практики
Впроваджені найкращі практики CDK
- Параметризація середовищ: Використання змінних середовища для відмінностей конфігурації.
- Тегування ресурсів: Впровадження послідовної стратегії тегування для точного розподілу витрат та управління.
- Безпека за замовчуванням: Принцип найменших привілеїв у всіх IAM-політиках.
- Модульний дизайн: Повторно використовувані конструкти для типових патернів.
Стратегія керованих сервісів AWS
- Перевага керованим над самокерованими: Вибір керованих сервісів для зниження операційних витрат
- Використання інтеграції сервісів: Використання нативних інтеграцій сервісів AWS для кращої продуктивності
- Планування масштабування: Проєктування з можливостями автомасштабування з першого дня
- Моніторинг усього: Впровадження комплексного моніторингу та оповіщення
Висновок
Цей кейс демонструє, як AWS CDK та керовані сервіси AWS дозволяють організаціям створювати складні AI-додатки без традиційної складності інфраструктури. Розглядаючи інфраструктуру як код та обираючи правильні хмарні інструменти, Nextnet досягнув:
- Швидший вихід на ринок: Скорочення налаштування інфраструктури з місяців/тижнів до днів/годин.
- Нижчі операційні витрати: Усунення витрат на управління інфраструктурою.
- Підвищена надійність: Використання перевірених керованих сервісів AWS.
- Покращена безпека: Вбудовані функції безпеки корпоративного рівня.
- Масштабована архітектура: Готовність до глобального розширення та зростання трафіку.
Поєднання AWS CDK для визначення інфраструктури та керованих сервісів AWS для runtime-можливостей забезпечує надійну основу для сучасної розробки додатків. Організаціям, які планують будувати на AWS, варто серйозно розглянути цей підхід за його баланс гнучкості, надійності та операційної простоти.
Хочете побудувати таке ж?
Кілька порад:
- Почніть з CDK: Починайте інфраструктурні проєкти з AWS CDK з першого дня
- Обирайте керовані сервіси: Надавайте перевагу керованим сервісам AWS над самокерованими альтернативами
- Впроваджуйте мультисередовищну стратегію: Плануйте середовища розробки, стейджингу та продакшну з самого початку
- Інвестуйте в моніторинг: Впроваджуйте комплексну спостережуваність на ранніх етапах проєкту
- Плануйте AI-інтеграцію: Розглядайте AI/ML-можливості як першокласних учасників вашої архітектури
Цей архітектурний патерн надає план для створення сучасних, масштабованих та підтримуваних додатків на AWS, мінімізуючи операційну складність та максимізуючи швидкість розробки.
Цей кейс представляє реальне впровадження найкращих практик AWS, демонструючи потужність інфраструктури як коду в поєднанні з керованими сервісами для створення додатків, готових до продакшну.
#case-study


