Когда дело доходит до проектирования и кодирования функций Lambda, существует несколько рекомендуемых практик, которым следует следовать независимо от среды выполнения.
Дизайн
- Отдельная бизнес-логика. Отделите основную бизнес-логику от функции-обработчика. Это позволяет сделать код переносимым и тестируемым.
- Написание модульных функций.Подход с использованием модульных функций уменьшает размер пакета развертывания, что, в свою очередь, сокращает время, необходимое для загрузки и распаковки пакета перед вызовом.
- Считайте функции не имеющими состояния:функции существуют только до тех пор, пока не есть работа, которую нужно выполнить; никакая информация о состоянии не должна сохраняться в контексте функции. Рассмотрим Amazon S3, Amazon DynamoDB и Amazon ElastiCache для хранения информации о состоянии.
- Включайте только то, что вам нужно:Размер пакета развертывания существенно влияет на время запуска функции. Например, чтобы минимизировать размер, включите только определенные модули вместо всего AWS SDK.
Написание кода
- Включить операторы журналирования. Включите операторы журналирования, которые записываются в CloudWatch.
- Использовать код возврата: вернуть результат выполнения функции в Lambda.
- Предоставьте переменные среды. Используйте переменные среды Lambda, чтобы передать конфигурацию для работы без изменений кода.
- Добавьте секретные и справочные данные. Используйте AWS Secrets Manager для хранения конфиденциальных конфигураций, таких как учетные данные и пароли.
- Избегайте рекурсивного кода.Рекурсивный код может привести к неконтролируемому масштабированию вызовов, что приведет к потере контроля над параллелизмом.
- Сбор метрик с помощью Amazon CloudWatch. Используйте CloudWatch EMF для извлечения метрик из событий структурированного журнала и создания графиков и сигналов тревоги на основе значений метрик.
- Повторное использование контекста выполнения.Когда функция начинает работу с «горячего» старта, ограничьте повторную инициализацию переменных, повторно используйте соединения, пространство tmp в качестве временного кэша, храните зависимости локально и проверяйте завершение фоновых процессов.
На простом английском языке
Спасибо, что вы являетесь частью нашего сообщества! Прежде чем уйти:
- Обязательно аплодируйте и следуйте за автором! 👏
- Еще больше контента вы можете найти на PlainEnglish.io 🚀
- Подпишитесь на нашу бесплатную еженедельную рассылку. 🗞️
- Следуйте за нами в Twitter(X), LinkedIn, YouTube и Discord.