Docker container design tradeoffs

option a) does not allow specific resource constraints per service, which is something you will want to use for a reliable environment.

option b) would be fine if the appliacations are completely independend.

option c) is the way to go, if you add replicas to redis and your logging service.

Further thoughs:
If security is an issue you could think about running each app stack in a separate cluster with smaller instance types or in ECS or EKS. You could also think about using ElasticCache for Redis Instead of running your own redis. Instead of using your own logging service, you could directly send your logs to CloudWatch. Or create your own centralized logging with one of the known log management systems like ELK, Graylog, splunk, or if you want a more lightweight solution, you might want to take a look at Grafana Loki. You will want to have system monitoring with Prometheus/Grafa or something similar as well.