Show HN: An Example Microservice Back End for Kubernetes, Bazel, Go, Java, GRPC
github.com
github.com
So, if it was such a hassle just to get them all glued together- how would they fair for a project that adopts it and matures?
But I don't see any reason why you shouldn't use Bazel + gRPC for a larger project. You may have to tweak small things in the future but I suspect that the UX will only improve. Plus, you can always write your own Skylark rules if Bazel isn't cutting it for you in some way.
I really wish gRPC team would come out with rules you can import and best practice examples / tutorials :(
(I work at google but opinions are my own. I don't work on gRPC. I don't have to write much skylark normally because Google infra teams write the common rules you need. I found that writing my own skylark for project outside of work isn't that fun.)
Beyond that, the real issue is that no other languages have "official" gRPC support, i.e. support from the core Google team rather than from third parties. I do hope that they expand the number of languages soon.
The easiest to set up was Go. Go support is already very good, including gRPC and Protobuf. The only drawback was that it breaks editor integration of some tools / linters because of the different directory layout for generated files.
Vanilla Java also has good support but when you go to Android land things change. At first we had to use a custom fork of grpc-java to build for Android, but with this change https://github.com/grpc/grpc-java/pull/4289 we were able to go back to the main repo.
gRPC-web was a prohibitively large dependency for our front end. After all we switched to a JSON API (using Envoy). I read that Google uses gRPC for products like gMail and since Google is so obsessed with web performance I wonder how they manage the dependency size (a few 100kb for us). There is a lot of information scattered around like a json-proto protocol (not publicly available?), which apparently should not be needed with proto3 and newer browser because performance is supposed to be similar. grpc-web uses the official protobuf/javascript package, using protobuf.js the dependency size as well as the compiled protobuf might be smaller.
While building Swift and Objc for iOS was super easy with Bazel we couldn't manage to build our protobuf/grpc. There were no working rules at the time and we had no time to fix it completely which is why we are not building that part with Bazel, yet. https://github.com/pubref/rules_protobuf/issues/188
I'd appreciate any insights you have on Objc support and grpc-web. It'd be great to be able to use grpc across the whole stack.
Additionally, I use grpcc[1] to test calls locally and that has worked well. I originally tried using some GUI's that looked promising but couldnt get them to work. This is good enough and less work than writing a quick client in python.
[0]: https://github.com/improbable-eng/grpc-web [1]: https://github.com/njpatel/grpcc
BTW Weave Net has been “docker pull”ed 30 million times. _Somebody_ must be using it...
(I work for Weaveworks)
I have never had any reason to try a different one, the pods can talk to each other, "does what it says on the tin"... and on top of that but unrelated, their webinars tend to be star-studded and very informative.
The real buzzword technologies are in the serverless space.