Как стать автором
Обновить

Проектирование программной платформы защищённого NAS

Время на прочтение 14 мин
Количество просмотров 18K
Анализ и проектирование систем **nix *Виртуализация *Хранение данных *Хранилища данных *


Допустим, аппаратная часть NAS собрана и на неё установлена ОС, например, как показано здесь. И сейчас у вас есть работающий сервер с Debian, который загружается, подключен в сеть, и вы имеете к нему полный физический доступ.


Теперь надо спроектировать среду, позволяющую легко и безопасно добавлять, удалять прикладные сервисы, а также управлять их работой.

Читать дальше →
Всего голосов 14: ↑14 и ↓0 +14
Комментарии 16

Цикл статей: построение защищённого NAS, либо домашнего мини-сервера

Время на прочтение 2 мин
Количество просмотров 54K
Анализ и проектирование систем *IT-инфраструктура **nix *Хранилища данных *DIY или Сделай сам
Recovery mode


Статьи цикла:


  1. Обзор материалов и литературы по NAS. По предложениям пользователей ссылки на материалы будут сведены в отдельную статью.
  2. Выбор железа. Описан один из вариантов выбора железа и дан краткий обзор рынка домашних и офисных NAS систем.
  3. Установка ОС, на которой будет строиться NAS. В отдельной статье описано дополнение, позволяющее отказаться ото всех файловых систем, кроме ZFS.
  4. Проектирование поддерживающей инфраструктуры, которая будет лежать в основе всех сервисов NAS.
  5. Реализация поддерживающей инфраструктуры.
  6. Механизм аварийной удалённой разблокировки. Требуется для того, чтобы разблокировать систему, не имея к ней физического доступа.
  7. Повышение защищённости NAS. Исправление ошибок, допущенных в предыдущих статьях и описание Hardening процесса.
  8. Система контроля версий на базе Git. Установка Gitlab в контейнере.
  9. Система резервного копирования. От регламента до установки ПО, где в качестве примера используется UrBackup.
  10. Персональное облако. Обеспечивает хранение персональных файлов пользователя, обмен файлами между пользователями, а также интеграцию различных сервисов между собой.
  11. Сквозная аутентификация контейнеров.
  12. Управление файлами.
  13. Библиотека.
  14. Мультимедийная система 1: музыка.
  15. Мультимедийная система 2: медиа сервер.
  16. Фронтенд. Интерфейс, позволяющий быстро обращаться к сервисам.
  17. Заметки про управление контейнерами.
Читать дальше →
Всего голосов 37: ↑33 и ↓4 +29
Комментарии 141

Список статей и литературы про NAS

Время на прочтение 7 мин
Количество просмотров 21K
IT-инфраструктура **nix *Хранение данных *Хранилища данных *DIY или Сделай сам


В рамках цикла статей по построению NAS, либо домашнего сервера, по просьбам пользователей я погуглил за вас и сделал небольшой обзор информационных источников.


В этой статье собраны ссылки на большую часть материалов, которые я использовал. По мере накопления и обработки материалов, тут может появиться что-то новое.

Читать дальше →
Всего голосов 15: ↑15 и ↓0 +15
Комментарии 57

Сложность систем и способы «борьбы» с ней

Время на прочтение 3 мин
Количество просмотров 9.2K
Инженерные системы *

Все мы так или иначе проектируем и реализуем системы. Будь то программные комплексы, инфраструктурные или платформенные решения. И в рамках этой работы мы постоянно сталкиваемся с понятием "сложной системы". В рамках этой заметки я хочу поделиться своим видением на сложность систем и "борьбу" с ней.

Читать дальше →
Всего голосов 8: ↑6 и ↓2 +4
Комментарии 6

What to think during NALSD interview

Время на прочтение 7 мин
Количество просмотров 8.7K
Блог компании Google Developers Высокая производительность *Анализ и проектирование систем *Карьера в IT-индустрии Распределённые системы *
There are a lot of posts about what a typical coding interview at Google looks like. But, while not as widely described and discussed, there is also quite often a system design interview. For an SRE position it’s NALSD: non-abstract large system design. The key difference between SWE and SRE interviews consists in these two letters: NA.

So, what is the difference? How to be prepared for this interview? Let’s be non-abstract, and use an example. To be more non-abstract, let’s take something from the material world, such that you won’t be asked the exact same thing at the real interview (at least, not at the Google interview) :)

So, let’s design a public library system. For the paper books, like you have seen everywhere around. The whole text below was written all at once within around one hour, to roughly show you the areas that you should be able to cover / touch during the interview. Please excuse some disorder, that’s how I think (therefore I am).
Read more →
Всего голосов 26: ↑24 и ↓2 +22
Комментарии 0

ORM: почему эта задача не имеет решения, но делать с этим, тем не менее, что-то нужно

Время на прочтение 7 мин
Количество просмотров 26K
Анализ и проектирование систем *ООП *


Современные информационные технологии поражают своей мощью, ошеломляют открывающимися возможностями, обескураживают заложенным в них техническим совершенством, но есть один смехотворный пункт, об который IT раз за разом снова и снова ломает зубы. Показать пользователю данные из базы, получить от него ввод, положить обратно в базу, показать результат. Поля ввода, кнопочки, галочки, надписи — казалось бы, что в них может быть такого запредельно сложного, чтобы потребовалось городить головоломные конструкции типа фреймворков поверх шаблонизаторов поверх фреймворков поверх транспайлеров? И почему несмотря на все колоссальные усилия мы имеем то, что игрушечные примеры по туториалу, конечно, делаются легко и приятно, но как только инструментарий сталкивается с реальными задачами реальной жизни… как бы это сказать помягче… с ростом сложности решаемых задач наблюдается сильная нелинейность возрастания сложности реализации. Ладно бы речь шла о чём-то действительно головоломном уровня теоретической физики или космической техники, так ведь нет же — кнопочки и галочки. Почему эта ерунда десятилетиями продолжает отравлять жизнь гражданам и трудовым коллективам?

Причин, наверно, как всегда оно бывает, много. Наверно все они так или иначе достойны рассмотрения, но здесь и сейчас мы поговорим о задаче объектно-реляционного отображения (Object-Relational Mapping, ORM), которая всегда в каком-либо виде стоит за всеми этими «кнопочками и галочками».
Читать дальше →
Всего голосов 63: ↑48 и ↓15 +33
Комментарии 262

Netflix за 45 минут: Краткий рассказ о system design-интервью, чего ожидать + подборка полезных ссылок

Время на прочтение 6 мин
Количество просмотров 30K
Блог компании getmatch Управление персоналом *Карьера в IT-индустрии Интервью IT-компании


В нашем блоге мы много пишем о построении карьеры в ИТ в разных странах, поиске работы, отличиях в процессе собеседований крупных компаний. В сегодняшней статье мы пойдем дальше и раскроем тему так называемых интервью по system design – это один из этапов собеседований известных технологических компаний, на котором отсеиваются многие кандидаты.

Итак, что такое system design и как пройти интервью такого типа?
Читать дальше →
Всего голосов 29: ↑26 и ↓3 +23
Комментарии 2

[Личный опыт] Фронтенд-инженер из лондонского Facebook: как попасть в FAANG?

Время на прочтение 17 мин
Количество просмотров 18K
Блог компании getmatch Управление персоналом *Карьера в IT-индустрии IT-компании
Как готовиться к собеседованиям, чтобы устроиться в компанию уровня FAANG? Вместе с Олегом Громовым, фронтенд-инженером из лондонского офиса Facebook (ex. Yandex, Toptal etc.), составили план подготовки по мотивам прошедшего вебинара — опираясь на его личный опыт.

Обсуждаем:

  • плюсы-минусы работы в крупных компаниях,
  • оформление резюме,
  • как проходят скрининг, алгоритмическая и архитектурная секции,
  • какова роль английского и soft skills — на поведенческой секции и в целом на собеседовании,
  • где тренироваться необходимым навыкам для каждого этапа: собрали полезные ссылки.


Читать дальше →
Всего голосов 23: ↑18 и ↓5 +13
Комментарии 28

Java. Factory Method Pattern in Game Server

Время на прочтение 5 мин
Количество просмотров 8.7K
Java *Анализ и проектирование систем *Разработка игр *Дизайн игр *Софт

Фабричный метод - это творческий шаблон проектирования, который предоставляет интерфейс для создания объектов в родительском классе,  но позволяет подклассам изменять тип создаваемых объектов.

Проблема

Представьте, что вы создаете модуль игровых наград. Первая версия вашего приложения может обрабатывать только награду ЗОЛОТО, поэтому основная часть вашего кода находится внутри класса GoldReward.

Через некоторое время ваша игра становится довольно популярной. Каждый день вы получаете десятки запросов от игроков о добавлении новой валюты в приложение.

Отличные новости, правда? А как насчет кода?

Читать далее о фабричном методе
Всего голосов 13: ↑11 и ↓2 +9
Комментарии 5

Java. Abstract Factory Pattern in Game Server

Время на прочтение 8 мин
Количество просмотров 2.9K
Java *Анализ и проектирование систем *Разработка игр *Дизайн игр *Софт

Абстрактная фабрика - это шаблон проектирования, который позволяет создавать семейства связанных объектов без указания их конкретных классов.

Проблема

Представьте, что мы создаем игру в которой будут различные игровые события, меняющие внешний вид игры. Ваш код состоит из классов, которые представляют:

Семейство сопутствующих игровых вещей, например: chest + unit + hero.

Несколько игровых событий. Например, продукты Chest + Unit + Hero доступны в следующих ивентах: Pirate, Space, Default.

Нам нужен способ создавать отдельные игровые предметы, чтобы они соответствовали другим предметам из того же ивента. Игрокам очень не нравится, когда они видят скины из разных ивентов.

Кроме того, мы не хотим изменять существующий код при добавлении в программу новых игровых вещей или ивентов. Игровые студии очень часто обновляют свои скины и добавляют новые ивенты, и вам не захочется менять основной код каждый раз, когда это происходит.

Решение

Первое, что предлагает шаблон «Абстрактная фабрика» - это явное объявление интерфейсов для каждого отдельного игрового предмета из ивента (например, сундук,  юнит или герой). Затем вы можете заставить все варианты предметов следовать этим интерфейсам. Например, все варианты сундуков могут реализовывать интерфейс Chest; все варианты юнитов могут реализовывать интерфейс Unit и так далее.

Следующим шагом будет объявление абстрактной фабрики - интерфейса со списком методов создания для всех предметов, входящих в ивент (например, createChest, createUnit и createHero). Эти методы должны возвращать абстрактные типы продуктов, представленные интерфейсами, которые мы извлекли ранее: Chest, Unit, Hero и так далее.

Читать далее о абстрактной фабрике
Всего голосов 4: ↑3 и ↓1 +2
Комментарии 1

Java. Adapter Pattern in Game Server

Время на прочтение 3 мин
Количество просмотров 4.7K
Java *Разработка игр *API *Дизайн игр *Софт

Адаптер - это шаблон структурного проектирования, который позволяет объектам с несовместимыми интерфейсами взаимодействовать друг с другом.

Так же известен как “Обертка”.

Проблема

Чтобы продемонстрировать этот шаблон, я буду использовать упрощенный пример игровой механики, в которой есть интерфейс IEnemy, но один из врагов отличается от других и не имеет реализации метода атаки. Вместо этого этот конкретный враг (SpecialEnemy) накладывает заклинания.

Читать далее о паттерне Адаптер
Всего голосов 13: ↑11 и ↓2 +9
Комментарии 8

Java.  The composite pattern on Game Server

Время на прочтение 4 мин
Количество просмотров 3K
Java *Анализ и проектирование систем *Разработка игр *Дизайн игр *Софт

Паттерн Компоновщик - так же известен как Дерево, Composite.

Суть паттерна

Компоновщик - это шаблон структурного проектирования, который позволяет объединять объекты в древовидные структуры, а затем работать с этими структурами, как если бы они были отдельными объектами.

Проблема

Использование шаблона Composite имеет смысл только тогда, когда базовая модель вашего приложения может быть представлена в виде дерева.

Например, представьте, что у вас есть два типа объектов: конфигурация награды и конфигурация сундука. Сундук может содержать несколько Наград, а также несколько Сундуков меньшего размера. Эти маленькие сундуки также могут содержать некоторые награды или даже сундуки меньшего размера и т. Д.

Допустим, вы решили создать систему выдачи наград, в которой используются эти классы. Конфигурация Награды может содержать простые награды без упаковки в сундук, а также сундуки с наградами ... и другие сундуки. Как бы вы рассчитали все награды основываясь на такой конфигурации?

Вы можете попробовать прямой подход: развернуть все сундуки, просмотреть все награды и затем рассчитать награды по их типам. Это было бы осуществимо в реальном мире; но в программе это не так просто, как запустить цикл. Вы должны заранее знать классы наград и сундуков, которые вы проходите, уровень вложенности сундуков и другие неприятные детали. Все это делает прямой подход либо слишком неудобным, либо даже невозможным.

Читать далее о паттерне Компановщик
Всего голосов 4: ↑4 и ↓0 +4
Комментарии 0

Опыт составления HLD-документации по нотации C4

Время на прочтение 7 мин
Количество просмотров 11K
Блог компании Quadcode UML Design *Микросервисы *Подготовка технической документации *
✏️ Технотекст 2021

Привет! Меня зовут Алина, я работаю техническим писателем в компании Quadcode. В этой статье хочу поделиться опытом верхнеуровневого описания архитектуры системы с использованием структуры C4. Небольшая оговорка: предпринятые шаги включают в себя определенные отходы от канонической нотации в угоду удобству и особенностям системы.

Для справки:

HLD (high-level design) – верхнеуровневое описание архитектуры системы, где представлены основные компоненты и их взаимодействия. 

LLD (low-level design) – низкоуровневое детальное описание каждого из компонентов системы.

Читать далее
Всего голосов 3: ↑3 и ↓0 +3
Комментарии 1

Мой опыт собеседования в Amazon

Время на прочтение 6 мин
Количество просмотров 59K
Алгоритмы *Amazon Web Services *C# *Распределённые системы *IT-компании

О чём эта статья

Это не история успеха, потому что в Амазон меня не взяли, но и не история полного лузера, который бомбит из-за своей тупости, ибо позже я прошел в Майкрософт, о чем будет отдельный пост. 

Это история о моем опыте собеседования в Амазоне, почему мне в целом не понравилось по сравнению с другими FAANG. Так же тут будут ответы на “а что конкретно спрашивали на интервью, какие были задачки, что на систем дизайне было”, потому что мне не дали подписать NDA, все с пруфами, скринами и прочее.

В общем и целом, статья будет о моем опыте, какие были интервью, что было сложного, что не очень, как я готовился, и какая доля везения в этом всем.

Начало, предложение от Amazon

В один прекрасный день 6 сентября, мне пришел такой сообщение в Линкедин.

Читать далее
Всего голосов 93: ↑90 и ↓3 +87
Комментарии 177

Как получил оффер от Microsoft

Время на прочтение 6 мин
Количество просмотров 51K
.NET *Алгоритмы *ООП *Распределённые системы *IT-компании

О чем эта статья

Это продолжение моих похождений по ФААНГ. Предыдущая статья была о моем опыте собеседования в Амазоне.

Здесь я тоже поделюсь всем процессом: как я попал на собеседование, все этапы, вопросы на интервью, как я готовился, некоторые детали офера, и общее впечатление от интервью. Так же будут всякие сравнения опыта собеседования в Майкрософте и в Амазоне.

К слову, все собеседования тоже сейчас проходят онлайн, и никаких онсайт интервью нет.

Читать далее
Всего голосов 88: ↑80 и ↓8 +72
Комментарии 139

Enterprise Identity Management Processes. Part I: Employee on-boarding

Время на прочтение 5 мин
Количество просмотров 1.4K
ERP-системы *

This is the first in series of articles dedicated to detailed overview of processes and components of enterprise identity and access management (IAM). These articles are designed to help technical architects and system designers to better understand what is involved in complex business processes which drive identity management and provide detailed review of all critical components.

Solid understanding of identity management business processes before implementation of a new IAM system very often makes a difference between success and failure and it must be worked out and agreed to by all key participant before implementation can start.

This review does not address specific software configurations and settings required to support these processes and workflow, but any modern identity management software will be able to support them.

Diagram below documents workflow for an employee on-boarding which is one of the core identity management processes to support new employee who is joining the company. The flow is designed to be integrated into existing hiring process and provide logical and physical access to an employee by day one of the employment.

Read more
Всего голосов 1: ↑1 и ↓0 +1
Комментарии 1

Вторая часть гайда по интервью за рубежом — Coding, System Design и Culture Fit

Время на прочтение 8 мин
Количество просмотров 6.6K
Блог компании Geekfactor.io IT-эмиграция Карьера в IT-индустрии Удалённая работа

Мы GeekFactor. Вместе с GetMentor мы помогаем разработчикам найти работу за границей, а компаниям подбираем подходящих кандидатов.

Главные этапы в собеседовании зарубеж — подача резюме, system design interview, coding interview и culture fit interview. На что обратить внимание и как готовиться, мы рассказываем в двух статьях. 

В первой части мы поговорили о том, из чего состоит собеседование за рубежом, как составлять резюме и что нужно помнить, когда проходишь screening interview — разговор с эйчаром. В этой — раскроем подробнее тему coding interview, culture fit interview и system design interview.

Примечание: да, с текущими событиями найти работу с релокейтом стало сложнее. Но советы остаются актуальны — мы проверили.

Читать далее
Всего голосов 14: ↑14 и ↓0 +14
Комментарии 1

Глубокое погружение в рекомендательную систему Netflix

Время на прочтение 12 мин
Количество просмотров 4.9K
Big Data *Data Engineering *
Перевод

Как Netflix добился 80 процентов от всего своего стримингового времени благодаря персонализации.

Читать далее
Всего голосов 2: ↑2 и ↓0 +2
Комментарии 3

Realtime-матчинг: находим матчи за считанные минуты вместо 24 часов

Время на прочтение 11 мин
Количество просмотров 8K
Блог компании Ozon Tech Python *Обработка изображений *Машинное обучение *Natural Language Processing *
✏️ Технотекст 2022

Задача матчинга в последнее время набирает всё большую популярность и используется во многих сферах: банки матчат транзакции, маркетплейсы – товары, а Google и другие IT-гиганты проводят соревнования по решению таких задач на Kaggle.

Для маркетплейса матчинг – очень важный процесс, который решает сразу несколько задач:

1. При поисковом ранжировании из множества товаров показывать сначала самые выгодные предложения.

2. Объединять множество товаров в одну сущность и показывать предложения одного и того же товара от разных селлеров.

3. Понимать, как предложения селлеров выглядят относительно друг друга, и поощрять их дополнительными бонусами.

Сегодня мы поговорим не только о решении этой задачи, но и о способах её реализации: offline (batch) vs online (realtime). Также обсудим, как и зачем переходить от первого ко второму.

Читать далее
Всего голосов 42: ↑42 и ↓0 +42
Комментарии 8

Что я бы хотел знать про ML System Design раньше

Время на прочтение 6 мин
Количество просмотров 8.3K
Блог компании Open Data Science Машинное обучение *Карьера в IT-индустрии

Около года назад я начал проходить собеседования в разные компании на позицию Machine Learning Engineer. Одним из этапов в каждой компании было проектирование ML системы. В данной статье я делюсь опытом и ресурсами, которые помогли мне пройти собеседования. В том числе в команду MLE Ленты, в которой сейчас тружусь.

Читать далее
Всего голосов 10: ↑10 и ↓0 +10
Комментарии 7
1