[HN Gopher] Show HN: A microservice framework, listed in CNCF La...
___________________________________________________________________
Show HN: A microservice framework, listed in CNCF Landscape, 1 year
10k+ stars
Author : patrickevans
Score : 46 points
Date : 2021-09-20 15:48 UTC (7 hours ago)
(HTM) web link (github.com)
(TXT) w3m dump (github.com)
| lifeisstillgood wrote:
| I think this sort of project is in short supply. Kubernetes seems
| to have sucked all the air out of the room, and yet we need
| variety and different approaches to grow.
|
| I look forward to (trying) to replicate something similar for my
| own understanding. Any architecture docs will be gratefully
| recveied
| 0xbadcafebee wrote:
| I think the architecture of something like K8s pretty well sums
| up all (or most) of the components needed for a distributed
| system. What's really needed today is differentiation on the
| actual end result of that design. We need simpler technology
| that works better, and that's hard; it's not enough to have a
| fancy idea and throw together some lines of code. That's been
| done, and it kinda sucks. What's needed now is to focus on
| making it easier and simpler to do specific things.
|
| For example: most people just want to receive infinite HTTP
| requests and route them to custom business logic, automatically
| scaling as needed. So why can't I just push a button and make
| that happen? AWS ECS has a command-line client now that
| attempts to do that, but it's clunky and unreliable. And K8s
| doesn't have anything like that; it's all hand-crafted YAML
| files and mountains of custom cluster configuration. I just
| want to run some code at scale. And we've implemented that
| (scaling web requests/business logic) a million times by now.
| But it's never really gotten significantly easier.
|
| Docker is a good example of the amount of work you need to pour
| into a technical solution to make it a game-changing user
| solution. Docker is like 50 different technical solutions
| rolled up into one user-friendly command-line tool and a
| backend daemon. You could do most of what Docker does in LXC,
| but it was painful. Docker made it easy. That's what we need
| for running services at scale in general. Docker Swarm was
| created basically to scratch that itch, but it still hasn't
| really taken off. I'm hopeful it does one day.
| samsquire wrote:
| I agree with you. Great comment. I just want to write some
| code that can scale from zero to infinity. Cluster or
| deployment Autoscaling in Kubernetes is not exactly what I
| want.
|
| Kubernetes gets some abstractions right - such as pods,
| statefulsets, ingress, deployments
|
| What we now need is abstraction of endpoints, routes,
| request, response type/schema (to do automatic marshalling),
| id space sharding like vitess or logical server identifiers
| as part of the guid for what server the data belongs
| to..microservice becomes a bucket of routes/rpc calls not
| hardcoded to a microservice.
|
| Envoy, linkerd and hystrix look like a nightmare to configure
| right. I think the configuration behind them could be more
| elegant. The software is probably fine but it's a nightmare
| to get the right data structure that does what you want -
| hence the mountains of YAML configuration like you mentioned.
|
| I don't want to care if it's the storage layer or the
| application layer - it should all be scalable.
|
| I want to be able to set a maximum budget in financial terms
| and open ended autoscaling ceilling.
| sofixa wrote:
| > Docker Swarm was created basically to scratch that itch,
| but it still hasn't really taken off. I'm hopeful it does one
| day.
|
| It never will, that ship sailed a long time ago. Docker the
| company is struggling to survive after making wrong bets
| multiple times. The "enterprise" part, including Swarm, was
| sold off to Mirantis after years of neglect, and got some
| much needed investment and big fixes. Nonetheless, Docker
| Swarm is basically abandonware with terrible reputation
| without a viable future.
|
| Hashicorp's Nomad is much better placed to compete with
| Kubernetes. Shameless plug of my article on the matter:
|
| https://atodorov.me/2021/02/27/why-you-should-take-a-look-
| at...
| scns wrote:
| Thanks for your article, the first pic made me and my
| colleague laugh really hard.
| icy wrote:
| I love Go to bits, but I really don't like how so many tools
| revolve around codegen and boilerplate. Look at Kubernetes for
| example: you can't write an operator without generating a bunch
| of boilerplate.
| dagss wrote:
| I think it's because metaprogramming/macros is a thing Go
| doesn't have that very many other languages have. Whether the
| Java/.NET way, the LISP way or the Python way -- most languages
| have ways of making DSLs and metaprogramming etc in more
| flexible ways than Go.
|
| I wish Go just got something like Lisp macros that could work
| compile-time only. Running macros at run-time isn't really the
| big deal, but generating code in the same language and context
| as the normal code is a big deal.
|
| Adding generics really doesn't help much here..
| pjmlp wrote:
| The irony is that Java and .NET already trailed that path 20
| years ago.
| no_circuit wrote:
| I had to dig in a bit to see the whole scope of this project. It
| seems go-zero has:
|
| 1) Go library/main that wraps gRPC handlers to build a server,
| like Dropwizard or TwitterServer?
|
| 2) A CLI tool "goctl" that does code generation for setting up
| the code layout (server and client API stubs), as well as some
| Docker/k8s functionality for deploying.
|
| I'm not into Go so can't comment on aspects like the performance
| benchmark.
|
| However the project documentation is quite interesting if you'd
| like to see how, presumably the company for which this was built
| for, their production environment is set up like CI/CD, logging,
| etc.
|
| It could be more helpful if the architecture diagram showed the
| roles of the different pieces better. For example it isn't
| immediately clear what component does authentication so then the
| JWT can be used for service authorization. So the question would
| be is how much is the framework tied to some assumptions in a
| production setup.
| patrickevans wrote:
| Thanks for your comment!
|
| go-zero is easy to use with docker/Kubernetes, we built a
| command line tool to generate the Dockerfile and Kubernetes
| deployment files. It's easy to use with ECSs as well, because
| Go packages it into a single executable binary, you can use
| tools like supervisord to manage it easily.
|
| As the name of go-zero, I was trying to tell 2 things: 1. go
| from zero with microservices development 2. go from zero when
| you get something hard to fix, perhaps you think the problem
| itself in a wrong way
|
| Also, go-zero consists of 3 main parts: 1. api gateway, along
| with a newly created simple API idl to describe apis 2. zRPC,
| with the microservices governance built on top of gRPC 3.
| goctl, a command line tool to make microservices development
| much easier
|
| Not sure if I answered your question?
| isuckatcoding wrote:
| Little bit confused by the chart in the benchmark section:
| https://github.com/zeromicro/go-zero#7-benchmark
|
| What is it trying to show?
| patrickevans wrote:
| Compares to the other frameworks, the test code is here:
| https://github.com/smallnest/go-web-framework-benchmark
| sethammons wrote:
| The graph is unparsable for me. Typically, for what I think
| is trying to be shown, you would put the requests per second
| on the x axis, you would put the response times on the y
| axis, and the color coding be to assign them a label of the
| framework. I'd probably use a line chart too since, as we
| increase rps, we expect a change in response time.
|
| What the graph reads:
|
| If my framework is beego and I want to get 30k rps, I would
| need to limit my data to processing times in the 0ms bucket.
| I think? Or maybe gin will allow for 7.5k rps if my
| processing time is 500ms?
|
| Like, I think I can get to similar information to what you
| are trying to show if I read backwards, upside down, and
| rotated 90 degrees.
| Zababa wrote:
| Making the graph start at 5000 instead of 0 looks dishonest.
| ericls wrote:
| Who cares about the stars
| asim wrote:
| Been striving in the way of micro services for a few years. My
| contribution is https://go-micro.dev (17k stars)
| kingforaday wrote:
| Used this recently for something and has been very helpful.
| Thanks for providing this!
| rubiquity wrote:
| It would create more interesting conversation if you highlighted
| the merits of your design rather than superficial measures like
| CNCF blessings (there are thousands of such projects) and GitHub
| stars (easily gamed).
| [deleted]
| a_c wrote:
| I didn't know what CNCF is.
|
| https://www.cncf.io/
|
| > Cloud Native Computing Foundation (CNCF) serves as the
| vendor-neutral home for many of the fastest-growing open source
| projects, including Kubernetes, Prometheus, and Envoy.
|
| Does erlang and OTP count by this definition?
| patrickevans wrote:
| The description might not be good enough, but I have to write
| something. It's used by many companies and projects. And the
| design is described in github readme, it's rather long to tell
| here. Thanks!
| debarshri wrote:
| Is getting listed in cncf landscape a big deal? Is it an
| official cncf project?
| justincormack wrote:
| It is an official CNCF project, but its not very difficult
| to get added, see https://github.com/cncf/landscape#new-
| entries you need 300 github stars and to be cloud native.
| debarshri wrote:
| Thanks for your response!
| ignoramous wrote:
| Hi, are you involved with the project in a substantial
| capacity? If not, _show hn_ isn 't an appropriate qualifier.
| May be, _tell hn_ (or, no qualifier) is.
| nsonha wrote:
| surely it has a key differentiator?
|
| > It's used by many companies and projects
|
| No one cares, they would care if you have contributions from
| many parties which indicates longivity, do tell in that case.
|
| I do think your project is interesting, it's just the title
| doesn't do it justice.
| riedel wrote:
| I am eager to know how to game GitHub stars. Funding agencies
| love metrics and random KPI so I would love to deliver...
| jacquesm wrote:
| Right up to the moment your funding agency calls you out
| during DD and then you are in deep trouble. Would not
| recommend.
| jimmyed wrote:
| One word. Bangladesh.
| [deleted]
| riedel wrote:
| That made me curious: never thought there was a real market
| but people really seem to pay 1$ per star. Now I have to
| only trick someone into giving me money for that.
|
| Would be a fun project btw to detect gh not account and
| projects that obviously paid to get stars.
| sergiomattei wrote:
| Did you click on the link? The README goes on great detail as
| to what makes it special.
___________________________________________________________________
(page generated 2021-09-20 23:01 UTC)