Docker on a local machine and Docker in production — are two big differences. It's easy to play with technology but it's hard to do something real for many customers.
Half a year ago inside of AlfaLab (division of Alfa-Bank) we've started building architecture with microservices approach for few our pilot projects. We've almost completely changed a stack of the used technologies on a frontend and significantly changed it on a middle layer. For package and distribution we have choosen Docker. Two months ago we've deployed project to production and have opened service for clients.
In the report the following topics will be covered:
- reasons of a choice Docker;
- why Docker without other tools is not enough for a production;
- what stack of technologies we used in our solution;
- what advantages we've got;
- what problems have been faced and how we've solved them.
45. NGINX role
front config role
api config role
docker pull docker run
copy template docker restart nginx
copy template docker restart nginx
make volume dir chmod
45
46. - hosts: log_servers
remote_user: "{{docker_user}}"
roles:
- elasticsearch
- kibana
- hosts: api
remote_user: "{{docker_user}}"
roles:
- { role: logstash, log_type: api }
- hosts: front
remote_user: "{{docker_user}}"
roles:
- { role: logstash, log_type: front }
[log_servers]
dev_server_logs_1
dev_server_logs_2
dev_server_logs_3
[api]
dev_server_api_1
dev_server_api_2
[front]
dev_server_front_1
dev_server_front_2
dev_server_front_3
[log_servers]
prod_server_logs_1
prod_server_logs_2
prod_server_logs_3
[api]
prod_server_api_1
prod_server_api_2
[front]
prod_server_front_1
prod_server_front_2
prod_server_front_3
logging_init.yml
development
production
ansible-playbook -i development logging_init.yml
ansible-playbook -i production logging_init.yml
46