# use docker compose on my fullstack project
problem:
1. setup env have many process and waste time
2. developer operation system not align that cause error
3. hard to test mock data with database
4. hard to test application on different env setting
5. hard to apply version control on infrastuction
improved:
* can align all developer env version easily
* can mock a datebase on local to protect production data
* can be more developer friendly
* use a yaml file to config env, can easily implement Infra as Code
* use different config file for different env. like production, staging and development ...
* can build a system with one command
## use CI/CD
problem:
1. rely on human to code review also will cause mistake
2. run code test may cause much time
3. hard to handle coding style and variable naming
4. may cause human mistake when doing deployment
improved:
* can improve the coding quality
* auto run code test can let developer save time to focus on development
* automate to deploy a new version for production or preview for user tesing avoid human mistake
* automate run code test prevent some code which will cause error that can speed up code review process
## use cloud provider
problem:
1. hardware cost
2. maintain cost
3. reliability
improve:
* provide reliable hardware resources and have much of service that can be managed by cloud. Can more focus on development.
* use CloudFormation implemnet Infra as Code
* pay as you go, auto scale service to handle much loading and auto scaledown for saving money