> Getting all of these technologies to work together was a real challenge. I had to dig through countless GitHub issues and dozens of example projects to make all these things work together. I'm offering this repo as a starter pack for other people with a Bazel monorepo targeting Kubernetes.<p>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?
We are using a similar setup. K8s, Bazel, Go, Java (Android), Swift (iOS), Typescript. Everything with gRPC.
I really like Bazel because it makes working with Protobuf so much cleaner (at least in theory) and allows us to have one build system for all those languages (at least in theory).<p>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.<p>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 <a href="https://github.com/grpc/grpc-java/pull/4289" rel="nofollow">https://github.com/grpc/grpc-java/pull/4289</a> we were able to go back to the main repo.<p>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.<p>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.
<a href="https://github.com/pubref/rules_protobuf/issues/188" rel="nofollow">https://github.com/pubref/rules_protobuf/issues/188</a><p>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.
I'm using GRPC-ish stuff in my stack. I would say that one large hole with grpc right now is figuring out the local development story. I am all on-board with running databases in local Docker/local k8s, but still having trouble wrapping my head around local grpc-web development given that grpc-web repo seems completely stalled right now.
Nice, here is a project with very similar goals and which runs in other orchestrators other than Kubernetes: <a href="https://microservices-demo.github.io/" rel="nofollow">https://microservices-demo.github.io/</a>
Is it weird that I use most of this stack already but still thought the repo was an attempt at satire? I feel like this experience has left me questioning everything I think I know.