Как связать 2 приложения плюс графический интерфейс

Здраствуйте форумчане!

Я новичек в java и не могу определится как правильно спланировать структуру приложений, какие технологии использовать и т.д.

В кратце суть такова:

Нужно создать графический интерфейс (приложение с окошками, панель управления) который должен конектится к двум серверным приложениям работающим на двух разных удаленных серверах. Графический интерфейс предназначен для управления процессами которые выполняют приложения на удаленных машинах.

Эти два удаленных приложения являют собой failover систему, тоесть одно slave, второе master, если мастер падает, то slave берет выполнение функций на себя, о чем сигнализирует в графический интерфейс.

Теперь два вопроса:

1) как легче и проще (а самое главное быстрее) наладить связь между приложениями на серверах, что бы они могли мониторить друг друга, а так же была бы связь с графическим интерфейсом?

2) Серверные приложения должны использовать какое то единое хранилище (возможно базу данных) тоесть оперировать одним и тем же набором данных, который должен быть сохранен в любом случае, упадут ли эти сервисы или упадет какой то один из них (master/slave), что в этом случае можно использовать?

Если у кого есть опыт построения отказоустойчивых приложений, подскажите пожалуйста какие есть еще варианты решения?

Заранее спасибо.

Василий.