Spring Boot совет
В тестах на Spring Boot можно без лишних настроек использовать
Для TestRestTemplate есть аналогичная аннотация —
👉 Java Portal
В тестах на Spring Boot можно без лишних настроек использовать
RestTestClient через аннотацию @AutoConfigureRestTestClientДля TestRestTemplate есть аналогичная аннотация —
@AutoConfigureTestRestTemplate@SpringBootTest
@AutoConfigureRestTestClient
public class PersonControllerTests {
private static final String API_PATH = "/persons";
@Test
void add(@Autowired RestTestClient restTestClient) {
restTestClient.post().uri(API_PATH)
.body(Instancio.create(Person.class))
.exchange()
.expectStatus().is2xxSuccessful()
.expectBody(Person.class)
.value(person -> assertNotNull(person.getId()));
}
}
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4
LATENCY VS THROUGHPUT
Когда пользователи говорят что приложение «тормозит», причина может быть в двух плоскостях:
* проблема latency (каждый запрос обрабатывается медленно)
* проблема throughput (система забита и не тянет нагрузку)
Иногда это вообще смесь обоих.
Latency — время, которое сервер тратит на выполнение одного запроса от начала до ответа.
Throughput — сколько запросов сервер способен обработать за единицу времени.
Представим, что ты инженер в сервисе доставки пиццы.
Сценарий 1:
Пользователь нажимает «Отправить заказ» и ответ долго крутится — значит высокий latency. Для пользователя это воспринимается как «всё лагает».
Низкий latency = быстрый отклик для каждого конкретного запроса.
Сценарий 2:
Ответы идут примерно по 100 мс — вроде норм. Но если система способна держать только 10 запросов в секунду, а одновременно приходит тысяча, всё разваливается. Это низкий throughput.
Высокий throughput = возможность обслуживать много пользователей одновременно.
Обе метрики критичны, особенно когда система растёт по нагрузке.
* Ответы быстрые, но при всплеске трафика сыпятся таймауты — проблема в throughput.
* Каждый запрос тормозит даже при маленьком трафике — проблема в latency.
» Как чинят проблемы с latency (ускоряем отдельные запросы)
Причины: медленные SQL-запросы, тяжёлые внешние API, прожорливая логика, геолокация сервера и так далее.
Обычно помогают индексы в БД, кэширование, оптимизация кода, CDN, профилирование узких мест.
» Как фиксят проблемы с throughput (увеличиваем пропускную способность)
Обычно упирается в ресурсы. Масштабирование: больше серверов, балансировка нагрузки, кэширование, горизонтальное расширение и т. п.
P.S. Для пользовательских API чаще гонятся за низким latency, а для фоновых задач типа batch-процессинга чаще важнее throughput, чем скорость каждого отдельного задания.
Всё упирается в то, под что именно ты оптимизируешься.
👉 Java Portal
Когда пользователи говорят что приложение «тормозит», причина может быть в двух плоскостях:
* проблема latency (каждый запрос обрабатывается медленно)
* проблема throughput (система забита и не тянет нагрузку)
Иногда это вообще смесь обоих.
Latency — время, которое сервер тратит на выполнение одного запроса от начала до ответа.
Throughput — сколько запросов сервер способен обработать за единицу времени.
Представим, что ты инженер в сервисе доставки пиццы.
Сценарий 1:
Пользователь нажимает «Отправить заказ» и ответ долго крутится — значит высокий latency. Для пользователя это воспринимается как «всё лагает».
Низкий latency = быстрый отклик для каждого конкретного запроса.
Сценарий 2:
Ответы идут примерно по 100 мс — вроде норм. Но если система способна держать только 10 запросов в секунду, а одновременно приходит тысяча, всё разваливается. Это низкий throughput.
Высокий throughput = возможность обслуживать много пользователей одновременно.
Обе метрики критичны, особенно когда система растёт по нагрузке.
* Ответы быстрые, но при всплеске трафика сыпятся таймауты — проблема в throughput.
* Каждый запрос тормозит даже при маленьком трафике — проблема в latency.
» Как чинят проблемы с latency (ускоряем отдельные запросы)
Причины: медленные SQL-запросы, тяжёлые внешние API, прожорливая логика, геолокация сервера и так далее.
Обычно помогают индексы в БД, кэширование, оптимизация кода, CDN, профилирование узких мест.
» Как фиксят проблемы с throughput (увеличиваем пропускную способность)
Обычно упирается в ресурсы. Масштабирование: больше серверов, балансировка нагрузки, кэширование, горизонтальное расширение и т. п.
P.S. Для пользовательских API чаще гонятся за низким latency, а для фоновых задач типа batch-процессинга чаще важнее throughput, чем скорость каждого отдельного задания.
Всё упирается в то, под что именно ты оптимизируешься.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Подсказка по Spring Boot: если нужно, чтобы DTO спокойно игнорировали лишние поля в JSON от клиента и не ломали API, можно повесить
Дано DTO:
Если с клиента прилетает такой JSON:
Получим ошибку:
Эту ситуацию решаем через аннотацию
👉 Java Portal
@JsonIgnoreProperties(ignoreUnknown = true)Дано DTO:
public class UserDTO {
private String name;
private int age;
// геттеры и сеттеры
}Если с клиента прилетает такой JSON:
{
"name": "Alice",
"age": 25,
"extraField": "not expected"
}Получим ошибку:
UnrecognizedPropertyException: Unrecognized field "extraField"
Эту ситуацию решаем через аннотацию
@JsonIgnoreProperties:@JsonIgnoreProperties(ignoreUnknown = true)
public class UserDTO {
...
}
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5