OTHER Q Flashcards
Что такое модель OSI?
Сетевая модель OSI - сетевая модель стека сетевых протоколов. Посредством модели OSI различные сетевые устройства могут взаимодействовать друг с другом.
Модель определяет 7 разных уровней взаимодействия систем. Каждый уровень выполняет определенные функции при этом взаимодействии.
Как расшифровывается OSI в “модели OSI”?
OSI = Open Systems Interconnection.
Полное название: Open Systems Interconnection Basic Reference Model - Базовая Эталонная Модель Взаимодействия Открытых Систем.
Какие 7 уровней взаимодействия есть в модели OSI?
Media layers == Среда передачи данных, управление физической доставкой данных по сети.
1) Physical == Физический (Двоичная передача)
2) Data Link == Канальный (Доступ к среде передачи данных)
3) Network == Сетевой (Адреса и маршрутизация: IPv4, IPv6…)
—
Host layers == Уровни хостов (машин), управление доставкой данных от одного хоста к другому (другим).
4) Transport == Транспортный (Связь между конечными устройствами: UDP…)
5) Session == Сеансовый (Связь между хостами)
6) Presentation == Представления (Представление данных: SSL, TLS, …)
7) Application == Прикладной (Сетевые процессы с приложениями: HTTP/S, SMTP/POP3/IMAP4, FTP/SMB, Telnet/SSH, …)
Теорема CAP
Теорема CAP (Consistency, Availability, Partition tolerance) описывает три основных требования к системам распределенной обработки данных. Она утверждает, что в распределенных системах можно достичь одновременно только двух из трех свойств:
- Согласованность (Consistency) - все узлы системы видят одинаковые данные в одинаковое время. Это означает, что если данные были изменены на одном узле, то эти изменения будут видны на всех остальных узлах в короткие промежутки времени.
- Доступность (Availability) - каждый запрос к системе получает ответ о статусе запроса в течение некоторого времени. Это означает, что система всегда должна быть доступна для запросов, даже в случае отказа одного или нескольких узлов.
- Устойчивость к разделению (Partition tolerance) - система продолжает работать, даже если связь между отдельными узлами временно нарушена. Это означает, что система должна быть способна работать даже в условиях сбоев в сети.
Теорема CAP означает, что невозможно создать распределенную систему, которая одновременно обладает всеми тремя свойствами. При разработке распределенной системы необходимо выбирать, какие два свойства являются наиболее важными для данного приложения. Например, в системе онлайн-магазина может быть более важной согласованность и доступность, в то время как у системы хранения больших объемов данных может быть более важной устойчивость к разделению и доступность.
Основные команды командной строки
Linux
https://firstvds.ru/technology/pervye-shagi-v-komandnoy-stroke
ELK
Сегодня наиболее популярным инструментом для построения решений по мониторингу корпоративной инфраструктуры считается ELK – Elasticsearch, Logstash и Kibana. Изначально эти 3 продукта с открытым исходным кодом развивались отдельно друг от друга, но в 2015 году стали принадлежать одной компании Elastic. Сегодня Elasticsearch, Logsatsh и Kibana используются вместе для задач сбора, хранения и анализа данных
Инфраструктура ELK включает следующие компоненты [2]:
Logstash собирает, преобразует и отправляет нужные данные в нужный пункт назначения
Elasticsearch индексирует и анализирует собранные данные и производит поиск в них
Kibana визуализирует резуьтаты анализа
- Elasticsearch (ES) – масштабируемая утилита полнотекстового поиска и аналитики, которая позволяет быстро в режиме реального времени хранить, искать и анализировать большие объемы данных. Как правило, ES используется в качестве NoSQL-базы данных для приложений со сложными функциями поиска. Elasticsearch основана на библиотеке Apache Lucene, предназначенной для индексирования и поиска информации в любом типе документов. В масштабных Big Data системах несколько копий Elasticsearch объединяются в кластер [4].
- Logstash — средство сбора, преобразования и сохранения в общем хранилище событий из файлов, баз данных, логов и других источников в реальном времени. Logsatsh позволяет модифицировать полученные данные с помощью фильтров: разбить строку на поля, обогатить или их, агрегировать несколько строк, преобразовать их в JSON-документы и пр. Обработанные данные Logsatsh отправляет в системы-потребители.
- Kibana – визуальный инструмент для Elasticsearch, чтобы взаимодействовать с данными, которые хранятся в индексах ES. Веб-интерфейс Kibana позволяет быстро создавать и обмениваться динамическими панелями мониторинга, включая таблицы, графики и диаграммы, которые отображают изменения в ES-запросах в реальном времени. Примечательно, что изначально Kibana была ориентирована на работу с Logstash, а не на Elasticsearch. Однако, с интеграцией 3-х систем в единую ELK-платформу, Kibana стала работать непосредственно с ES [4].
Что такое Kubernetes
Kubernetes (K8s) - это популярная и мощная система управления контейнерами, которая предназначена для автоматизации развертывания, масштабирования и управления приложениями в контейнерах. Он позволяет управлять десятками, сотнями или даже тысячами контейнеров, работающих на разных узлах, и обеспечивает автоматическую оркестрацию, масштабирование и управление сетью. Kubernetes поддерживает широкий спектр технологий контейнеризации, включая Docker, Containerd и CRI-O, и предоставляет API для управления приложениями в контейнерах. Kubernetes также предоставляет множество инструментов и функций, таких как балансировщики нагрузки, автоматическое восстановление и обновление приложений, мониторинг и журналирование. Он используется многими организациями для ускорения развертывания и масштабирования приложений в контейнерах.
Принцип YAGNI
Принцип YAGNI (You Ain’t Gonna Need It) - это принцип разработки программного обеспечения, который заключается в том, что не следует создавать функциональность, которая может потенциально понадобиться в будущем, но которая не требуется на текущий момент.
Согласно принципу YAGNI, разработчики должны создавать только ту функциональность, которая необходима для текущего этапа разработки, и откладывать реализацию потенциально полезной, но необязательной функциональности до тех пор, пока она не станет необходимой. Таким образом, YAGNI направлен на минимизацию избыточности и упрощение кода, сокращение времени разработки и повышение его качества.
Принцип YAGNI является одним из принципов Agile-методологий разработки ПО и часто используется в качестве средства для управления проектами и ускорения разработки.
Принцип DRY
DRY (Don’t Repeat Yourself) - это принцип разработки программного обеспечения, который заключается в том, что каждый фрагмент кода должен иметь только одно место, где он определен.
Согласно принципу DRY, повторение кода приводит к увеличению сложности программы, усложнению ее поддержки и увеличению риска возникновения ошибок. Вместо этого, следует выносить повторяющиеся фрагменты кода в отдельные функции, классы или библиотеки, которые могут быть использованы в разных частях программы.
Принцип DRY является одним из основных принципов разработки ПО и широко используется в различных методологиях разработки, таких как Agile, Scrum, XP, и т.д. Он помогает создавать более читабельный, поддерживаемый и надежный код, ускоряет разработку и уменьшает количество ошибок.
Принцип KISS
KISS (Keep It Simple, Stupid) - это принцип разработки программного обеспечения, который заключается в том, что любой системный дизайн должен быть максимально простым и понятным.
Согласно принципу KISS, не следует усложнять систему более, чем необходимо для ее правильной работы. Программисты должны предпочитать простые решения сложным, избегать излишней детализации и учитывать потребности конечных пользователей. Принцип KISS направлен на уменьшение сложности программного кода, что делает его более понятным, легким для сопровождения и изменения.
Принцип KISS является ключевым принципом в Agile-разработке, а также в других методологиях разработки ПО. Он помогает создавать программное обеспечение, которое является более эффективным, простым в использовании и менее подверженным ошибкам.
Жизненный цикл проекта в Maven
Проверка — validate. Фреймворк проверяет, корректен ли проект и предоставлена ли вся необходимая для сборки информация.
Компиляция — compile. Maven компилирует исходники проекта.
Тест — test. Проверка скомпилированных файлов. В нашем случае будет использована библиотека JUnit.
Сборка проекта — package. По умолчанию осуществляется в формате JAR. Этот параметр можно изменить, добавив в project тег packaging.
Интеграционное тестирование — integration-test. Maven обрабатывает и при необходимости распаковывает пакет в среду, где будут выполняться интеграционные тесты.
Верификация — verify. Артефакт проверяется на соответствие критериям качества.
Инсталляция — install. Артефакт попадает в локальный репозиторий. Теперь его можно использовать в качестве зависимости.
Размещение проекта в удалённом репозитории — deploy, — финальная стадия работы.
Помимо этого есть две фазы, выполняющиеся отдельно, только прямой командой:
Clean — oчистка, удаляющая предыдущие сборки.
Site — создание документации для сайта.