Если вы не прятались под роком, вы, вероятно, слышали о неверном. Вы видели статьи, твиты и бесконечную строку конференций, продвигающих без продвижения без серверу, чтобы вы могли начать думать, что он может подумать, это один раздражающий модные слова, которые люди используют, чтобы сами звучит умные, такие как квантовые вычисления, темные данные, технология Blockchain или парниковый эффект. Хорошо, может быть, не последний.
Так что все суета?
Технически не означает, что у вас нет сервера, но наличие поставщика услуг управляет сервером для вас. В ответ вы придерживаетесь набора правил, таких как длительность выполнения максима для запроса за 300 секунд, а максимальный размер функции сжатой лямбда составляет 50 МБ.
Предоставлено, вам придется привыкнуть к этим новым правилам, но если вы перестанете думать о них как ограничения и увидеть их для того, что они действительно являются рекомендацией наилучшей практики. То, что я имею в виду, что у вас может быть лямбдас, которые больше 50 МБ, конечно, но ваш код будет трудно поддерживать. Вы можете получить запрос, выполняющий дольше 5 минут, но это то, что вы действительно хотите избежать на традиционных серверах, верно?
Так где магия?
Технология Serserless не имеет ничего нового. Это было вокруг дольше, чем вы понимаете. Смертные вычисления – это модель выполнения облачных вычислений, в которых поставщик услуг заботится о инфраструктуре. Единственная причина, по которой вы застряли читать эту статью прямо сейчас, заключается в том, что поставщики, такие как AWS Lambda или Microsoft Azure (среди прочих), позволили всем использовать технологии без сердца, предлагая их услугу в более чем просто доступной цене.
Хорошо, хорошо, но как именно это работает?
Вы зарегистрируетесь с провайдером, который предлагает FAAS (функционирует как услугу) или PAAS (платформа как услугу), и вы используете свою инфраструктуру, чтобы получить работу кода, не управляя тем, что под капотом (сервер).
Да, но как?
Возьми AWS LAMBDA Самый популярный поставщик ФААС на данный момент. Вы создаете небольшие функции, которые вы загружаете в Lambdas. Эти функции действуют как микросервисы. Они выполняют немного кода и вернуть значение или вызов второй лямбда. Таким образом, вместо того, чтобы наличие традиционного сервера работает PHP или NODEJS, которые вы бы использовали для создания микроэнергии, чтобы вернуть сумму двух чисел, вы загружаете эту логику на лямбду и отправляя запрос с двумя номерами.
«Хорошо, но как наши старые серверы больше не в порядке?»
Дело не в том, что традиционные серверы не в порядке, или они исчезнут, на самом деле, вы даже не хотите использовать серверу для вашего приложения. Это не для универсального решения для всех проблем с человечеством. Тем заявляемая, не имеет несколько преимуществ, которые получили его так популярны. Это так популярно на самом деле, что уровень принятия в 2017 году составил около 667%. Существует три основных преимущества безвесочных, которые я лично выделяю выделяю: стоимость, скорость производства, масштабируемость. Позволь мне объяснить.
1. Стоимость
Это большой. Недавнее исследование показало, что компании сохраняются в среднем на 24%, которые некоторые из них сообщали, что счета от $ 10 000 в месяц до 370 долларов (это правильно. Нет, я не забыл ноль. Это 370 долларов). Вот ссылка на Смертное исследование Counter Отказ В основном, с такими услугами, как LAMBDA или AZURE, вы платите только то, что используете.
2. Скорость развития
После переключения на серверу вы экономите около 4 рабочего дня разработчика каждый месяц. Поскольку вам не нужно беспокоиться о бэкэнде, вы можете сосредоточиться на приложении, веб-сайте и особенно на бизнес-логике. Представьте, что вы можете добиться, если у вашей команды есть дополнительные 4 дня каждый месяц, чтобы работать над чем-то еще.
3. Масштабируемость
Не попадая в слишком много деталей, я уверен, что вы согласитесь, что масштабируемость – это проблема на традиционных серверах. Вы видели много примеров, где веб-сайты и авария приложения, когда вы получаете всплеск трафика. С помощью Serverless эта проблема исчезает, поскольку ваш провайдер убедится, что приложение масштабируется изящно.
Давайте попробуем это!
Создание веб-сайта в Serverless легко, так просто на самом деле, что вы можете Запустите сайт менее чем за 15 минут Отказ Я не буду оторвать вас с деталями, но я буду делиться ссылкой для тех, кто хочет начать маленьким и медленно двигаться вверх.
Я был констатирован, пытаясь выяснить, что такое единственное, что у каждого сайта будет отлично работать на неверном, и после тщательного рассмотрения я понял, что контактные формы находятся примерно на 99% сайтов, которые я посетил в последние годы.
Перед безведомлевым вам придется использовать PHP для отправки электронных писем, по крайней мере, это было самыми популярными способами создания формы, которая отправляет сообщение. Код, который отправляет форму, выглядит что-то подобное:
Кажется, прямо, верно? На бумаге есть, но с методом php mail (), который вы неизбежно столкнулись с проблемами, поэтому вы будете застрять отладки и глядя на журналы для неловко, долгое время. Даже после того, как вы впервые поработали, есть ряд факторов, которые почти всегда выходят из вашего контроля, который приведет к тому, что ваша форма не будет работать, такие вещи, как порты закрываются или изменяются, хост может ограничить или отключить систему электронной почты, и т.п.
Serverless решает эти проблемы с портами и избегает любых проблем хостинга, имея все работы от «Всемогущего» облака.
Я предполагаю, что у вас уже установлен узел. Давайте откроем свой терминал и установите простой шаблон котельной: Serverless Create –Template AWS-NODEJS
Далее мы получаем все необходимые пакеты, которые нам нужны. Сначала мы генерируем наш Package.json с NPM init -y, а затем мы устанавливаем наши зависимости с NPM I -S Body-Parser CORS Express Serverless-http AWS SDK
После того, как это завершится, вам придется загрузить свой проект в редакторе и откройте файл Handler.js и вызовите SES – простую электронную почту от AWS. Призывающие SES достаточно просто и выглядит что-то подобное: SES.SEndemail (Params, функция (ERR, DATA) {}). Оформить заказ их документацию, чтобы узнать больше: https://docs.aws.amazon.com/awsjavascriptsdk/latest/aws/ses.html.
Что нам нужно будет записаться на AWS SES, и вы делаете это, поедя в консоль AWS, нажмите SES (вы можете использовать панель поиска для поиска SES), перейдите на левую боковую панель и нажмите на адрес электронной почты. Добавьте свою электронную почту и проверьте его. Это два минуты процесса.
Теперь давайте вернемся к кодированию контактной формы. В вашей папке проекта создайте новую папку «Форма». В этой папке мы создадим наши формы активами. Создайте файл под названием Script.js и style.css. Мы пройдемся на каждого из них индивидуально.
Наш Script.js выглядит так:
let name = document.querySelector("#name"); let email = document.querySelector("#email"); let message = document.querySelector("#message"); let error = document.querySelector(".error"); let btn = document.querySelector("button"); let success = document.querySelector(".success"); btn.addEventListener("click", submit); function submit(e) { e.preventDefault(); var xhr = new XMLHttpRequest(); xhr.open("POST", "yourendpoint", true); xhr.setRequestHeader("Content-type", "application/json"); xhr.onreadystatechange = function() { if (xhr.readyState == XMLHttpRequest.DONE && xhr.status == 200) { } }; var data = { name: name.value, email: email.value, message: message.value }; if (name.value && email.value && message.value) { success.style.display = "block"; success.innerHTML = "Thanks for submitting"; document.querySelector(".all").style.display = "none"; xhr.send(JSON.stringify(data)); } else { error.style.display = "block"; error.innerHTML = "Please Fill All Details"; } }
Вы, вероятно, видим знакомые вещи здесь, как вы должны. Здесь нет лямбда “черная магия”. Мы определяем наши параметры, которые мы будем использовать в форме, создайте функцию отправки, которая позвонит нашу конечную точку. Да, конечная точка (линия 14) – это то, где магия. Запишите это, потому что мы вернемся к нему через секунду.
Поскольку мы здесь, давайте также создадим .css тоже, просто чтобы получить его с пути.
*{ box-sizing: border-box; padding: 0; margin: 0 } body{ font-family: sans-serif; } .items{ display: flex; flex-direction: column; justify-content: center; align-items: center; margin: 2rem; font-size: 1.1rem; padding: 1rem; } input{ padding: 1rem; margin: .8rem; width: 25rem; height: 3rem; font-size: 1.1rem; border: 3px solid rgb(31, 121, 255); outline: none; } textarea{ width: 25rem; height: 10rem; padding: 1rem; display: flex; justify-content: center; outline: none; border: 3px solid rgb(31, 121, 255); font-size: 1.1rem; } .area{ display: flex; } .area-label{ margin-left:-2rem; } .txt{ margin-left:.6rem; } button{ padding: 1rem; width: 10rem; margin-top: 2rem; text-align: center; background-color: rgb(75, 224, 75); font-size: 1.3rem; color: rgb(2, 2, 15); box-shadow: 0 .2rem .2rem black; } .success{ background-color: rgb(75, 214, 224); font-size: 1.2rem; text-transform: capitalize; text-align: center; margin-top: 10rem; padding: 2rem; box-shadow: 0 .2rem .2rem rgb(0, 0, 0); display: none; } .error{ display: none; animation: move .2s ease-in ; } @keyframes move{ 0%{ opacity: 0; transform: translateY(-80%); } 50%{ opacity: .6; transform: translate(-20%); } 70%{ opacity: .7; transform: translate(20%); } 100%{ opacity: 1; transform: translate(0); } }
Я не собираюсь настаивать на файле .css, но если вы думаете, что мне нужно что-нибудь объяснить, пожалуйста, оставьте комментарий.
Теперь, когда у нас есть созданные активы, давайте загрузим их в HTML. Перейдите к корню вашего проекта и создайте новый файл с именем index.html. Поскольку код прямо вперед, просто вставьте следующее, и все набор.
Contact us
Я знаю, что тебе надоело следовать в статье до сих пор, ничего круто не произошло. Ну, держитесь на свое место, потому что мы собираемся написать наш код без сервеса дальше.
Мы должны сначала обратиться к файлу Handler.js. Откройте его от корня вашего проекта и вставьте следующий код:
const serverless = require("serverless-http"); const AWS = require("aws-sdk"); const express = require("express"); const cors = require("cors"); const bodyParser = require("body-parser"); const app = express(); if (!AWS.config.region) { AWS.config.update({ region: "us-east-1" }); } const ses = new AWS.SES(); app.use(cors()); app.use(bodyParser.urlencoded({ extended: false })); app.use(bodyParser.json()); app.post("/", (req, res) => { const name = req.body.name; const email = req.body.email; const message = req.body.message; const emailParams = { Source: "yourname@mail.com", // Your Verified Email Destination: { ToAddresses: ["yourname@mail.com"] // Your verfied Email }, ReplyToAddresses: [req.body.email], Message: { Body: { Text: { Charset: "UTF-8", Data: `${message} from ${req.body.email}` } }, Subject: { Charset: "UTF-8", Data: "You Received a Message from www.domainname.com" } } }; ses.sendEmail(emailParams, (err, data) => { if (err) { res.status(402).send(`${err} ${err.stack}`); } if (data) { res.send(data); } }); }); module.exports.form = serverless(app);
То, что мы только что сделали, это создать метод, который называет SES и отправляет сообщение. Довольно простые вещи.
Далее мы посмотрим на Serverless YML. Здесь мы просто собираемся выбрать, какой регион мы будем использовать, определяя фактическую функцию, которую лямбда будет выполнять и действие, которое представляет собой SES: Sendemail.
service: contact-form provider: name: aws runtime: nodejs8.10 region: us-east-1 iamRoleStatements: - Effect: "Allow" Action: - "ses:SendEmail" Resource: "*" functions: app: handler: handler.form events: - http: ANY / - http: 'ANY {proxy+}'
Следующая остановка: Delopment. Звучит сложно, но это на самом деле простая задача. Все, что вы делаете, это откройте свой терминал и запустите: SLS развертывание.
Вы увидите журнал на экране, и когда это сделано, вам придется скопировать конечную точку и вставить его в файл Script.js, который я упоминал ранее. Откройте Script.js и в строке 14 Заменить слово « yourDPoint » с прилагаемой конечной точкой. Это оно! Откройте свой HTML и проверьте свою контактную форму.
Хорошо сделано! Высокие пять вокруг! Это было довольно путешествием, но оно того стоит. Вы являетесь счастливым обладателем нового веб-сайта.
Поздравляю!
Прежде чем вы отпустить, я должен рассказать вам о мониторинге вашего приложения, который очень важен при работе с сервезом. Вы захотите следить за проблемами со здоровьем, время вызовов и любых ошибок, которые вы могли бы иметь. Не поддержание вкладок в вашем сервере Serverless может стоить много, и это не то, что может позволить себе. Или даже если бы они могли позволить себе стоимость того, что они просто не могут сделать, – это прервана их услуга, потому что лямбда слишком долго занимается созданием плохого опыта для своих клиентов.
Вы можете проверить свое приложение через консоль AWS, но это не то, что можно легко понять или через третью сторону, как Dashbird.io, услуга, которая контролирует ваш AWS Lambda, предоставляя понимание того, что происходит за кулисами.