<p>As mentioned in this <a href="https://stackoverflow.com/a/37423281/3317808">answer</a>: allow for easy updating of a Replica Set as well as the ability to roll back to a previous deployment.</p>
<p>So, <code>kind: Deployment</code> scales replicasets, which scales Pods, supports zero-downtime updates by creating and destroying replicasets</p>
<hr />
<p>What is the purpose of <code>HorizontalPodAutoscaler</code> resource type?</p>
<pre><code>apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
  name: xyz
spec:
  maxReplicas: 4
  minReplicas: 2
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: xyz
  targetCPUUtilizationPercentage: 70
</code></pre>

overexchange
<p>As you write, with a <code>Deployment</code> it is easy to <em>manually</em> scale an app horizontally, by changing the numer of replicas.</p>
<p>By using a <code>HorizontalPodAutoscaler</code>, you can <em>automate</em> the horizontal scaling by e.g. configuring some metric thresholds, therefore the name <strong>autoscaler</strong>.</p>
