autoincrementing ID
Читать дальшеWiki Category: backend
Software Architecture Approaches – comparison
Software Architecture Approaches – comparison
Читать дальшеКогнитивная сложность современного devops
Когнитивная сложность современного devops, с моей точки зрения, перекрывает когнитивную сложность почти любой разработки или СУБД
Какой тут вывод и мораль… DevOps современный – это не просто отдельная профессия, это самые настоящие врата ада и чёрная дыра, куда нужно инвестировать массу времени и денег.
Квалифицированный devops – это примерно 3-4 года обучения и ещё 3-4 года практики.
Стажёр Вася и его истории об идемпотентности API
Никогда не доверяйте ничему приходящему в вашу систему
Читать дальшеНаконец то: Гвидо ван Россум намерен достигнуть двукратного увеличения производительности в CPython 3.11
Наработки проекта публикуются в отдельном репозитории faster-cpython. Один из участников проекта, ранее занимавшийся разработкой JIT-компилятора HotPy для CPython, опубликовал план, в соответствии с которым считает реалистичным поднять производительность в пять раз и добиться этого результата в выпуске Python 3.13.
Читать дальшена Джаве быстрее писать и саппортить, чем на системных языках
Go – для маленьких эффективных микросервисов, Java – для ООП-монстров, Rust – для лютого байтоёбства
Читать дальшеСкрытые расходы при переходе на микросервисы
Перед стартом работы над дроблением монолита на микросервисы рекомендую пройтись по чеклисту, чтобы ничего не упустить:
Мастер-данные
Написание кода по-новому
Проектирование IT-продукта заново
Создание новой инфраструктуры
Измерение и проверка SLA
Вклад в fault tolerance на всех уровнях
Реорганизация команд
Работы по обратной совместимости
Интеграция служб поддержки
Догоняющий поток фич
SQL Antipatterns
Материалы из:
Антипаттерны проектирования РСУБД
Тестируем маршрутизатор Symfony 4.1
Суть улучшений – роуты собираются в здоровенное регулярное выражение.
Таблица ниже показывает сколько времени потребовалось, чтобы найти соответствие заданным маршрутам 50.000 раз.
Колонка Diff показывает, насколько быстрее новый маршрутизатор Symfony, по сравнению с нашим нынешним (3.4).
Routes. | 3.4 | 4.1 (7d29a4d) | Diff |
---|---|---|---|
First static route | 448 ms | 382 ms | -17% |
Random static route | 1621 ms | 474 ms | -242% |
Last static route | 1826 ms | 544 ms | -234% |
First dynamic route | 746 ms | 527 ms | -41% |
Random dynamic route | 1454 ms | 531 ms | -174% |
Last dynamic route | 2039 ms | 524 ms | -289% |
Not Found | 2112 ms | 522 ms | -304% |
Как мы видим, все наши маршруты были найдены быстрее, чем раньше. Особенно заметен прирост скорости на случайном, последнем и когда маршрут не был найден.
MySQL
Почему я ненавижу Spring
У меня в Spring такое же отношение – вы точно уверены что в вашем конкретном проекте он нужен?
Читать дальшеMiddleware
Middleware, он же PSR-7 в PHP
Читать дальшеВышел PHP 7.1
Вы слушаете «Пятиминутку PHP», выпуск номер 25 — подкаст о новостях из мира PHP, интересных постах в блогах и современных подходах к разработке.
Рад всех поздравить с выходом PHP версии 7.1.0. Давайте сделаем краткий обзор RFC, вошедших в этот релиз.
Читать дальшеDesigning Data-Intensive Applications (book)
Don’t just hack it together
NoSQL… Big Data… Scalability… CAP Theorem… Eventual Consistency… Sharding…
Nice buzzwords, but how does the stuff actually work?
As software engineers, we need to build applications that are reliable, scalable and maintainable in the long run. We need to understand the range of available tools and their trade-offs. For that, we have to dig deeper than buzzwords.
This book will help you navigate the diverse and fast-changing landscape of technologies for storing and processing data. We compare a broad variety of tools and approaches, so that you can see the strengths and weaknesses of each, and decide what’s best for your application
MongoDB
После трех месяцев в разработке все прекрасно работало.
Но однажды в понедельник на планерке клиент сказал, что один из инвесторов хочет новую фичу.
Он хочет иметь возможность кликнуть на имя актера и посмотреть его карьеру в телесериалах.
Он хочет список всех эпизодов во всех сериалах в хронологическом порядке, в которых этот актер снимался.
Почему вы никогда не должны использовать MongoDB
из Почему эти ваши модные NoSQL решения не так уж хороши
Пробовали MongoDB. К счастью, с этой СУБД мне пришлось работать совсем недолго. MongoDB не выдерживает никакой критики, и ее недостатки, похоже, поняли уже все, кроме, разве что, самых упоротых программистов на Node.js. Вручную шардированный PostgreSQL, который, напомню, уже давно умеет формат JSONB, с самым тупым и никем не протестированным скриптом на Python для автофейловера, будет куда более удачным выбором, чем MongoDB. Подробности смотри у Афира и еще, например, вот тут. Выбрав PostgreSQL, вы получите все тоже самое, только куда более стабильное, не теряющее данные, а также с нормальными локами, вьюхами, транзакциями, джоинами и вот этим всем.
Java
Java vs Node.js – быстродействие
Интересная практическая статья, рассказанному верю.
Отрывок:
В общем, все, что можно было сделать малой кровью, сделано. Уже начали подумывать о приобретении второго-третьего сервера и настраивать балансировку.
Но как-то вечером в разговоре с q4x2 у нас вышел спор о том, что не все платформы одинаково полезны. А если проще, то он меня убеждал, что все наши беды из-за NodeJS, и что он готов сделать свой вариант сервера на Java, который “порвет” Node на британский флаг. Я в этом сильно сомневался,
…
Не успел Node-сервер обрадоваться двум новым ядрам, как q4x2 выкатил свой Java-сервер. Код мне напомнил самый первый вариант Node-сервера: все в одном файле в процедурном стиле. Код мы постепенно привели к божескому виду, но все равно было видно (после избавления от детских болячек), насколько этот вариант быстрее Node. В цифрах загрузки CPU — примерно в четыре раза. В часы пик, при ~500 запросах/сек основным java-процессом используется одно ядро. Для Node-версии на четырехядернике такая нагрузка была недостижимой, а на шестиядернике она была очень близка к предельной.
хабр: Как мы делали XVM — популярный мод для World of Tanks. Часть вторая: развитие серверной части
Golang
- Go не делает ничего нового;
- Go не был великолепно спроектирован с нуля;
- Go — шаг назад по сравнению с другими современными языками.
For each server, the client would do the following:
- Start the server
- Warm up the server by doing 10% of the test; 1000 clients for 30 seconds
- Do the full test of 10,000 clients for 5 minutes.
- Cool down the machine by waiting 15 seconds after stopping the server