Інтеграція AWS Lambda для серверної логіки мобільного додатку

Коли серверна логіка мобільного застосунку залишається на клієнті, це відкриває шлях для підробки платежів та вразливостей. Ми розробляємо інтеграцію AWS Lambda, яка переносить критичні операції — верифікацію покупок, авторизацію та обробку даних — на захищений serverless-бекенд. Наша команда реалізує проєкт під ключ: від проєктування архітектури до впровадження та подальшої підтримки, забезпечуючи надійну роботу без зриву термінів.

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1734 послуг
Інтеграція AWS Lambda для серверної логіки мобільного додатку
Середній
~3-5 днів
Часті запитання

Чому AWS Lambda для серверної логіки мобільного додатку?

Уявіть: ваш додаток обробляє 1000 покупок на хвилину. Клієнт підтверджує транзакцію — потрібно перевірити її справжність в App Store. На клієнті цього не зробити — зловмисник підмінить відповідь. Ось чому серверна логіка на AWS Lambda для мобільного додатку критична. Без серверної валідації зловмисник може підробити відповідь і отримати контент безкоштовно. AWS Lambda вирішує це завдання: функція перевіряє чек в Apple або Google, записує результат в DynamoDB і повертає статус клієнту. Все це без управління серверами й з автоматичним масштабуванням під пікові навантаження.

AWS Lambda — serverless-функції, які виконуються на запит і не потребують управління серверами. Ми використовуємо Lambda для завдань, які не можна винести на клієнт: верифікація платежів, генерація підписаних URL для S3, push-сповіщення через APNs/FCM, обробка вебхуків від Stripe або Apple IAP, важкі обчислення. На відміну від традиційного сервера, Lambda масштабується автоматично під навантаження, і ви платите тільки за фактичний час виконання.

Архітектура мобільний клієнт → Lambda

Мобільний додаток викликає Lambda через один зі шляхів:

  • API Gateway + Lambda — найпоширеніший. REST або HTTP API Gateway приймає запит, проксує в Lambda. Lambda відповідає — Gateway віддає клієнту. Авторизація через Cognito JWT Authorizer або IAM.
  • AppSync + Lambda resolver — для GraphQL. Lambda виступає resolver-ом для конкретних полів схеми.
  • Lambda Function URL — прямий HTTPS-ендпоінт для функції без API Gateway. Дешевше й простіше, але менше можливостей (немає throttling, немає кастомних доменів без CloudFront).

Порівняння варіантів виклику Lambda

Критерій API Gateway + Lambda Function URL
Складність налаштування Середня Низька
Авторизація Cognito, JWT, IAM IAM, Lambda URL auth
Throttling Вбудований Немає
Кастомний домен Так (через CloudFront) Тільки через CloudFront
Вартість Запити + трафік Тільки виклики Lambda

Як зменшити холодний старт?

Cold start — головний виклик Lambda для мобільних клієнтів. На Node.js 20.x з SnapStart затримка становить 200–400 мс. Для Java без SnapStart — 1–3 секунди. Ми застосовуємо мітигації:

  • Provisioned Concurrency — розігріті екземпляри, але плата за простій
  • AWS Lambda SnapStart (Java) — snapshot ініціалізації
  • Мінімізація залежностей: aws-sdk v3 з модульними імпортами замість всього SDK
  • Вибір runtime: Node.js або Python для latency-чутливих функцій

Порівняння cold start по runtime

Runtime Без SnapStart З SnapStart
Node.js 20.x 200–400 мс —
Python 3.12 300–500 мс —
Java 21 1–3 с 150–300 мс
.NET 8 800–1500 мс 400–800 мс

Приклад оптимізації імпортів:

// Погано: імпортуємо весь SDK
import AWS from 'aws-sdk';

// Добре: тільки потрібний клієнт
import { DynamoDBClient, PutItemCommand } from '@aws-sdk/client-dynamodb';

Розмір бандла: 30 MB проти 150 KB. Різниця в cold start суттєва.

Практичний приклад: верифікація Apple IAP

Валідацію покупок App Store не можна робити на клієнті — чек легко підробити. Згідно з Apple Receipt Verification Guide, сервер надсилає receipt-data на verifyReceipt endpoint. Lambda:

// handler.mjs (Node.js 20.x)
import { AppleVerifyReceiptResponse } from './types.js';

export const handler = async (event) => {
  const { receiptData, userId } = JSON.parse(event.body);
  const verifyUrl = process.env.APPLE_ENV === 'production' ? 'https://buy.itunes.apple.com/verifyReceipt' : 'https://sandbox.itunes.apple.com/verifyReceipt';
  const response = await fetch(verifyUrl, {
    method: 'POST',
    body: JSON.stringify({
      'receipt-data': receiptData,
      password: process.env.APPLE_SHARED_SECRET,
      'exclude-old-transactions': true,
    }),
  });
  const data = await response.json();
  if (data.status !== 0) {
    return {
      statusCode: 400,
      body: JSON.stringify({ error: 'Invalid receipt' })
    };
  }
  // Зберігаємо purchase в DynamoDB
  await savePurchase(userId, data.latest_receipt_info);
  return {
    statusCode: 200,
    body: JSON.stringify({ success: true })
  };
};

Секрети (APPLE_SHARED_SECRET) — в AWS Secrets Manager або Parameter Store, не в змінних оточення напряму (вони видимі в логах при необережності). Якщо вам потрібна подібна інтеграція — зв'яжіться з нами, ми допоможемо реалізувати її під ваш стек.

Стек для Infrastructure as Code

Lambda через CDK або Terraform — обов'язковий етап для продакшену. Ми використовуємо AWS CDK на TypeScript:

Розгорнутий приклад CDK-стеку
// AWS CDK (TypeScript)
const verifyPurchaseFn = new NodejsFunction(this, 'VerifyPurchase', {
  entry: 'src/functions/verify-purchase/handler.ts',
  runtime: Runtime.NODEJS_20_X,
  timeout: Duration.seconds(10),
  memorySize: 256,
  environment: {
    APPLE_ENV: 'production',
  },
  bundling: {
    minify: true,
    sourceMap: true,
  },
});

const api = new RestApi(this, 'MobileApi');
api.root.addResource('purchase').addResource('verify')
  .addMethod('POST', new LambdaIntegration(verifyPurchaseFn), {
    authorizer: cognitoAuthorizer,
  });

CDK збирає і бандлить TypeScript-функції через esbuild, деплоїть через CloudFormation.

Процес інтеграції

  1. Аналітика: визначаємо серверні функції (верифікація, сповіщення, webhook)
  2. Проєктування: архітектура API, вибір runtime, налаштування IAM
  3. Реалізація: розробка Lambda, інтеграція з мобільним SDK
  4. Тестування: unit-тести, навантажувальні тести, перевірка cold start
  5. Деплой: IaC, налаштування оточень dev/staging/prod
  6. Моніторинг: CloudWatch Logs, X-Ray трейсинг

Що входить в інтеграцію

  • Налаштування Lambda функцій під конкретну серверну логіку
  • API Gateway або Function URL з авторизацією
  • IaC через CDK або Terraform
  • Налаштування оточень (dev/staging/prod)
  • Моніторинг через CloudWatch + X-Ray трейсинг
  • Інтеграція з мобільним клієнтом (SDK або fetch)

Терміни орієнтовно

Одна Lambda-функція з API Gateway: 1–2 дні. Повний serverless-бекенд (5–10 функцій + DynamoDB + Auth): 1–3 тижні. Вартість розраховується індивідуально в залежності від об'єму. При цьому використання Lambda дозволяє економити на інфраструктурі до 60% порівняно з традиційним сервером.

Отримайте консультацію

Якщо вам потрібна надійна серверна логіка для мобільного додатку — зв'яжіться з нами для оцінки проєкту та замовте аудит поточного бекенду. Наш багаторічний досвід у мобільній розробці та сотні реалізованих serverless-рішень гарантують якість і дотримання термінів.

Наші компетенції:

Останні роботи

  • Розробка мобільного додатка для компанії FEEDME
    Розробка мобільного додатка для компанії FEEDME
    1009
  • Розробка мобільного додатку для компанії XOOMER
    Розробка мобільного додатку для компанії XOOMER
    902
  • Розробка мобільного додатку для компанії RHL
    Розробка мобільного додатку для компанії RHL
    1331
  • Розробка мобільного додатку для компанії ZIPPY
    Розробка мобільного додатку для компанії ZIPPY
    1179
  • Розробка мобільного додатку для компанії Affhome
    Розробка мобільного додатку для компанії Affhome
    1106
  • Розробка мобільного додатку для компанії FLAVORS
    Розробка мобільного додатку для компанії FLAVORS
    713