Для понимания понятия latency возьмем простой пример. Представьте себе некий «черный ящик» с одним входом и одним выходом. Вы подаете сигнал на вход и ожидаете появление сигнала на выходе. При проведении экспериментов вы замечаете, что при подаче сигнала на вход сигнал на выходе появляется через 1 секунду. Причем это происходит постоянно с отклонением +/- 10 миллисекунд. То есть выдача сигнала на выходе происходит с определенной задержкой. Это и есть latency — время задержки.
Latency вокруг нас

Формально latency — это время между произошедшим событием и реакцией на него.
Где-то в далекой-далекой галактике сейчас взорвалась сверхновая. Но мы узнаем об этом только через несколько сотен лет, когда свет от взрыва дойдет до Земли. Это latency в астрофизике.
На другом конце комнаты кто-то открыл банку с формалином. Запах формалина дошел до вас только через несколько минут. Это latency в физике газов.
Вы написали письмо другу и бросили его в почтовый ящик. Ваш друг получил его через месяц. Это latency Почты России.
Вы повернули выключатель, а свет в спортивном зале загорелся через несколько секунд, когда сработали все реле и разрядники газоразрядных ламп. Это latency в электротехнике.
Вы выпили стакан водки, а опьянели через несколько минут. Это latency в биологии.
Latency в IT
В компьютерных системах задержка latency присутствует на всех уровнях неотъемлемо, просто по самой природе компьютерных систем. Мы говорим о latency в памяти (время, когда данные на считывание были посланы в память, и когда они были реально считаны), latency в сети (время, когда данные были посланы в сеть, и когда они были приняты на другом конце), latency в приложении (время, когда произошло определенное действие, и когда произошла реакция на него: нажатие кнопки и выполнение действия на это нажатие).
Конечно программистам и пользователям хотелось бы, чтобы latency была равна 0: чтобы данные передавались по сети моментально, чтобы в память данные записывались тут же, чтобы по нажатии кнопки сразу получался результат. К сожалению против этого идеала работают сами законы физики (сигнал не может передаваться по сети быстрее скорости света, следствие не может наступить раньше причины), и ошибки программистов (неверно написанный код, неверно выбранные структуры данных, неверный дизайн, архитектура приложения, неверно выбранная платформа). Соответственно, задача программиста — сделать так, чтобы предложение не только работало, работало правильно и без ошибок, но также работало быстро и желательно настолько быстро, насколько это возможно для данных аппаратных и программных средств. Чем ниже latency, тем лучше.
Latency в финансах
Latency — главный объект, на который обращают внимание в финансовых торговых приложениях. Приложение не просто должно работать быстро, а должно укладываться в определенные временные рамки. Выход за эти временный рамки грозит убытками, либо упущенными возможностями.
Давно прошли те времена, когда торги осуществлялись вручную, ордера на биржу передавались по телефону, а цены биржевых сделок распространялись по телеграфу и выводились на ленту механическим тикером. Latency тогда исчислялась часами: вы видели текущую цену на тикере (tick), отправляли приказ (order) своему брокеру, брокер — маклеру на бирже, маклер на бирже исполнял ваш ордер (trade), перезванивал брокеру, а он вам. За это время рыночная цена акции конечно могла измениться, и ваш ордер мог быть исполнен вовсе не по той цене, которую вы видели час назад на ленте тикера. Этот феномен называется «slippage» (буквально «проскальзывание»), когда из-за latency вы получаете не мгновенное исполнение ордера и, соответственно, по другой рыночной цене, чем ожидали, или вообще не получаете никакого исполнения.
В настоящее время все торги ведутся компьютерами. На передачу рыночных данных и исполнение ордера тратятся уже не часы, а секунды, миллисекунды, микросекунды. Latency уменьшилась, но все равно не равна нулю. В этой гонке конкурентное преимущество получает тот, кто тратит на все операции принятия решения (tick-to-trade) меньше времени, чем другие. Медали за второе место в торгах не существует: кто первый отреагировал на новую цену в книге лимитных ордеров, на какую-то новость, на изменения на других рынках, на биржах в других странах и совершил сделку — тот и победитель. Проигравшему остается только надежда успеть совершить следующую сделку быстрее других.
Гонка за low latency
Гонка за снижение latency охватывает все уровни компьютерной системы участника торгов: от оптимизации приложений, до тонких настроек операционной системы, выбора более быстрой аппаратной платформы, более быстрой памяти, самых быстрых процессоров, самых лучших сетевых карт, самых лучших сетевых проводов, самых быстрых сетевых коммутаторов, самого близкого расположения к бирже и источникам рыночных данных.
В 1997 году «low latency» означала задержку в 1 миллисекунду.
В 2005 году «low latency» — это 500 микросекунд.
В 2018 году, говоря о low latency, мы имеем в виду задержки уже порядка 100 микросекунд, не больше.
Ultra-Low Latency

Задержки порядка 10-20 микросекунд это уже ultra-low latency.
Задайте себе вопрос: можете ли вы написать приложение способное за 10-20 микросекунд обработать пришедший по TCP/IP пакет данных, разобрать его на значимые блоки, проанализировать их, на основании анализа сформировать рыночный ордер, закодировать его в FIX-сообщение, и послать его на биржу?
Каким языком программирования вы для решения этой задачи воспользуетесь? Какую операционную систему выберите? С какими настройками? На какой аппаратной платформе? С какими параметрами? С какой сетевой картой? С каким сетевым кабелем? Какой длины? Сколько времени у вас займет написание такой программы и сборка всей системы готовой для реальных торгов на бирже? В какой бюджет вы уложитесь? Как быстро вы сможете вносить изменения в эту систему и выкладывать ее в Production?