We use Amazon DynamoDB because there are 25K bottles opened every second and we hope to capture an important percentage of this number. So we need a scalable solution to store and retrieve all the information related to this event. Also DynamoDB fits well with the already chosen AWS Lambda solution.
We use TeamCity because it is one of the most user friendly CI/CD servers, and it's also FREE for up to 100 build configurations, basically supporting a startup until it grows significantly. Integration with dotnet core tools is also excellent making things easier for us.
We use Amazon Kinesis because as an IoT business we want to decouple the invocations from the devices from the following complex processing, which involves image classification, fraud detection, analytics processing, and others. We also decouple our core systems from our supporting systems using a publish-subscribe mechanism based on Kinesis streams.
We use OpenTracing because we have a complex distributed system that we want to instrument, and also monitor, and we want to use the idea to handle these topics in an abstract way, independent on the technology. We actually started with OpenTracing but deferred choosing the technical implementation for later, which is pretty cool.
We use AWS Lambda in opur startup because we wanted our system to be scalable, and use modern development practices like micro-services, but didn't have the time, knowledge, practices, or people to adopt fast enough container based orchestration or other alternatives to get this done.