Впервые сделал крупный проект (под NDA, так что не расскажу, какой) на облачных функциях. Впечатления противоречивые.
Изначально программисты арендовали компьютер в датацентре: или целиком или кусочек. На нём теоретически можно делать что угодно, но для запуска своих программ нужно было настроить операционную систему, безопасность и авторизацию, установить нужные исполнительные модули, программы для удобства деплоя, мониторинг нагрузки итд. Поэтому появились сервисы, которые это всё делают за тебя, а тебе дают буквально окно, куда можно написать свой код и запускать его удалённо на чужой машине.
Конкретно я пользовался решением от Яндекса, чей протокол скопирован напрямую с Amazon Web Services. Причём, в документации не только открыто об этом говорится, но ещё и в некоторых местах перенаправляют на доки от Amazon. И SDK предлагают тоже использовать амазоновский. До санкций я бы сказал, что это не так плохо — можно использовать что-то привычное тем, кто уже работал с Amazon. Но сейчас привязка к американскому сервису выглядит скорее жирным минусом. Не знаю, есть ли у Яндекса ресурсы на какое-то серьёзное разделение. Судя по состоянию документации и платформы в целом — нет.
Yandex Cloud кажется системой, которая активно развивалась несколько лет назад, а сейчас подзаброшена. Среда выполнения .NET отстаёт от актуальной на две версии (3.1 вместо 6, четвёртой версии не существует). Изначально мой проект был написан как обычное контейнеризированное приложение на .NET 6, а потом я переводил его на функции. Пришлось пройтись по всему коду и переписать несовместимые куски с C#10 на C#8, это было не слишком приятно.
Документации фактически нет, а там, где есть, много путаницы. В примерах написано одно, по факту другое: например в функцию вместо объекта Request приходит просто строка, а разбирать её надо самому. Авторизацию я нашёл только на Stackoverflow. Интересно, что адекватных доков про неё не было ни у Яндекса, ни у Amazon.
Функция выполняется и выгружается, поэтому ваша программа не должна рассчитывать на наличие постоянно живущего процесса. Мне пришлось вытащить из неё большой словарь, который грузится при старте, и положить уже подготовленные данные из него в Object Storage — это такое горячее файловое хранилище, там же рядом с функциями. Справедливости ради, работает это всё быстрее, чем я думал. Удалось запихнуть в функции даже сравнительно большой проект с кучей классов, создающий при запуске несколько десятков объектов и производящий загрузку из сети с декомпрессией.
Другой важный плюс — бесплатная квота довольно внушительная: миллион вызовов и 10Гб*часов оперативной памяти в месяц. Для пет проекта вы сможете вообще не покупать сервер. Но если сервер у вас всё-таки есть, деплой вы уже настроили, то удобнее будет, конечно, делать как привычно. И гибкости больше.
#dev
#microg Release v0.3.7.250923
https://github.com/microg/GmsCore/releases/tag/v0.3.7.250932
New Features and changes:
Work Profile
You can now sign into various work accounts that setup a work profile when using microG. As microG does not comply with all functionality imposed by organization administrators, you need to enable this feature manually in microG Settings > Work profile. Together with this comes functionality to view and install apps suggested by the organization administrator through the Play Store.
Play Feature Delivery
Apps can request installation of additional languages or features from split packages. You can activate this from microG Settings > Play Store
Face detection
This release ships with initial support for Google's Face Detection API. This functionality is still very incomplete, but works for some apps using it.
Changelog
Maps: Various fixes for HMS Maps (#2737, #2754, #2778, #2825). Thanks @DaVinci9196.
Vision: Improve Barcode Scanning APIs (#2735, #2787). Thanks @DaVinci9196.
Vision: Add initial support for face detection API (#2793). Thanks @DaVinci9196.
Location: Add support for moving WiFis in Eurostar trains (#2821). Thanks @TimoWilken.
Fitness: Add dummy for Recording API (#2760). Thanks @DaVinci9196.
Auth: Various fixes for quick login and third-party Google sign-in (#2660, #2698, #2798). Thanks @DaVinci9196.
Auth: Add support for work accounts (#2553). Thanks @fynngodau.
DroidGuard: Disable access to hardware attestation.
Vending: Fix handling of IAP for multi-account setups (#2681). Thanks @DaVinci9196.
Vending: Add work app store (#2553). Thanks @fynngodau.
Vending: Disable access to hardware keys for play integrity (#2740). Thanks @DaVinci9196
Vending: Add dummys (#2759, #2791). Thanks @DaVinci9196.
Various fixes to improve support for Google Apps (#2652, #2654, #2684, #2738, #2767, #2779, #2780). Thanks @DaVinci9196.
Various fixes for dynamic links (#2662), Fido (#2811), SmsRetriever API (#2786), AppSet dummy (#2781), web view handling (#2836, #2862). Thanks @DaVinci9196, @ale5000-git.
Version bumps (#2813, #2829). Thanks @DaVinci9196, @ale5000-git
String and location infrastructure fixes (#2693, #2755, #2781). Thanks @lucasmz-dev, @Fs00.
New/Updated translations
FakeGAppsmicroG InstallerStableRelease(v1.6)
* Updated #microG to v0.3.2.240913
* Fixed Google Maps crash
* Fixed location settings crash
* Uninstaller is now available
* See latest microG setup here.
🏆 Thanks for @nift4 for UnifiedNLP overlay.
✅ Get it from https://fakegapps.github.io
💬 Join us @FakeGAppsChat
#microg v0.2.28.231657
https://github.com/microg/GmsCore/releases/tag/v0.2.28.231657
Changelog
Entirely new, rewritten location stack
Major update to maps implementation. Thanks fynngodau
Support for reCAPTCHA Enterprise API
Various compatibility improvements
Notes
The new location stack does not support UnifiedNlp modules anymore. This was a step necessary to take to get locations properly working on latest Android versions. This means that some features previously available through UnifiedNlp modules do no longer exist. The goal is to merge the most important of those features into GmsCore. For now, the new locations stack is relying exclusively on Mozilla Location Service for network based location.
microG GmsCore now requests a few additional privileged permissions. As always, privileged permissions are optional for microG and you can continue using microG as an unprivileged app with only minor downsides. The new privileged permissions are:
android.permission.LOCATION_HARDWARE
android.permission.MODIFY_PHONE_STATE
android.permission.NETWORK_SCAN
android.permission.UPDATE_DEVICE_STATS
android.permission.WATCH_APPOPS
Be careful for #MicroG users: Current version is NOT secure for login with your Google Account. It will show your email/password in cleartext in logcat.
It doesn't matter if you have root or not, you only need logcat access to exploit it.
Check the issue here
https://github.com/microg/GmsCore/issues/1567