Ну у тебя есть по сути два варианта - ставить полную ноду у себя или дергать данные с полной нодой, которая стоит где-то еще. Это все больше зависит от конкретных задач, что именно требуется тянуть с блокчейна, с какой интенсивностью/требованиями задержки, подразумевается ли так же запись в блокчейн, где хранятся ключи и как они должны взаимодействовать и т.д. и т.п.
Если тебе данные из блокчейна нужно просто пользователю показывать, и что бы пользователь же с ними взаимодействовал(ключи у пользователя), то самый простой вариант это вообще не заморачиваться с этим, и написать веб-сервис на ноде+веб3+пользовательский метамаск.
Если у тебя простое серверное приложение, и ты хочешь только показывать данные из блокчейна без взаимодействий с ключами, записью и подписью транзакций - API эксплореров вроде
blockchain.info или etherscan, но они медленные и имеют ограничения по количеству запросов, на высоконагруженном ресурсе будет падать.
Если у тебя приложение само должно взаимодействовать с блокчейном, подписывать транзакции, но при этом оно должно быть тонким - infura.
В таком случае правда возникает еще один вопрос - Все ноды принимают подписанные транзы в формате JSON-RPC, но как и где их формировать? Если ты пишешь стандартный Dapp проблем нет - просто можно использовать web3js. В принципе еще если приложение написано на голанге, то можно использовать официальный генератор, что бы получить голанг-артефакты, и так же обращаться к контракту используя объектную модель. (И если мне не изменяет память, то кажется еще есть какой-то аналог веб3 для C#).
Во всех остальных случаях придется самому писать генератор и обработчик транзакций, что является натурально адским трудом.
Ну и если смотреть чисто на программный выбор ноды, то тут можно например вспомнить про парити, который в легкой версии выкачивает снимок блокчейна весом не более 200мб