
Go Micro – A Go microservices development framework - chuhnk
https://go-micro.dev
======
runlevel1
mDNS is an interesting choice for service discovery. Neat idea for local
development, but probably not great in production.

I believe most cloud providers don't support multicast, meaning mDNS would not
work there. It's also quite slow and/or very chatty in large networks.

Looks there is support for other service discovery mechanisms via plugins,
though.

~~~
tyingq
Oh, yeah...that is probably limiting. A quick scan seems to show Digital Ocean
specifically drops multicast, and AWS/GCP/Azure have varying levels of
"unsupported".

Would it work with Flannel/Calico, etc? Inefficient, but probably okay since
it would be just service resolution.

Edit: Looks like no for Calico, Yes for recent Flannel, but Weave Works is
probably a better choice, designed to support it from the start.

~~~
alphakilo
mDNS is only for local development. You can use a variety of tools such as
Consul. Check out micro.mu for more info :)

~~~
tyingq
Ahh. Might be a good update for the linked page.

------
bradhe
This looks pretty new and under developed. In a world of service mesh
proliferation not sure where this fits as there is some feature overlap.

> PubSub is built in as a first class citizen for asynchronous communication
> and event driven architectures.

Would be interested to see how this is implemented and what it’s consistency
and reliability dynamics are.

~~~
alphakilo
I think the largest issue is a lack of documentation. Go-Micro is ~5 years
old, so definitely not new. Pub Sub works pretty well; check out the PubSub
example in micro/examples.

~~~
gdm85
> Event notifications are a core pattern in micro service development.

I might agree, but it's not __the __only core pattern.

What if one needs (distributed) transactions? The fact that pub/sub is
advertised as a prominent feature makes me think that asynchronous models are
preferred, at least in design and philosophy of the framework.

------
lhopki01
Have care with using this. We were using it and repos were renamed and moved
causing all sorts of issues.

------
tyingq
Seems like a sort of light service mesh, but delivered from within the app,
and very straightforward. I'll have to look at mDNS, had heard of it, but
never read into it.

~~~
arcticbull
mDNS has been around _forever_ (2002/macOS 10.2) but probably best known in
the Apple ecosystem as Bonjour [1,2]. Much of Apple's big software and
hardware products integrate it in some way.

[1]
[https://developer.apple.com/bonjour/](https://developer.apple.com/bonjour/)

[2]
[https://en.wikipedia.org/wiki/Bonjour_(software)](https://en.wikipedia.org/wiki/Bonjour_\(software\))

~~~
tyingq
Sure. The last Apple product I owned was an Apple II, so Bonjour is similarly
something I've heard in passing, but never looked closer at.

------
ainar-g
Probably mostly off-topic, but every time I see the words “Go” and “framework”
together in a sentence, I can't help but chuckle. Go is, idiomatically, a very
anti-framework and pro-library language. And I think that that's a good thing.
The closest thing idiomatic Go has to frameworks are the stdlib's “interface
packages” like package image or package database/sql/driver, which are amazing
because they make it easier to create an actual ecosystem instead of a network
of incompatible frameworks. Anyone who wants to create a “framework” for go
should instead learn from those packages and try to define a set of interfaces
which work together to achieve a goal.

~~~
st3fan
I think that is better explained as

"the Go _community_ is very anti-framework and pro-library"

There is nothing about the language, which is general purpose, that makes it
anti-anything really.

~~~
pgwhalen
I would argue that the lack of features like generics and meta programming
(annotations/decorators) push Go the language away from frameworks.

(I know that the absence of generics is temporary)

~~~
st3fan
This is nonsense. There are plenty frameworks, like the one discussed in this
post. The lack of any kind of language feature has never stopped people from
writing solid libraries, frameworks and applications in Go. Lots of examples
out there.

~~~
pgwhalen
I didn’t say there aren’t frameworks, I said there is a reasonable argument
that the language’s feature set tends away from frameworks.

