Hi, I am working on the same project on my freetime.
Last summer I managed it with http request, but it was only one side communication, now I want to improve it to a monitoring system using tcp, with live datastream, controlling etc.
I have an arduino mega + sim908 + custom shield with sensors
My webserver that process the http request and put datas to mysql, not able to run tcp server code, so I will need a virtual server(expensive) or a pc with 24/7 internet connection as a server.
The dynamic IP is not a problem, you only need to find a service provider that offers public IP for your mobile internet sim card.
Your server should have a fix ip, or domain to connect by the clients. If the clients are connected, the server sees their ip.
The ip will change, when the module reconnect to the network, but it doesn't matter really, because it will reconnect to your server, and when you send data, you will send an ID with the data, to store it properly.
If you really want to know the IP of your module by the server, you could easily send through http to the server.
You even could make a server from the simcom module, send the ip to the server with http, and then the server could connect tcp to the module, thats streams the data.
It will be a multi-server one client connection, but I think it could be managed.