Planning an irrigation system

The story is this: I have a vegetables garden in the countryside and I need to control the irrigation system remotely. I want to setup an Arduino device which handles the operations and collects sensors data. This device is connected via wifi to a router. I got this router from my ISP. The ISP cannot provide a static IP.

On the other side, I'll have a Android app which communicates with the Arduino device.

Here are my questions.

I can setup the Arduino device in two ways: a) use a HTTP client to poll a server where to pass sensor values and check for start/stop commands. The commands would be sent from the Android app. This option requires to setup a server. b) use a HTTP server which connects to the Android app directly. This option requires to setup the router and use a service to handle dynamic IP changes.

Considering that any option poses the same development complexity, what option would you recommend if the goal is service reliability?

Take a look at Blynk.