Using output ports to deal with external data
Output ports, also known as secondary ports, represent the application's intent to deal with external data. It's through output ports that we prepare the system to communicate with the outside world. By allowing this communication, we can associate output ports with driven actors and operations. Remember, driven actors are external systems, while driven operations are used to communicate with such systems.
I say that we're preparing the hexagonal application to communicate with the outside world because, at the Application hexagon level, we don't know how that communication will occur yet. This approach is based on Uncle Bob's wise advice to postpone, as much as possible, any decisions concerned about which technologies will be used to fulfill the application's needs. By doing that, we're putting more emphasis on the problem domain than on technological details. I'm not saying that the persistence...