Как стать автором
Поиск
Написать публикацию
Обновить
1970.64
Timeweb Cloud
То самое облако

50 терминов системного дизайна, которые должен знать каждый разработчик

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров25K
Автор оригинала: Tharun Kumar Reddy Polu



1. Масштабируемость / Scalability


  • Масштабируемость — это способность системы поддерживать возросшую нагрузку путем добавления дополнительных ресурсов
  • Примером является добавление дополнительных серверов для обработки увеличившегося веб-траффика
  • Что такое масштабируемость и как ее достичь?

2. Балансировка нагрузки / Load Balancing


  • Балансировка нагрузки — это разделение входящего сетевого траффика между несколькими серверами для снижения нагрузки на каждый из них (во избежание того, чтобы на один сервер приходилось слишком много траффика)
  • Примером является распределение веб-траффика между несколькими экземплярами EC2 с помощью сервиса AWS Elastic Load Balancer (ELB)
  • Понимание балансировки нагрузки

3. Микросервисы / Microservices


  • Микросервисы — это архитектурный паттерн, предполагающий разделение приложения на коллекцию слабосвязанных сервисов
  • Примером является разделение монолитного приложения на независимые сервисы, отвечающие за управление пользователями, обработку платежей и отправку уведомлений
  • Что такое микросервисы?

4. Теорема CAP / CAP Theorem


  • Теорема CAP (теорема Брюера) — это эвристическое утверждение о том, что в любой реализации распределенных вычислений возможно обеспечить не более двух из трех следующих свойств: согласованность данных (consistency), доступность (availability) и устойчивость к фрагментации (partition tolerance)
  • Примерами использования теоремы CAP являются случаи, когда мы вынуждены жертвовать согласованностью ради доступности, и наоборот, при проектировании распределенных баз данных (БД)
  • Понимание теоремы CAP

5. Шардинг / Sharding


  • Шардинг — это процесс разделения большой БД на маленькие части, которые называются шардами (shards), для лучшей поддержки и управления
  • Примером является разделение БД пользователей по географическому региону
  • Объяснение шардинга БД

6. Задержка / Latency


  • Задержка — это время, за которое данные проходят путь из точки А в точку Б
  • Примером является время доставки сообщения в приложении чата
  • Объяснение задержки

7. Пропускная способность / Throughput


  • Пропускная способность — это мера количества данных, которые система обрабатывает (способна обработать) за определенное время
  • Примером является количество запросов, обрабатываемых сервером за одну секунду
  • Пропускная способность компьютерных сетей

8. Кэш / Cache


  • Кэш — это любой аппаратный или программный компонент для хранения часто запрашиваемых данных, позволяющий снизить нагрузку на сервер и БД
  • Примером использование кэша является запись и извлечение часто запрашиваемых данных в/из Redis
  • Объяснение кэширования

9. Сеть доставки контента / Content Delivery Network (CDN)


  • CDN — это система географически распределенных серверов, суть которой состоит в том, что пользователь получает веб-контент из ближайшего к нему сервера
  • Примером использования CDN является хранение данных в Cloudflare для более быстрой загрузки страниц приложения
  • Что такое CDN?

10. REST API


  • REST API (REpresentational State Transfer — передача репрезентативного состояния) — это архитектурный стиль создания веб-сервисов, в которых работа с данными осуществляется с помощью запросов HTTP
  • Примером является проектирование API (Application Programming Interface — интерфейс программирования приложения) социальной сети на основе принципов REST, когда работа с данными выполняется с помощью GET, POST, PUT, DELETE и др. запросов HTTP
  • Туториал по REST API

11. GraphQL


  • GraphQL — это язык запросов и манипулирования данными для построения веб ориентированных программных интерфейсов, являющийся альтернативой REST API
  • Примером является запрос всех данных пользователя с помощью единственного запроса (в REST API таких запросов чаще всего будет несколько)
  • Введение в GraphQL

12. ACID


  • ACID — это набор требований к транзакционной системе, обеспечивающий ее надежность и предсказуемость: атомарность (atomicity), согласованность (consistency), изоляцию (isolation) и устойчивость (durability)
  • Примером является обеспечение соответствия принципам ACID банковских транзакций во избежание повреждения данных
  • Свойства ACID в БД

13. BASE


  • BASE — это набор требований к транзакционной системе, обеспечивающий ее базовую доступность (basically available), мягкое состояние (soft state) и окончательную согласованность (eventually consistent), являющийся альтернативой ACID
  • Примером является проектирование высокодоступных, окончательно согласованных NoSQL БД
  • BASE и ACID

14. NoSQL


  • NoSQL — это тип БД, предназначенный для хранения и извлечения данных, смоделированных способами, отличными от табличных отношений, используемых в реляционных БД
  • Примером такой БД является MongoDB, в которой данные хранятся в виде документов
  • Что такое NoSQL БД?

15. SQL


  • SQL (Structured Query Language — язык структурированных запросов) — это декларативный язык программирования, применяемый для создания, модификации и управления данными в реляционной БД, управляемой соответствующей системой управления БД
  • Примером является SQL-запрос на выборку данных из реляционной БД
  • Туториал по SQL

16. Индексация БД / DB Indexing


  • Индексация БД — это техника структурирования данных, позволяющая быстрее искать и извлекать данные из БД (соответствующие структуры данных называются индексами (indexes))
  • Примером является создания индекса идентификаторов пользователей для ускорения поиска их данных
  • Индексация БД

17. Репликация / Replication


  • Репликация — это процесс копирования и хранения объектов БД в нескольких БД, составляющих распределенную систему БД
  • Примером является хранение копий данных на разных серверах CDN для обеспечения высокой доступность и скорости доступа к данным
  • Репликация БД

18. Аварийное переключение / Failover


  • Аварийное переключение — это резервный режим работы, при котором функции компонентов системы передаются другим компонентам в случае выхода из строя основного компонента
  • Примерами являются всевозможные встроенные механизмы автоматического переключения на резервные серверы в случае сбоя основного
  • Аварийное переключение и аварийное восстановление

19. Шлюз API / API Gateway


  • Шлюз API — это сервер, принимающий запросы от клиента, применяющий к ним задержку (throttling), разные политики (например, политики безопасности) и передающий их соответствующим серверным сервисам
  • Примером является использование шлюза AWS API для управления различными API
  • Что такое шлюз API?

20. Сервисная сетка / Service Mesh


  • Сервисная сетка — это выделенный уровень инфраструктуры, предназначенный для облегчения взаимодействия между микросервисами
  • Примером является интеграция Istio в качестве сервисной сетки для управления взаимодействием микросервисов
  • Введение в сервисную сетку

21. Бессерверные вычисления / Serverless Computing


  • Бессерверные вычисления — это реализация облачных вычислений, позволяющая провайдеру облака динамически распределять аппаратные ресурсы
  • Примером является использование AWS Lambda для запуска серверного кода приложения
  • Что такое бессерверные вычисления?

22. Событийно-ориентированная архитектура / Event-Driven Architecture


  • Событийно-ориентированная архитектура — это парадигма архитектуры программного обеспечения (ПО), поощряющая генерацию, обнаружение и потребление событий (events), а также их обработку — реагирование на них тем или иным образом
  • Примером является проектирование системы с передачей событий между микросервисами с помощью Apache Kafka
  • Событийно-ориентированная архитектура

23. Монолитная архитектура / Monolithic Architecture


  • Монолитная архитектура — это архитектура ПО, когда все элементы являются частями одного приложения и функционируют как один сервис
  • Примерами являются старые-добрые корпоративные приложения, построенные как одна большая единица
  • Монолитная и микросервисная архитектуры

24. Распределенная система / Distributed System


  • Распределенная система — это модель, компоненты которой расположены на разных компьютерах в одной сети, которые взаимодействуют между собой путем передачи сообщений
  • Примером является проектирование распределенной файловой системы, такой как Hadoop
  • Введение в распределенные системы

25. Очередь сообщений / Message Queue


  • Очередь сообщений — это метод, обеспечивающий асинхронную связь между службами как в бессерверной, так и в микросервисной архитектуре
  • Примером является использование RabbitMQ в качестве брокера сообщений
  • Объяснение очереди сообщений

26. Модель "Издатель/подписчик" / Pub/Sub Model


  • Издатель/подписчик — это шаблон обмена сообщениями, в котором отправитель (издатель) публикует сообщения в канале, к которому имеют доступ получатели (подписчики). При этом, издателю не нужно ничего знать о подписчиках
  • Примером является система уведомлений, реализованная с помощью Google Cloud Pub/Sub
  • Обмен сообщениями по принципу "Издатель/подписчик"

27. Разделение данных / Data Partitioning


  • Разделение данных — это деление БД на небольшие, легко поддерживаемые и управляемые части
  • Примером является разделение таблицы БД по дате для быстрого выполнения запросов
  • Разделение БД

28. Горизонтальное масштабирование / Horizontal Scaling


  • Горизонтальное масштабирование — это увеличение мощности системы за счет добавления в нее дополнительных машин или узлов
  • Примером является добавление дополнительных серверов для обработки возросшего веб-траффика
  • Горизонтальное и вертикальное масштабирование

28. Вертикальное масштабирование / Vertical Scaling


  • Вертикальное масштабирование — это увеличение мощности системы за счет обновления существующего оборудования (обновление центральных процессоров (CPU) или оперативной памяти (RAM))
  • Примером является обновление RAM сервера, позволяющее ему обрабатывать большее количество запросов одновременно
  • Горизонтальное и вертикальное масштабирование

30. Ограничение скорости / Rate Limiting


  • Ограничение скорости — это метод контроля скорости траффика, который отправляет или получает контроллер сетевого интерфейса
  • Примером является троттлинг (throttling) API для предотвращения вредоносного поведения
  • Понимание ограничения скорости

31. Схема автоматического выключателя / Circuit Breaker Pattern


  • Схема автоматического выключателя — современный шаблон проектирования ПО, применяемый для обнаружения сбоев и инкапсуляции логики предотвращения их постоянного повторения
  • Примером является обработка неудачных обращений к удаленной службе с помощью автоматического выключателя в микросервисной архитектуре
  • Схема автоматического выключателя

32. Согласованность данных / Data Consistency


  • Согласованность данных — это состояние, когда данные являются одинаковыми в нескольких экземплярах и не повреждены
  • Примером является поддержка согласованности данных пользователей с помощью нескольких реплик БД
  • Модели согласованности данных

33. Окончательная согласованность / Eventual Consistency


  • Окончательная согласованность — это модель согласованности данных, используемая в распределенных вычислениях для достижения высокой доступности данных. Ее суть в том, что она допускает временную несогласованность данных при условии, что в конечном счете обновления системы распространятся и отразятся на всех узлах
  • Примером является Amazon DynamoDB, предоставляющая окончательно согласованную модель для чтения данных
  • Окончательная согласованность

34. Строгая согласованность / Strong Consistency


  • Строгая согласованность — это модель согласованности данных, гарантирующая, что каждое чтение получает актуальную (самую последнюю) запись конкретной единицы данных
  • Такая модель согласованности используется в системах финансовых транзакций
  • Строгая согласованность

35. Контейнеризация / Containerization


  • Контейнеризация — это процесс инкапсуляции (упаковки) приложения и всех его зависимостей в контейнер для запуска в любой вычислительной среде
  • Примером является использование Docker для контейнеризации приложения для развертывания (деплоя) в рабочей, тестовой и производственной средах
  • Что такое контейнеризация?

36. Kubernetes


  • Kubernetes — это платформа с открытым исходным кодом для автоматического развертывания, масштабирования и эксплуатации контейнеризованных приложений
  • Примером является запуск и развертывание упакованного приложения с помощью Kubernetes
  • Документация Kubernetes

37. Автомасштабирование / Autoscaling


  • Автомасштабирование — это автоматическая корректировка количества используемых вычислительных ресурсов в зависимости от пользовательской нагрузки
  • Примером является использование AWS EC2 Auto Scaling для динамической корректировки количества экземпляров
  • Объяснение автомасштабирования

38. Мультиарендность / Multi-Tanency


  • Мультиарендность — это архитектура, в которой один экземпляр ПО обслуживает несколько потребителей/покупателей
  • Приложения SaaS (Software as a Service — ПО как услуга), такие как Salesforce, используют мультиарендность при предоставлении услуг различным категориям клиентов
  • Одноарендность и мультиарендность

39. Сброс нагрузки / Load Shedding


  • Сброс нагрузки — это отказ от некоторых требований или ухудшение качества услуг для поддержания работоспособности системы в условиях высокой нагрузки
  • Примером является отключение второстепенных услуг в периоды пиковой нагрузки
  • Сброс нагрузки

40. Идемпотентность / Idempotence


  • Идемпотентность — это свойство объекта или операции при повторном применении операции к объекту давать тот же результат, что и при первом
  • DELETE-запрос HTTP является идемпотентным
  • Идемпотентность в API

41. Кворум / Quorum


  • Кворум — это минимальное количество голосов, необходимых для фиксации (commit) распределенной транзакции
  • Репликация на основе кворума обеспечивает согласованность в распределенной БД
  • Системы кворума

42. Оркестрация / Orchestration


  • Оркестрация — это архитектурный паттерн, при котором центральный координатор управляет взаимодействием сервисов между собой
  • Примером является использование механизма рабочего процесса для управления многоэтапным бизнес-процессом
  • Оркестрация

43. Хореография / Choreography


  • Хореография — это архитектурный паттерн, при котором сервисы являются независимыми и взаимодействуют друг с другом через события. В такой архитектуре отсутствует координатор или оркестратор
  • Примером являются микросервисы, взаимодействующие между собой через шину событий (event bus)
  • Хореография и оркестрация

44. Реестр сервисов / Service Registry


  • Реестр сервисов — это БД, которая следит за экземплярами микросервисов
  • Примером является использование Eureka в качестве реестра сервисов в микросервисной архитектуре
  • Реестр служб

45. Ограничение API / API Rate Limiting


  • Ограничение API — это управление тем, сколько запросов может отправить клиент за определенное время
  • Примером является установка максимального количества запросов в 100 для предотвращения злого умысла
  • Ограничение API

46. Склад данных / Data Warehouse


  • Склад данных — это система, помогающая анализировать бизнес-данные и создавать отчеты, центр бизнес-аналитики
  • В качестве склада данных может использоваться Amazon Redshift
  • Понимание склада данных

47. Озеро данных / Data Lake


  • Озеро данных — это система или репозиторий, в котором данные хранятся в собственном/необработанном формате, обычно в виде блобов (blobs) или файлов
  • Для хранения и управления структурированными и неструктурированными данными в озере данных может использоваться Petabyte scale
  • Озеро данных

48. OLAP


  • OLAP (Online Analytical Processing — обработка онлайн-аналитики) — это категория ПО, позволяющая анализировать данные, хранящиеся в БД
  • Примером является использование кубов (cubes) OLAP для точечных аналитических и произвольных запросов
  • Объяснение OLAP

49. OLTP


  • OLTP (Online Transaction Processing — обработка онлайн-транзакций) — это класс систем, которые управляют транзакционно-ориентированными приложениями
  • Примером является использование OLTP-систем для управления данными транзакций, например, в банковских системах
  • Объяснение OLTP

50. Большие данные / Big Data


  • Большие данные — это большие и сложные наборы данных, которыми невозможно эффективно управлять с помощью обычного ПО для обработки данных
  • Примером является анализ взаимодействия пользователей социальных сетей для предсказания модных трендов
  • Введение в большие данные

Парочка статей по теме:



Парочка ресурсов для изучения системного дизайна:





Новости, обзоры продуктов и конкурсы от команды Timeweb.Cloud — в нашем Telegram-канале

Теги:
Хабы:
Всего голосов 41: ↑36 и ↓5+41
Комментарии6

Публикации

Информация

Сайт
timeweb.cloud
Дата регистрации
Дата основания
Численность
201–500 человек
Местоположение
Россия
Представитель
Timeweb Cloud