Оптимізація продуктивності й ресурсів

Розгортання застосунків в AWS

Dunieski Otano

Amazon Web Services Solutions Architect

Повільно й дорого

  • Додаток гальмує під час піків трафіку
  • Рахунок за Lambda зростає в той самий місяць
  • Налаштування робить його швидшим і дешевшим

Індикатор швидкості й вартості: функція і повільна, і дорога, стрілка вказує на оптимізацію

Розгортання застосунків в AWS

Concurrency: вартість vs cold start


Reserved: ліміт і захист

  • Обмежує та гарантує потужність для функції
  • Найдешевший контроль, але не усуває cold start

Provisioned: платіть за «тепло»

  • Тримає інстанси підігрітими, тож немає cold start
  • Дорожче; вмикайте лише там, де критична затримка
Розгортання застосунків в AWS

Добір обсягу пам'яті за кривою «тривалість–вартість»

Крива тривалості й вартості зі зростанням пам'яті: тривалість падає й вирівнюється, загальна вартість утворює U з позначеним оптимумом

  • Більше пам'яті = більше CPU = менша тривалість
  • Вартість = ціна пам'яті × тривалість
  • Найдешевша точка часто посередині
  • Профілюйте на кількох розмірах і оберіть
Розгортання застосунків в AWS

Кешування на рівні застосунку

  • Повторно використовуйте роботу в execution context
  • Тепла Lambda зберігає глобальні змінні між викликами
  • Кешуйте конфіг, клієнти та «гарячі» пошуки
  • ElastiCache для спільного кешу між інстансами

Кешування в контексті виконання Lambda: глобальний клієнт повторно використовують у теплих викликах; кластер ElastiCache ділиться гарячими даними між інстансами функції

Розгортання застосунків в AWS

Кешування CloudFront на межі мережі

  • CloudFront: кешуйте відповіді на edge-локаціях
  • Повторні запити обслуговуйте без бекенду
  • Ключі кешу можуть включати headers, query strings, cookies
  • Статичний і кешований контент масштабується безкоштовно

Кешування CloudFront на межі: глобус з edge-локаціями, що віддають кешовані відповіді поруч із користувачами, без звернень до бекенду; налаштування ключа кешу з headers і query strings

Розгортання застосунків в AWS

Як обрати потрібний шар кешу

Три шари кешу: CloudFront на межі для статичного спільного контенту, in-memory кеш на інстансі для гарячих об'єктів, і ElastiCache або DAX для спільних частих читань

  • Edge (CloudFront): статичний, широко спільний контент
  • Application (in-memory): «гарячі» об'єкти на інстансі
  • Data (ElastiCache/DAX): спільні гарячі читання
  • Комбінуйте шари; кожен знижує свою вартість
Розгортання застосунків в AWS

Об'єднуємо оптимізацію

  • Підіймайте пам'ять за кривою «тривалість–вартість»
  • Додавайте provisioned concurrency лише там, де важлива затримка
  • Кешуйте на шарах edge, app і data
  • Виміряйте, змініть одне, виміряйте знову

Підсумок оптимізації: крива «тривалість–вартість» для розміру пам'яті, рішення про provisioned concurrency, діаграма трьох шарів кешу та цикл «виміряти–змінити–виміряти»

Розгортання застосунків в AWS

Давайте потренуємось!

Розгортання застосунків в AWS

Preparing Video For Download...