Бессерверные приложения на JavaScript
Покупка
Новинка
Тематика:
Программирование на Java
Издательство:
ДМК Пресс
Перевод:
Киселев А. Н.
Год издания: 2020
Кол-во страниц: 396
Возрастное ограничение: 12+
Дополнительно
Вид издания:
Практическое пособие
Уровень образования:
Дополнительное профессиональное образование
ISBN: 978-5-97060-782-4
Артикул: 882735.01.99
Преимущества облачных бессерверных веб-приложений бесспорны: меньшая сложность, быстрое продвижение на рынок и автоматическая масштабируемость выгодно отличают их от традиционных серверных проектов. Данная книга научит вас проектировать и создавать бессерверные веб-приложения на AWS с использованием JavaScript, Node и Claudia.js. Новичков издание знакомит не только с AWS Lambda, но и с целым рядом связанных служб, таких как DynamoDB, Cognito, API Gateway. Даже решив позднее взять на вооружение другие инструменты, вы сможете сохранить весь код и просто развернуть его немного иначе. Подробно описывается несколько вариантов практического использования бессерверных платформ, в том числе веб-API, чат-боты, обработка платежей и управление заказами.
Издание предназначено веб-разработчикам, знакомым с JavaScript и Node.js.
Тематика:
ББК:
УДК:
ОКСО:
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
Слободан Стоянович Александар Симович Бессерверные приложения на JavaScript
M A N N I N G SHELTER ISLAND Serverless Applications with Node.js Slobodan Stojanović Aleksandar Simović
Москва, 2020 Бессерверные приложения на JavaScript Слободан Стоянович Александар Симович Перевод с английского Киселева А. Н.
УДК 004.42
ББК 32.972
С81
С81 Слободан Стоянович, Александар Симович
Бессерверные приложения на JavaScript / пер. с англ. А. Н. Киселева. – М.:
ДМК Пресс, 2020. – 394 с.: ил.
ISBN 978-5-97060-782-4
Преимущества облачных бессерверных веб-приложений бесспорны:
меньшая сложность, быстрое продвижение на рынок и автоматическая
масштабируемость выгодно отличают их от традиционных серверных
проектов. Данная книга научит вас проектировать и создавать бессерверные веб-приложения на AWS с использованием JavaScript, Node и Claudia.js.
Новичков издание знакомит не только с AWS Lambda, но и с целым рядом
связанных служб, таких как DynamoDB, Cognito, API Gateway. Даже решив
позднее взять на вооружение другие инструменты, вы сможете сохранить
весь код и просто развернуть его немного иначе. Подробно описывается несколько вариантов практического использования бессерверных платформ,
в том числе веб-API, чат-боты, обработка платежей и управление заказами.
Издание предназначено веб-разработчикам, знакомым с JavaScript и
Node.js.
УДК 004.42
ББК 32.972
Original English language edition published by Manning Publications. Copyright © 2019
by Manning Publications. Russian language edition copyright © 2019 by DMK Press. All
rights reserved.
Все права защищены. Любая часть этой книги не может быть воспроизведена
в какой бы то ни было форме и какими бы то ни было средствами без письменного
разрешения владельцев авторских прав.
Материа,л, изложенный в данной книге, многократно проверен. Но, поскольку
вероятность технических ошибок все равно существует, издательство не может гарантировать абсолютную точность и правильность приводимых сведений. В связи
с этим издательство не несет ответственности за возможные ошибки, связанные с
использованием книги.
ISBN 978-1-61729-472-3 (англ.) Copyright © 2019 by Manning Publications Co.
ISBN 978-5-97060-782-4 (рус.) © Оформление, перевод на русский язык,
издание, ДМК Пресс, 2020
Оглавление Предисловие от издательства........................................................................12 Предисловие.....................................................................................................13 Вступление.........................................................................................................15 Благодарности..................................................................................................16 Об этой книге....................................................................................................17 Кому адресована книга...................................................................................17 Краткое содержание........................................................................................17 Об исходном коде............................................................................................19 Автор в сети.....................................................................................................20 Другие онлайн-ресурсы..................................................................................20 Об авторах.........................................................................................................21 Об иллюстрации на обложке..........................................................................22 ЧАСТЬ I. Бессерверная пиццерия................................................................23 Глава 1. Введение в бессерверные вычисления с Claudia........................24 1.1. Серверы и стиральные машины..............................................................25 1.2. Основные понятия....................................................................................26 1.3. Как работают бессерверные вычисления?..............................................28 1.4. Бессерверные вычисления на практике..................................................28 1.4.1. Бессерверная пиццерия тетушки Марии................................................... 29 1.4.2. Распространенный подход......................................................................... 29 1.4.3. Бессерверное решение................................................................................ 31 1.5. Бессерверная инфраструктура – AWS......................................................32 1.6. Что такое и для чего используется Claudia?............................................38 1.7. Когда и где использовать бессерверные вычисления.............................41 В заключение...................................................................................................42 Глава 2. Создание первого бессерверного API............................................43 2.1. Приготовление пиццы из ингредиентов: сборка API............................43 2.1.1. Какие пиццы можно заказать?................................................................... 46
6 Оглавление 2.1.2. Структурирование API................................................................................ 49 2.1.3. Отправка заказа.......................................................................................... 55 2.2. Как Claudia развертывает API..................................................................59 2.3. Управление трафиком: как работает API Gateway..................................61 2.4. Когда бессерверный API не является решением....................................62 2.5. Опробование!............................................................................................63 2.5.1. Упражнение................................................................................................. 63 2.5.2. Решение....................................................................................................... 64 В заключение...................................................................................................68 Глава 3. Простота асинхронных операций с Promise()..............................69 3.1. Хранение заказов......................................................................................69 3.2. Обещание доставить меньше чем за 30 минут!......................................75 3.3. Опробование API.......................................................................................79 3.4. Извлечение заказов из базы данных.......................................................83 3.5. Опробование!............................................................................................85 3.5.1. Упражнение................................................................................................. 86 3.5.2. Решение....................................................................................................... 87 В заключение...................................................................................................90 Глава 4. Доставка пиццы: подключение к внешней службе.....................91 4.1. Подключение к внешней службе.............................................................91 4.2. Подключение к API компании доставки.................................................93 4.2.1. API компании доставки Some Like It Hot................................................... 93 4.2.2. Создание первой заявки на доставку........................................................ 94 4.3. Типичные проблемы асинхронных взаимодействий.......................... 101 4.3.1. Забыли вернуть Promise........................................................................... 102 4.3.2. Отсутствие значения, возвращаемого из Promise.................................. 102 4.3.3. Вызов внешней службы не завернут в Promise....................................... 104 4.3.4. Превышение времени ожидания длительной асинхронной операцией................................................................................................... 105 4.4. Опробование!..........................................................................................107 4.4.1. Упражнение............................................................................................... 107 4.4.2. Решение..................................................................................................... 108 В заключение.................................................................................................110 Глава 5. Хьюстон, у нас проблема!...............................................................111 5.1. Отладка бессерверного приложения..................................................... 111 5.2. Отладка функции Lambda.......................................................................113 5.3. Рентген для приложения........................................................................116 5.4. Опробование!..........................................................................................120
Оглавление 7 5.4.1. Упражнение............................................................................................... 120 5.4.2. Решение..................................................................................................... 120 В заключение.................................................................................................121 Глава 6. Совершенствование API..................................................................122 6.1. Бессерверная аутентификация и авторизация..................................... 122 6.2. Создание пулов пользователей и идентификации.............................. 126 6.2.1. Управление доступом к API с помощью Cognito.................................... 130 6.3. Опробование!..........................................................................................134 6.3.1. Упражнение............................................................................................... 135 6.3.2. Решение..................................................................................................... 136 В заключение.................................................................................................137 Глава 7. Работа с файлами.............................................................................138 7.1. Хранение статических файлов в бессерверных приложениях............ 138 7.2. Создание миниатюр................................................................................143 7.2.1. Развертывание функции обработки файлов в S3.................................... 150 7.3. Опробование!..........................................................................................151 7.3.1. Упражнение................................................................................................ 152 7.3.2. Решение...................................................................................................... 152 7.4. Конец первой части: специальное упражнение................................... 155 7.4.1. Усложненное задание................................................................................ 155 В заключение.................................................................................................155 ЧАСТЬ II. Поболтаем.....................................................................................157 Глава 8. Заказ пиццы одним сообщением: чат-боты...............................158 8.1. Заказ пиццы без браузера......................................................................158 8.2. Привет из Facebook Messenger...............................................................160 8.3. Какие виды пиццы у нас имеются?....................................................... 162 8.4. Ускорение развертывания......................................................................164 8.5. Шаблоны для взаимодействий...............................................................167 8.6. Как работает Claudia Bot Builder?...........................................................170 8.7. Опробование!..........................................................................................172 8.7.1. Упражнение................................................................................................ 172 8.7.2. Решение...................................................................................................... 172 В заключение.................................................................................................173 Глава 9. Ввод... асинхронные и отложенные ответы................................174 9.1. Добавление интерактивности в чат-бот................................................ 174 9.1.1. Выбор заказа: получение ответа от пользователя.................................. 175
8 Оглавление 9.2. Улучшение масштабируемости чат-бота.............................................. 182 9.3. Подключение чат-бота к базе данных DynamoDB................................ 186 9.4. Получение адреса доставки заказа в чат-боте......................................................................................191 9.5. Планирование доставки.........................................................................194 9.6. Добавление простой обработки естественного языка......................... 200 9.7. Опробование!..........................................................................................202 9.7.1. Упражнение................................................................................................ 202 9.7.2. Решение...................................................................................................... 203 9.7.3. Усложненное задание................................................................................ 205 В заключение.................................................................................................205 Глава 10. Джарвис, то есть Алекса, закажи мне пиццу.............................206 10.1. Не могу сейчас говорить: отправка SMS с помощью службы Twilio.........................................................................................................207 10.1.1. Список пицц в SMS.................................................................................. 209 10.1.2. Оформление заказа................................................................................. 211 10.2. Эй, Алекса!.............................................................................................217 10.2.1. Подготовка сценария.............................................................................. 221 10.2.2. Оформление заказа с помощью Алексы................................................ 226 10.3. Опробование!........................................................................................230 10.3.1. Упражнение............................................................................................. 230 10.3.2. Решение................................................................................................... 231 10.4. Конец второй части: специальное упражнение................................. 232 В заключение.................................................................................................232 ЧАСТЬ III. Дальнейшие шаги.......................................................................233 Глава 11. Тестирование, тестирование и еще раз тестирование............234 11.1. Тестирование обычных и бессерверных приложений....................... 234 11.2. Подходы к тестированию бессерверных приложений....................... 236 11.3. Подготовка.............................................................................................238 11.4. Модульные тесты..................................................................................241 11.5. Использование имитаций для тестирования бессерверных функций....................................................................................................246 11.6. Интеграционные тесты........................................................................253 11.7. Другие типы автоматизированных тестов.......................................... 258 11.8. В дополнение к тестам: приемы разработки бессерверных функций для упрощения их тестирования............................................ 259 11.9. Опробование!........................................................................................264
Оглавление 9 11.9.1. Упражнение............................................................................................. 264 11.9.2. Решение................................................................................................... 265 В заключение.................................................................................................266 Глава 12. Получение платы за пиццу..........................................................268 12.1. Платежные транзакции........................................................................268 12.1.1. Реализация онлайн-платежей................................................................ 270 12.2. Реализация платежной службы............................................................274 12.3. Можно ли взломать нашу платежную службу?................................... 281 12.3.1. Стандарты................................................................................................ 281 12.3.2. Компетентность...................................................................................... 282 12.4. Опробование!........................................................................................283 12.4.1. Упражнение............................................................................................. 283 12.4.2. Решение................................................................................................... 283 В заключение.................................................................................................285 Глава 13. Миграция существующих приложений Express.js в окружение AWS Lambda.............................................................................286 13.1. Приложение для таксомоторной компании дядюшки Роберто........ 287 13.2. Запуск приложения Express.js в AWS Lambda...................................... 287 13.2.1. Интеграция с оберткой........................................................................... 291 13.2.2. Как работает serverless-express.............................................................. 291 13.3. Обслуживание статического контента................................................ 292 13.4. Подключение к MongoDB.....................................................................295 13.4.1. Использование управляемой базы данных MongoDB с бессерверным приложением Express.js................................................. 295 13.5. Ограничения бессерверных приложений Express.js........................... 300 13.6. Опробование!........................................................................................301 13.6.1 Exercise...................................................................................................... 301 13.6.2. Решение................................................................................................... 302 В заключение.................................................................................................303 Глава 14. Миграция в бессерверное окружение.......................................304 14.1. Анализ текущего бессерверного приложения.................................... 304 14.2. Миграция существующего приложения в бессерверное окружение.....305 14.3. Общий взгляд на платформу................................................................309 14.3.1. Обслуживание статических файлов....................................................... 310 14.3.2. Сохранение состояния............................................................................ 310 14.3.3. Журналы.................................................................................................. 311 14.3.4. Непрерывная интеграция....................................................................... 313 14.3.5. Управление окружениями: промышленное окружение и окружение для разработки..................................................................... 314
10 Оглавление 14.3.6. Совместное использование конфиденциальных данных.................... 315 14.3.7. Виртуальное частное облако................................................................... 318 14.4. Оптимизация приложения...................................................................318 14.4.1. Связанные и узкоспециализированные функции................................ 319 14.4.2. Выбор правильного объема памяти для функции Lambda.................. 319 14.5. Преодоление проблем..........................................................................320 14.5.1. Тайм-ауты................................................................................................ 320 14.5.2. Холодный запуск..................................................................................... 321 14.5.3. Атаки DDoS.............................................................................................. 323 14.5.4. Привязка к производителю.................................................................... 323 14.6. Опробование!........................................................................................325 В заключение.................................................................................................325 Глава 15. Примеры из практики...................................................................327 15.1. CodePen..................................................................................................328 15.1.1. До перехода на бессерверные вычисления........................................... 328 15.1.2. Миграция на бессерверные вычисления............................................... 329 15.1.3. Затраты на инфраструктуру................................................................... 332 15.1.4. Тестирование и проблемы...................................................................... 333 15.2. MindMup................................................................................................333 15.2.1. До перехода на бессерверные вычисления........................................... 334 15.2.2. Миграция на бессерверные вычисления............................................... 337 15.2.3. Затраты на инфраструктуру................................................................... 338 15.2.4. Тестирование, журналирование и проблемы........................................ 340 В заключение.................................................................................................341 Приложение A. Установка и настройка.......................................................343 A.1. Установка Claudia...................................................................................343 A.1.1. Настройка зависимостей Claudia............................................................ 344 A.1.2. Создание профиля AWS и получение ключей........................................ 345 A.1.3. Установка Claudia API Builder.................................................................. 348 A.1.4. Установка Claudia Bot Builder................................................................... 348 A.2. Установка AWS CLI..................................................................................348 Приложение B. Настройка Facebook Messenger, Twilio и Alexa..............350 B.1. Настройка Facebook Messenger..............................................................350 B.1.1. Создание страницы Facebook................................................................... 350 B.1.2. Создание приложения Facebook.............................................................. 352 B.1.3. Создание чат-бота Facebook Messenger с использованием Claudia Bot Builder...................................................................................... 354 B.1.4. Подключение встроенного механизма NLP............................................ 361 B.2. Настройка Twilio.....................................................................................361 B.2.1. Создание учетной записи Twilio.............................................................. 362