If you're just starting out on the project, you can run those machines locally in your lab environment and access the internet with your normal home NAT. Most home ISP solutions have a single public IP address that is shared by the internal devices connected to the router (hard wired or WiFi). There are unique internal IPs for each machine but they use NAT (Network Address Translation) and all talk to the internet with a single public IP.
If you don't already have a lab, you can set up a simple lab using tools like virtualization (e.g. VMware ESXi or Workstation or Player) to run VMs or containerization (e.g. Docker) with each application running in a container. Or if you have the hardware, you can run dedicated physical machines for each component. Depending on the application components, you may be able to run everything on one machine.
If you don't have a feasible local lab environment, seek out a cloud provider like MS Azure, Amazon AWS, or Google GCP. They usually provide some free (or cheap) trials to get you started.
It sounds like you have a lot of research ahead of you. Make sure to start small with your project and don't bite off more than you can chew at one time.