если смотреть с точки зрения SOA service oriented architecture, то все модули должны общаться между собой с помощью API.
То есть, ответ на первый вопрос: «В принципе, это нормальное решение. Можете написать модуль работы с БД, и для начала пусть с ним работает asterisk. Потом вы можете вдохновиться идеями SOA, и полностью все модули так переделаете».
По второму можно много чего насоветовать. Делайте RESTfull интерфейсы, самое простое по-моему для начала