The really hard part is integration testing. You can Chaos-Monkey your Lambda functions, but you can't Chaos-Monkey DynamoDB. We're looking at ways of building tooling to do that.
For deployment, we wanted to use Serverless, but as they started to move away from CloudFormation, that didn't work for our more enterprise needs, so we've been rolling our own, based on ideas from Kappa.
Have you guys figure out a way to do offline testing of one Lambda calling another? I'd love to see it!
I bet you could achieve this effect by either temporarily decreasing provisioned throughput, or inserting clientside middleware that occasionally refuses to do a DynamoDB op.
But it means you have to write the middleware and have it be it's own source of bugs, which is still better than nothing, but another risk.
Anyone else heard the same?
Someone might hate python just because.
Linux executables.
During re:Invent 2015 there was talk about supporting a windows runtime environment.
:)
Arbitrary Executables = Arbitrary Linux Executables.
Since Python3 runs on linux, you can invoke python3 scripts.
Although actually, I see what you mean now. D'oh. Windows was so far out of my mind I wasn't even thinking of it as a distinction to be made.
But yes in 2016 everyone needs day 1 Python 3 support. Python 2 support is optional.
Of the top 360 libraries, only 332 of them support Python 3 (but almost all of them still support Python 2).
This analysis was done in March and expected even support for Python 3 and 2 around now:
https://blogs.msdn.microsoft.com/pythonengineering/2016/03/0...
So maybe next year it will be optional, but not yet.
So yes, it seems to me that from the standpoint of a hosting company like Amazon for example, Python 2 should be the option for them to host, should not be guaranteed, and maybe even shouldn't cost the same as Python 3 moving forward. That's the present of the language. You are asking them to support the past of the language. Perhaps you should be willing to pay for them to support the past of the language.
(Of course, this particular example is moot because it sounds like Amazon themselves have engineers in the "Python 2 or Die" clade, but it's the example at hand.)
The more people that say "no python 2" the sooner it will die.
I don't know, python2vs3 thing is weird. Bet someone has a good book on it.
I can't image rolling out a new python hosting product in 2016 and not even covering python3 ?!?!?
I'm not sure how this applies to Lambda, but we've found a workable solution for Service Fabric: the services and actors are almost nothing more than a thin host for the actual implementation (or are DI'd into the implementation) - which is defined in a completely separate package/assembly.
there are very few times where you are offline and would like to run a test suite, but it's much easier to handle those than try to fake the service AWS provides
Here is an example[1] of a program built in Python that uses Kappa, and here is a video tutorial[2] on how I deploy that program with kappa.
Obviously I disagree with the premise. It's true that it is more difficult to use than other technologies and you'll certainly pay the pioneer tax, having to develop your own tooling, but it's ready for production traffic.
Error handling is ok, could be better (it takes a while for the cloud watch log to show up).
The real big problem is testing. It's really hard to test if you have more than one function because there is no mocking framework (yet). It's fairly easy to deploy and test with a test account, but local testing still needs to be solved.
[0] https://github.com/garnaat/kappa
[1] https://github.com/jedberg/wordgen
[2] https://www.youtube.com/watch?v=JtLLkCt-lPY&feature=youtu.be