Hacker News new | past | comments | ask | show | jobs | submit login
Go Micro v2.4.0 – Go microservices development framework (github.com)
82 points by chuhnk 3 months ago | hide | past | favorite | 25 comments

This post links to a release on github. It might be clearer to link to the project homepage instead: https://go-micro.dev/

A thread from 3 months ago: https://news.ycombinator.com/item?id=21878659

Hey! Asim here (author). Feel free to ask any questions. Was not expecting this to hit the front page.

Is it possible to create a tutorial showing features end-to-end (using CLI / Code generation)? I have seen a couple of high quality tutorial series on web - but they are advocating usage of 1.18 version.

Sure, what kind of tutorials are you interested in? Written form or video? We're thinking about doing a video walkthrough series potentially in live form.

Written form please. This saves time in many ways, such as searching for certain chunks of information when trying to form an early opinion on how this product fits one's need. I went through your dev documentation today and the organization is good. I wish you would present the more detailed booking example in the same conversational style as the shorter hello world example at start. When a developer sees the first page with the bullets of interesting features (service discovery, load balancing, etc), they would want to get a broader picture of the architectural approaches combining these features (through coding examples). Interesting work. Thanks for creating it.

This is reminiscent of https://github.com/moleculer-go/moleculer. I have not used it personally.

I have worked with moleculer-js, which I've had great time using (https://github.com/moleculerjs/moleculer).

Micro started in 2014 and from what I could tell molecular took a lot of ideas from it to creat something in the JS ecosystem.

Built in NATs, RPC, mDNS, this all seems really compelling. Is anyone using this at scale in production? What have been the pain points?

I think thats not really micro.service anymore. It creates a lock in we dont want. Why not build a monolith then?

Micro focuses on providing distributed systems programming as a single framework, so it takes all the patterns you'd normally leverage and puts them in one place for you to easily build services. We do this with a pluggable model so you can pick and choose underlying infrastructure dependencies or a zero dep model if you choose. Its very powerful and our hope is the next generation of services are built using it.

Given that the functionality incorporates a lot of things one would usually create for a service being run on something like Kubernetes does it run well on Kubernetes? Or are there clashes?

Most of our users run this on kubernetes. Developers want an abstraction that is not kubernetes or infrastructure. Something simpler entirely focused on the development of services. So it fits well. We run it on kubernetes.

I was just posting this on another forum. But I want to learn more about scalability and availability and microservices. I am quite familiar with fullstack and various databases but I need a hands on experience. Does micro have some sort of tutorials that build microservices from scratch?

Check "Micro In Action" series:


Note: it is based on v1.18 for now. I'll update it to v2.x soon

Oh nice thanks!

Would I use micro on top of k8s? Doesn't seem to make sense to mix the two as far as I can tell.

Actually Micro is the exact thing you would use ontop of kubernetes. Micro was built to tame the world of cloud-native complexity and focus on developer needs.

You can think of Micro as an abstraction layer over distribute systems infrastructure, hiding the complexity from the developer and providing a pluggable system which allows it to operate in any environment. This means locally a dev can run with zero deps but in prod someone from the ops team can switch to etcd, cockroach, kubernetes, etc.

Predominantly the majority of our users are using Micro on top of K8s. Their primary focus is productivity and velocity of development when building microservices.

Using this framework on top of kubernetes (which is itself another framework used to managed microservices) sounds like an operational nightmare. Kubernetes is already filled with operational pitfalls so adding more layers on top only increases complexity.

I think Go-Micro looks cool but I wouldn't suggest layering this much more than you already are. Complexity is death for distributed systems so minimizing complexity means maximizing reliability for the systems.

I'm sorry you've misunderstood what this is. This is a Go Framework for microservices development. It's what you use to write services. It's like Rails or Spring. Kubernetes is for running applications not writing them. Kubernetes no opinions about how you write software. We encapsulate the underlying infrastructure and provide a framework for the developer to literally write business logic.

As mentioned by the other commenter one of the big features is service discovery and load balancing - it seems like micro is stepping on k8s feet here and is a bit more than just a framework.

I could see using micro on bare metal (with all features) but trying to get the grasp of mixing with k8s (with all of micro's features). I'm assuming no one is using micro's load balancing and service discovery over k8s? I guess the broader question is, is micro highly coupled to all of its features/functions or is picking and pulling parts of it workable?

The first two features listed on the README are "service discovery" and "load balancing", which is probably where the question is coming from.


Micro seems like a framework + platform for running micro services (ideally on bare metal). (Not saying there's anything wrong with that though)

We are looking into Dapr now. How do you compare to it? https://github.com/dapr/dapr

Dapr is attempting to play in the same space as us. Using a standalone server and grpc generated libraries. We're a Go framework first as we believe development is about the tools you put in the hands of the developer meaning how they write code. We deliver the framework as a set of grpc services also which you can start with the command "micro server" and communicate through https://github.com/micro/micro

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact