I have to develop an application on embedded Linux which sends data over Internet. I have to choose a USB 3G modem with a SIM card holder, which works successfully or is supported on embedded Linux.
Most 3G modems are supported in Linux. I've used several different models, mostly Huawei, on embedded devices using standard Linux packages and libraries - they all do pretty much the same thing, just with brighter lights or faster stripes. Good starting points are
The main obstacle to overcome is working out the individual methods each provider uses for authentication and access, but this is generally well documented. The Archlinux wiki pages on configuring
pppd are pretty good:
Lots of USB "hotspot" devices exist now ("wingles"), and so do $1 USB wifi adapters that are well supported on linux. If you can plug both devices in, you get a really no-hassle way to do linux networking, with the bonus that you can easily share it too if you need.
Here's 2 good references for setting up: http://greyfocus.com/2018/01/wifi-without-networkmanager/ and https://linuxconfig.org/connect-to-wifi-from-the-linux-command-line/