Остання редакція: 25-04-2023
Тези доповіді
Для покращення умов навчання та викладання, навчальні заклади використовують різноманітні навчальні платформи, однією з яких є Moodle(Modular Object-Oriented Dynamic Learning Environment) - модульне об’єктно-орієнтоване динамічне навчальне середовище.
В залежності від кількості учасників освітнього процесу навчального закладу визначається технічна складова по розгортанню даного сервісу. Від кількості користувачів, на пряму залежить кількість ресурсів, яка буде використана, для ефективного користування навчальною платформою.
Два типи розгортання(підняття) сервісів на даний час поширені у ІТ практиці. Це - серверний та хмарний.
На сьогодні, системи хмарного обчислення (Cloud Computing) мають великий попит через свою доступність, надійність та простоту в реалізації. Популярними сервісами хмарного обчислення на сьогодні є - Amazon Web Services (AWS) , Google Cloud Platform (GCP) та Microsoft Azure. Також існують і інші хостинг провайдери подібні до описаних вище, але мають набагато менший спектр сервісів, наприклад, Hetzner, Digital Ocean (DO), Vultr і інші.
Amazon Web Services на сьогодні налічує вже більше 200 різноманітних сервісів, які можуть бути альтернативою для розгортання тої чи іншої платформи, сервісу, аплікації і т.п. Розгортаючи будь-яку інфраструктуру у хмарі необхідно враховувати наступні принципи:
● простота реалізації;
● доступність;
● відмовостійкість;
● доставка продукту на кінцеву точку;
● бекапування;
● вартість.
В даній статті розглянуто один з варіантів реалізації навчальної платформи - без серверні обчислення(serverless).
Без серверні обчислення (serverless) - це спосіб надання серверних послуг з урахуванням фактичного використання сервісів. Без серверний провайдер дозволяє користувачам писати та розгортати код, не турбуючись про базову інфраструктуру. Компанія, яка отримує бекенд-послуги від безсерверного постачальника, платить за фактом використаних ресурсів, і не повинна резервувати та оплачувати фіксовану пропускну спроможність або кількість серверів, оскільки послуга автоматично масштабується. Звичайно, для надання клієнту без серверних обчислень використовуються фізичні сервери, але розробникам немає необхідності думати про їх конфігурацію, продуктивність, ядра, пам'ять та інше.
Головним аспектом для успішної роботи навчальної платформи є швидкодія, економія часу на обслуговування даної системи та її ресурсів. Швидкодію забезпечує в першу чергу ресурс AWS ECS Fargate контейнера, де знаходиться Docker image навчальної платформи. Не менш важливим є ALB (application load balancer), який балансує трафік до контейнер системи за допомогою цільових груп (target groups), а також між різними зонами доступності (AZ). Всі ресурси об’єднані в одну віртуальну хмару, що захищає ресурси від зовнішнього світу. Обслуговування в такому разі потрібне мінімальне, оскільки використовуючи autoscale policy ми надаємо змогу автоматично піднімати ресурс для даного сервісу, що рятує під час обробки великої кількості даних, або системних аномалій. Також ALB має високу пропускну здатність і надійні протоколи фільтрації, що допомагає запобігти перенасиченню сервісів трафіком. Використовуючи AWS EFS в якості маунт поінту для системи, ми запобігаємо передчасному закінченню місця на диску, і таким чином це додає більше надійності. Останнім елементом надійності є serverless RDS Cluster, який фактично використовує стільки ресурсів, скільки йому необхідно в даний час, тобто в пікові часи навантаження він здатен скейлитись до розмірів комфортних для роботи з базою даних. Використовуючи дану топологію ми можемо забезпечити всі потреби поставлені в меті, проте також можна додати ще низку модулів та сервісів які зроблять сервіс ще безпечнішим та швидшим у роботі, такі як AWS Cloudfront(CDN), AWS WAF(firewall), AWS S3(для зберігання об’єктів).