Hi,
Have you manually setup load balancing and EC2 instances, or do you use ElasticBeansTalk? If you will use AWS then I would suggest ElasticBeanstalk as your applilcation manager.
Regarding "general" scaled Laravel setup,
Assets and storage should be shared. ( That I assume you are aware ) CI/CD workflow basically consists of getting the code packed and pushed to the servers.
Lets say you have fixed number of servers behind loadbalancer.
Setup a cronjob that will check your GIT repo and pull the changes, do the necessary commands like composer npm artisan and any other specific to your project.
That is basic approach which works well.
Now if you have dynamic scaling, then you could do the same approach just add needed commands in startup script cloud-init.
You should store your variables somewhere for the servers to fetch them.
One approach is to use ready made tools liek Gitlab CI/CD pipelines.
I would not go to Docker as a solution just because it is "modern" and is hyped everywhere. Depends on your needs but you will not gain anything with simply deciding to go with docker until you grasp of your entire automation workflow.
CloudFormation is a templating language which provisions AWS services.
ElasticBeansTalk is a free tool which provisions CloudFormation script and sets everything for you. Afterwards, you simply upload ZIP archive of your application and it automagically deploys to all instances. It also takes care of autoscaling for you.
If you will use AWS go for ElasticBeansTalk.
I am using it for bunch of PHP Laravel apps.