Go Ethereum (Geth) is an implementation of the Ethereum protocol written in Go. You can use Geth to sync an Ethereum node, or even build a private Ethereum blockchain. If you want to be a miner, this is a software that you would use. Your Ethereum node is a gateway and a part of Ethereum blockchain. Your program with the web3 library requires the Ethereum node to be able to interact with a smart contract that lives inside the blockchain.
Using Ganache is all fine and dandy. But Ganache is a fake blockchain. There are no miners, so it's hard to simulate some situations that we would encounter on real Ethereum blockchain. As a result, let's step up our game. We don't need to use Ethereum production blockchain now, but we can use something ...