1- For small attacks you can optimize your stack, cache your content and use a provider that allows you to quickly scale and add more servers to handle the traffic. Do not use Linode or Digital Ocean as they will null route you.
OVH, AWS and Google are the ones to go with.
2- Use a DDoS mitigation / CDN provider that will filter the attacks and only send clean traffic back to you.
The ones recommended so far: