Всё, что нужно знать про архитектуру микросервисов

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

Разрабатывая микросервисы для Enchant, я старался следовать практичным подходам, которые хорошо сочетаются с современными веб-технологиями и облачными сервисами. Я брал пример с тех компаний, которые уже прошли по этому пути (а это, например, Netflix, Soundcloud, Google, Amazon и Spotify) чтобы не повторять чужих ошибок.
Читать дальше

Что выбрать: GUI или API тесты?

Где тестировать? Если вы можете изолировать какой-то функциональный элемент, то начните с него и протестируйте его с особой тщательностью. Далее определите, в каких местах системы интегрируются и как. От последнего зависит, насколько тщательно нужно тестировать интеграцию.
Читать дальше

Подумайте о следующем разработчике

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

Как разработать практичный REST API

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

Работая над API для Enchant (аналог Zendesk), я пытался отыскать прагматичные ответы на эти вопросы. Моя цель – сделать так, чтобы Enchant API было легко использовать, внедрять. Также он должен быть достаточно гибким, чтобы адаптироваться под наш собственный пользовательский интерфейс.
Читать дальше

Как писать сообщения к коммитам Git

Введение. Почему важно оставлять хорошие сообщения к коммитам


Если заглянуть в логи любого репозитория Git, в сообщениях к коммитам, скорее всего, будет твориться бардак. Посмотрите, например, как я сам блистательно писал сообщения, когда только начинал работать в Spring:

$ git log --oneline -5 --author cbeams --before "Fri Mar 26 2009"
e5f4b49 Re-adding ConfigurationPostProcessorTests after its brief removal in r814. @Ignore-ing the testCglibClassesAreLoadedJustInTimeForEnhancement() method as it turns out this was one of the culprits in the recent build breakage. The classloader hacking causes subtle downstream effects, breaking unrelated tests. The test method is still useful, but should only be run on a manual basis to ensure CGLIB is not prematurely classloaded, and should not be run as part of the automated build.
2db0f12 fixed two build-breaking issues: + reverted ClassMetadataReadingVisitor to revision 794 + eliminated ConfigurationPostProcessorTests until further investigation determines why it causes downstream tests to fail (such as the seemingly unrelated ClassPathXmlApplicationContextTests)
147709f Tweaks to package-info.java files
22b25e0 Consolidated Util and MutableAnnotationUtils classes into existing AsmUtils
7f96f57 polishing
Читать дальше

Тестируем сервис-воркеры

В этой статье мы рассмотрим, как разработчики Chrome тестируют сервис-воркеры при создании библиотек. Цель этого текста – привести практические примеры и описать методы тестирования сервис-воркеров, которые вы можете взять на вооружение и потом применить для рабочих задач.

Быть может, вы хотите убедиться, что сервис-воркер кэширует нужные данные, или проверить, что сайт возвращает правильные ответы в офлайн-режиме, или протестировать какое-нибудь событие на сайте, например push-уведомления. Неважно, что именно вам нужно проверить – это статья в любом случае поможет найти подход к тестированию кода.
Читать дальше

Разбираемся с git rebase

В комментариях к двум моим последним статьям (Какие команды я каждый день использую в Git и Когда нужно делать коммит) больше всего вопросов про git rebase. Что ж, давайте поговорим об этом.

Перейду сразу к сути. Я использую git rebase в двух случаях:
  • Чтобы сделать устаревшую ветку актуальной.
  • Чтобы изменить серию неслитых коммитов.

Читать дальше

Мой личный гид по GIT

Готов спорить, что вы работаете с Git. Может, конечно, вы пользуетесь Subversion или какой-то другой системой контроля версий, но я знаю Git и писать буду о ней. Для кого-то из вас эта статья может показаться субъективной, но у меня есть мнение, и я хочу поделиться им в интернете! У Джейсона МакКрири есть несколько заметок про Git, в том числе статья, где он описывает суть git rebase лучше, чем я бы смог, даже если бы захотел. Почитайте.

Читать дальше

C CSRF-атаками покончено!

Мы мучились с CSRF, прямо скажем, целую вечность и наконец поняли, как с этой проблемой бороться. Решение – куки с параметром SameSite. Такую защиту легко создать и еще легче ей пользоваться. Один раз установили и забыли: дальше куки будут работать без сбоев.
Читать дальше