
Go Micro v2.4.0 – Go microservices development framework - chuhnk
https://github.com/micro/go-micro/releases/tag/v2.4.0
======
bo0tzz
This post links to a release on github. It might be clearer to link to the
project homepage instead: [https://go-micro.dev/](https://go-micro.dev/)

~~~
dang
A thread from 3 months ago:
[https://news.ycombinator.com/item?id=21878659](https://news.ycombinator.com/item?id=21878659)

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

~~~
tech_dreamer
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.

~~~
chuhnk
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.

~~~
gtycomb
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.

------
cabernal
This is reminiscent of [https://github.com/moleculer-
go/moleculer](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](https://github.com/moleculerjs/moleculer)).

~~~
chuhnk
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.

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

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

~~~
chuhnk
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.

~~~
gigatexal
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?

~~~
chuhnk
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.

------
christiansakai
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?

~~~
dch423
Check "Micro In Action" series:

[https://itnext.io/micro-in-action-getting-
started-a79916ae3c...](https://itnext.io/micro-in-action-getting-
started-a79916ae3cac)

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

~~~
christiansakai
Oh nice thanks!

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

~~~
chuhnk
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.

~~~
haggy
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.

~~~
chuhnk
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.

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

~~~
andy9775
yup.

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

------
shlomi90
We are looking into Dapr now. How do you compare to it?
[https://github.com/dapr/dapr](https://github.com/dapr/dapr)

~~~
chuhnk
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](https://github.com/micro/micro)

