Your page doesn't show any of the backend code being deployed. I don't even know what language it's in.
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.
Thanks for the feedback. I'm assuming you mean the website. We have info and tutorial in docs but agree we could provide more clarity on the website. There is a redesign coming in the next few weeks. There are tutorials in the docs and many code examples in https://github.com/micro/services. The blog post also links to this code. But again I agree we could do more to showcase it. This post was more to demonstrate positioning of us in the market and fill the gap for those building stuff with Netlify.
I've been looking for exactly that: a backend thing that's as easy to setup as Netlify is for the frontend.
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.
Heroku for sure. It’s all running on AWS so you can leverage AWS services without as much of a performance penalty for routing as say another provider.
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!
All your services are written independently as microservices. In fact Micro is itself a microservices architecture and each feature is an independent service backed by highly available managed infrastructure.
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.
> We think cloud is as complex Architecture as any of those and that requires a single language and framework for it.
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?
> all of frontend is JavaScript, iOS is objective C and Android is Java
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.
Check out NHost [1], which isn't an exact match, but worth a look. What it gives you (currently) is Postgres via Hasura, which gives you (AMAZINGLY) easy GraphQL database access, along with a very nice auth service. And their entry level is cheap.
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.
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.
Dark (https://darklang.com) is a very cool platform for building serverless backend APIs.
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.
Google Cloud Run / AWS Fargate. You upload a Docker image and you instantly have a service with auto-scaling, load balancing, HTTPS, etc. It works with any programming language thanks to Docker.
I'll answer my own question (after doing some research).
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].
When I read about such abstractions and "simplifications" (which usually end up with a 10 box diagram simplified to a 2-3 box diagram), I often hesitate to start building something new, always wondering "Am I doing this in the most "<tech_forum> upvoted" way of implementing such a thing? Some of this tech feels like if you switch on, and stare at your monitor long enough, a "Hello World" API will be deployed on the cloud for you, voilà!
I think it's a good point and something I find myself worrying about as well. The hype around GraphQL and Apollo, for example, made me feel that I was losing serious time developing a REST APIs until I finally committed and decided to use it on a project. Obviously there ended up being a lot of trade-offs but in the end it was hard to tell if I saved any time at all. More generally, after falling for this a couple times of I realized that often you're just pushing problems around to different parts of the stack, or hiding complexity in places you'll eventually need to uncover. My experience says that the time consuming parts of building a product are rarely solved by adding flashy new services and libraries, and so I try to worry about these things less. On the other hand, trying out new stuff even just for an hour or two can give you a lot of insight into how much time it's actually going to save you - so worse case you just take it for a test run and see what it's actually all about.
I like to call this the: Law of Conservation of Complexity.
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.
ok but taming complexity is what we do for a living. The Q is where to put the dirt. And under the carpet is better than on my bed.
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.
Exactly the same experience with GraphQL - indeed I think in the end it cost more time than REST. The thing is, GraphQL is a tool that really shines when you have... graph data (like Facebook). The problem is every company under the sun is now rushing to use it as if it's some kind of silver bullet because of all the hype.
Maybe microservices might seem buzzwordy on the surface, and this might be an anecdote, but I have seen it working first hand at Hailo (Uber competitor back in 2013). Relatively inexperienced people not knowing anything about Go or deeper architectural issues deploying Go services in no time, without even asking for permission.
I don't think that would have been doable with a monolith. It enabled innovation I have never seen before. My 2c
Absolutely. I wasn't criticizing the architecture at all, just musing out loud. I had meetings this week at Big Co (read: cash cow) where external vendors were pushing microservices as manna from heaven for problems that are yet to be discovered. I am sure the technology described in the article is very clever and has strong merits.
Netifly at least was as painless as a deploy process as I've ever had; I had a local jekyll instance i was using to build my blog, and all i had to do was setup Netifly so it was pointing at the remote Github repo for that instance, then simply push to master and everything deployed instantly. There certainly are some tools in the area that feel very over-engineered but so far this one has been quite the opposite (other than weird SSL woes, but that was still more or less painless)
Can't speak to the backend product being sold here, but the frontend really was painless and performant.
Happy to talk more about the benefits of Polyform and why we chose that. If you've seen what's happening with open source and AWS you'll understand that this is one of the few ways to protect against cannibalisation of our ecosystem and ability to build a real business. AWS gives nothing back to the creators, and we believe cloud will have its music industry moment. Polyform is a fairly liberal and standardised set of licenses co-drafted by Heather Meeker is well known for her work on open source and enterprise licensing. We believe licensing evolution is required beyond Apache 2.0 and MIT in this new world of cloud and AWS. By choosing licensing standards over custom drafting we think it will make it simpler for companies to adopt and get approval of those in larger orgs. Again happy to speak more on the topic.
I like the idea conceptually behind the license, but without an explicit definition of what competition is, it feels tough to use.
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.
These all sound like good motivations to me. But it seems for an organization to use this software, you need to convince yourselves that you understand who the licensor is and what their business is, and that your business doesn't compete as defined in the Compete section. This is a significant task if you just want to respect the request of the authors, and is bigger if you want to make sure you don't end up in court.
I understand where you're coming from, but the license itself is terribly general and broad:
> 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)!
> 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.
> 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.
The dev tier is free, which is a capped environment with much laxer SLAs than the production tear. Prod tier is paid.
What's the takeaway I'm supposed to leave with after having read this reply? What information does this comment add? I'm genuinely confused about the subtext here.
Thanks for the feedback. And yes we're learning and iterating on pricing. I think the key will be fair usage policy and resource limits that allow people to scale with their usage. We'll also work on additional pricing tiers for larger teams which I think will be more appropriate. Theres a lot we can't do on $35/user/month. But it's a start!
What about the database? All these Jamstack articles always seem to skip past a db in their examples and I have never seen an "app" without an associated database.
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...
This is a great point and one reason I am left scratching my head when considering building applications on the JAM stack.
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).
Airtable is a great platform and they have built a nice UI on top of their data modeling tools. But... they don’t allow customization of the UI. WeBase has the same power of Airtable for data models combined with the ability to create custom views like you would do with Webflow.
Founder of Micro here. Yes the key-value store is basically like a crud database. We're working on some modelling on top of that and something we'll present more like a document database. Watch this space.
Hi, thanks for asking. This is the first time I've seen the project realworld so please excuse my ignorance, I'm not in the JS community. We will have a look and try to get around to this. Right now you can look at https://github.com/micro/services for any of our backend examples.
Yow dawg, you fleed to netlify to avoid insane over-engineered technology stacks, so we brought you insane over-engineered technology stack with protobuffs and gRPC
> fleed to netlify to avoid insane over-engineered technology stacks
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.
Hi HN! Asim here. Founder CEO of Micro. We've been working on M3O for some time now and excited to not only share it with the world but help understand our positioning amongst other technology such as Netlify and the frontend. Happy to answer any questions.
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.
The value proposition was clear and well written, until I got to this part:
"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.
Biggest thing for me is netlify’s distributed nature. I don’t see anything about m3o being in multiple data centers the way fly.io is. For me, that better aligns with an appropriate backend for Netlify. (Or cloudflare workers)
Big things have small beginnings. In fact, last year this time, we were a global multi-cloud, multi-region play. Because we've done it before it was fairly simple to do again but being so early in our journey it was actually more effort than it was worth. In our case now we will expand geographically as there's a demand for it and we'll put some of that control in the hands of users. If your own user base in the US or EU or Asia, you may not want your backend to be global, you may not want that cost, and you may not want to incur the issues related to distributed storage, synchronization, eventual consistency, etc and the complexity that comes with it. So I think this is something that will evolve over time. Micro builds in the concept of "Environments" and this will be the form of expansion to different regions and cloud providers. The key thing to note, we are not an edge network, Netlify wants to distribute your assets everywhere, but I think APis are for the most part centralised in the cloud with some form of geo load balancing to different regions. All of that will play out over time, so again watch this space.
Go Nitro is not a thing. "Go Micro" was a framework that launched this company into existence, it's now been consolidated into a single project called "Micro". The "Go Micro" project has been renamed to "Nitro" to reduce confusion around the two.
Your services must be written using the Micro framework, as you would use something defined by iOS and Android for those platforms.
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.