Contents
Course Intro
Microservices
Go
Kubernetes
Putting it all Together
Integrating with GitHub and Google Cloud
Conclusion
This course explores how to build microservices in Go and deploy them on Kubernetes to create reusable components that can be fully managed in the cloud. We'll talk about what a microservice is and its overall architecture. We'll then take a look at the Go programming language, its benefits, and why it works well for building microservices.
You'll also get an intro to Kubernetes including what it is, what it is used for, and the key components that are needed to get a microservice from code to be exposed on the internet.
We'll then combine these three services to do an example use case where we'll build a microservice in Go and deploy it on Kubernetes. Finally, we'll look at CI/CD integration with GitHub and Google Cloud and how you can automate your deployments.
Learning Objectives
- Learn about microservices and their overall architecture
- Learn about the Go programming language and why it's good for building microservices
- Understand how Kubernetes can be used to deploy microservices
- Learn about CI/CD with GitHub and Google Cloud
Intended Audience
This course is intended for engineers throughout the tech stack or anyone who wants to get their feet wet in DevOps and learn how programs can be managed in the cloud.
Prerequisites
There are no essential prerequisites for this course. However, we recommend that you have:
- Experience with at least one high-level programming language, whether that be Java, Python, or Ruby
- A conceptual understanding of Linux containers and/or Docker
Okay, let's take a look at an example of what a microservice architecture actually looks like. In our fictitious example, you have some type of web application that you want to serve, and that has a backend API that you want to communicate with or perhaps a public API that your customers can interact with.
So we have a client, your customers, and then they will have to hit some type of endpoint and this is usually managed by an API gateway. This can be done through AWS API Gateway or Google API Gateway, or even managed within Kubernetes with a component called Ingress, which we'll talk about later.
The microservices themselves are all managed and orchestrated via Kubernetes. So depending on the endpoint that your client hits, it will point to the correct microservice within your Kubernetes cluster. In this example, there's communication between other microservices within the cluster. It's important to note that each one of these are independent though.
The last thing I want to cover before we move on, is my microservice methodology. When I'm designing a new service, these are the three things I try to keep in the back of my mind. The first is, keep things small. We're not looking for a monolith. Keep it decoupled. If I notice I'm pulling in a class or an object from another package in my repo, then there's something wrong and I'll need to look at service communication instead.
Lastly, microservices should embrace the Unix philosophy and if you're unfamiliar with what the Unix philosophy is, it's do one thing and do it well. I believe this to be very true when designing a microservice. If you take away anything from this, it's that microservice should be doing one thing and they should do it very, very well.
Calculated Systems was founded by experts in Hadoop, Google Cloud and AWS. Calculated Systems enables code-free capture, mapping and transformation of data in the cloud based on Apache NiFi, an open source project originally developed within the NSA. Calculated Systems accelerates time to market for new innovations while maintaining data integrity. With cloud automation tools, deep industry expertise, and experience productionalizing workloads development cycles are cut down to a fraction of their normal time. The ability to quickly develop large scale data ingestion and processing decreases the risk companies face in long development cycles. Calculated Systems is one of the industry leaders in Big Data transformation and education of these complex technologies.