Безопасность, конфиденциальность и мультитенантность
Не переживайте, если эти слова звучат пугающе — мы объясним каждое по ходу дела. В этом уроке мы учимся говорить на собеседовании о том, как сохранять систему безопасной и конфиденциальной. Начнём с authn/authz — это сокращение двух вещей: аутентификация (проверка того, кто вы, как показ удостоверен
System Design (планирование того, как построить крупное ПО, обслуживающее множество людей) похож на планирование города: дороги, склады, светофоры и ремонтные бригады, чтобы город продолжал гладко работать даже в час пик, когда все выходят одновременно.
- Безопасность и конфиденциальность
- Ключевая идея этого урока: как сохранять систему безопасной, а данные пользователей — конфиденциальными. Она включает: аутентификацию и авторизацию (authn/authz — кто вы и что вам разрешено делать), хранение секретов и паролей в защищённом месте (секреты), шифрование данных (шифрование), разделение разных клиентов (изоляция тенантов), предотвращение злоупотреблений (abuse prevention) и то, как долго мы храним данные и когда их удаляем (retention).
- Компромисс
- Компромисс — осознанный выбор, при котором вы выигрываете в одном и платите за это другим, как выбор фастфуда вместо домашней еды: вы экономите время, но теряете в качестве. На собеседовании вы объясняете, что выиграли и чего это стоило.
- Эксплуатационная метрика
- Эксплуатационная метрика — число, которое показывает, действительно ли решение работает, когда система запущена и обслуживает реальных пользователей (это называется продакшен). Например: задержка (сколько времени занимает получение ответа), доля ошибок (доля запросов, которые завершаются неудачей), отставание очереди (сколько задач стоит в очереди), доля попаданий в кэш (как часто мы нашли ответ в быстрой памяти) и другие.