А где создаётся два application? Application - это, по сути, компонент работающей системы, который живёт сам по себе. Application-у соответствует отдельное дерево супервизирования от самого корня. Как правило, для работы системы требуется несколько Application-ов: логгер, http-сервер, бизнес-ядро, клиент БД...
Чезарини читаю проектирование масштабируемых систем с пощью erlang в главе поведения приложения картинка вводит в заблужден е значит)
Зелёный application - это код из ядра OTP, который реализует поведение, общее для всех application-ов. А my_application - это реализация коллбэков программистом, который делает конкретное application под конкретные потребности.
За кулисами в виртуальной машине на каждом узле зпускается процесс под названием контроллер приложений application controller. Для каждого приложения otp контроллер зпускает пару прцессов, которые называются мастер приложения application master. Именно мастер который запускается и ведет мониторинг наблюдателя верхнего уровня будет принимать меры если приложение прекратит работу.
Я думаю, что один из этих процессов решает, что делать, а второй вызывает коллбэки в приложении. Если start/2 приложения, например, упадёт - вместе с ним упадёт и второй процесс.
я ща леплю вместе и n2o и rest cowboy (потому что не врубился в парс трансформы и как дописать до n2o собственный обработчик кастомного rest - пути) получается два роутера - сначала тот который n2o-шный - с вебсокетом и плюшками, потом тот который rest cowboy - обработчик голый, менее удобный после n2o-шного ))