microservices and docker
TRANSCRIPT
Microservices & Docker
Võ Duy TuấnCEO/FounderTeamcrop.com
• Monolithic vs Microservices
• Lesson learned
• Docker for microservices
Table of contents
1. Monolithic
AB
C
Once upon a time…
DB
1. Monolithic (cont.)
A
BC
1 year later…
DB
D
M
HL
K
G
I
EF
J
1. Monolithic (cont.)
2 years later…
DB(Master)
DBDB(Slave)
Repl
icat
e
Load Balancer
1. Monolithic (cont.)
3 years later…
DB(Master)
DBDB(Slave)
Repl
icat
e
Load Balancer
DB(Master)
DB(Slave)DB
(Slave)DB(Slave)DB
(Slave)
OH MY GOD!
2. Microservices
A
B
C
Once upon a time…
DB1
Load Balancer
DB2
DB3
2. Microservices (cont.)
A
B
C
1 year later…
D
G
H
E
K M
JL
I F
Load Balancer
DB1
DB2
DB3
DB4
DB5
OH MY GOD!
A
DB1 (Slave)
2. Microservices (cont.)
A
2 years later…
Load Balancer
DB1(Master)AA
Repl
icat
e
……
…
…
DB1 (Slave)
2. Microservices (cont.)
A
3 years later…
Load Balancer
DB1(Master)
AA
Repl
icat
e
……
…
…
AAA
DB1 (Slave)
DB1 (Slave)
DB1 (Slave)
DB1(Master)
3. Summary of long term grow
MONOLITHIC MICROSERVICES
Lesson Learned
1. Bounded context
1. Bounded context (cont.)
2. Service Communication
• External request• Internal request• Message Queue
2.1. External request
Service X
3rd-party system • JSON Web Token
(JWT):o Expirationo Blacklisto Sizeo CORS policy (ajax)
• Restful WS• Rate Limit
2.2. Internal request
Service X
• Access Trusted Network:o Key exchangeo Overheado Monitoro Fail in the middleo Timeouto SDKo Request type:
o Fire & Waito Fire & Forget
Service Y
2.3. Message Queue
Service X
• Service Bus:o Pub/Subo Acko Retryo Delayo Load Balancero Consumer HA
Service Z
Call X Call Y Call X Call A
Call X BrokerCall X
Call X Call Y
Job Queue (Ex: RabbitMQ)
3. Centralized Configuration
4. Request Log
5. Service Monitoring
status.teamcrop.com
6. Service discovery
OPS / Service discovery (cont.)
6. Service discovery (cont.)
HAProxy
Consul-template
Docker Engine
Backend 01 : Port 32680
Backend 02 : Port 32681
Backend 03 : Port 32682
Update haproxy.cfg& Reload haproxy
CONSUL REGISTRATOR
Notify
Update
Pull1
2
3
45
Client
gliderlabs/registratorgliderlabs/consul-server
7. Distributed Transaction
T: TransactionC: Compensation (Undo)
Learn more: http://kellabyte.com/2012/05/30/clarifying-the-saga-pattern/
SAGA Pattern
8. Deployment
Docker for Microservices
1. What is Docker?
2. Docker container in real
3. Docker container stats> docker stats $(docker ps --format '{{.Names}}')
4. Docker RUN example
docker run -ti -d \
-h tc-notify \
--restart=always \
--name tc-notify-$RANDOM -p :80 \
-e SERVICE_TAGS=tc-notify \
-e SERVICE_NAME=tc-microx \
-e CONFIG_URL=http://configurl.com/?abc \
-e LOG_IP=127.0.0.1 \
-v /data/logs/tc-notify:/var/www/log \
teamcropregistry.com/teamcrop/tc-notify
5. Docker UI - Rancher