Microservices and docker
-
Upload
vo-duy-tuan -
Category
Technology
-
view
3.038 -
download
0
Transcript of Microservices and docker
![Page 1: Microservices and docker](https://reader036.fdocuments.in/reader036/viewer/2022062903/58ecd5291a28ab89568b4567/html5/thumbnails/1.jpg)
Microservices & Docker
Võ Duy TuấnCEO/FounderTeamcrop.com
![Page 2: Microservices and docker](https://reader036.fdocuments.in/reader036/viewer/2022062903/58ecd5291a28ab89568b4567/html5/thumbnails/2.jpg)
• Monolithic vs Microservices
• Lesson learned
• Docker for microservices
Table of contents
![Page 3: Microservices and docker](https://reader036.fdocuments.in/reader036/viewer/2022062903/58ecd5291a28ab89568b4567/html5/thumbnails/3.jpg)
1. Monolithic
AB
C
Once upon a time…
DB
![Page 4: Microservices and docker](https://reader036.fdocuments.in/reader036/viewer/2022062903/58ecd5291a28ab89568b4567/html5/thumbnails/4.jpg)
1. Monolithic (cont.)
A
BC
1 year later…
DB
D
M
HL
K
G
I
EF
J
![Page 5: Microservices and docker](https://reader036.fdocuments.in/reader036/viewer/2022062903/58ecd5291a28ab89568b4567/html5/thumbnails/5.jpg)
1. Monolithic (cont.)
2 years later…
DB(Master)
DBDB(Slave)
Repl
icat
e
Load Balancer
![Page 6: Microservices and docker](https://reader036.fdocuments.in/reader036/viewer/2022062903/58ecd5291a28ab89568b4567/html5/thumbnails/6.jpg)
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!
![Page 7: Microservices and docker](https://reader036.fdocuments.in/reader036/viewer/2022062903/58ecd5291a28ab89568b4567/html5/thumbnails/7.jpg)
2. Microservices
A
B
C
Once upon a time…
DB1
Load Balancer
DB2
DB3
![Page 8: Microservices and docker](https://reader036.fdocuments.in/reader036/viewer/2022062903/58ecd5291a28ab89568b4567/html5/thumbnails/8.jpg)
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
![Page 9: Microservices and docker](https://reader036.fdocuments.in/reader036/viewer/2022062903/58ecd5291a28ab89568b4567/html5/thumbnails/9.jpg)
DB1 (Slave)
2. Microservices (cont.)
A
2 years later…
Load Balancer
DB1(Master)AA
Repl
icat
e
……
…
…
![Page 10: Microservices and docker](https://reader036.fdocuments.in/reader036/viewer/2022062903/58ecd5291a28ab89568b4567/html5/thumbnails/10.jpg)
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)
![Page 11: Microservices and docker](https://reader036.fdocuments.in/reader036/viewer/2022062903/58ecd5291a28ab89568b4567/html5/thumbnails/11.jpg)
3. Summary of long term grow
MONOLITHIC MICROSERVICES
![Page 12: Microservices and docker](https://reader036.fdocuments.in/reader036/viewer/2022062903/58ecd5291a28ab89568b4567/html5/thumbnails/12.jpg)
Lesson Learned
![Page 13: Microservices and docker](https://reader036.fdocuments.in/reader036/viewer/2022062903/58ecd5291a28ab89568b4567/html5/thumbnails/13.jpg)
1. Bounded context
![Page 14: Microservices and docker](https://reader036.fdocuments.in/reader036/viewer/2022062903/58ecd5291a28ab89568b4567/html5/thumbnails/14.jpg)
1. Bounded context (cont.)
![Page 15: Microservices and docker](https://reader036.fdocuments.in/reader036/viewer/2022062903/58ecd5291a28ab89568b4567/html5/thumbnails/15.jpg)
2. Service Communication
• External request• Internal request• Message Queue
![Page 16: Microservices and docker](https://reader036.fdocuments.in/reader036/viewer/2022062903/58ecd5291a28ab89568b4567/html5/thumbnails/16.jpg)
2.1. External request
Service X
3rd-party system • JSON Web Token
(JWT):o Expirationo Blacklisto Sizeo CORS policy (ajax)
• Restful WS• Rate Limit
![Page 17: Microservices and docker](https://reader036.fdocuments.in/reader036/viewer/2022062903/58ecd5291a28ab89568b4567/html5/thumbnails/17.jpg)
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
![Page 18: Microservices and docker](https://reader036.fdocuments.in/reader036/viewer/2022062903/58ecd5291a28ab89568b4567/html5/thumbnails/18.jpg)
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)
![Page 19: Microservices and docker](https://reader036.fdocuments.in/reader036/viewer/2022062903/58ecd5291a28ab89568b4567/html5/thumbnails/19.jpg)
3. Centralized Configuration
![Page 20: Microservices and docker](https://reader036.fdocuments.in/reader036/viewer/2022062903/58ecd5291a28ab89568b4567/html5/thumbnails/20.jpg)
4. Request Log
![Page 21: Microservices and docker](https://reader036.fdocuments.in/reader036/viewer/2022062903/58ecd5291a28ab89568b4567/html5/thumbnails/21.jpg)
5. Service Monitoring
status.teamcrop.com
![Page 22: Microservices and docker](https://reader036.fdocuments.in/reader036/viewer/2022062903/58ecd5291a28ab89568b4567/html5/thumbnails/22.jpg)
6. Service discovery
![Page 23: Microservices and docker](https://reader036.fdocuments.in/reader036/viewer/2022062903/58ecd5291a28ab89568b4567/html5/thumbnails/23.jpg)
OPS / Service discovery (cont.)
![Page 24: Microservices and docker](https://reader036.fdocuments.in/reader036/viewer/2022062903/58ecd5291a28ab89568b4567/html5/thumbnails/24.jpg)
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
![Page 25: Microservices and docker](https://reader036.fdocuments.in/reader036/viewer/2022062903/58ecd5291a28ab89568b4567/html5/thumbnails/25.jpg)
7. Distributed Transaction
T: TransactionC: Compensation (Undo)
Learn more: http://kellabyte.com/2012/05/30/clarifying-the-saga-pattern/
SAGA Pattern
![Page 26: Microservices and docker](https://reader036.fdocuments.in/reader036/viewer/2022062903/58ecd5291a28ab89568b4567/html5/thumbnails/26.jpg)
8. Deployment
![Page 27: Microservices and docker](https://reader036.fdocuments.in/reader036/viewer/2022062903/58ecd5291a28ab89568b4567/html5/thumbnails/27.jpg)
Docker for Microservices
![Page 28: Microservices and docker](https://reader036.fdocuments.in/reader036/viewer/2022062903/58ecd5291a28ab89568b4567/html5/thumbnails/28.jpg)
1. What is Docker?
![Page 29: Microservices and docker](https://reader036.fdocuments.in/reader036/viewer/2022062903/58ecd5291a28ab89568b4567/html5/thumbnails/29.jpg)
2. Docker container in real
![Page 30: Microservices and docker](https://reader036.fdocuments.in/reader036/viewer/2022062903/58ecd5291a28ab89568b4567/html5/thumbnails/30.jpg)
3. Docker container stats> docker stats $(docker ps --format '{{.Names}}')
![Page 31: Microservices and docker](https://reader036.fdocuments.in/reader036/viewer/2022062903/58ecd5291a28ab89568b4567/html5/thumbnails/31.jpg)
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
![Page 32: Microservices and docker](https://reader036.fdocuments.in/reader036/viewer/2022062903/58ecd5291a28ab89568b4567/html5/thumbnails/32.jpg)
5. Docker UI - Rancher