Тип работы:
Предмет:
Язык работы:


Разработка сервиса для работы с porto-слоями

Работа №126750

Тип работы

Бакалаврская работа

Предмет

информационные системы

Объем работы24
Год сдачи2023
Стоимость4240 руб.
ПУБЛИКУЕТСЯ ВПЕРВЫЕ
Просмотрено
21
Не подходит работа?

Узнай цену на написание


Введение 4
1. Обзор предметной области 6
1.1. Porto: предпосылки создания 6
1.2. Porto-слои 6
1.3. Системы Nirvana и YTsaurus 7
1.4. Ранее реализованная функциональность 8
2. Постановка задачи 9
3. Требования 10
3.1. Потенциальные пользователи 10
3.2. Функциональные требования 10
3.3. Нефункциональные требования 11
4. Архитектура 13
5. Особенности реализации 15
5.1. Поиск по porto-слоям 15
5.2. Версионирование porto-слоёв 16
5.3. Настройка прав доступа к porto-слоям 17
5.4. Сложности, возникшие в процессе реализации 17
5.4.1. Миграции базы данных без долгих блокировок . . 18
5.4.2. Обеспечение обратной совместимости 19
6. Тестирование и апробация 20
6.1. Тестирование 20
6.2. Апробация 21
Заключение 22
Список литературы 23


Каждому сервису, предоставляющему вычислительные ресурсы, требуется обеспечить изоляцию пользовательских пространств как друг от друга, так и от возможного негативного воздействия на операционную систему, в которой они исполняются. Пользователям этих сервисов для запуска вычислительных процессов, кроме изоляции, необходимо настроенное определённым образом окружение — установленные пакеты и библиотеки. В компании Яндекс окружения и их изоляция в основном реализуются с помощью Porto [1] и Docker [2]. Porto — система контейнеризации, разработанная внутри компании.
Porto-слой является отдельным набором директорий с файлами, по структуре повторяющий Unix-систему и служащий для запуска задач в предсказуемом окружении. Porto-слои — де-факто стандарт внутри компании Яндекс для запуска задач в предсказуемом окружении. Они используются в вычислительных сервисах различного назначения, на-пример, в YTsaurus [3] — в сервисе распределённого хранения больших объёмов данных и распределённых MapReduce [4] вычислений. Кроме того, porto-слои используются для организации непрерывной интеграции (continuous integration, CI) и непрерывной доставки (continuous delivery, CD) кода во внутренней системе контроля версий.
Однако работа со слоями далека от того, чтобы быть удобной и прозрачной. Во многих сервисах можно лишь указать идентификатор слоя, который нужно использовать для запуска задачи, но нельзя посмотреть никакую информацию о слое и тем более найти подходящий слой. Лишь в сервисе Nirvana [5] (неспециализированная облачная платформа для визуализации, управления и запуска вычислительных процессов) уже реализован просмотр списка слоёв с различными фильтрами и сортировками, просмотр метаинформации слоя и сборка нового слоя.
В рамках данной работы предлагается вынести эту функциональность в отдельный сервис — реестр porto-слоёв внутри компании, а также реализовать настройку прав доступа и просмотр истории версий слоя и их списаний. Ожидается, что новый сервис повысит не только удобство работы с porto-слоями, но и переиспользуемость слоёв внутри компании. Это в свою очередь повысит эффективность выполнения задач в сервисах YTsaurus и Nirvana за счёт того, что популярные слои закэшируются на узлах вычислительных кластеров.

Возникли сложности?

Нужна помощь преподавателя?

Помощь в написании работ!


В ходе данной работы были получены следующие результаты.
• Выявлены потенциальные пользователи сервиса, проведен сбор их пожеланий к функциональности. Сформулированы функциональные и нефункциональные требования.
• Уточнена архитектура сервиса. Проведена интеграция с сервисом управления доступами пользователей. Сервис реализован на языке Java с использованием фреймворков Spring Boot, Maven и библиотеки Hibernate.
• Улучшен поиск по porto-слоям и добавлена следующая функциональность: версионирование porto-слоев и возможность настройки прав доступа к porto-слоям.
• Написаны unit-, mock- и интеграционные тесты для проверки корректности работы сервиса. В ходе выпуска релиза, а конкретно проведения миграции базы данных, удалось избежать недоступности сервиса. Проведена апробация сервиса пользователями, ни-какой из бизнес-процессов не был сломан. Пользователи отметили повышение удобства работы с porto-слоями.



[1] Yandex. Yet another Linux container management system. — Access mode: https://github.com/yandex/porto (online; accessed: 2022¬12-20).
[2] Docker Inc. Docker documentation. — Access mode: https://docs.docker.com/ (online; accessed: 2022-12-20).
[3] YTsaurus. Documentation. — Access mode: https://ytsaurus.tech/docs/en/ (online; accessed: 2022-12-20).
[4] Wikipedia. MapReduce.—Access mode: https://en.wikipedia.org/wiki/MapReduce (online; accessed: 2022-12-20).
[5] Яндекс. Познаём Нирвану — универсальную вычислительную платформу Яндекса. — 2018. — Access mode: https://habr.com/ru/company/yandex/blog/351016/ (online; accessed: 2022-12-20).
[6] AWS. Cloud Computing Services — Amazon Web Services. —Access mode: https://aws.amazon.com/ (online; accessed: 2022-12-20).
[7] Intel. What Is Hyper-Threading? — Access mode: https://www.intel.co.uk/content/www/uk/en/gaming/resources/hyper-threading.html (online; accessed: 2022-12-20).
[8] The Kernel Development Community. The Linux Kernel documenta-tion. — Access mode: https://www.kernel.org/doc/html/latest/filesystems/tmpfs.html (online; accessed: 2022-12-20).
[9] JSON-RPC Working Group. JSON-RPC 2.0. — Access mode: https://www.jsonrpc.org/specification(online; accessed: 2023-05-01).
[10] M. Thomson, C. Benfield. HTTP/2. — Access mode: https://datatracker.ietf.org/doc/html/rfc9113 (online; accessed: 2023¬05-01).
[11] Red Hat. Hibernate.—Access mode: https://hibernate.org(on-line; accessed: 2022-12-20).
[12] Jakarta Persistence Team. Jakarta Persistence 2.2. — Access
mode: https://jakarta.ee/specifications/persistence/2.2/
(online; accessed: 2022-12-20).
[13] The PostgreSQL Global Development Group. PostgreSQL: About. — Access mode: https://www.postgresql.org/about/ (online; ac-cessed: 2023-05-01).
[14] Spring. Spring Boot official web site.—Access mode: https://spring.io/projects/spring-boot (online; accessed: 2022-12-20).
[15] Apache. Maven. — Access mode: https://maven.apache.org/ (on¬line; accessed: 2022-12-20).
[16] Eclipse Foundation. Eclipse Modeling Tools. — Access mode: https://www.eclipse.org/downloads/packages/release/2023-03/r/eclipse-modeling-tools (online; accessed: 2023-05-01).
[17] Eclipse Foundation. Acceleo Documentation. — Access mode: https://help.eclipse.org/latest/index.jsp?topic=/org.eclipse.acceleo.doc/pages/index.html (online; accessed: 2023¬05-01).
[18] Eclipse Foundation. Eclipse Modeling Framework (EMF). — Access mode: https://www.eclipse.org/modeling/emf/ (online; accessed: 2023-05-01).
[19] The PostgreSQL Global Development Group. PostgeSQL Doc-umentation: Building Indexes Concurrently. — Access mode:
https://www.postgresql.org/docs/current/sql-createindex.html#SQL-CREATEINDEX-CONCURRENTLY(online; accessed: 2022-12¬20).
[20] The PostgreSQL Global Development Group. PostgeSQL Documen-tation: ALTER TABLE. — Access mode: https://www.postgresql.org/docs/15/sql-altertable.html (online; accessed: 2022-12-20).
[21] JUnit.org. JUnit official web site.—Access mode: https://junit.org/junit5/docs/current/user-guide/ (online; accessed: 2023-05¬01).
[22] Szczepan Faber. Mockito official web site. — Access mode: https://site.mockito.org/ (online; accessed: 2023-05-01).
[23] Postman Inc. Postman.—Access mode: https://www.postman.com/product/what-is-postman/ (online; accessed: 2023-05-01).


Работу высылаем на протяжении 30 минут после оплаты.



Подобные работы


©2025 Cервис помощи студентам в выполнении работ