Що таке сервер?


42

Усі хмарні постачальники продають свої "безсерверні" рішення. Обіцяє те, що безсервер збирається замінити спосіб розробників в даний час розробляти своє програмне забезпечення, і операції керують ним у виробництві.

Що таке "без сервера"? Де можна дізнатися більше про нього і як це можна використовувати сьогодні?


без серверних обчислень - "менше сервера", оскільки "курячий гамбургер" є веганським, оскільки ви особисто не зустрічали курку
Сай Адданкі

Відповіді:


43

Стаття Вікіпедії про обчислення без серверів дає гідне вступ до теми:

Обчислення без сервера, також відоме як функція як послуга (FaaS) - це модель виконання коду хмарних обчислень, в якій хмарний провайдер повністю керує запуском і зупинкою платформи контейнерів функції як сервісу (PaaS) у міру необхідності для обслуговування запитів і запитів нараховується за абстрактною мірою ресурсів, необхідних для задоволення запиту, а не за віртуальною машиною, за годину.

Ідея полягає в тому, що розробнику взагалі не потрібно дбати про інфраструктуру сервера . Хмарний провайдер управляє фізичними серверами, використовуваною операційною системою та всіма традиційними труднощами, пов'язаними із запуском сервера.

Обчислення без сервера змінює вашу архітектуру від роздумів про те, які машини працюють, і які функції виконують. AWS Lambda - це той приклад, який вам спадає на думку - ви оплачуєте і запускаєте функції , не згадуючи про те, який тип фізичної інфраструктури працює нижче. Існують також конкурентоспроможні хости без серверів, такі як Функції Azure (або ви можете просто шукати, якщо вас не цікавить жодна з них).

У серверів є безліч переваг (хоча вам потрібно писати дещо іншим чином, ніж ви звикли в деяких випадках, оскільки це абсолютно інша архітектура):

  • Масштабованість по суті постачається безкоштовно - оскільки ви просто платите за виконання функції, постачальник хмарних послуг може легко виділити більше обладнання, необхідного для запуску вашого коду. Ви також можете потенційно масштабуватись у міру зростання попиту, а не сплачувати фіксовану ставку, використовуючи чи не один раз чи мільйон разів.

  • Серверним програмним та апаратним забезпеченням більше не потрібно керувати розробник - хмарний провайдер справляється з цим. Якщо ви коли-небудь використовували щось на зразок Arch на сервері, ви будете знати, як легко витерти критичний пакет і все порушити!

  • Це звільняє розробників зосередитись на тому, що їм добре - код . Більшість розробників, напевно, не будуть чудовими як в серверній інфраструктурі, так і в програмуванні - без сервера просто виводиться одна проблема з рівняння.


"взагалі не потрібно дбати про інфраструктуру сервера". Це справді гарна річ, тому що, на мій досвід, дуже багато їх уже є / не /, з катастрофічними наслідками!
Філл В.

15

Мартін Фаулер має хороший огляд:
https://martinfowler.com/articles/serverless.html

TL; DR
"Без сервера" описує розробку додатків та архітектуру, яка розробляє додатки, в яких інфраструктура є ефемерною , це означає, що вони, як правило, базуються на контейнерах і можуть "приходити та йти" на основі динамічного механізму масштабування. Це передбачає використання архітектури без громадянства, яка залежить від розподілених технологій (таких як магазини ключів / цінностей.)


2
Не тільки ефемерне, але й абстраговане повністю. У багатьох сучасних безсерверних установках (таких як AWS EC2 ASG) інфраструктура також є ефемерною; Екземпляр EC2 в ASG може бути припинений будь-коли.
Адріан

14

"Без сервера", як і багато речей у нашому просторі, стає перевантаженим терміном .. але загалом це означає "функціонально. Наша архітектура не залежить від забезпечення або постійного обслуговування сервера"

Перший екземпляр, який спадає на думку, - це додаток javascript на одній сторінці, який використовує локальне сховище, і зберігається на щось на зразок Amazon S # або Github Pages (або будь-який статичний сайт - це лише поширені приклади). Уявіть щось на зразок програми «todo» або «виконувати справи», яка повністю працює у вашому браузері. Ваш браузер звертається до такої служби, як S3 для завантаження коду, а елементи, які ви зберігаєте, зберігаються в локальному сховищі вашого браузера. Немає сервера, який ви підтримуєте для цього.

Другий екземпляр і трохи складніший (а також той, що популяризував термін "без сервера"), використовує такий сервіс, як AWS Lambda. Дозвольте пояснити це, подавши проблему, яку вона вирішує:

Багато разів за свою кар’єру я вирішував бізнес-проблему для клієнта, маючи трохи більше, ніж якийсь рубіновий код, який виконував періодичне витягування, перетворення та завантаження (як правило, написане як граблі). Після вирішення я зазвичай автоматизую це за допомогою cron. Тоді проблема стає "де я розміщую цю річ, яка працює раз на годину?" Для деяких клієнтів ми встановили сервер у їхній існуючій інфраструктурі. Для інших ми створили екземпляр EC2, хоча він простояв 99% часу. За будь-якого з цих обставин існує сервер, який вимагає забезпечення, виправлення, моніторингу, оновлення тощо.

З Amazon Lambda я можу прийняти це завдання граблі і виконувати його на службі як чисту «функцію». Я навіть можу це запланувати. Більше не потрібно, щоб цей клієнт мав потребу в інфраструктурі для такої простої справи, яка проводиться раз на годину.

"Без сервера" все ще є сервер, як і у "хмари", як і раніше є комп'ютер. Нагорі є лише рівень абстракції, який бере на себе деякі екологічні обов'язки.


Моя підтримка за приклад реального життя одного разу на годину роботи, яка, як правило, потребувала EC2. Тепер вам просто потрібна функція лямбда!
HopeKing

10

Всі чудові відповіді вже. Я переглядав повідомлення в блозі Thinking Serverless - як нові підходи вирішують сучасні потреби в обробці даних у програмі HighScalability, де я натрапив на це чудове пояснення того, що означає сервер:

Словосполучення "без сервера" не означає, що сервери більше не задіяні. Це просто означає, що розробникам більше не потрібно так багато думати про них. Обчислювальні ресурси використовуються як сервіси без необхідності керувати фізичними можливостями чи обмеженнями. Постачальники послуг все більше беруть на себе відповідальність за керування серверами, сховищами даних та іншими ресурсами інфраструктури ... Перехід на сервер дозволяє розробникам перенести свою увагу з серверного рівня на рівень завдання. Безсерверні рішення дозволяють розробникам зосередитись на тому, що потрібно робити їх застосуванню чи системі, позбавляючи складності інфраструктури заходу.

І ще одне навчання з мого особистого досвіду створення інфраструктури без серверів:

  • Бездротові трубопроводи даних насправді не повинні бути в режимі реального часу. Можна створити ефективні безсерверні трубопроводи без сервера за допомогою механізмів попередження CloudWatch AWS, що дозволяє контролювати інструменти та підвищувати сповіщення для (AWS) Lambda для обчислення.

Як, наприклад: Збережіть файли у черзі AWS SQS. Як тільки кількість повідомлень у черзі досягає 10, надішліть подію на Lambda.


6

Крім простого пояснення визначення терміна "Без сервера", походження цього терміна та його історія дають деяке розуміння, а також його значення. Концепція виникла з JAWS рамок по Остен Коллінз , який був пізніше перейменований в бессерверной . Я дізнався про це вперше на AWS re: Invent 2015 сесія , яку можна допомогти дати дату концепцію. Це те, що насправді придумав термін Serverless, який потім швидко поширився на інші хмарні системи:

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.