The purpose of this application is to demonstrate a simple an application that allows users to securely and reliably connect to a database. This application will be constructed with a command-line client that is authenticated via cryptographic methods. It will not store user passwords in any form. The application server will authenticate the client, transform Remote Procedure Call (RPC) messages from the client into SQL commands, then query a MySQL database. The server will then return the results from the database query to the client. To ensure reliability through management of fault tolerance, the application server process will be replicated via virtual machines.
This project will attempt to implement transparency between different applications. This means the end user will be unaware of the fact that the application is made up of three separate systems, the client, the server, and the database.
The system of this project will be distributed across three different layers.
-
Client: The client will implement a command-line application that sends requests to the server.
-
Server: The server application will process client requests and communicate to the database application.
-
Database: The database application will consist of a MySQL server that stores data and communicates with the server application.
-
Security: All communication between client and server will be encrypted using SSL/TLS to ensure confidentiality.
-
Replication: The application server processes will be replicated by running multiple instances via virtual machines (VM). This ensures if one VM fails, another will carry the load until it can restart.
-
Consistency: While data replication is not currently part of the plan, this project may explore replication of data through multiple databases.
-
Fault tolerance: This project will manage fault tolerance by utilizing replication of the application server layer. This ensures transparency to the user.