I haven’t seen a lot of discussion on this topic, presumably because not too many of you have bitten the bullet and started to really figure out how you are moving your custom Groovy/DTH/IDE stuff (including all those virtual devices!) onto your own execution environment yet.
When you do, you’ll see there are basically 3 options: AWS Lambda, your own self-managed internet server, or the direct-connected device route. I’ve done a lot of work with the direct connect method (which is great, BTW), and just started to look at cloud options too (Lambda and webhoook schema connectors).
I’d like to get a discussion going on the pluses and minuses of going with Lambda vs. setting up your own internet server vs. using direct-connected device approach. This could really help out the community as they start looking at this for their own individual environments, as reading the existing documentation on these topics isn’t going to help a whole lot. Plus it seems with all the lack of info coming from Samsung there is so much uncertainty, that it’s driving more people off the platform. We really need to start talking about how things are going to work on the ‘new platform’ and help share best practices.
Here are some of my initial thoughts on the pros and cons of each of these approaches, but would love to hear some other opinions and experiences:
Cloud - AWS Lambda
Pros
- No server to manage
- Free Tier (up to 1M transactions/mo)
- Likely decent performance communicating with ST since ST also runs on AWS
- Programmatic device creation
Cons
- Potential monthly cost if exceed free tier
- No integrated OAUTH solution
Cloud - Your own Internet Server
Pros
- Total control
- Performance
- No monthly AWS fees
- Programmatic device creation
Cons
- Server hardware required
- Complexity / skills required
- Static IP required (or use DNS service)
- Ongoing security concerns opening home LAN to internet
- Ongoing server maintenance/management
- Still requires an OAUTH solution
Direct Connect
Pros
- Theoretically the fastest option (no cloud-to-cloud)
- Low/no cost
- No OAUTH requirement
- Complete control
- Additional tasks (e.g. command/query other devices, execute automations) can be accomplished through SmartThings API
Cons
- Still requires something to run your device apps (i.e. Raspberry Pi or MCU)
- Some additional device profile definition in Dev Workspace
- Individual device onboarding
- Not a solution for smartapps; can’t subscribe to ST events