Git Product home page Git Product logo

mod10workshop's Introduction

Module 10 Workshop

This repository is for learners on Corndel's DevOps apprenticeship.

Pre-requisites

You will need to get the sample Globex database running on your machine. Clone this repository and follow the set-up instructions.

Part 1 - Messing Around With SQL

We're going to start off with exploring the database and using some SQL. Take a look at the questions.

Part 2 - Avoiding Prosecution

Now you are familiar with the database structure you might have noticed that it's not exactly following best practices. In particular there are some potential GDPR violations, which could get Globex into a lot of trouble.

2.1: Identify the problems

Conduct a review of the database and identify as many potential problems as possible.

Things to look out for:

  • Personal data that may be covered by GDPR
  • Other sensitive data that might be being stored incorrectly
  • Any other structural problems

Grade your issues by severity and prioritise them as high, medium or low priorities.

2.2: Find the solutions

Once you've identified the problems it's time to decide how to fix them. You can't fix these all with technical changes to the database (although you will need some of these). You'll also have to think about whether you'll need to change business processes; communicate with your customers; or some combination of these and other things.

Work through your issues in priority order and come up with a plan to fix them.

2.3: Create a test database

The database we've been using so far has contained a lot of live, sensitive data. For local development and testing we want a database that is close to live but without any sensitive data.

Write a script that redacts all the sensitive data that should not appear in the test environment.

2.4: (Optional) Improve the database

One limitation of the current system is that each order can only contain a single product.

Write an SQL script to change the database so that an individual order can contain multiple products. Your script should migrate the existing data so that previous orders aren't lost.

2.5: (Optional) Normalise the database

Database normalisation is an important topic in relational databases. While this is beyond the core scope of a DevOps course it is a useful topic to be aware of.

Write scripts to ensure the database adheres to 3NF.

Part 3 - Choosing Databases

This part of the workshop should take the form of a discussion. See Choosing a database for more details.

(Optional) Part 4 - Non-Relational Databases

The current globex database is the backend of a legacy desktop application. Orders have to be manually added by employees. Customers can order online, but this just generates emails that back-office staff enter into the system.

Globex would like to build a system that lets users order online and directly processes orders into the backend system. However, they want a buffer between the website and their database.

They want to use Kafka to accept orders from the website and hold them until a backend process has loaded them into the database.

Add a Docker container running Kafka to the database project. You might find adding docker-compose helpful. Workout how to submit orders to the Kafka instance and write a script in a language of your choice to process these orders from Kafka into the existing data.

mod10workshop's People

Contributors

benramchandani avatar hugh-emerson avatar jonesey13 avatar thehereward avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.