Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Бессерверные приложения на JavaScript

Покупка
Артикул: 739794.01.99
Доступ онлайн
949 ₽
В корзину
Преимущества облачных бессерверных веб-приложений бесспорны: меньшая сложность, быстрое продвижение на рынок и автоматическая масштабируемость выгодно отличают их от традиционных серверных проектов. Данная книга научит вас проектировать и создавать бессерверные веб-приложения на AWS с использованием JavaScript, Node и Claudia.js. Новичков издание знакомит не только с AWS Lambda, но и с целым рядом связанных служб, таких как DynamoDB, Cognito, API Gateway. Даже решив позднее взять на вооружение другие инструменты, вы сможете сохранить весь код и просто развернуть его немного иначе. Подробно описывается несколько вариантов практического использования бессерверных платформ, в том числе веб-API, чат-боты, обработка платежей и управление заказами. Издание предназначено веб-разработчикам, знакомым с JavaScript и Node.js.
Стоянович, С. Бессерверные приложения на JavaScript : практическое руководство / С. Стоянович, А. Симович ; пер. с анг. А. Н. Киселева. - Москва : ДМК Пресс, 2020. - 394 с. - ISBN 978-5-97060-782-4. - Текст : электронный. - URL: https://znanium.com/catalog/product/1094948 (дата обращения: 28.11.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов
Слободан Стоянович
Александар Симович

Бессерверные 
приложения  
на 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

 Оглавление

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

 Оглавление

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

 Оглавление

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

Доступ онлайн
949 ₽
В корзину