Pull to refresh
0
0
Coffin @Coffin

User

Send message

Рабочий шаблон архитектурного решения

Reading time11 min
Views29K

Уже три года, как мы постепенно передаем солюшн-архитектуру в команды разработки. Приходится часто объяснять, как сделать архитектурное решение коллегам, которые раньше подобными вещами не занимались. Отсюда родилась идея этой статьи – поделиться опытом, который сложился у меня и моих коллег за 10 лет практики. Важная часть этого опыта – шаблон архитектурного решения с пояснениями как его заполнять и почему именно так. По сути, шаблон - это структура необходимых знаний. Если вы нашли ответы на все вопросы шаблона, значит вы продуманно подошли к созданию архитектуры. А еще, сделали хороший документ, с которым удобно работать.

Статья расскажет, как правильно оформить ваши мысли, и что должно содержать качественное архитектурное решение. Статья не научит делать архитектуру.

Статья будет полезна:

Аналитикам, тимлидам, программистам, которые уже делают или собираются делать архитектурные решения;

Архитекторам, чтобы улучшить качество выпускаемых документов;

Главным архитекторам с целью посмотреть «а как там у них».

Дальше, пожалуйста
Total votes 13: ↑13 and ↓0+13
Comments29

Nemesida WAF: защита сайта и API от атак и паразитного трафика

Reading time4 min
Views6.8K

Сталкиваясь с атаками на веб-ресурсы, администраторы пытаются перекрыть вредоносный трафик настройками веб-сервера, установкой Rate Limit, созданием правил блокировок или ограничением доступа по IP из списка стран. Эти действия требуют навыков и не всегда приводят к ожидаемым последствиям.

В статье расскажу, как обеспечить быструю и качественную защиту веб-приложений и API от большей части угроз OWASP Top-10 с использованием бесплатной версии Nemesida WAF Free.

Читать далее
Total votes 7: ↑7 and ↓0+7
Comments3

Уязвимость Log4j: методы устранения

Reading time4 min
Views26K

Привет, Хабр! Сегодня мы хотим рассказать об уязвимости Apache Log4j, которая стала причиной огромной волны атак на веб-серверы по всему миру на протяжении декабря. В пиковые дни мы наблюдали до нескольких десятков тысяч атак в час! И сегодня наша команда хочет поделиться методами простого устранения уязвимости для разных версий библиотеки. Конкретные рекомендации, а также ссылку на вебинар с подробным обсуждением CVE вы найдете под катом.

Читать далее
Total votes 10: ↑5 and ↓50
Comments18

Углубленное знакомство с пространствами имен Linux. Часть 2

Reading time19 min
Views22K


В предыдущей части мы разобрали, чем являются пространства имен, и какую роль они играют в современных системах, после чего познакомились с двумя их видами: PID и NET. Во второй и заключительной части материала мы изучим пространства имен USER, MNT, UTS, IPC и CGROUP, а в завершении объединим полученные знания, создав полностью изолированную среду для процесса.
Читать дальше →
Total votes 38: ↑37 and ↓1+58
Comments1

Node.js: шаблон сервера для аутентификации и авторизации

Reading time11 min
Views34K


Привет, друзья!


На досуге разработал шаблон Node.js-сервера для аутентификации/авторизации, которым хочу с вами поделиться. Надеюсь, кому-нибудь пригодится.


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


Также обратите внимание, что в коде имеется несколько console.log для облегчения процесса разработки приложения. В продакшне они не нужны. В производственном режиме также не следует возвращать столь информативные message.


Если возможностей, реализованных в шаблоне, окажется недостаточно, вот парочка более продвинутых инструментов:


  • oidc-client — разработчик отказался от дальнейшей поддержки, новый мейнтейнер пока не нашелся
  • oidc-provider — рекомендация моих более опытных коллег

Если вас интересует полноценная платформа для аутентификации/авторизации "из коробки", рассмотрите возможность использования Auth0.


Репозиторий


Сервер реализован с помощью Express.js


В качестве базы данных используется MongoDB Atlas

Читать дальше →
Total votes 10: ↑10 and ↓0+10
Comments4

10 вещей, которые можно делать в верстке с помощью псевдоэлементов before и after

Reading time10 min
Views47K

Привет, Хабр! Меня зовут Максим Васянович, я спикер курса “Веб-верстка” в Skillbox. Сегодня поговорим о верстке, а точнее - о нюансах работы с псевдоэлементами before и after. Статья будет полезна, прежде всего, начинающим верстальщикам. Но, возможно, и профи будет интересно освежить эти моменты в памяти. 

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

Читать далее
Total votes 26: ↑25 and ↓1+29
Comments10

Настройка PostgreSQL под Linux

Level of difficultyEasy
Reading time10 min
Views119K

Время от времени приходится слышать мнение от некоторых системных администраторов, а также некоторых 1С-разработчиков, что установка, настройка и поддержка PostgreSQL под Linux очень сложна. Что гораздо дешевле покупать лицензии Windows и Microsoft SQL Server, чем нанимать высококвалифицированных администраторов, которые будут администрировать все эти open-source системы.

На наших бизнес-приложениях, использующих в качестве СУБД PostgreSQL, работают 70% крупнейших розничных сетей в Беларуси. Во всех из них одновременно работают от 500 до 1500 пользователей. В приложениях реализованы практически все основные процессы розничных сетей (демо, чтобы оценить сложность). Размер баз данных на данный момент составляет от 2 до 4ТБ. И все они работают практически со стандартными настройками PostgreSQL на одиночных серверах без какой-либо кластеризации. При этом даже в самых загруженных серверах есть еще значительный резерв по ресурсам для дальнейшего увеличения нагрузки без потребности в кластеризации.

Да, конечно же, многое зависит от запросов к СУБД, и несколькими кривыми запросами можно положить весь сервер. Однако, точно также можно положить и Oracle, и MSSQL. Да, платформа lsFusion, на которой написаны наши приложения, делает много различных оптимизаций запросов конкретно под PostgreSQL. Но вручную SQL-запросы можно оптимизировать еще лучше.

В этой статье я полностью опишу все настройки PostgreSQL (и немножко ОС), которые мы делаем на наших системах. Кроме того, мы специально стараемся не изменять те настройки, которые не дают видимого изменения в производительности, чтобы потом не гадать, почему в одном окружении есть проблема, а в другом - нет.

Читать далее
Total votes 42: ↑39 and ↓3+38
Comments16

Сатурн по субботам, или Почему дни недели на английском такие странные

Reading time6 min
Views36K

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

А она очень интересная, ведь названия дней недели практически без изменений пришли со староанглийского языка — им уже больше полутора тысяч лет. И с их помощью вы славите скандинавских богов. Сегодня рассказываем о них. Поехали!

Читать далее
Total votes 57: ↑52 and ↓5+59
Comments31

Как устроена система игровых событий в проектах Playrix

Reading time6 min
Views6.2K

В продолжение темы нашего движка VSO, которую затронули ребята в статьях про разработку нашей «маленькой Unity» и про улучшение редактора, расскажу об одной из систем, относящихся к игровой логике. Это кросс-проектная система игровых событий GameEvents.

Читать далее
Total votes 12: ↑11 and ↓1+19
Comments0

Slack Ruby App. Часть 3. Тусовка приложения с таким гостем, как Heroku

Reading time7 min
Views1.4K

Максимально переложив ответственность за онлайн своего приложения, ты сможешь сфокусироваться на других задачах, думать больше о новых фичах и новых приложениях. Ведь попробуй просто представить себе, как ты с утречка начинаешь поднимать 20 ботов на своём бедном Lenovo в надежде, что сегодня ни свет, ни интернет не выключится? Представил? А теперь представь если 20 ботов висят на сервере и ты с утра заходишь, смотришь какой у них статус с помощью удобного дашборда. Так и 21е приложение не за горами будет :)

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

Выглядит как промо за 50$, но на самом деле я был поражен лишь тем фактом, что если зайти на цены, то там есть раздел Hobby. Это на моей памяти первый случай, когда сервис есть в бесплатном виде, чтобы поддерживать начинания разработчиков, и потом, когда идея окажется работоспособной, тут же можно понемногу увеличивать возможности своего сервиса. Только за это уже можно читать дальше, разве нет?

Читать, читать, читать!
Total votes 2: ↑2 and ↓0+2
Comments0

Способ качественно изучить паттерны проектирования

Reading time4 min
Views34K

Привет, Хабр! Когда я изучал паттерны проектирования, я делал это с помощью прочтения двух книг: простую и понятную книгу от Head First одновременно со сложной и менее понятной книгой от Банды Четырех. Ниже описан мой опыт того, как именно я это делал, плюс выводы, впечатления и советы

Читать далее
Total votes 20: ↑16 and ↓4+14
Comments15

Представляем Ansible Automation Platform 2

Reading time8 min
Views10K

На прошедшей в конце сентября конференции AnsibleFest 2021 мы анонсировали новую, вторую версию платформы автоматизации Ansible, над которой трудились два года. Сегодня мы дадим краткий обзор концептуальных новшеств и полезных ресурсов по Ansible Automation Platform 2, а также начнем чуть подробнее знакомиться с ее новыми функциями (и продолжим это делать в следующих статьях данной серии).

Читать дальше: Представляем Ansible...
Total votes 3: ↑1 and ↓2-1
Comments9

8 ошибок в резюме, которые лучше не допускать разработчику

Reading time5 min
Views7.4K

Привет! Мы — сервис поиска подработки GigAnt. Сегодня хотим поделиться своими наблюдениями и мыслями насчёт ошибок в резюме, которые вполне могут отпугнуть потенциального работодателя. 

Сейчас в России на рынке IT кандидаты диктуют условия и выбирают компанию, которая им подходит. Конечно, из-за этого можно не так основательно подходить к подготовке и оформлению резюме. Но если вы начинающий разработчик, меняете стек или просто любите порядок, лучше избегать ошибок из списка, который мы подготовили вместе с нашим главным менеджером по персоналу блока IT Ольгой Бессоновой.

Читать далее
Total votes 25: ↑10 and ↓15-2
Comments6

Code Review – зачем и как использовать в команде?

Reading time4 min
Views58K

В статье рассказывается про процесс Code Review, подходы к реализации, как использовать в команде и на что обращать внимание во время Code Review.

Code Review - это процесс проверки и анализа кода задачи разработчиком перед ее релизом. CR (Code Review) выполняется не тем человеком, который делал задачу, а другими членами команды. Результатом CR является обратная связь по выполненной задаче: необходимость внести правки, либо готовность задачи к последующему тестированию и релизу.

Читать далее
Total votes 14: ↑7 and ↓7+3
Comments31

Приемы оптимизации веб-графики в 2021 году

Reading time4 min
Views11K

Привет, Хабр!

Сегодня я хотел бы рассказать о ряде практик, позволяющих оптимизировать загрузку и отрисовку изображений на сайте. Давайте рассмотрим, что мы может сделать на сегодняшний день помимо стандартных методик (компрессии и кеширования на клиенте).

Читать далее
Total votes 46: ↑45 and ↓1+51
Comments24

YARL: как Яндекс построил распределённый Rate Limiter с нулевым влиянием на время ответа сервисов

Reading time14 min
Views28K

Yandex Rate Limiter (далее просто YARL) — это сервис лимитирования нагрузки для распределённых сервисов. Его особенность в том, что он способен работать с миллионами квот, имея при этом очень низкие накладные расходы на проверку квоты. Если совсем кратко, это система распределённых Leaky Bucket'ов, с помощью которых можно ограничивать разные величины, связанные со временем: скорость передачи данных по сети, запросы в секунду и т. п.



Меня зовут Денис Кореневский, я работаю в службе разработки внутреннего хранилища Яндекса, и сегодня я расскажу, как YARL устроен внутри, почему мы вообще написали своё решение и с какими трудностями нам пришлось столкнуться в процессе создания. Добро пожаловать под кат.

Читать дальше →
Total votes 67: ↑66 and ↓1+78
Comments26

Сравнение инструментов для генерации thumbnails: imgproxy, thumbor, imaginary, picfit, imageproxy и weserv/images

Reading time5 min
Views6.5K

Жил был один новостной проект. Время шло, одни фичи добавлялись, вторые удалялись... Одной из важнейший фишек была генерация превьюшек к картинкам (thumbnails), а именно - быстрая генерация (до 5 минут) всех thumbnails. Все было хорошо, пока не начали поступать жалобы, что, иногда, генерация не успевает за 5 минут все сделать. Начали "копать" и обнаружили интересную вещь: мы генерим 112 превьюшек к одной картинке. Нашей "радости" не было предела. После небольших дискуссий было решено увеличить maxReplicas до 60 в HPA (проблема возникала когда загружалось больше 80 картинок), так как это самое быстрое и дешевое решение.

Читать далее
Total votes 7: ↑5 and ↓2+6
Comments5

Копируем файлы пачками в AWS S3

Reading time4 min
Views5K

В одном из проектов встала следующая задача: пользователь загружает пачку файлов через клиента (CloudBerry Explorer, к примеру) в S3 бакет, мы копируем эти файлы в архив и шлем SNS уведомление о том, что все сделано. Перекладывать файлы в архив нужно начинать только тогда, когда пользователь загрузит все, что хотел. Пользователей мало и загружают батчи они довольно редко. Но файлов может быть много.

Чтобы понять, что пора начинать архивацию, зададим определенную структуру каталогов и будем просить пользователя загружать триггер-файлы с расширением .trigger когда он закончит. Этакая эмуляция кнопки Done. Структура каталогов будет такой:

<batch_name>/done.trigger
<batch_name>/files/<file_key_1>
<batch_name>/files/<file_key_2>
...
<batch_name>/files/<file_key_n>

Как видим, для каждой пачки создается свой каталог <batch_name> с подкаталогом files, в который и заливаются уже пользовательские файлы с каталогами и именами, которые он хочет. Триггер-файл загружается в <batch_name> и по ключу этого  файла можно понять какие конкретно файлы нужно отправить в архив. Но здесь есть один нюанс, мы хотим при копировании в архив вырезать каталог files. Т.е. файл <batch_name>/files/<file_key_1> скопировать в <batch_name>/<file_key_1>.

К счастью, S3 позволяет отслеживать загрузку файлов с определенным суффиксом и отправлять уведомления при наструплении этого события. В качестве получаетеля этих уведомлений можно указать аж 3 сервиса: SNS, SQS и Lambda-функцию. Но тут не без нюансов. Так, первые 2 типа поддерживают только стандартные очереди и SNS, а FIFO не поддерживают, увы.

Читать далее
Total votes 3: ↑0 and ↓3-3
Comments4

Core Web Vitals: с чего начать?

Reading time18 min
Views9.8K


Согласно web.dev, улучшение качества взаимодействия с пользователем — ключ к долгосрочному успеху любого сайта. Понимая, насколько важен для развития интернета качественный пользовательский опыт, компания Google в 2020 году представила инициативу Web Vitals. Это единое руководство по метрикам качества, которые необходимы для обеспечения удобного взаимодействия с пользователем. Хотя за прошедшие годы Google создала ряд инструментов для измерения эффективности взаимодействия и составления отчетов (Lighthouse, PageSpeed Insights и Measure), Web Vitals должна упростить измерение производительности и помогает разработчикам сайтов сосредоточиться на самых важных показателях — Core Web Vitals.
Читать дальше →
Total votes 28: ↑28 and ↓0+28
Comments0

Какие инструменты вы бы взяли на удалёнку?

Reading time15 min
Views5.6K


Как заниматься парным программированием, если коллеги сидят поодиночке в разных квартирах? И если не подозвать коллегу со словами «смотри, как это делается», с помощью чего записать для него скринкаст? А какие инструменты для тестирования особенно актуальны при удалёнке?


Весной на TechTrain это обсудили Всеволод Брекелов (vbrekelov) и Артём Ерошенко (eroshenkoam). Им близок мир тестирования, поэтому получился уклон в эту сторону, но упомянуто и много универсального. Зрителям обсуждение понравилось — поэтому теперь мы сделали его текстовую расшифровку.


Если вы знаете, какие ещё инструменты стоило бы упомянуть, то расскажите о них в комментариях. А мы тем временем готовим следующий TechTrain: это бесплатное IT-мероприятие, которое пройдёт онлайн уже 18 сентября (в следующую субботу). Так что если этот материал вас заинтересует, то и на новые доклады стоит обратить внимание.

Читать дальше →
Total votes 10: ↑9 and ↓1+12
Comments4

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity