#CodeOne @VladimirD_42
From Monolith to Microservice DB
and Improving App and Database
Performance in Projects [DEV4790]
Vladimir Dejanović
22 October 2018
@VladimirD_42
Vladimir Dejanović
Let’s Meet
@VladimirD_42
vladimir@itshark.xyz
http://itshark.xyz
#CodeOne
Slide 4
Slide 4 text
@VladimirD_42
Vladimir Dejanović
Let’s Meet
http://itshark.xyz
#CodeOne
Slide 5
Slide 5 text
@VladimirD_42
Vladimir Dejanović
Let’s Meet
#CodeOne
Slide 6
Slide 6 text
@VladimirD_42
Vladimir Dejanović
Let’s Meet
and Others...
#CodeOne
Slide 7
Slide 7 text
@VladimirD_42
#CodeOne
Slide 8
Slide 8 text
@VladimirD_42
#CodeOne
Agenda
Slide 9
Slide 9 text
@VladimirD_42
#CodeOne
Agenda
Data and Databases
Slide 10
Slide 10 text
@VladimirD_42
#CodeOne
Agenda
DB in Microservices world
Data and Databases
Slide 11
Slide 11 text
@VladimirD_42
#CodeOne
Agenda
DB in Microservices world
Problems with data
Data and Databases
Slide 12
Slide 12 text
@VladimirD_42
#CodeOne
Agenda
DB in Microservices world
Questions
Problems with data
Data and Databases
Slide 13
Slide 13 text
@VladimirD_42
#CodeOne
How important is data?
Slide 14
Slide 14 text
@VladimirD_42
#CodeOne
How important is data?
Slide 15
Slide 15 text
@VladimirD_42
#CodeOne
How important is data?
Slide 16
Slide 16 text
@VladimirD_42
#CodeOne
Data is foundation of application
Slide 17
Slide 17 text
@VladimirD_42
#CodeOne
Data is foundation of application
Users
Slide 18
Slide 18 text
@VladimirD_42
#CodeOne
Data is foundation of application
Application
Users
Slide 19
Slide 19 text
@VladimirD_42
#CodeOne
Data is foundation of application
Data => Database
Application
Users
Slide 20
Slide 20 text
@VladimirD_42
#CodeOne
Data Base
in
Microservices world
Slide 21
Slide 21 text
@VladimirD_42
#CodeOne
DB in Microservices world
Slide 22
Slide 22 text
@VladimirD_42
#CodeOne
DB in Microservices world
Slide 23
Slide 23 text
@VladimirD_42
#CodeOne
DB in Microservices world
Slide 24
Slide 24 text
@VladimirD_42
#CodeOne
DB in Microservices world
Slide 25
Slide 25 text
@VladimirD_42
#CodeOne
DB in Microservices world
Slide 26
Slide 26 text
@VladimirD_42
#CodeOne
DB in Microservices world
Slide 27
Slide 27 text
@VladimirD_42
#CodeOne
DB in Microservices world
Slide 28
Slide 28 text
@VladimirD_42
#CodeOne
DB in Microservices world
Slide 29
Slide 29 text
@VladimirD_42
#CodeOne
Problems that we
encounter with data
Slide 30
Slide 30 text
@VladimirD_42
#CodeOne
Problems that we encounter with data
Correctness
Slide 31
Slide 31 text
@VladimirD_42
#CodeOne
Problems that we encounter with data
ref: http://www.clker.com/cliparts/6/7/5/0/13349271331017964165Twin%20Baby%20Boys.svg.med.png
Slide 32
Slide 32 text
@VladimirD_42
#CodeOne
Problems that we encounter with data
ref: https://gerardnico.com/wiki/_media/data/modeling/normalization_process.jpg
@VladimirD_42
#CodeOne
Read
Denormalization where needed
All above applies
Slide 79
Slide 79 text
@VladimirD_42
#CodeOne
Read
Denormalization where needed
Join on App level
All above applies
Slide 80
Slide 80 text
@VladimirD_42
#CodeOne
Read
Denormalization where needed
Transactions multiple DB in App
Join on App level
All above applies
Slide 81
Slide 81 text
@VladimirD_42
#CodeOne
Create/Add
Slide 82
Slide 82 text
@VladimirD_42
#CodeOne
Create/Add
mysql> create table post (
id int not null, body text, primary key (`id`));
Slide 83
Slide 83 text
@VladimirD_42
#CodeOne
Create/Add
mysql> create table post (
id int not null, body text, primary key (`id`));
mysql> alter table post add column
title varchar(50) not null default '-';
Slide 84
Slide 84 text
@VladimirD_42
#CodeOne
Create/Add
First Update DB
Slide 85
Slide 85 text
@VladimirD_42
#CodeOne
Create/Add
First Update DB
Then update code accordingly
Slide 86
Slide 86 text
@VladimirD_42
#CodeOne
Delete
Slide 87
Slide 87 text
@VladimirD_42
#CodeOne
Delete
mysql> alter table post drop column title;
Slide 88
Slide 88 text
@VladimirD_42
#CodeOne
Delete
mysql> alter table post drop column title;
mysql> drop table post;
Slide 89
Slide 89 text
@VladimirD_42
#CodeOne
Delete
Remove in code
Slide 90
Slide 90 text
@VladimirD_42
#CodeOne
Delete
Remove in code
Make sure everything is still good
Slide 91
Slide 91 text
@VladimirD_42
#CodeOne
Delete
Remove in code
Make sure everything is still good
Delete/Drop in DB
Slide 92
Slide 92 text
@VladimirD_42
#CodeOne
Update/Modify
Slide 93
Slide 93 text
@VladimirD_42
#CodeOne
Update/Modify
mysql> alter table post
change `title` `new_title` varchar(30);
Slide 94
Slide 94 text
@VladimirD_42
#CodeOne
Update/Modify
mysql> alter table post
change `title` `new_title` varchar(30);
Slide 95
Slide 95 text
@VladimirD_42
#CodeOne
Update/Modify
Add new in DB
Slide 96
Slide 96 text
@VladimirD_42
#CodeOne
Update/Modify
Add new in DB
Add new in Code, but don’t use
Slide 97
Slide 97 text
@VladimirD_42
#CodeOne
Update/Modify
Add new in DB
Add new in Code, but don’t use
Populate new in code, but don’t use
Slide 98
Slide 98 text
@VladimirD_42
#CodeOne
Update/Modify
Use new in code, old failsafe
Slide 99
Slide 99 text
@VladimirD_42
#CodeOne
Update/Modify
Use new in code, old failsafe
Remove old in code
Slide 100
Slide 100 text
@VladimirD_42
#CodeOne
Update/Modify
Use new in code, old failsafe
Remove old in code
Remove old in Database
Slide 101
Slide 101 text
@VladimirD_42
#CodeOne
Summary
Slide 102
Slide 102 text
@VladimirD_42
#CodeOne
Summary
Data
Slide 103
Slide 103 text
@VladimirD_42
#CodeOne
Summary
Data
DB in Microservices world
Slide 104
Slide 104 text
@VladimirD_42
#CodeOne
Summary
Data
DB in Microservices world
Problems with data
Slide 105
Slide 105 text
@VladimirD_42
#CodeOne
Problems with data
Correctness
Slide 106
Slide 106 text
@VladimirD_42
#CodeOne
Problems with data
Correctness
Performance/Size
Slide 107
Slide 107 text
@VladimirD_42
#CodeOne
Problems with data
Correctness
Performance/Size
Evolution