From 06b4a80553148ceeb41a4ecb44668bf7fedd644c Mon Sep 17 00:00:00 2001 From: Michael Ly <12224090+mitruly@users.noreply.github.com> Date: Wed, 22 Aug 2018 09:21:41 -0400 Subject: [PATCH] Initial revision for system design documentation. (#107) --- SYSTEM_DESIGN.md | 56 ++++++++++++++++++++++++++++++++++++++ img/VinylDNS_overview.png | Bin 0 -> 56261 bytes 2 files changed, 56 insertions(+) create mode 100644 SYSTEM_DESIGN.md create mode 100644 img/VinylDNS_overview.png diff --git a/SYSTEM_DESIGN.md b/SYSTEM_DESIGN.md new file mode 100644 index 000000000..8654c7526 --- /dev/null +++ b/SYSTEM_DESIGN.md @@ -0,0 +1,56 @@ +# System Design + +## Table of Contents +- [Components](#components) +- [Process Flow](#process-flow) +- [Integration](#integration) + +## Components + +The following diagram illustrates the major components in the VinylDNS ecosystem and the external systems they interact with. + +![VinylDNS Architecture Diagram](img/VinylDNS_overview.png) + +* API - RESTful endpoints to allow interaction with VinylDNS + +* Database - stores information that the VinylDNS application needs + +* DNS servers - communicates DNS changes and resolves DNS records + +* Message queue - temporarily stores DNS requests for processing + +* LDAP Service - application protocol used to authenticate user access to the VinylDNS portal + +* Portal - graphical user interface to interact with the VinylDNS API + +* Tooling - external libraries and utilities used to interact with the VinylDNS API + +## Process Flow + +1. LDAP service authenticates user credentials and grants access to the portal. +1. If the user is accessing the portal for the first time, VinylDNS credentials are generated and stored. +1. User navigates portal or uses integration tooling to generate a signed API request. +1. When the API receives a request, it loads the credentials for the calling user from the database and validates the request signature to ensure that the request was not modified in transit. +1. The request is then validated to ensure that: + - the request data is correct + - the request passes all validation checks + - the user has access to make the change +1. Assuming the request is in good order, the request is put on a message queue for handling. +1. One of the VinylDNS API server instances pulls the message from the queue for processing. For record changes, a DDNS message is issued to the DNS backend server. +1. When the message completes processing, it is removed from the message queue. The changes are applied to the VinylDNS database along with an audit record for the request. + +## Integration + +Integrating with VinylDNS is simple since each API endpoint is effectively a distinct DNS operation (eg. create record, update record, delete record, etc.). The only requirement for sending a request is generating the correct AWS SIG4 signature without content length and providing the corresponding HTTP headers so that VinylDNS can verify it. See [API Authentication](https://www.vinyldns.io/api/auth-mechanism.html) for more details. + +The current tooling available to perform VinylDNS API requests include: + +* [go-vinyldns](https://github.com/vinyldns/go-vinyldns) - Golang client package + +* [vinyldns-cli](https://github.com/vinyldns/vinyldns-cli) - command line utility written in Golang + +* [vinyldns-java](https://github.com/vinyldns/vinyldns-java) - Java client + +* [vinyldns-python](https://github.com/vinyldns/vinyldns-python) - Python client library + +* [vinyldns-ruby](https://github.com/vinyldns/vinyldns-ruby) - Ruby gem diff --git a/img/VinylDNS_overview.png b/img/VinylDNS_overview.png new file mode 100644 index 0000000000000000000000000000000000000000..b673b077860ede51003709a0d38066aebd703451 GIT binary patch literal 56261 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