An embedded topology co-locates the data and the application on cluster members. Embedded topology thus supports data locality. This type of topology is most useful if your application focuses on high-performance computing.
In a client-server topology, you are able to scale the Hazelcast cluster size independently from your application. Your application is hosted on clients, and the clients interact with the data by communicating with the members in the cluster.
Client-server topology is a better fit when there are multiple applications sharing the same data or if the application deployment is significantly greater than the required Hazelcast cluster size. For example, if you have 500 application servers but only require a 10 member Hazelcast cluster.