hexagonal architecture explained updated 1st ed