JavaRush /Java блог /Random UA /Сервери Лікнеп для «чайників»

Сервери Лікнеп для «чайників»

Стаття з групи Random UA
Нижче наведено адаптований переклад статті The non-techie's guide to servers Кеннена Чандрасегарана (Kannan Chandrasegaran), розробника з компанії Panopto. Просимо звернути увагу, що стаття розрахована на новачків, які мало знайомі з поняттям серверної частини програми та серверів. Сервери  Лікнеп для «чайників» - 1

З життя офісу

Важко бути «не-технарем» в ІТ-компанії, повірте! Маркетологи, менеджери з продажу, бухгалтери — не має значення — час від часу вони стикаються зі своїми технічно підкованими колегами. Це можуть бути програмісти або системні адміністратори. У будь-якому випадку, "не-технарі" почуваються так, ніби їм ампутували важливу частину мозку. Або вони висадабося на невідому планету з розумним негуманоїдним життям. Або ...
Сервери  Лікнеп для «чайників» - 2
Іноді, звісно, ​​все закінчується благополучно. Ось, наприклад, дівчина-« фронтенщиця », йде коридором. Ніщо не віщує біди: вона прямує ліворуч, ви – праворуч, і якнайшвидше… Ні, цього разу не пронесло. Ви вже сидите з нею за столом, і намагаючись подолати незручне мовчання, питаєте: "А ... чим саме ти займаєшся?". Вона починає розповідати щось, але ви не одразу врубаєтеся, про що вона. Начебто і слова знайомі: інтерфейс користувача, додатки, і - точно, Facebook - це сайт. Ага, там є кнопочки, меню… Ви абияк розібралися в хитросплетіннях її роботи, киваєте їй на прощання і ваші шляхи розходяться в коридорах великого офісу.
Сервери  Лікнеп для «чайників» - 3
Але рано чи пізно вам не так пощастить: ви зустрінете інженера серверами. Або бек-енд розробника. Не знаючи в які нетрі зараз потрапите, ви наївно ставите те саме питання і... отримуєте абракадабру у відповідь. Чуєте безліч іноземних слів, а в голові пробігають думки: "Чи пристойно запитати, що таке API?" (JSON)??». Ваш знайомий інженер намагається розповісти вам про сервери, але не розуміє, наскільки вам складно зрозуміти його наповнену професійними термінами мову. Ймовірно, ви вже чули слово "сервер" раніше, але його вживають настільки різних контекстах, що усвідомити його значення вкрай складно. Що ж, спробуємо розібратися з цим терміном.

Вниз по кролячій норі

Коли звичайна людина (себто не програміст чи адмін) використовує додаток, все, що він бачить — це інтерфейс, картинку, яка реагує на якісь очевидні (найчастіше) дії. Насправді те, що користувачі розуміє під «додатком» зазвичай — його фронт-енд, тобто лицьова частина, обгортка, з якою вони взаємодіють. А ось про те, що всередині, тобто про те, що змушує програму працювати, користувачі знають дуже мало. Скажімо, ви відправляєте мені повідомлення, наприклад, Whatsapp або Viber. Це виглядає так, начебто повідомлення йде з вашого смартфона на мій. Давайте подивимося на цей процес уважніше. Скажімо, ви відправляєте мені повідомлення, коли мій телефон вимкнено, а потім ви вимикаєте свій смартфон. І ось, я вмикаю свій телефон, і все ж таки отримую ваше повідомлення, хоча наші телефони одночасно не працювали. Схоже, ми щось упустабо! Це "щось", пропущений нами компонент - бек-енд або сервер.
Сервери  Лікнеп для «чайників» - 4
Говорячи про фронт-енд і бек-енд, програмісти зазвичай мають на увазі поділ користувача частини програми від програмної логіки. Отже, фронт-енд (front-end) – це інтерфейсна частина програми, а бек-енд (back-end) – його серверна частина.

Сервери

По суті, сервер — це обчислювальна машина, комп'ютер, підключений до Інтернету, і постійно включений.
Дві основні завдання сервера: зберігання даних та забезпечення взаємодії.
Сервери  Лікнеп для «чайників» - 5
Ви відправляєте повідомлення по Whatsapp або Viber, програма на вашому смартфоні посилає повідомлення на сервер, де воно зберігається. Коли Viber, встановлений на моєму смартфоні, підключається до сервера, той надсилає мені всі повідомлення, що зберігаються.
Сервер – це «базова станція» з якою працює програма
Коли програма потребує будь-якої інформації, вона звертається до сервера. Коли програмі потрібно зв'язатися з іншим користувачем програми, саме сервер забезпечує їхню взаємодію. Терміни сервер, бек-енд та API (апі) часто використовуються як взаємозамінні.

Сховища або системи зберігання даних

Основне завдання сервера – зберігання даних. Сюди входять файли : фотографії, відео та документи. Сервер зберігає їх у структурованому вигляді, який схожий на папки на вашому комп'ютері, таким чином вони можуть бути доступні програмам. Також на сервері зберігається інформація . Усі програми містять інформацію важливу для їхньої роботи.
Сервери  Лікнеп для «чайників» - 6
Ви можете подати таку інформацію у вигляді набору таблиць. Наприклад, програма повинна зберігати інформацію про користувача та його пароль, щоб пройти автентифікацію. Ваша програма може бути путівником по ресторанах, у цьому випадку сервер буде зберігати інформацію про кожен ресторан. Крім самої інформації, сервер також записує зв'язки між даними. Наприклад, користувач лайкає ресторан у додатку на смартфоні, і сервер запам'ятовує такий зв'язок між рестораном та користувачем.
Сервери  Лікнеп для «чайників» - 7
Це дозволяє відповісти на багато питань. Наприклад:
  • Скільки користувачів лайкнули цей ресторан?
  • Які ресторани подобаються цьому користувачеві?
  • Страви якої кухні подобаються відразу кільком користувачам?
Інформація та зв'язки між даними зберігаються у базі даних (БД). Існує безліч видів баз даних, але всі вони:
  • можуть зберігати інформацію
  • можуть зберігати зв'язки між даними
  • можуть отримувати запити про інформацію та відповідати на них як одиничними даними або набором даних, залежно від запиту.
Існує багато видів баз даних, кожна з яких має свої переваги та недоліки. Якщо ви чуєте такі терміни як SQL, MySQL, MongoDB, CouchDB, Redis, то знайте – йдеться про бази даних.

Взаємодія

Ключове завдання сервера - взаємодія з програмою та іншими серверами.
Сервери  Лікнеп для «чайників» - 8
Багато завдань програми вимагають взаємодії із сервером. Наприклад, якщо користувач щось шукає, пошуковий запит надсилається на сервер і звідти надходить результат. Якщо користувач надсилає повідомлення іншому користувачеві, воно спочатку надходить на сервер. А потім звідти відправляється на додаток іншого користувача, найчастіше у вигляді надісланого повідомлення. Інтерфейси, які надає сервер для того, щоб програми могли з ним взаємодіяти, зазвичай називаються API . А якісь функції інтерфейсу можна зіставити з кінцевими точками (endpoints), наприклад, з пошуком або авторизацією на сайті. Непосвяченим така взаємодія може здатися дивною. Двома найбільш поширеними форматами взаємодії є JSON та XML.
Сервери  Лікнеп для «чайників» - 9
XML ліворуч, JSON праворуч На перший погляд формати виглядають важко прочитаними. Важливо розуміти, що сервер це просто комп'ютер, як ваш ноутбук або смартфон. Додаток на вашому телефоні приймає введення користувача в голосовому або текстовому вигляді, за допомогою розпізнавання голосу або торкання екрана. Програма обробляє цю інформацію, а потім відповідає у вигляді зображення на екрані. Смартфон — комп'ютер, який взаємодіє з людиною, тому введення та виведення надаються у зручній для людини формі. Сервер – обчислювальна машина, яка взаємодіє лише з іншими комп'ютерами. Людина сприймає інформацію завдяки таким речам як: розмір шрифту, колір тексту та форматування. Але це нічого не означає для комп'ютера.
Взаємодія між серверами відбувається у форматах, які легко розібрати та зрозуміти іншим комп'ютерам.

Серверний додаток

Якщо ви хочете створити програму, яка буде працювати на вашому телефоні, вам також знадобиться програма, яка буде працювати на сервері. Серверні програми створюються за допомогою серверних мов програмування та фреймворків, популярними варіантами яких є Java , Ruby on Rails , Node.js , PHP , ASP.NET .
Сервери  Лікнеп для «чайників» - 10
Можна сказати, що API - це "двері" вашого сервера і додаток знає, що в них треба стукати. База даних зберігає всю інформацію. А серверна програма – це «мозок», який пов'язує все разом. Воно отримує та відповідає на запити, які надходять йому через API, додає та витягує інформацію з бази даних, та приймає рішення. Наприклад, коли програма надсилає інформацію для входу, запит надходить через API, правильна інформація для входу зберігається в базі даних. Завданням серверної програми порівняти їх і відповідно відповісти програмі, використовуючи API.

Апаратне забезпечення

Сервери  Лікнеп для «чайників» - 11
Коли ви чуєте слово "сервер", швидше за все, ви уявляєте таку картинку: шафи з мерехтливими лампочками в закритій кімнаті. Ймовірно, для повноти картини не вистачає тільки Тома Круза, який спуститься зі стелі і щось краде. Багато великих компаній володіють своїми серверами і цілими центрами обробки даних (ті самі великі кімнати з мерехтливими шафами). Facebook і Google мають сотні серверів по всьому світу. Коли ви керуєте величезним сервісом з мільйонами користувачів, вміст власних серверів може бути значно дешевшим і це забезпечить більш високу продуктивність. Замість того, щоб утримувати власні сервери багато розробників використовують хмарні сервіси. Такі сервіси як Amazon Web Services, Azure та Digital Ocean пропонують можливість використання «віртуальних серверів». Ці послуги володіють і обслуговують апаратне забезпечення, а розробник легко завантажує нею серверне додаток. Деякі провайдери послуг надають бекенд як сервіс, дозволяючи вам мати простий бекенд без необхідності писати серверну програму самостійно.

Чи всім додаткам потрібен бекенд?

Більшість знайомих додатків, швидше за все, мають бекенд-компонент. Звісно, ​​можна знайти програми без серверної частини. Наприклад, деякі програми для продуктивності. Легкий спосіб з'ясувати, чи є у додатку бек-енд виглядає так:
якщо ви переключитеся на режим «У польоті», чи працюватиме програма?
Якщо відповідь «ні», це означає, що програма точно має бекенд-сервер.
Сервери  Лікнеп для «чайників» - 12
Сподіваюся, у вас з'явилося розуміння, що таке бек-енд програми. Можливо, коли ви зустрінете своїх знайомих-програмістів наступного разу, то зможете не тільки зрозуміти, про що вони говорять, але й використати якогось чортового «Джейсона» у вашій розмові.
Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ