Федоров Родіон Євгенович

магістр кафедри Програмної інженерії

Харківський національний університет радіоелектроніки

Україна, м. Харків

 

Назаров Олексій Сергійович

к.т.н., доц. кафедри Програмної інженерії

Харківський національний університет радіоелектроніки

Україна, м. Харків

 

 Анотація: Дана стаття описує архітектурні принципи та рекомендації щодо проектування захищених, надійних, високопродуктивних та економічно ефективних хмарних рішень на Amazon Web Services.

 Метою роботи є опис архітектурних принципи проектування хмарної інфраструктури на Amazon Web Services.

 Ключові слова: хмарні технології, інфраструктура, принципи, Amazon Web Services.

 

 Міграція існуючих та нових додатків до Amazon Web Services (надалі AWS) навіть без суттєвих змін (підхід, відомий як «підйом та переміщення») надає організаціям переваги захищеної та економічно ефективної інфраструктури. Однак, щоб максимально використати переваги хмарних технологій, інженери повинні удосконалити їх архітектури щоб отримувати максимальні переваги можливостей AWS. 

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

  1. IT активи стають програмнованими ресурсами. У традиційному середовищі нам необхідно було б забезпечити обчислювальні ресурси шляхом покупки нового обладнання або удосконаленян існуючого, базуючись на теоретично обгрунтованому максимальному піку навантаження, що спричиняло неефективне використання ресурсів. У хмарному середовищі ми маємо можливість отримати стільки обчислювальних ресурсів, скільки потрібно та динамічно змінювати їх кількість, в залежності від попиту. 
  2. Глобальність та доступність. Використовуючи глобальну інфраструктуру AWS, користувач має можливість розгортати додатки у різних географічних регіонах по всьому світу. Таким чином можна зменшити час затримки до кінцевих користувачів.
  3. Керовані сервіси. AWS пропонує широкий спектр сервісів, інфраструктура яких керується на стороні хмарного провайдера. Так, наприклад, AWS RDS сервіс дає можливість розгорнути реляційну базу даних та не перейматися питаннями підтримки інфраструктури під базу даних. 
  4. Вбудована безпека. У хмарному середовищі проблеми забезпечення безпеки фізичних ресурсів знаходяться на стороні хмарного провайдера. Оскільки у хмарному середовищі ресурси є програмованими для кінцевого користувача, AWS надає широкий спектр сервісів для ефективного керування безпекою цих ресурсів.

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

 Принципи побудови хмарної інфраструктури на AWS

 В AWS розроблено список принципів, що повинні враховуватися під час проектування хмарної інфраструктури. Ми коротко розглянемо суть кожного принципу.

 1. Масштабованість

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

 2. Одноразові ресурси замість статичних серверів

 У традиційній інфраструктурі ми змушені працювати з фіксованими фізичними ресурсами та не маємо можливість динамічно створювати та видаляти нові ресурси, збільшувати та зменшувати їх ємкість. Інша проблема – «конфігураційних дрифт», коли зміни та оновлення, прийняті у середовище можуть призвести до не протестованого та неоднорідного стану середовища. Ця проблема може бути вирішена з використанням принципу «незмінна інфраструктура». У цьому підході запущений сервер ніколи не оновлюється, а кожне оновлення чи зміни відбуваються через заміну старого сервера новим, вже оновленим. У хмарному середовищі, через динамічну природу обчислювальних ресурсів ми маємо змогу динамічно створювати за видаляти віртуальні машини та змінювати їх характеристики, що дозволяє нам, у даному випадку, ефективно реалізовувати принцип «незмінної інфраструктури».

 3. Автоматизація

 У традиційній IT інфраструктурі ми часто вносимо зміни вручну. Працюючи з AWS ми маємо великий набір сервісів та зовнішніх інтеграцій, що дозволяють нам автоматизувати процес побудови та менеджменту інфраструктури, що підвищить ефективність та надійність цих процесів та дозволяє не робити ручні конфігурації, що можуть призвести до «конфігураційного дрифту», описаного раніше.

 4. Низька залежність

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

 5. Сервіси, не сервера

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

 6. Бази даних

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

 7. Видалення єдиної точки відмови

 Передбачає проектування системи з використанням «надлишку», тобто мати декілька ресурсів для однієї задачі. У разі відмови одного ресурсу, ми маємо інших, котрий продовжить роботу. Досягається шляхом балансування навантаження між ресурсами.

 8. Оптимізація коштів

 AWS пропонує широкий набір типів ресурсів та конфігураційних одиниць для різних ситуацій та потреб. Так вибір правильної кількості, розміру та типу серверів, типу сховища, плану бази даних і так далі дозволяє значно зменшити витрати на IT ресурси у порівнянні з традиційними IT рішеннями. 

 9. Кешування

 Кешування – це техніка, що дозволяє зберігати раніше обчислені дані для майбутнього використання без повторного обчислення. Кешування може стосуватися даних у додатку, при якому можливе використання хмарних сервісів кешування (наприклад, Amazon ElastiCache для Memcached та Redis). Кешування статичного контенту на «Edge» локаціях, при якому HTML, CSS, медіа файли тощо) можуть бути закешовані з використанням сервісу Amazon CloudFront.

 10. Безпека

 Стратегії щодо безпеки, які приймаються у традиційній IT інфраструктурі також можуть використатися і у хмарному середовищі. AWS рекомендує наступні практики щодо безпеки: улитізація AWS сервісів для безпеки (VPC, WAF, Inspector…), передача відповідальності щодо безпеки до AWS, зменшення привілегій доступу (змешення прав користувачів та сервісів до інших ресурсів), безпека як код (конфігурації щодо безпеки повинні бути автоматизованими), аудит у реальнмоу часі (використання AWS TrustedAdvisor та зовнішніх сервісів для аналізу стану безпеки інфраструктури у реальному часі).

 Отже, у даній статті ми кратко розглянули архітектурні принципи та рекомендації щодо проектування захищених, надійних, високопродуктивних та економічно ефективних хмарних рішень на Amazon Web Services, від як правильно проектувати бази даних до проектування горизонтально масштабованих додатків. І хоча кожен випадок є унікальним, розробник системи повинен враховувати наведені практики під час проетування своїх рішень.

 

Література:

1. Amazon Web Services in Action, 2015 Manning Publications, by Andreas Wittig, Michael Wittig

2. AWS: Amazon Web Services Tutorial The Ultimate Beginners Guide, 2017 by Dennis Hutten