I used Redis to store subscriber preferences (such as language), for which a database would have been overkill.
I initially used MySQL as the database backend for the service. Thanks to JDBC (and some discipline), it was easy to swap in Oracle during deployment.
Scala, Akka and Spray (which became Akka-Http) provided the building blocks for the menu service.
Akka's actors and finite-state machine were a natural way to model a USSD menu (a series of stateful interactions between a subscriber and the USSD gateway).
I used Play to build a configuration UI for the service, which let you create and manage the menus (a hierarchical tree of options and actions).