
Serverless Comparison: Zappa vs. Chalice - Mizza
https://blog.zappa.io/posts/comparison-zappa-verus-chalice
======
talawahtech
The first two paragraphs of this post come across as unnecessarily defensive
and combative. Amazon released a product and then released an open source
preview project to make that product easier to use. They even mention other
similar projects (including Zappa) in the project README.

To hint at malice "...it felt like their interface and even their presentation
of the product was a direct rip-off of our efforts" and then say "I don't want
to attribute any direct malice" seems disingenuous. I feel like those fist two
paragraphs could just be cut.

Many people have found the Lambda + API Gateway combo useful, but cumbersome
which is why so many different projects have sprouted up to fill that gap e.g.
[https://github.com/serverless/serverless](https://github.com/serverless/serverless)
and
[https://github.com/claudiajs/claudia](https://github.com/claudiajs/claudia)

Even AWS themselves have multiple preview projects in the same vein. There is
another one just for Node.js that is designed to work with existing apps that
were built for the Express framework [https://github.com/awslabs/aws-
serverless-express](https://github.com/awslabs/aws-serverless-express), so
less lock-in there I guess?

It fine to promote the benefits of Zappa vs Chalice, including the fact that
it avoids lock-in, but honestly the way the author approaches the comparison
leaves a bit of a bad taste in my mouth.

~~~
johnwheeler
I can empathize with the author and am familiar with the history of his
project. In my case, I created a Python framework for the Alexa Skills Kit
[https://github.com/johnwheeler/flask-
ask](https://github.com/johnwheeler/flask-ask) and worked on a blog post with
Amazon. My hope was they'd appreciate my energy and passion for the Echo and
work with me, but I feel like I've been largely ignored by them aside from
being labeled an "Alexa Champion" which is meaningless to me.

As my framework is becoming more popular, I wouldn't be surprised at all if
they released a competing framework locked-in to their infrastructure (after
seeing how they did Chalice), and it's their prerogative to do that. But as a
developer who made a high quality product people want, of course I'd rather
they recognized the value I've created and worked with me instead of against.

They have zero obligation to, but if you're going to build on open standards
and encourage community involvement, provide incentives for the community's
hardwork aside from labels. Definitely don't disincentivize by doing wait-and-
copy.

~~~
brilliantcode
I applaud your hard work. It's only natural that we seek reward.

However, from Amazon's point of view, they did not ask you to build it or have
obligations to reward you. They did give you a good social credit but it seems
you are interested in more that is not entitled to you.

Like you said they have zero obligations and that's where the conversation
stops unless you actively ask to be rewarded. Talk to their community make a
thread on their forums, make it known and carefully explain your vision and
how they are falling short.

~~~
johnwheeler
Oh, social credits don't matter at all to me. I do appreciate the person at
Amazon who gave it to me though for thinking of me.

~~~
paulftw
So what do you actually want them to do?

They wouldn't just start throwing money at every project that has reached 1000
stars on github.

Open source projects are always about social credits or doing something for
the fun of doing it. In rare cases when they aren't it's always responsibility
of the author to find funding or come up with a business model.

~~~
johnwheeler
> So what do you actually want them to do?

Adopt my framework and put me on the same playing field as their engineers in
terms of information and resources. Flask-Ask is just way better than anything
they have for Python. Even their Python related tutorials are terrible. Also,
they're so focused on JavaScript they neglect a lot of important languages
like Python and Ruby.

I could see them building their own Flask-Ask on top of Chalice, but I think
it's counterproductive they push Lambda so hard for Alexa. Cross pollination I
guess. Lamdba doesn't support WSGI (which Flask relies on and Lambda doesn't
do unless you use Zappa). Personally, I don't think serverless is a panacea.
It's good for some use cases, but nothing beats a VPS with a database on it
for the wide majority of things including Alexa.

~~~
brilliantcode
Did you ask them or do you expect Amazon to read your mind?

Where do you get such sense of entitlement? Amazon didn't ask you to write it
you volunteer your own time and resources and now you are telling Amazon what
they should do.

~~~
johnwheeler
No, no entitlement here. I _hoped_ things would work out one way, but they
worked out another. From looking at your comments, you have a history of
putting words in peoples mouths. You're doing the same thing here.

------
ak217
The attitude displayed in the opening of the blog post is unproductive.
Chalice is deliberately minimalistic, opinionated, and tightly integrated with
botocore on Python. It's also licensed under the Apache license. Zappa is a
more general purpose framework, fulfilling a more general set of needs. When
Lambda-API Gateway first came out, I spent a long time figuring out how to
make things work, and I ended up with many of the same patterns that the
author accuses Chalice of stealing - before looking at Zappa, and long before
Chalice came out. If anything, both Zappa and Chalice are imitating (not
"ripping off") Flask.

The rest of the post contains an informative technical comparison, and I
appreciate Zappa for pioneering the integration of some very useful features,
so it's too bad that the opening really discredits it.

I've had my fair share of PRs ignored by Amazon teams, so I can relate to the
feeling that they're not engaged with the community, but it's better to
respond with a constructive attitude.

------
johnwheeler
In addition to this comparison, I'd like to add that Rich Jones (@miserlou) is
one of the most helpful maintainers I've ever come across on an open source
project.

He's available virtually everyday on Slack
[https://slack.zappa.io/](https://slack.zappa.io/) and has cultivated an
impressive community for Zappa.

~~~
Mizza
Thank you, John! :D

I really like our little community, there are a ton of people doing really
interesting stuff with server-less technology in there.

------
jessaustin
_The biggest advantage that Chalice has over Zappa is related to IAM roles.
Chalice has a very cool feature where it will actually inspect your Chalice
application for AWS service calls and generate an IAM policy based only upon
what the application needs._

That _is_ pretty sweet.

~~~
imglorp
The roles are a huge pain in the gazarium to get working and not too loose.
This was a big win for me in chalice.

~~~
brilliantcode
I do agree that is a huge win for chalice. I still don't have a clear
understanding and rather not fiddle with the IAM stuff if possible.

I just want to go from zero-to-scalable-rest-api with minimal cognitive load
from having to switch back and forth different AWS products in the web
console.

------
einrealist
I am really curious about Serverless. The entire thing feels like J2EE all
over again. I am curious to see whether the feature creep will take over in
these implementations, so that we end up in the same dead ends we were before.
But that's probably just the cycle of our industry. Well, right now it is fun.
Lets embrace it.

------
throwaway2016a
It doesn't inspire too much confidence when their homepage starts with: "Never
Worry About Web Hosting Again With Zappa, horizontal scaling is handled
automatically."

Yet it took five minutes to load.

How does this compare to [https://serverless.com/](https://serverless.com/)

Granted the auto-discovery of IAM roles selling point Serverless doesn't do.
And Serverless is Javascript centric but can still be used with Python and
many people do.

~~~
cpollard0
You can also do C# now and there is methods to get Scala and Go. Lots of
choices for language.

~~~
sorenbs
We initially wanted to deploy simple scala services to lambda, but the ramp up
time is just too slow. This is an issue when you have very few requests (your
container is stopped and started) or many requests (more containers have to be
started) We now only deploy js and go to lambda and both work great. Curious
to to learn how the c# runtime behave in these scenarios.

------
simonw
I just tried and failed to follow this tutorial:
[https://aws.amazon.com/blogs/compute/binary-support-for-
api-...](https://aws.amazon.com/blogs/compute/binary-support-for-api-
integrations-with-amazon-api-gateway/)

Seriously, this is not how I want to be building software! I'm completely sold
on the value of lambda functions, but it's viciously complex to actually
deploy something simple.

Sure, this is why Zappa and Chalice exist... but I feel like AWS could address
these needs by making the default lambda deploy process less byzantine.

------
Jake232
I haven't used Zappa yet, but came across it the other day.

I'd just like to say that it looks an exceptionally well built and thought out
project. I will be using it in the future for sure.

------
pyrophane
> Zappa does not lock you in to the AWS ecosystem.

That is a big deal to me. I use AWS but have steered clear of any features
that would be difficult to replicate if I moved off aws.

If you make it too hard to migrate to another cloud platform you become
completely dependent on Amazon, their pricing, and the choices they make. The
advantages would have to be pretty compelling to make that worthwhile.
Otherwise, it isn't actually that difficult to set some of this stuff up
yourself.

------
wehadfun
Don't understand is there a way to run Zappa or your website built on Zappa
somewhere besides Amazon?

~~~
dschep
Zappa is for deploying WSGI apps, there are tons of existing WSGI servers out
there[0][1][2][3] ;)

[0] [http://gunicorn.org/](http://gunicorn.org/)

[1]
[http://uwsgi.readthedocs.io/en/latest/](http://uwsgi.readthedocs.io/en/latest/)

[2] [http://docs.cherrypy.org/](http://docs.cherrypy.org/)

[3]
[https://modwsgi.readthedocs.io/en/develop/](https://modwsgi.readthedocs.io/en/develop/)

------
brilliantcode
really wanted to get chalice working but no dice. following the README.md
failed to produce a successful deployment.

that was a while ago not sure if anything changed since then. However, I'm
going to be taking a look at Zappa.

Some sort of integration with S3 SQL + Cognito + Zappa/Chalice (Lambda) would
be great.

~~~
imglorp
Yeah, it's okay now. Much better than by hand anyway. I'm basing a project on
it to post here Real Soon Now.

