GreenBackBoogie
GreenBackBoogie on Hacker News
You owe nothing to that company, at the end of the day you're just one name in someone's Excel file, the whole "family at work" trend is something awful that should not have been born, so you better get out of that.
Good luck!
https://app.diagrams.net/ -> this one has a big shapes library, so it can go from UML to cloud diagrams, it's also easy to use and a lot of export options
or the myriad of SBC-based computers like this. The only thing you should do is to install an OS, which is something everybody tends to do and succeed nowadays.
That's why I said you need to go revamp the design of your app first, going from a "monolithic design" to a close-knitted, loosely-coupled "microservice-based design":
- split the functions of your app into pieces, do that on paper - draw the interaction between all of those components with arrows, to see the inter-dependencies, see what functions need to read/write from a database and which need to poll another function for checking the state. - read a bit about sharding (both app and database). - start "breaking" the above functions into separate entities, containerize them (see what runtime you need, what extra libs, what OS would you prefer in case you need to troubleshoot, make sure you won't have a multi-gigabyte image, optimize as much as you can, you can do it later but you won't, let's be honest, that's how technical debt comes into play) and try to have them play nice with each other.
When you managed to do that, try to use docker-compose and do some testing, to see how the performance is doing, bugfix, do some more testing, then some more bugfixing afterwards and then, when you're happy with what you have, read about Kubernetes / Openshift / EKS / AKS and do an analysis on what you need from a container orchestration system, have some requirements then compare those with all the above examples I've wrote and get the right mix of cost per functionality.
I can't really recommend any reading for it, there are a lot of resources on Google for the theoretical stuff, but to put them in practice, either bring in someone experienced from outside your organization (if that person doesn't exist inside of it) or try to put together an innovation team that'll do this, but with a lot of "trial and error" sprinkled all over it.
Also, Docker Compose doesn't really help you with this. It only helps you with "syncing" the components of your app together, but since you don't have the components of it yet running as separate images / containers, it's pointless, at least at this time.