Hi @Roboboit and welcome.
There’s a lot of people in the same boat as you, leaving it quite late to look at migrating. You’re in good company. Besides, you started using Magento about 3 years before me - So, you could probably teach me a thing or two
Composer
I had never heard of Composer before 2017, when I first started looking into Magento 2. Now that I’ve wrapped my head around it, I would never go back. It looks more intimidating than it is. There’s a load of documentation that can be found online, but after a while you realise that you don’t need to know all that much in order to use it. Most of the time, you’ll just be copying/pasting commands from instructions.
Check this post I wrote a couple of days ago (Choosing a Magento 2.3 Installation Method that's right for you). You’ll see where I stand with regards to Magento distribution.
My Workflow
The way I work, is by using 2 or more Servers. The Addition servers are assigned to Developers for them to work on.
- Managed Dedicated Server (Production)
- Unmanaged Cloud Server #1 (Development)
- Unmanaged Cloud Server #2 (Development)
Composer was used for the original installation of Magento on the Production and all subsequent core updates.
Creating the Original Development Servers was created using this method (How to migrate Magento 2 from one server to another). All additional Development Servers are then just mirrored from the Original Development Servers using a Snapshot (Cloud Host Tool).
And finally all Custom Code is done on the Development Servers and is tracked via a Git Repository. When I want to launch new Custom Code on the Production Server then I Pull the git changes directly onto the Production Server. No code is ever edited directly on the Production Server (or any files uploaded to it). Side-Note: We don’t really cover Git topics on the forum - There are much better sources like stackoverflow.com. I don’t even know how to use branches properly (yet).
Conclusion
Work with what makes you comfortable and never be afraid to try adopting new tools and services. If a new tool or service ever feels like it’s a chore, then you’re either using it wrong or it’s simply not a good fit for you.
It took me years to get to this type of setup as my needs have evolved. It works great for me but probably wouldn’t work for most people in this forum. For example, cost is very important for some so their development workflow will always be done locally.
Note: I’ve tweaked your post title because it was a little too broad. Feel free to adjust it.