Please open Telegram to view this post
VIEW IN TELEGRAM
😁1
Garbage Collector: Sweep Phase
После того как сборщик мусора завершает этап
После
🤔 Что происходит в Sweep Phase?
Определение неиспользуемых объектов. Сборщик мусора имеет информацию о том, какие объекты доступны, а какие — нет. Он удаляет объекты, которые не были помечены в предыдущем этапе. Но остались объекты которые используются(Чтобы идти дальше для этого нужно сделать остановку и узнать что такое поколения)
Освобождение памяти. Освобожденная память возвращается в пул, чтобы её могли использовать новые объекты. Это делает процесс работы с памятью более эффективным.
📌 Что такое поколения и значения их в .NET
Концепция поколений возникла из наблюдений, что большинство объектов имеют короткий срок жизни, то есть вы создали экземпляр класса, вызвали метод класса и больше вам этот обьект не нужен. В .NET объекты делятся на три поколения для оптимизации работы сборщика мусора. Нужно было определится что делать с объектами которые "пережили" первую сборку мусора, была выбрана магическая цифра 3, три поколения.(Было выбрано три это своего рода компромисс между быстродействием, эффективностью и простотой)
Итого, в .NET объекты делятся на три поколения для оптимизации работы сборщика мусора.
Разделение же на поколения помогает улучшить производительность сборки мусора и объекты, которые созданы недавно, с большей вероятностью будут неиспользуемыми и будут находится в первом поколении.(Первое поколение начинается с 0, в действительности корни 0 лежат где то между простой сравнением с 0 и начала индекса массива)
➡️
Это "молодые" объекты, только что созданные. Сборка мусора для этого поколения происходит чаще, поскольку большинство объектов быстро теряет актуальность. Это позволяет эффективно очищать память и минимизировать затраты на управление ресурсами. Сборка мусора для этого поколения происходит чаще всего, и
➡️
Объекты, которые пережили одну сборку в поколении 0, перемещаются (
➡️
Это "старые" объекты, которые пережили несколько сборок. Поскольку они имеют больший срок жизни, сборка мусора для этого поколения происходит значительно реже. Тем не менее, периодическая очистка необходима для управления памятью и предотвращения переполнения. Сборка мусора для этого поколения происходит ещё реже, но фаза
Вообщем, разделение на поколения помогает эффективно управлять памятью, оптимизируя частоту сборки мусора и минимизируя затраты на обработку объектов, что в конечном итоге улучшает производительность приложения.
🙉 Почему это важно?
📝 В итоге
#NoAI #GC #s01e03
💡 Channel | ✏ Chat
После того как сборщик мусора завершает этап
Marking Phase (маркировки), на котором определяются живые объекты, наступает фаза Sweep Phase (очистки). В этой фазе GC освобождает память от неиспользуемых объектов, которые не были помечены как "живые." Это критически важный шаг для предотвращения утечек памяти и обеспечения эффективного использования ресурсов.После
Marking Phase всех живых объектов GC освобождает память от неиспользуемых объектов, которые не были помечены как живые.Определение неиспользуемых объектов. Сборщик мусора имеет информацию о том, какие объекты доступны, а какие — нет. Он удаляет объекты, которые не были помечены в предыдущем этапе. Но остались объекты которые используются
Освобождение памяти. Освобожденная память возвращается в пул, чтобы её могли использовать новые объекты. Это делает процесс работы с памятью более эффективным.
Концепция поколений возникла из наблюдений, что большинство объектов имеют короткий срок жизни, то есть вы создали экземпляр класса, вызвали метод класса и больше вам этот обьект не нужен. В .NET объекты делятся на три поколения для оптимизации работы сборщика мусора. Нужно было определится что делать с объектами которые "пережили" первую сборку мусора, была выбрана магическая цифра 3, три поколения.
Итого, в .NET объекты делятся на три поколения для оптимизации работы сборщика мусора.
Разделение же на поколения помогает улучшить производительность сборки мусора и объекты, которые созданы недавно, с большей вероятностью будут неиспользуемыми и будут находится в первом поколении.
Generation 0Это "молодые" объекты, только что созданные. Сборка мусора для этого поколения происходит чаще, поскольку большинство объектов быстро теряет актуальность. Это позволяет эффективно очищать память и минимизировать затраты на управление ресурсами. Сборка мусора для этого поколения происходит чаще всего, и
Sweep Phase также выполняется для них чаще. Большинство объектов в этом поколении быстро освобождаются, что выливается в эффективное управление памятью.Generation 1Объекты, которые пережили одну сборку в поколении 0, перемещаются (
promoted) в поколение 1. Здесь сборка мусора происходит реже, так как эти объекты считаются более устойчивыми, но всё равно подлежат проверке. Sweep Phase здесь происходит реже и объекты могут оставаться в памяти дольше.Generation 2Это "старые" объекты, которые пережили несколько сборок. Поскольку они имеют больший срок жизни, сборка мусора для этого поколения происходит значительно реже. Тем не менее, периодическая очистка необходима для управления памятью и предотвращения переполнения. Сборка мусора для этого поколения происходит ещё реже, но фаза
Sweep Phase необходима для предотвращения переполнения памяти. Объекты из этого поколения нужно обрабатывать более осторожно.Вообщем, разделение на поколения помогает эффективно управлять памятью, оптимизируя частоту сборки мусора и минимизируя затраты на обработку объектов, что в конечном итоге улучшает производительность приложения.
🙉 Почему это важно?
Sweep Phase и концепция поколений имеют решающее значение для производительности приложения. Неправильное управление памятью может привести к утечкам и фрагментации, что замедляет работу всего приложения. Sweep Phase в сборке мусора C# — это критически важный этап, который помогает поддерживать высокую производительность ваших приложений. Понимание того, как фаза связана с поколениями объектов, позволит вам лучше управлять ресурсами и избегать проблем с памятью.#NoAI #GC #s01e03
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Garbage Collector: Relocating and Compact Phases
После того как сборщик мусора завершает этап
🤔 Зачем нужна Relocation Phase?
Если бы память была бесконечной, запросы на выделение памяти можно было бы удовлетворять бесконечно тогда
В
🤔 Зачем нужна Compact Phase?
🙉 Почему не сделать две фазы сразу?
- Перемещение объектов требует накладных расходов и затрат времени. По сути это компромисс и сначала иногда легче переместить объекты для оптимизации их расположения, хоть как то за то группой, опять же если это необходимо, а дальше произвести дополнительное сжатие.
- Реализовать фазы разными алгоритмами
- Разные сценарии использования
🟥 TL;DR
в Relocating Phase и Compact Phase перемещение живых объектов ближе друг к другу предотвращает фрагментацию, что повышает производительность за счёт подряд идущих свободных участков памяти и объектов. Когда объекты располагаются рядом, система лучше использует кэш и снижает время доступа к памяти.
📝 В итоге
Недостатком этих подходов это увеличение продолжительности паузы сборщика мусора, так как необходимо копировать объекты в новое место и обновлять ссылки на такие объекты.
#NoAI #GC #s01e04
💡 Channel | ✏ Chat
После того как сборщик мусора завершает этап
Sweep Phase (очистки), Relocation Phase (перемещение) где GC перемещает оставшиеся активные "живые" объекты в памяти, чтобы организовать их более компактное размещение и устраняю возможные "дыры" между объектами. Дальше наступает Compact Phase (сжатие) и устраняет оставшиеся "дыры" между объектами, чтобы они находились последовательно в памяти.Если бы память была бесконечной, запросы на выделение памяти можно было бы удовлетворять бесконечно тогда
Relocation Phase и не нужна бы была, но память была заполнялась не оптимально и это бы влияло на производительность. Но ресурс конечен и вообщем вернёмся в реальность.В
Relocation Phase перемещаются "живые" объекты так, чтобы они находились как можно ближе друг к другу, но могут оставаться промежутки между некоторыми объектами. Например, объекты могут быть сгруппированы в определенной области памяти, но не обязательно последовательно с "дырами". Основная цель это локализация и смена ссылок на объекты и уменьшение фрагментации.Relocating Phase всё сгруппировала, сменила адреса и дальше вступает Compact Phase которая копирует объекты ближе к началу пула памяти. Этот процесс удаляет как бы "дыры" между объектами и оптимизирует размещение данных в памяти. По сути основная цель фазы это создать последовательный блок живых объектов, который улучшит переход ссылок и эффективность кэширования. В итоге это даст прирост эффективности использования доступности памяти и уменьшатся время доступа к данным.🙉 Почему не сделать две фазы сразу?
- Перемещение объектов требует накладных расходов и затрат времени. По сути это компромисс и сначала иногда легче переместить объекты для оптимизации их расположения, хоть как то за то группой, опять же если это необходимо, а дальше произвести дополнительное сжатие.
- Реализовать фазы разными алгоритмами
- Разные сценарии использования
в Relocating Phase и Compact Phase перемещение живых объектов ближе друг к другу предотвращает фрагментацию, что повышает производительность за счёт подряд идущих свободных участков памяти и объектов. Когда объекты располагаются рядом, система лучше использует кэш и снижает время доступа к памяти.
Sweep Phase очищает, Relocation Phase перемещает объекты, Compact Phase обеспечивает более компактное распределение памяти и сжатие. Недостатком этих подходов это увеличение продолжительности паузы сборщика мусора, так как необходимо копировать объекты в новое место и обновлять ссылки на такие объекты.
#NoAI #GC #s01e04
Please open Telegram to view this post
VIEW IN TELEGRAM
✍3
Android 15 для разработчиков
Android 15 официально вышел, и для разработчиков он приносит массу интересных изменений по сравнению с Android 14.
📌 ОС стала лучше управлять ресурсами и более эффективное энергопотребление ну и работу в режиме ожидания. Время перехода в спящий режим было уменьшено на 50%.
📌 Ключевых изменений для разработчиков
➡️ Как всегда улучшили поддержку складных устройств (всё улучшают и улучшают, надеюсь они туда свернули куда надо) ну и экранов разных размеров.
➡️ Что то улучшается в NFC-оплаты в одно касание (хотя это как бы было) и улучшенные API для работы с NFC и камерой.
➡️ Не обошлись апдейты в AI, в статьях говорится что всё стало проще и проще из кода использовать встроенные функции с AI (надежда есть что обратная совместимость в порядки у них).
➡️ Мультитаск пофикшен, когда несколько приложения работают одновременно, вообщем как будто не надо ломать голову над кастомным лайаутом.
➡️ Добавили новые режимы для игр, будет буст до максимума для игр (наверно с какой то эвристикой иначе батарея будет улетать быстро)
🤔 Если вы работали с предыдущей версией Android, можно заметить что Android 15 улучшил работу с системой жестов и добавил поддержку поиска даже для выключенных устройств через сеть.
📎 Ссылки: developer.android.com, source.android.com, habr
#android #news
💡 Channel | ✏ Chat
Android 15 официально вышел, и для разработчиков он приносит массу интересных изменений по сравнению с Android 14.
#android #news
Please open Telegram to view this post
VIEW IN TELEGRAM
Android Developers
Android 15 features and changes list | Android Developers
👍3
Функциональные и нефункциональные требования на примере сайта продажи столов для IT специалистов.
Начнём, что есть разработчик и команда которая работает над сайтом по продаже столов для IT-специалистов. Клиент приходит с интересной задачей: нужно создать идеальный сайт, где ITшники смогут подобрать себе рабочий стол, идеально подходящий под их требования. Конечно, дело не только в дизайне столов, а в том, как сайт будет работать. И тут начинается..
📌 Функциональные требования
Клиент говорит: "Нам нужно, чтобы пользователи могли легко находить столы по параметрам". ОК, понятно — нужен поиск и фильтры. Пользователь должен уметь задать нужный размер, материал и типы регулировки высоты, а также сайт должен сразу показать подходящие варианты.
Потом клиент добавляет: "Нужно, чтобы люди могли сравнивать несколько моделей". Хорошо, делаем функцию сравнения товаров. Пусть IT-специалисты смотрят на разные столы и выбирают, что лучше — дерево или алюминий, черный или белый.
Регистрация пользователей, создание аккаунта, корзина, редактировать количество и оформлять заказ. Оплата? Конечно, интеграция с разными платежными системами — от PayPal/Apple Pay/Эквайринги/Платёжные шлюзы. Так же доставка — пользователь должен легко выбрать метод доставки и получить расчёт стоимости.
📌 Нефункциональные требования
Тут на митинги поднимаются вопросы: "А как насчёт скорости работы сайта?"
Как разработчик, я понимаю — это уже нефункциональные требования. Нам нужно, чтобы страница каталога загружалась за 2 секунды или меньше, потому что если ITшник откроет сайт и всё будет тормозить, он уйдёт раньше, чем увидит, какие у нас столы. Это значит, что нужно оптимизировать работу серверов, кэшировать данные и и куча всего.
Дальше клиент спрашивает про безопасность. Мы обсуждаем шифрование данных, защищённые соединения и соответствие стандартам ведь будем обрабатывать платежные данные. Каждый IT-специалист хочет быть уверен, что его данные в безопасности.
И ещё одна важная штука — масштабируемость. "Что если наш сайт взорвётся популярностью?" — говорит клиент. Мы закладываем архитектуру так, чтобы система выдерживала рост пользователей. Добавляем балансировщики нагрузки, настраиваем серверы под пиковые нагрузки, ведь могут быть дни акций или скидок, когда нагрузка резко возрастает.
Конечно, не забываем про доступность сайта — 99.9% аптайма. Айтишникам важна стабильность, и если сайт ляжет, это будет сразу удар по репутации. Ну и юзабилити — интерфейс должен быть простым и интуитивным, ведь целевая аудитория — это люди, которые проводят за компьютерами 24/7 и ценят время.
📝 В итоге
И вот так шаг за шагом мы строим сайт, где функциональные требования определяют основные задачи — регистрация, поиск, фильтры, оплата, а нефункциональные требования отвечают за качество работы — скорость, безопасность, стабильность и масштабируемость. Ведь важно не только что сайт делает, но и как он это делает.
Работаем над каждым аспектом, чтобы в конце IT-специалист зашел на сайт, быстро нашел себе стол, оформил заказ, и не сомневался ни в скорости, ни в безопасности, ни в удобстве сайта. И инженеры довольны, потому что создали продукт, который работает идеально и под нагрузкой и в условиях роста и при высоких требованиях пользователей.
#systemdesign
💡 Channel | ✏ Chat
Начнём, что есть разработчик и команда которая работает над сайтом по продаже столов для IT-специалистов. Клиент приходит с интересной задачей: нужно создать идеальный сайт, где ITшники смогут подобрать себе рабочий стол, идеально подходящий под их требования. Конечно, дело не только в дизайне столов, а в том, как сайт будет работать. И тут начинается..
Клиент говорит: "Нам нужно, чтобы пользователи могли легко находить столы по параметрам". ОК, понятно — нужен поиск и фильтры. Пользователь должен уметь задать нужный размер, материал и типы регулировки высоты, а также сайт должен сразу показать подходящие варианты.
Потом клиент добавляет: "Нужно, чтобы люди могли сравнивать несколько моделей". Хорошо, делаем функцию сравнения товаров. Пусть IT-специалисты смотрят на разные столы и выбирают, что лучше — дерево или алюминий, черный или белый.
Регистрация пользователей, создание аккаунта, корзина, редактировать количество и оформлять заказ. Оплата? Конечно, интеграция с разными платежными системами — от PayPal/Apple Pay/Эквайринги/Платёжные шлюзы. Так же доставка — пользователь должен легко выбрать метод доставки и получить расчёт стоимости.
Тут на митинги поднимаются вопросы: "А как насчёт скорости работы сайта?"
Как разработчик, я понимаю — это уже нефункциональные требования. Нам нужно, чтобы страница каталога загружалась за 2 секунды или меньше, потому что если ITшник откроет сайт и всё будет тормозить, он уйдёт раньше, чем увидит, какие у нас столы. Это значит, что нужно оптимизировать работу серверов, кэшировать данные и и куча всего.
Дальше клиент спрашивает про безопасность. Мы обсуждаем шифрование данных, защищённые соединения и соответствие стандартам ведь будем обрабатывать платежные данные. Каждый IT-специалист хочет быть уверен, что его данные в безопасности.
И ещё одна важная штука — масштабируемость. "Что если наш сайт взорвётся популярностью?" — говорит клиент. Мы закладываем архитектуру так, чтобы система выдерживала рост пользователей. Добавляем балансировщики нагрузки, настраиваем серверы под пиковые нагрузки, ведь могут быть дни акций или скидок, когда нагрузка резко возрастает.
Конечно, не забываем про доступность сайта — 99.9% аптайма. Айтишникам важна стабильность, и если сайт ляжет, это будет сразу удар по репутации. Ну и юзабилити — интерфейс должен быть простым и интуитивным, ведь целевая аудитория — это люди, которые проводят за компьютерами 24/7 и ценят время.
И вот так шаг за шагом мы строим сайт, где функциональные требования определяют основные задачи — регистрация, поиск, фильтры, оплата, а нефункциональные требования отвечают за качество работы — скорость, безопасность, стабильность и масштабируемость. Ведь важно не только что сайт делает, но и как он это делает.
Работаем над каждым аспектом, чтобы в конце IT-специалист зашел на сайт, быстро нашел себе стол, оформил заказ, и не сомневался ни в скорости, ни в безопасности, ни в удобстве сайта. И инженеры довольны, потому что создали продукт, который работает идеально и под нагрузкой и в условиях роста и при высоких требованиях пользователей.
#systemdesign
Please open Telegram to view this post
VIEW IN TELEGRAM
✍1👍1
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣3
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Please open Telegram to view this post
VIEW IN TELEGRAM
😁3
Please open Telegram to view this post
VIEW IN TELEGRAM
😁4
Я хотел с вами поделиться просто бомбическим ресурс который вам поможет подготовиться к собеседованиям, связанным с проектированием систем машинного обучения ML System Design. В нём рассматриваются основные концепции, подходы и вопросы, многие кейсы уже разобраны, которые могут быть заданы на интервью по ML. Это включает архитектуру, обработку данных, выбор моделей, оптимизацию и масштабируемость. Если вы заинтересованы, вам необходимы просмотреть и выучить все эти кейсы.
📎 Ссылка: github
#datascience #ai #ml #mlsystemdesign #systemdesign
Please open Telegram to view this post
VIEW IN TELEGRAM
✍2
Data Science и ML: FAANG MAANG и карьерные вызовы
Есть супер стрим про карьеру в Бигтехах из первых уст от ребят которые работает в MAANG.
Рассматриваются собеседования в Amazon, Google, Meta.
Видео будет полезно, будут разбираться и как прокачать не только навыки в алгоритмах, но и мышление. Будут рассматриваться как важно уметь решать реальные задачи, не потерявшись в дебрях сложных требований, leetcode, сарафан и т.д.
Прокачивай свой Data Science/ML/System desiign/Behavioral или как продукт-менеджер (нужно Ph. D), и будь готов к нестандартным кейсам по сути это достаточно чтобы покарить MAANG.
📎 Ссылка: YouTube
#datascience #ai #deeplearning #generativemodels
💡 Channel | ✏ Chat
Есть супер стрим про карьеру в Бигтехах из первых уст от ребят которые работает в MAANG.
Рассматриваются собеседования в Amazon, Google, Meta.
Видео будет полезно, будут разбираться и как прокачать не только навыки в алгоритмах, но и мышление. Будут рассматриваться как важно уметь решать реальные задачи, не потерявшись в дебрях сложных требований, leetcode, сарафан и т.д.
Прокачивай свой Data Science/ML/System desiign/Behavioral или как продукт-менеджер (нужно Ph. D), и будь готов к нестандартным кейсам по сути это достаточно чтобы покарить MAANG.
📎 Ссылка: YouTube
#datascience #ai #deeplearning #generativemodels
Please open Telegram to view this post
VIEW IN TELEGRAM
ABBYY за час уволила почти всех разработчиков.
Представьте себе: вы сидите, кодите на удаленке, может, даже рефакторите какой-то старый проект, и тут - Оп! Полчаса встречи, и вместо задач на спринт, вам предлагают… разойтись своими путями.
ABBYY, это как бы компания с мировым именем в сфере AI и OCR, буквально за один час распрощалась с практически всеми своими разработчиками.
Эта новость - очередное напоминание, что в IT всё может поменяться молниеносно. Стабильность, не не слышал. Так что держим резюме наготове и изучаем новые стеки технологий.
Как думаете, в каком языке сейчас безопаснее развиваться? Подсказка👩💻
📎 Ссылка: Forbes
#news #ABBYY #разработка #увольнения
💡 Channel | ✏ Chat
Представьте себе: вы сидите, кодите на удаленке, может, даже рефакторите какой-то старый проект, и тут - Оп! Полчаса встречи, и вместо задач на спринт, вам предлагают… разойтись своими путями.
ABBYY, это как бы компания с мировым именем в сфере AI и OCR, буквально за один час распрощалась с практически всеми своими разработчиками.
Эта новость - очередное напоминание, что в IT всё может поменяться молниеносно. Стабильность, не не слышал. Так что держим резюме наготове и изучаем новые стеки технологий.
Как думаете, в каком языке сейчас безопаснее развиваться? Подсказка
📎 Ссылка: Forbes
#news #ABBYY #разработка #увольнения
Please open Telegram to view this post
VIEW IN TELEGRAM
😱3
Системный аналитик: Матрица компетенции и путь развития в ТехБанке
Заинтересованным ребятам мастхэв посмотреть видео про System Analyst и про развитие. Разбор как устроен найм и карьерный рост в техбанке.
Видео посвящено профессиональному развитию системных аналитиков. Основное внимание уделяется использованию матрицы компетенций, которая помогает аналитикам оценить свои сильные и слабые стороны. Видео акцентирует, что для роста необходимо развиваться не только в технических навыках, таких как архитектура систем и управление проектами, но и в гибких навыках — коммуникации, управлении конфликтами и взаимодействии с бизнесом. Также упоминается, что расширение компетенций в смежных областях откроет двери для перехода в другие роли, например, архитектора или руководителя проектов.
📎 Ссылка: YouTube
#systemanalyst
💡 Channel | ✏ Chat
Заинтересованным ребятам мастхэв посмотреть видео про System Analyst и про развитие. Разбор как устроен найм и карьерный рост в техбанке.
Видео посвящено профессиональному развитию системных аналитиков. Основное внимание уделяется использованию матрицы компетенций, которая помогает аналитикам оценить свои сильные и слабые стороны. Видео акцентирует, что для роста необходимо развиваться не только в технических навыках, таких как архитектура систем и управление проектами, но и в гибких навыках — коммуникации, управлении конфликтами и взаимодействии с бизнесом. Также упоминается, что расширение компетенций в смежных областях откроет двери для перехода в другие роли, например, архитектора или руководителя проектов.
📎 Ссылка: YouTube
#systemanalyst
Please open Telegram to view this post
VIEW IN TELEGRAM
Multitenancy и виды стратегий для масштабируемых SaaS-решений
📌 Что такое
Multitenancy позволяет одному приложению обслуживать множество организаций или пользователей, при этом данные каждого тэнанта изолированы. Это важно для масштабируемости и безопасности.
В
Существуют различные "виды"
📌 Shared Database & Shared Schema
Подходит для маленьких проектов или некритичных приложений, где изоляция данных не является первоочередной задачей.
📌 Shared Database & Separate Schemas
Хороший выбор для средних SaaS приложений, где необходима некоторая изоляция данных, но проект все еще должен быть экономически эффективным.
📌 Separate Databases
Подходит для больших организаций с критически важными данными, где безопасность и изоляция являются основными приоритетами.
📌 Separate Application Instances
Применимо для корпоративных клиентов с особыми требованиями по безопасности, производительности или кастомизации.
📝 Итого
Для большинства SaaS-приложений Shared Database & Separate Schemas, по моему мнению, оптимальный выбор. Это подход предлагает баланс между изоляцией данных и экономичностью, особенно если приложение предполагает гибкую настройку под каждого клиента. Так же этот подход легко масштабируется для "среднего" числа тенантов.
Separate Databases, думаю стоит использовать если безопасность и независимость тенантов очень критичны, например, в финансовых приложениях или что то связанное с персональными данными.
Shared Database & Shared Schema, а вот это лучше избегать в серьезных приложениях из-за недостаточной безопасности и риска нарушений целостности данных. Это скорее подход для очень маленьких и простых решений, где изоляция не важна или на старте попробовать надо ли оно вам. Тут беда что утечки и протечки данных возможны, по сути этот что то типо хостала, вроде бы всё разграничено, но в тоже время всё доступно, но скрыто.
Separate Application Instances, я считаю что это спорный подход, когда необходимы максимально независимые и кастомизированные приложения для каждого клиента, что по сути редкость для типичных SaaS решений. Так как искать и разделять инфраструктуру будет не просто и нужно ли. Но, если взять разбитие на регионы\зоны то этот подход может быть удачным решением.
📎 Ссылки: devops-habr, dev-habr, product-habr
#multitenancy #SaaS #devops
💡 Channel | ✏ Chat
multitenancy?Multitenancy позволяет одному приложению обслуживать множество организаций или пользователей, при этом данные каждого тэнанта изолированы. Это важно для масштабируемости и безопасности.
В
multitenancy существует несколько ключевых типов, каждый из которых имеет свои преимущества и недостатки в зависимости от требований проекта и уровня изоляции, который требуется для данных и конфигураций. Существуют различные "виды"
multitenancy, но честно они все хороши:Подходит для маленьких проектов или некритичных приложений, где изоляция данных не является первоочередной задачей.
Хороший выбор для средних SaaS приложений, где необходима некоторая изоляция данных, но проект все еще должен быть экономически эффективным.
Подходит для больших организаций с критически важными данными, где безопасность и изоляция являются основными приоритетами.
Применимо для корпоративных клиентов с особыми требованиями по безопасности, производительности или кастомизации.
Для большинства SaaS-приложений Shared Database & Separate Schemas, по моему мнению, оптимальный выбор. Это подход предлагает баланс между изоляцией данных и экономичностью, особенно если приложение предполагает гибкую настройку под каждого клиента. Так же этот подход легко масштабируется для "среднего" числа тенантов.
Separate Databases, думаю стоит использовать если безопасность и независимость тенантов очень критичны, например, в финансовых приложениях или что то связанное с персональными данными.
Shared Database & Shared Schema, а вот это лучше избегать в серьезных приложениях из-за недостаточной безопасности и риска нарушений целостности данных. Это скорее подход для очень маленьких и простых решений, где изоляция не важна или на старте попробовать надо ли оно вам. Тут беда что утечки и протечки данных возможны, по сути этот что то типо хостала, вроде бы всё разграничено, но в тоже время всё доступно, но скрыто.
Separate Application Instances, я считаю что это спорный подход, когда необходимы максимально независимые и кастомизированные приложения для каждого клиента, что по сути редкость для типичных SaaS решений. Так как искать и разделять инфраструктуру будет не просто и нужно ли. Но, если взять разбитие на регионы\зоны то этот подход может быть удачным решением.
📎 Ссылки: devops-habr, dev-habr, product-habr
#multitenancy #SaaS #devops
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Please open Telegram to view this post
VIEW IN TELEGRAM
Всем привет!
Есть отличный "задачник" для тех кто готовится к собеседованиям по C# и не только, ну или вы хотите проверить свои знания в .NET
Андрей Акиньшин создал давно книгу ProblemBook.NET которая может поломать мозг многим ребятам кто давно в отрасли.
Всегда на неё обращаю внимание при подготовке к собеседованиям. Полезны ли такие задачи в повседневной работе, скорее нет чем да, но это показывает что вы занимаетесь и учитись, признаёте что чего то не знаете, что является ценными скиллама при найме.
#csharp #interview
💡 Channel | ✏ Chat
Есть отличный "задачник" для тех кто готовится к собеседованиям по C# и не только, ну или вы хотите проверить свои знания в .NET
Андрей Акиньшин создал давно книгу ProblemBook.NET которая может поломать мозг многим ребятам кто давно в отрасли.
Всегда на неё обращаю внимание при подготовке к собеседованиям. Полезны ли такие задачи в повседневной работе, скорее нет чем да, но это показывает что вы занимаетесь и учитись, признаёте что чего то не знаете, что является ценными скиллама при найме.
#csharp #interview
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1