You forgot the API! I have my own dynamic DNS with a raspberry and the cloudflare API for instance, it's very useful.
1) checks what's your current IP (an easy way is to do a GET request to http://icanhazip.com/, available thanks to Red Hat engineer Major Hayden)
2) checks what was the last IP you sent to Cloudflare (saved in a text file on your disk or something like data)
3) if they are different, send a PUT request to the Cloudflare API with the new IP: https://api.cloudflare.com/#dns-records-for-a-zone-update-dn...
4) Then save that new IP in the text file, so you can check next time
Finally, you edit your crontab to run that script every few hours or so.
What's the reason for having such a low lease time on public IPs?