So it's a little hard for me to compare it to Netlify, which does have backend support in the form of lambdas, and a database in the form of FaunaDB. That's fairly limited, but it's also very easy.
Clicking through to the github page, it looks like the examples are in Go... though I also see a Dockerfile. For me, I'd be more interested in having your blurb page focus more on how one writes the back end, since that's what you're really selling.
I'd rather see a comparison with other no-infra solutions like AWS chalice or even Serverless framework.
Micro seems to be a Go framework evolved to automatically deploy code to the "cloud", but it seems it'll remain limited to Go backends... I can write Go without problems, but I wanted something that supports other languages as well, specially Java... I think RedHat seems to offer that with OpenShift and Quarkus[1], but their material is so ridden with marketing buzzwords I am not sure it's suitable for what I'm looking for (basically, a small server that can store a small amount of documents or key-value information on whatever database the platform supports without fuss).
Heroku seems to be the most close to this I could find, but it's pretty expensive from what I saw if you need a DB.
Does anyone have suggestions for alternatives?
[1] https://developers.redhat.com/blog/2020/05/28/quarkus-a-kube...
* https://www.digitalocean.com/products/app-platform/
* https://www.koyeb.com/ (announced today)
I don’t understand how this Micro framework is valuable unless your entire team writes Go. Even then, this is not just ‘micro services’ it’s a monolith on a proprietary framework that happens to have network hops between function calls. It is the kitchen sink!
Yes we expect you to write everything in Go. I don't think that should be surprising since all of frontend is JavaScript, iOS is objective C and Android is Java. We think cloud is as complex Architecture as any of those and that requires a single language and framework for it.
Your conclusion does not follow from your premise.
I think this is a spectacular claim that requires spectacular evidence. Service code is a different beast from interface code. The most practical reason to use the microservices pattern is to enable polyglot programming so you can use the right ecosystem for the right job. Need a monolith API gateway wrapper to throw up a CRUD app real quick? Ruby and Python have got you covered. Need access to a large enterprise system? Great, you've got Java and .NET. Inheriting a crufty legacy WordPress codebase and need to make it better without a full rewrite? PHP has ways to make it less shitty.
Could you give me a compelling reason why I, if I had a codebase already written on any of those languages, would entertain rewriting the whole thing in Go to use your framework? Would theoretical me not be in your target user demographic?
To the extent that this is true, I don't think the complexity of the architecture has anything to do with the reason there's a single language for them.
I've written Hasura actions for the service, which allow painless redirection of arbitrary GraphQL to (e.g.) an AWS Lambda function. Direction function support is on NHost's roadmap.
https://azure.microsoft.com/en-us/services/app-service/stati...
Deploy JavaScript/TypeScript/Python/C# backend function apps with a modern frontend in one go, sets it all up for you on GitHub and handles the build process and SSL certificates for custom domains too.
The Dark language itself is not what you’re looking for, and I don’t know if I would trust it in production (it’s still in beta). But the platform makes it extremely quick to get a POC backend working.
Besides the other answers, I found Cloudfare Workers[1] seem to nearly fit the bill (the only problem is that workers are written in JS - though you can also write them in Rust, C or C++, with the caveat that they compile to WASM, then are executed via the JS API).
Pricing start free! With $5/month you get access to KV (Key-Value Storage) and a generous amount of requests (10 million/month) which seems appropriate for my needs... and it's still in beta, but they also have consistent storage now with Durable Objects[2].
[1] https://developers.cloudflare.com/workers/tutorials
[2] https://developers.cloudflare.com/workers/learning/using-dur...
It does not matter how slice and dice things, the real world is a complex environment and as a result your application will be complex in some way too. You just can't sweep complexity under the carpet and pretend it's not there. It will always come back and bite you, in some way or the other.
It is evident that complexity can be increased at will. So any such law statement just assumes that any software you have didn't needlessly add some of it.
A very real problem of framing complexity this way is that the article is very likely adding a lot of complexity to the software. That's what most "let me simplify it for you" solutions do. And if you just state that complexity is constant, you won't even think about checking this.
I don't know this tool but for example if I switch my "webapp" to use redis, I push some complexity to "antirez". It does not disappear, but it's now being fed by developers better than I, and tested by x1000 users.
I don't think that would have been doable with a monolith. It enabled innovation I have never seen before. My 2c
For instance, Micro provides a persistent form of key-value storage. If my product focuses on a very specific audience (say medicine), but also exposes a way for doctors to store arbitrary key-value pairs, could that be argued in court to be competition?
The definition of competition in the Polyform Shield license is never explicitly stated, and in fact, it specifically calls out that "Applications can compete with services".
Whereas the MIT and Apache license are pretty explicitly clear in what the terms of use are, Polyform seems to be fairly vague there, which is potentially something you wouldn't want for a legal license.
> Any purpose is a permitted purpose, except for providing any product that competes with the software or any product the licensor or any of its affiliates provides using the software.
You're not just unable to compete with Polyform, you're unable to compete with Polyform's affiliates.
Netlifys approach to static sites seemed like a no brainer since HTML is easy to host. They added lots of sugar around that to make it effortless and easy. So M3o seems like a great idea.
Micro on the other hand will need some buy in but I'll definitely consider it since we use Go already.
One concern is your pricing seems too reasonable (free)!
Is that reasonable? Building anything on top of obvious loss leaders is risky. And the costs here for a year of service are either $0 on the free plan or $420 for the cheapest paid plan. There's a chasm of difference there.
I can't understand people offering platforms and services with a pitch that tries to describe what sets $THING apart from others, but when it comes to pricing, they settle for looking around at what everyone else is doing and copying that—which usually results in offering a free tier and paid plans usually starting at $5–9+ per month. Chances are, what you're selling probably isn't as unique as you think it is (this post mentions Netlify several times, for example, but Netlify doesn't only do static hosting―you can run microservices with Netlify, too, and Netlify's paid plan is cheaper).
More businesses could and should differentiate themselves in their pricing model, because the door is wide open and pretty much nobody else is showing interest in taking advantage of the opportunity.
The dev tier is free, which is a capped environment with much laxer SLAs than the production tear. Prod tier is paid.
Or is the KV store supposed to act like an app database?
KV is the simplest thing you can provide, but in general it is hard to build applications on top of it, especially with changing requirements. KV means basically that all your query and way to interact with the storage must be well-known in advance. While with SQL, all your data is there and it is fast to add an index.
The problem with the solution above are the wrapper for libraries, nobody want to write a django or rails app, and integrate with an HTTP service for the database.
But maybe people are willing to do so for micro...
We are working on a solution to this with WeBase [1] and I'd love to see us do an integration with Netlify here where you build with WeBase and host on Netlify (and get automatic API integration with your data models).
(disclaimer, i worked there)
it will help someone like me, sitting on the fence about this whole idea, a better starting point for using Mirco for my use cases.
Take a sober, 1000-foot look at Netlify today. They're so caught up in their GitHub-integrated value-add that if you try to follow the docs to do a straightforward "deploy" from a directory with a simple "hello world" index.html, there are multiple failure conditions. The dumbest one being that if it's a Git repo and it encounters a remote that it doesn't recognize, it will shit the bed. I'm not talking about error output; the CLI itself will straight up fail, throw an exception, and terminate.
That's before we even mention the experience of successful use of the CLI. The cacophony of color and the volume of output makes for a sensory overload that's akin to watching a Safdie brothers film.
Was looking for the pricing, and the description for the paid tier is kind of vague when mentioning "2x Increased resource limits". 2x increase compared to what?
Otherwise, looks really nice and will give it a spin this weekend.
I had to go to the docs to find an answer.
"you want to do it without having to standup layers of infrastructure on AWS or be beholden to the legacy players like Heroku or other providers who don’t get that you want the same Netlify like experience on the backend."
So exactly how is Heroku "legacy"? From past experiences pushing a simple backend service onto Heroku was pretty smooth and "Netlify-esq".
It would be nice to explain or show the shortcomings of using Heroku as the backend for your Netlify app.
Your services must be written using the Micro framework, as you would use something defined by iOS and Android for those platforms.