Our goal this week was to familiarize ourselves with microservices and any additional tools necessary to build and deploy microservices. In order to achieve this goal, we looked at existing microservice applications, and studied how these applications were organized. Initally, we were able to get a microservice application called Hipster Shop to run on our local machines. The code within the github repo allowed us to see an example of how microservices are organized, and we were able to come to a better understanding of modularization within the application.
We also looked into two main tools: gRPC and Kubernetes. In order to learn more about gRPC, we went through this basics tutorial on how to create a server and client in Node that communicated with each other. We learned a lot about defining message request and response types using protocol buffers, and the four different kinds of service methods gRPC lets you define. We came to the conclusion that the microservice models we write in the future should probably use bidirectional streaming. We were able to deploy the example above locally and get a good feel for how the communication between client and server worked. We also began attempting to create our own simple hello world client and server model. For Kubernetes, we began going through the basic tutorial.
Throughout this process, we realized that we still had tons of questions regarding Ambience and our project goals that we hope to clarify with the research group. Ultimately, we were able to start making good progress learning about microservice design, how microservices communicate, and how they can be deployed, but we still have lots to learn!