Google Summer of Code 2020: Service Mesh Performance with Envoy Nighthawk
How did it all start?
I was introduced to the Layer5 community by our very own Lee Calcote, and since then I have been exploring the vast world of service meshes and their performance characteristics. Before being accepted as a Google Summer of Code intern, I had been working with the Layer5 community as an active contributor, exploring various new DevOps tooling like service meshes, the sidecar concept, and performance benchmarking of services. I have had a run-in with the Kubernetes community before and initially believed Kubernetes to be the final stage of DevOps, but I was happily surprised when I found out that the end of Kubernetes merely marked the entrypoint to a whole new world of service meshes.
And so, we reach the beginning of my GSoC 2020 internship, which began on the night of May 3rd, 2020 when I learned that I had been selected as a GSoC Participant with the Cloud Native Computing Foundation (CNCF). Admittedly, I had tried my best an year ago to get into GSoC’19 with another organisation but due to reasons only Google can tell you, I was not accepted. Everything happens for a reason though, right? Six months ago, if you would have told me that I would be working with service meshes, gRPC, load testing, performance benchmarking alongside prominent members of the open source world of Cloud Native, I would have ignored you with the least possible amount of prudence I could muster.
What is my project about?
My GSoC project is to Enable Distributed Load Testing for various Service Mesh Planes using Envoy Nighthawk. For those who are not familiar with Nighthawk, it is a performance benchmark tool written and maintained by the Envoy community. We are in the process of incorporating Nighthawk into Meshery - the service mesh management plane.Meshery already supports performance testing of service meshes using fortio & wrk2 and is maintained by the Layer5 community and is also a member of CNCF Landscape. Alongside this effort, we are creating a new industry standard: Service Mesh Performance Specification which is another initiative of the Layer5 community to establish a common format for describing and capturing service mesh performance.
It has been a month since I have started my GSoC’20 tenure with the Layer5 community, and in this month, I have learned a lot from my code contributions and mentor. I began with setting up the project roadmap and discussing the potential use cases of Nighthawk with its maintainers during my community bonding period. I came to know some incredible people during the community bonding from big tech giants like Google, Facebook, Microsoft, Affirmed Networks, Red Hat and many more to list. Before incorporating Nighthawk, we had to make various enhancements in Meshery, like adding user preferences for performance settings, specifying the SMPS format for exporting and importing of load-test preferences, load-generator interface and more.
I have learned a hoard of new things, like gRPC services and how they communicate using protocol buffers, load generation using fortio, writing handlers for various endpoints using golang, and some frontend architecture with Nextjs.
About the community
Layer5 has one of the healthiest open source communities that I have ever worked with. In the past, I have worked with a variety of well-maintained and large scale open source communities but I have never experienced a more welcoming and nurturing environment than Layer5. At Layer5, we respect each contributor and their contributions, whether it is a new adapter or just a typo fix. If you can contribute, please do. It’s that simple! With many awesome initiatives like SMPS, Distributed Load Testing, Performance Benchmarking, Learn Layer5, and Image Hub, the exponential increase of Layer5 and its various projects is inevitable.
-- Kush Trivedi
P.S.: If these topics excite you and you want to explore the beautiful realm of service meshes, come and say “Hi” on our Slack Channel and one of us will reach out to you!