Skip to content

Commit

Permalink
Merge pull request #25 from AndrewSergienko/develop
Browse files Browse the repository at this point in the history
refactor: update README.md
  • Loading branch information
andiserg authored Aug 21, 2023
2 parents 3cd02bd + 31813db commit b014a1d
Showing 1 changed file with 13 additions and 7 deletions.
20 changes: 13 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,14 +30,15 @@
був налаштований гео ДНС Gcore. Нижче наведена мапа, на якій показані зони дії кожного сервера.
<img src="https://i.ibb.co/TMxdhGK/image.png" alt="image" border="0">

На кожному сервері стоїть сервіс **Simple CDN server** який працює наступним чином:
- Користувач через головний сервер надсилає посилання для завантаження файлу найближчому файловому серверу
- Сервер завантажує та зберігає файл
- Сервер проводить реплікацію файла на інші сервери
- Файл стає доступним для завантаження на всих серверах
На кожному сервері стоїть сервіс **Simple CDN Server** який працює наступним чином:
- Користувач через головний сервер надсилає посилання для завантаження файлу;
- Головний ервер визначає, який сервер находиться ближче до файлу та дає йому завдання завантажити файл;
- Файловий сервер завантажує та зберігає файл;
- Сервер проводить реплікацію файла на інші сервери;
- Файл стає доступним для завантаження на всих серверах.

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

## Про розробку
Подійно-орієнтована архітектура додатку спроектована із застосуванням принципу чистої архітектури,
Expand All @@ -46,6 +47,11 @@
Розробка проводилась по принципу TDD, де перед розробкою функціоналу спочатку розробляються тести для нього,
в одночас формуються головні та додаткові, неочевидні вимоги.
Для швидкого та ефективного тестування були створені шари-імітації, що дозволило збільшити швидкість
під час модульного тестування.
під час модульного тестування. Таким чином, тестуючи сервісний шар, де потрібно протестувати саме сервісний метод
без методів адаптерів, які він викликає в собі, сервісний метод викликає натомість функції-заглушки, які повертають
результат очікуваного формату, заощаджучи час тестування.

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

Для автоматичних тестів та розгортання був застосований GitHub Actions. Для контейнеризації був застосований Docker.

0 comments on commit b014a1d

Please sign in to comment.