<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Asim Aslam</title>
    <description>The latest articles on Forem by Asim Aslam (@asim).</description>
    <link>https://forem.com/asim</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F96529%2Fbe5f8375-42fc-4ea0-818d-57fb9999abad.jpeg</url>
      <title>Forem: Asim Aslam</title>
      <link>https://forem.com/asim</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/asim"/>
    <language>en</language>
    <item>
      <title>M3O - A new serverless cloud platform</title>
      <dc:creator>Asim Aslam</dc:creator>
      <pubDate>Wed, 16 Feb 2022 13:26:41 +0000</pubDate>
      <link>https://forem.com/asim/m3o-a-new-serverless-cloud-platform-5c1m</link>
      <guid>https://forem.com/asim/m3o-a-new-serverless-cloud-platform-5c1m</guid>
      <description>&lt;p&gt;Hey all 👋&lt;/p&gt;

&lt;p&gt;Happy to share &lt;a href="https://m3o.com"&gt;M3O&lt;/a&gt;, a new serverless cloud platform we're building which tries to put all the common building blocks on one platform. Our goal is to abstract away the complexity of the cloud and provider higher level APIs to build on. &lt;/p&gt;

&lt;p&gt;Would love your feedback. Oh and btw, its open source too!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/m3o/m3o"&gt;https://github.com/m3o/m3o&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Cheers&lt;br&gt;
Asim&lt;/p&gt;

</description>
      <category>serverless</category>
      <category>cloud</category>
    </item>
    <item>
      <title>M3O - Next generation cloud platform</title>
      <dc:creator>Asim Aslam</dc:creator>
      <pubDate>Sat, 05 Feb 2022 13:18:52 +0000</pubDate>
      <link>https://forem.com/asim/m3o-next-generation-cloud-platform-50li</link>
      <guid>https://forem.com/asim/m3o-next-generation-cloud-platform-50li</guid>
      <description>&lt;p&gt;Hey all,&lt;/p&gt;

&lt;p&gt;We've been hard at work on &lt;a href="https://m3o.com"&gt;M3O&lt;/a&gt; for some time now. It's a new cloud provider that focuses on the developer experience. We've got 50+ apis, starting from a serverless postgres database, to user management, search, sms, email, geocoding and much more. &lt;/p&gt;

&lt;p&gt;The majority of APIs are FREE to start with a 1 million api call quota per month and $1 per million calls after that. Signup with google, github or email.&lt;/p&gt;

&lt;p&gt;Checkout the website &lt;a href="https://m3o.com"&gt;https://m3o.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;See &lt;a href="https://m3o.dev"&gt;M3O Dev&lt;/a&gt; for more info and join us on &lt;a href="https://m3o.chat"&gt;Discord&lt;/a&gt; if you have any other questions.&lt;/p&gt;

&lt;p&gt;Cheers&lt;br&gt;
Asim &lt;/p&gt;

</description>
      <category>cloud</category>
      <category>m3o</category>
      <category>api</category>
    </item>
    <item>
      <title>Why developers need an AWS alternative</title>
      <dc:creator>Asim Aslam</dc:creator>
      <pubDate>Sat, 06 Nov 2021 13:04:30 +0000</pubDate>
      <link>https://forem.com/m3o/why-developers-need-an-aws-alternative-1nn8</link>
      <guid>https://forem.com/m3o/why-developers-need-an-aws-alternative-1nn8</guid>
      <description>&lt;p&gt;&lt;em&gt;Author: Asim Aslam, founder of Micro Services, Inc. (Micro). Micro is building M3O, an open source public cloud platform. An AWS alternative for the next generation of developers. Consume popular public APIs as higher level building blocks, all on one platform, for a 10x developer experience.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;AWS was launched over 15 years ago, imagined as an operating system for the internet at a time before the cloud even existed as a concept. It was built to provide on-demand access to compute, storage and infrastructure services. What previously might have taken 6 weeks to provision was now being done in minutes. It largely unlocked productivity in a way that had not yet been imagined and enabled developers to quickly scale web services as users were coming online.&lt;/p&gt;

&lt;p&gt;Yet for all it's worth, AWS has largely maintained this experience and failed to keep up with modern day needs of developers. In 2006, we expected a level of server and database management as developers. What we classified as sysadmins (not yet devops) was a skill we'd gladly learn if it meant being able to ship the next shiny Rails app. &lt;/p&gt;

&lt;p&gt;Today we're looking for more. We're looking for not just fully managed (which AWS attempts to convince us they are), but an entirely serverless experience. We don't want to have to deploy that next database or spin up containers. We don't want to deal with the issues that arise when dealing with the complexities of this new fangled Kubernetes. As developers, all we want to focus on is building that next product and leveraging the APIs that let us do that.&lt;/p&gt;

&lt;p&gt;In 2021, AWS is slowly being eaten by third party API providers like Algolia, Elastic, CockroachDB, Twilio, Stripe, Sendgrid, Segment and so many many more. We're looking for entirely API first experiences in the cloud that don't require us to think about the infrastructure. We're looking for platforms that compliment our modern day Jamstack architectures powered by the Netlify's and Vercel's of the world.&lt;/p&gt;

&lt;p&gt;AWS now leaves a lot to be desired for the next generation of devs. Can they do anything to fix that?&lt;/p&gt;

&lt;p&gt;We personally don't believe so.&lt;/p&gt;

&lt;h2&gt;
  
  
  Who is AWS for?
&lt;/h2&gt;

&lt;p&gt;Then if AWS isn't built for developers, who's it for? AWS was never built for developers in the first place, let's be clear about that. AWS was about provisioning infrastructure services on which we could then run our software which was still automated by the sysadmins in our companies. How do we know that? Because we were heavily invested in AWS in our prior companies.&lt;/p&gt;

&lt;p&gt;We contended with the complexity of the bare metal era before AWS and then what came after managed largely by a disarray of hand crafted bash scripts, python libraries and eventually configuration management tools like chef and puppet. We escaped just as the DevOps movement took off but continued to witness the extraordinary pains of building systems for the cloud as a software engineer.&lt;/p&gt;

&lt;p&gt;Yet in all that time, we never once saw developers personally touch CloudFormation, or swim the sea of endless complexity unless they truly had to. No, those developers would gladly choose a Heroku long before an AWS, but if you worked at a startup that was scaling, at some point in the lifetime of the company you could expect an infrastructure engineer to join and quickly replatform you to AWS.&lt;/p&gt;

&lt;p&gt;The truth of the matter is. AWS was built for operators, not the developers.&lt;/p&gt;

&lt;p&gt;There's enough people now shouting at the screen pointing to services like AWS Lambda or Fargate talking about it's serverless nature or how it was built for developers but I'd argue, this is just AWS pandering to an existing Enterprise audience and checking off boxes. AWS is about building the 80% solution to keep existing customers happy, that doesn't mean the actual users in those companies are happy using them.&lt;/p&gt;

&lt;p&gt;AWS was the "just good enough" solution for a time in which we had nothing else. The book store that started a cloud computing business even admits to being shocked that they had a 7 year head start on everyone else. Had Google gotten their act together and shipped their superior internal tools as &lt;br&gt;
public services long ago, we'd be having an entirely different conversation.&lt;/p&gt;

&lt;p&gt;The fact of the matter is, AWS doesn't understand developers and the harder they try the more complex their offering becomes. As a developer AWS is an overwhelming and anxiety inducing experience.&lt;/p&gt;

&lt;h2&gt;
  
  
  What do developers need?
&lt;/h2&gt;

&lt;p&gt;What we need is a clean slate approach. As developers we need a new experience for cloud services. We need a new public cloud platform. One that focuses entirely on the developer experience. Higher level building blocks for existing public APIs.&lt;/p&gt;

&lt;p&gt;Replicating an AWS isn't the answer. VMs (EC2) and file storage (S3) are not the primitives developers need today. We need to start with next level building blocks for the next generation of devs. Today we are all about the Jamstack and leveraging third party APIs as the backend. &lt;/p&gt;

&lt;p&gt;We need a public API platform that aggregates the existing market and provides a new clean abstraction layer on top, all through a single unified offering. One that simplifies the pricing model rather than requiring a pricing calculator to know what you're spending.&lt;/p&gt;

&lt;p&gt;For what it's worth, we thank AWS for getting us to this point, but now it's time to hand the torch to someone else. Someone who understands what developers need and provide the next level building blocks for new types of software we'll come to use.&lt;/p&gt;

&lt;p&gt;The world is no longer talking about building mobile apps or web services but instead, crypto networks and the metaverse. Your grandparents can barely use a mobile phone, are we really expecting AWS and others to help us build the metaverse? &lt;/p&gt;

&lt;p&gt;It's up to developers to build the future and with it decide the kinds of platforms we want to build on. We're now more than ever interested in open platforms. Not just in the case of Web3 but more so in regards to "open source eating everything". It's not enough that just the services you run are open source, the entire system also needs to be so.&lt;/p&gt;

&lt;p&gt;AWS built in an era before GitHub, and the explosive nature of open source, is not. AWS is a silo, and a ship filled with containers of teams all building APIs in isolation. Their control plane is not open source, their platform is not open source, their system is not open source. AWS is not open source.&lt;/p&gt;

&lt;p&gt;We are a generation of developers who are looking for a new platform, one that aligns with our goals, beliefs and mantras and one that is entirely based on open source software.&lt;/p&gt;

&lt;p&gt;I'm Asim Aslam, the founder of Micro, and we're building &lt;a href="https://m3o.com"&gt;M3O&lt;/a&gt;, a new open source public cloud platform, an AWS alternative for the next generation of developers. Come join me in deciding how, where and what we're going to build the future on.&lt;/p&gt;

&lt;p&gt;See the source on &lt;a href="https://github.com/m3o/m3o"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>aws</category>
      <category>m3o</category>
      <category>cloud</category>
      <category>opensource</category>
    </item>
    <item>
      <title>M3O - An open source AWS alternative</title>
      <dc:creator>Asim Aslam</dc:creator>
      <pubDate>Fri, 15 Oct 2021 14:53:29 +0000</pubDate>
      <link>https://forem.com/m3o/m3o-an-open-source-aws-alternative-24ii</link>
      <guid>https://forem.com/m3o/m3o-an-open-source-aws-alternative-24ii</guid>
      <description>&lt;p&gt;
    &lt;a href="http://m3o.com" rel="noopener noreferrer"&gt;
        &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Favatars.githubusercontent.com%2Fu%2F65984637%3Fs%3D200%26v%3D4"&gt;
        &lt;h1&gt;M3O&lt;/h1&gt;
    &lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;M3O is an open source public cloud platform.&lt;br&gt;We are building an AWS alternative for the next generation of developers.&lt;/p&gt;




&lt;h2&gt;
  
  
  Overview
&lt;/h2&gt;

&lt;p&gt;AWS was a first generation public cloud provider started in 2006. It's infrastructure services and pay as go pricing model made it an incredibly &lt;br&gt;
compelling choice for a previous generation of developers. But what about the future? &lt;/p&gt;

&lt;p&gt;M3O is an attempt to build a new public cloud platform with higher level building blocks for the next generation of developers. &lt;br&gt;
M3O is powered by the open source &lt;a href="https://github.com/micro/micro" rel="noopener noreferrer"&gt;Micro&lt;/a&gt; platform and programmable real world &lt;a href="https://github.com/micro/services" rel="noopener noreferrer"&gt;Micro Services&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Features
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;🔥 Dev UX&lt;/strong&gt; - The developer experience is first priority. A slick new UX for the next generation of developers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;☝️ One Token&lt;/strong&gt; - Use one Micro API token to fulfill all your API needs. Access multiple public APIs with a single token.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;⚡ Fast Access&lt;/strong&gt; - Using a new API is easy - no need to learn yet another API, it's all the same Micro developer experience.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;🆓 Free to start&lt;/strong&gt; - It's a simple pay as you go model and everything is priced per request. Top up your account and start making calls.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;🚫 Anti AWS Billing&lt;/strong&gt; - Don't get lost in a sea of infinite cloud billing. We show you exactly what you use and don't hide any of the costs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;✔️ Open Source Software&lt;/strong&gt; - Built on an open source foundation and services which anyone can contribute to with a simple PR.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Rationale
&lt;/h2&gt;

&lt;p&gt;AWS is a fairly complex beast which makes it hard for new developers to get started. In the past we needed VMs and file storage, but today with the Jamstack &lt;br&gt;
and other modern development models, the building blocks we're looking for are changing. They're mostly now third party APIs. M3O is looking to &lt;br&gt;
aggregate all those third party public APIs into a single uniform offering with a slick new dev UX.&lt;/p&gt;

&lt;h2&gt;
  
  
  Services
&lt;/h2&gt;

&lt;p&gt;So far there are over 35+ services. Here are some of the highlights:&lt;/p&gt;

&lt;h3&gt;
  
  
  Backend
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://m3o.com/cache" rel="noopener noreferrer"&gt;&lt;strong&gt;Cache&lt;/strong&gt;&lt;/a&gt; - Quick access key-value storage&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://m3o.com/db" rel="noopener noreferrer"&gt;&lt;strong&gt;DB&lt;/strong&gt;&lt;/a&gt; - Simple database service&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://m3o.com/function" rel="noopener noreferrer"&gt;&lt;strong&gt;Functions&lt;/strong&gt;&lt;/a&gt; - Serverless compute as a service&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://m3o.com/stream" rel="noopener noreferrer"&gt;&lt;strong&gt;Stream&lt;/strong&gt;&lt;/a&gt; - Publish and subscribe to messages&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://m3o.com/user" rel="noopener noreferrer"&gt;&lt;strong&gt;User&lt;/strong&gt;&lt;/a&gt; - User management and authentication&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://m3o.com/file" rel="noopener noreferrer"&gt;&lt;strong&gt;File&lt;/strong&gt;&lt;/a&gt; - Store, list, and retrieve text files&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Logistics
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://m3o.com/address" rel="noopener noreferrer"&gt;&lt;strong&gt;Address&lt;/strong&gt;&lt;/a&gt; - Address lookup by postcode&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://m3o.com/geocoding" rel="noopener noreferrer"&gt;&lt;strong&gt;Geocoding&lt;/strong&gt;&lt;/a&gt; - Geocode an address to gps location and the reverse.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://m3o.com/location" rel="noopener noreferrer"&gt;&lt;strong&gt;Location&lt;/strong&gt;&lt;/a&gt; - Real time GPS location tracking and search&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://m3o.com/routing" rel="noopener noreferrer"&gt;&lt;strong&gt;Routing&lt;/strong&gt;&lt;/a&gt; - Etas, routes and turn by turn directions&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://m3o.com/ip" rel="noopener noreferrer"&gt;&lt;strong&gt;IP&lt;/strong&gt;&lt;/a&gt; - IP to geolocation lookup&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Web
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://m3o.com/email" rel="noopener noreferrer"&gt;&lt;strong&gt;Email&lt;/strong&gt;&lt;/a&gt; - Send emails in a flash&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://m3o.com/image" rel="noopener noreferrer"&gt;&lt;strong&gt;Image&lt;/strong&gt;&lt;/a&gt; - Quickly upload, resize, and convert images&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://m3o.com/otp" rel="noopener noreferrer"&gt;&lt;strong&gt;OTP&lt;/strong&gt;&lt;/a&gt; - One time password generation&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://m3o.com/qr" rel="noopener noreferrer"&gt;&lt;strong&gt;QR Codes&lt;/strong&gt;&lt;/a&gt; - QR code generator&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://m3o.com/sms" rel="noopener noreferrer"&gt;&lt;strong&gt;SMS&lt;/strong&gt;&lt;/a&gt; - Send an SMS message&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://m3o.com/weather" rel="noopener noreferrer"&gt;&lt;strong&gt;Weather&lt;/strong&gt;&lt;/a&gt; - Real time weather forecast&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;See the full list at &lt;a href="https://m3o.com/explore" rel="noopener noreferrer"&gt;m3o.com/explore&lt;/a&gt; or the source at &lt;a href="https://github.com/micro/services" rel="noopener noreferrer"&gt;github.com/micro/services&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting Started
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Head to &lt;a href="https://m3o.com" rel="noopener noreferrer"&gt;m3o.com&lt;/a&gt; and signup for a free account.&lt;/li&gt;
&lt;li&gt;Generate an API key on the &lt;a href="https://m3o.com/settings/keys" rel="noopener noreferrer"&gt;Settings page&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Browse the APIs on the &lt;a href="https://m3o.com/explore" rel="noopener noreferrer"&gt;Explore page&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Call any API using your token in the &lt;code&gt;Authorization: Bearer [Token]&lt;/code&gt; header and &lt;code&gt;https://api.m3o.com/v1/[service]/[endpoint]&lt;/code&gt; url.&lt;/li&gt;
&lt;li&gt;See the &lt;a href="https://github.com/m3o/m3o/tree/main/cli" rel="noopener noreferrer"&gt;m3o/cli&lt;/a&gt; for command line usage.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Learn More
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Checkout the &lt;a href="https://dev.toexamples"&gt;Examples&lt;/a&gt; to see what you can build&lt;/li&gt;
&lt;li&gt;Follow us on &lt;a href="https://twitter.com/m3oservices" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Join the &lt;a href="https://slack.m3o.com" rel="noopener noreferrer"&gt;Slack&lt;/a&gt; community&lt;/li&gt;
&lt;li&gt;Join the &lt;a href="https://discord.gg/TBR9bRjd6Z" rel="noopener noreferrer"&gt;Discord&lt;/a&gt; server&lt;/li&gt;
&lt;li&gt;Email &lt;a href="//mailto:support@m3o.com"&gt;Support&lt;/a&gt; for help&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How it Works
&lt;/h2&gt;

&lt;p&gt;M3O is built on existing public cloud infrastructure using managed kubernetes along with our own &lt;a href="https://github.com/m3o/platform" rel="noopener noreferrer"&gt;infrastructure automation&lt;/a&gt; &lt;br&gt;
and abstraction layer for existing third party public APIs. We host the open source &lt;a href="https://github.com/micro/micro" rel="noopener noreferrer"&gt;Micro&lt;/a&gt; project as our base OS and &lt;br&gt;
use it to power all the &lt;a href="https://github.com/micro/services" rel="noopener noreferrer"&gt;Micro Services&lt;/a&gt;, which provide simpler building blocks for existing cloud primitives.&lt;/p&gt;

&lt;h3&gt;
  
  
  UX
&lt;/h3&gt;

&lt;p&gt;We host our own custom dev UX (&lt;a href="https://github.com/m3o/cloud" rel="noopener noreferrer"&gt;m3o/cloud&lt;/a&gt;) on top of the infrastructure stack and a &lt;a href="https://github.com/m3o/backend" rel="noopener noreferrer"&gt;backend&lt;/a&gt; &lt;br&gt;
which acts as the management control plane.&lt;/p&gt;

&lt;h3&gt;
  
  
  Services
&lt;/h3&gt;

&lt;p&gt;Developers build and contribute to services in &lt;a href="https://github.com/micro/services" rel="noopener noreferrer"&gt;github.com/micro/services&lt;/a&gt;, a vendor neutral home. We then automate the &lt;br&gt;
building and publishing of those services and client libraries. This creates a shared and fully managed platform for everyone to leverage.&lt;/p&gt;

&lt;h3&gt;
  
  
  Infrastructure
&lt;/h3&gt;

&lt;p&gt;We primarily use existing open source software, fully managed services and third party public APIs as the backing infrastructure then layer a standard interface &lt;br&gt;
on top. With all the services on one platform, accessible with one API token, we drastically improve the Dev UX.&lt;/p&gt;

&lt;h2&gt;
  
  
  Development
&lt;/h2&gt;

&lt;p&gt;This project is a combination of open source projects and a platform managed by the Micro team. Our goal is to enable any developer to &lt;br&gt;
contribute to the open source while benefiting from the platform as a shared resource.&lt;/p&gt;

&lt;h3&gt;
  
  
  Cloud Hosting
&lt;/h3&gt;

&lt;p&gt;The cloud hosted providers of Micro services:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://m3o.com" rel="noopener noreferrer"&gt;m3o.com&lt;/a&gt; - a fully managed offering of micro services&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Open Source
&lt;/h3&gt;

&lt;p&gt;The core cloud OS and services exists in a vendor neutral org&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/micro/micro" rel="noopener noreferrer"&gt;micro/micro&lt;/a&gt; - an open source operating system for the cloud&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/micro/services" rel="noopener noreferrer"&gt;micro/services&lt;/a&gt; - open source micro services powering m3o.com&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  M3O Dev UX
&lt;/h3&gt;

&lt;p&gt;The hosting of Micro services on &lt;a href="https://m3o.com" rel="noopener noreferrer"&gt;m3o.com&lt;/a&gt; is powered by the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/m3o/cloud" rel="noopener noreferrer"&gt;m3o/cloud&lt;/a&gt; - locally hostable angular based dev UX for the website&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/m3o/platform" rel="noopener noreferrer"&gt;m3o/platform&lt;/a&gt; - the infrastructure automation for cloud hosted stack&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/m3o/backend" rel="noopener noreferrer"&gt;m3o/backend&lt;/a&gt; - the services which power the m3o.com product backend&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Publish APIs
&lt;/h2&gt;

&lt;p&gt;If you'd like to publish your own APIs on the M3O platform &lt;a href="https://forms.gle/9SQV6DdLNDzSRQ477" rel="noopener noreferrer"&gt;fill in this form&lt;/a&gt; and we'll get back to you.&lt;/p&gt;

&lt;h2&gt;
  
  
  Contributing
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Write examples - &lt;a href="https://github.com/m3o/m3o/tree/main/examples" rel="noopener noreferrer"&gt;m3o/examples&lt;/a&gt; provides a place to showcase things built on top which we'll feature on the website&lt;/li&gt;
&lt;li&gt;Write services - &lt;a href="https://github.com/micro/services" rel="noopener noreferrer"&gt;micro/services&lt;/a&gt; are all the services we host and hope for more devs to help&lt;/li&gt;
&lt;li&gt;Write docs - &lt;a href="https://github.com/m3o/m3o/tree/main/docs" rel="noopener noreferrer"&gt;m3o/docs&lt;/a&gt; is where our docs will live and we know without great docs this isn't going to work&lt;/li&gt;
&lt;li&gt;Show support - Tweet &lt;a href="https://twitter.com/m3oservices" rel="noopener noreferrer"&gt;@m3oservices&lt;/a&gt; and let the world know what we're building so that more people can get involved&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Thanks for reading
&lt;/h2&gt;

&lt;p&gt;Hopefully you buy into what we're talking about and the need for something new in the public cloud space.&lt;br&gt;
If you like what you’re hearing, &lt;a href="https://m3o.com" rel="noopener noreferrer"&gt;Signup for Free&lt;/a&gt; or send us some &lt;a href="//mailto:contact@m3o.com"&gt;feedback&lt;/a&gt;. &lt;br&gt;
Reach out on &lt;a href="https://slack.m3o.com" rel="noopener noreferrer"&gt;slack&lt;/a&gt; or &lt;a href="https://twitter.com/m3oservices" rel="noopener noreferrer"&gt;twitter&lt;/a&gt; if you have any questions.&lt;/p&gt;

</description>
      <category>aws</category>
      <category>m3o</category>
      <category>cloud</category>
    </item>
    <item>
      <title>Micro APIs for everyday use</title>
      <dc:creator>Asim Aslam</dc:creator>
      <pubDate>Wed, 30 Jun 2021 09:38:11 +0000</pubDate>
      <link>https://forem.com/m3o/micro-apis-for-everyday-use-2f48</link>
      <guid>https://forem.com/m3o/micro-apis-for-everyday-use-2f48</guid>
      <description>&lt;p&gt;Hey all,&lt;/p&gt;

&lt;p&gt;Today we’re excited to announce our new &lt;a href="https://m3o.com"&gt;Micro API&lt;/a&gt; cloud platform, now in beta. Simple, fast and affordable APIs for everyday use. &lt;a href="https://m3o.com"&gt;Signup for free&lt;/a&gt; (no credit card needed) and get $5 of free credit to get started.&lt;/p&gt;


&lt;center&gt;
&lt;br&gt;
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--cMJkAIPv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.m3o.com/assets/images/landing-page.png"&gt;&lt;br&gt;
&lt;/center&gt;
&lt;br&gt;
&lt;br&gt;
&lt;h2&gt;
  
  
  API building blocks
&lt;/h2&gt;

&lt;p&gt;Micro has evolved from an open source framework to a full blown API platform, one that continues to focus on the developer experience first and foremost. The majority of our users are building APIs for end public consumption but having to rebuild many of the building blocks they need wherever they go.&lt;/p&gt;

&lt;p&gt;We wanted to solve that problem by providing a set of programmable building block services as simple APIs for public consumption from anywhere in the world, all in one place.&lt;/p&gt;

&lt;p&gt;Some of the APIs we’re offering are as follows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://m3o.com/cache"&gt;Cache - Ephemeral key-value storage&lt;/a&gt; - &lt;br&gt;
Store any data up to 1mb for fast key based lookup. Set TTLs to expire entries so you don’t have to remember to delete them.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://m3o.com/db"&gt;DB - Simple database service&lt;/a&gt; - &lt;br&gt;
Use CRUD via an API and leave the SQL behind. A really dead simple database service which provides JSON document storage.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://m3o.com/crypto"&gt;Crypto - Cryptocurrency prices and quotes&lt;/a&gt; - &lt;br&gt;
Stay up to date with bitcoin, ethereum, dogecoin and other prices. Track them in real time and build any sort of visualisation on top.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://m3o.com/image"&gt;Image - Upload, resize and crop images&lt;/a&gt; - &lt;br&gt;
Upload images, resize on the fly and serve them via a CDN all without having to do anything more than curling our API.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://m3o.com/otp"&gt;OTP - One time password generation&lt;/a&gt; - &lt;br&gt;
Throwaway the passwords and use one time token generation to login or authenticate users. Simple OTP generation and validation.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://m3o.com/routing"&gt;Routing - Turn by turn directions and etas&lt;/a&gt; - &lt;br&gt;
A vastly cheaper Google Maps API alternative powered by OSRM. We’ll give you turn by turn routing directions and etas using OpenStreetMap data.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Third Party APIs
&lt;/h2&gt;

&lt;p&gt;Additionally we’ve partnered with third party API providers such as &lt;a href="https://finage.co.uk/"&gt;Finage&lt;/a&gt;, &lt;a href="https://www.exchangerate-api.com/"&gt;ExchangeRate-API&lt;/a&gt; and the &lt;a href="https://www.weatherapi.com/"&gt;WeatherAPI&lt;/a&gt; to bring more functionality to the platform like &lt;a href="https://m3o.com/currency"&gt;Currency&lt;/a&gt; conversion, &lt;a href="https://m3o.com/stock"&gt;Stock&lt;/a&gt; prices and &lt;a href="https://m3o.com/weather"&gt;Weather&lt;/a&gt; forecasts, so you can access everything you need with just one account and one API key, all in one place. We’re adding more and more third party API providers everyday so keep your eyes peeled!&lt;/p&gt;
&lt;h2&gt;
  
  
  Taming Complexity
&lt;/h2&gt;

&lt;p&gt;AWS is the cloud giant in the sky we've all come to know as the definition of API building blocks but over time it's complexity has also grown, making it &lt;br&gt;
more and more difficult to work with as a developer. We see this, we feel this and we know there needs to be a change.&lt;/p&gt;

&lt;p&gt;Micro attempts to remove the marketing spiel, cloud complexity and bottomless billing by doing the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;API docs and usage are always just one click away&lt;/li&gt;
&lt;li&gt;Billing is Top-Up only. Only use the credit in your account&lt;/li&gt;
&lt;li&gt;Everything can be accessed via Curl or any simple HTTP library&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here's some of what we're talking about.&lt;/p&gt;

&lt;p&gt;API docs provide examples and usage along with the pricing clearly next to the endpoint&lt;/p&gt;


&lt;center&gt;
&lt;br&gt;
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--lcAVgKcP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.m3o.com/assets/images/api-doc.png"&gt;&lt;br&gt;
&lt;/center&gt;
&lt;br&gt;
&lt;br&gt;

&lt;p&gt;Test out the API right there in the UI&lt;/p&gt;


&lt;center&gt;
&lt;br&gt;
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--hg61eZMU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.m3o.com/assets/images/query-page.png"&gt;&lt;br&gt;
&lt;/center&gt;
&lt;br&gt;
&lt;br&gt;

&lt;p&gt;We'll add $5 free credit to your account to start but just top-up with however much you need&lt;/p&gt;


&lt;center&gt;
&lt;br&gt;
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--amwoA-ai--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.m3o.com/assets/images/billing-page.png"&gt;&lt;br&gt;
&lt;/center&gt;
&lt;br&gt;
&lt;br&gt;

&lt;p&gt;Then just head to the token page to create yourself a well scoped token for external use&lt;/p&gt;


&lt;center&gt;
&lt;br&gt;
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1Tcn5AAz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.m3o.com/assets/images/token-page.png"&gt;&lt;br&gt;
&lt;/center&gt;
&lt;br&gt;
&lt;br&gt;

&lt;p&gt;And finally. Curl it from anywhere!&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;curl "https://api.m3o.com/v1/id/Generate" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $MICRO_API_TOKEN" \
  -d '{"type": "snowflake"}'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Thanks for reading
&lt;/h2&gt;

&lt;p&gt;Hopefully you buy into what we're talking about and the need for something new in the API space. If you like what you’re hearing, &lt;a href="https://m3o.com"&gt;Signup for Free&lt;/a&gt; or send us some &lt;a href="//mailto:contact@m3o.com"&gt;feedback&lt;/a&gt;. Reach out on &lt;a href="https://slack.m3o.com"&gt;slack&lt;/a&gt; or &lt;a href="https://twitter.com/m3oservices"&gt;twitter&lt;/a&gt; if you have any questions.&lt;/p&gt;

</description>
      <category>micro</category>
      <category>api</category>
      <category>programming</category>
    </item>
    <item>
      <title>Why and how we built Distributed with Next.js and Micro</title>
      <dc:creator>Asim Aslam</dc:creator>
      <pubDate>Fri, 26 Mar 2021 19:55:39 +0000</pubDate>
      <link>https://forem.com/asim/why-and-how-we-built-distributed-with-next-js-and-micro-3c1o</link>
      <guid>https://forem.com/asim/why-and-how-we-built-distributed-with-next-js-and-micro-3c1o</guid>
      <description>&lt;p&gt;&lt;a href="https://distributed.app" rel="noopener noreferrer"&gt;Distributed&lt;/a&gt; is a live social chat app built as a Jamstack demo using &lt;a href="https://nextjs.org/" rel="noopener noreferrer"&gt;Next.js&lt;/a&gt; and &lt;a href="https://micro.mu" rel="noopener noreferrer"&gt;Micro&lt;/a&gt;. We built it to demonstrate the value proposition of &lt;a href="https://m3o.com" rel="noopener noreferrer"&gt;M3O&lt;/a&gt; - a cloud platform for API development. This post explains what went into building Distributed in just a few weeks and how M3O helped rapidly build our MVP.&lt;/p&gt;

&lt;p&gt;You can find the source code for distributed on &lt;a href="https://github.com/m3o/distributed" rel="noopener noreferrer"&gt;Github&lt;/a&gt;. If you want to build and host your own version signup to &lt;a href="https://m3o.com" rel="noopener noreferrer"&gt;M3O&lt;/a&gt; and start running the same services from our open source repository &lt;a href="https://github.com/micro/services" rel="noopener noreferrer"&gt;micro/services&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why we built Distributed
&lt;/h2&gt;

&lt;p&gt;Distributed was built as a jamstack demo to show how you could leverage &lt;a href="https://m3o.com" rel="noopener noreferrer"&gt;M3O&lt;/a&gt; as an API backend for rapid MVP development. M3O itself is a cloud platform for API development, built on the popular open source project &lt;a href="https://micro.mu" rel="noopener noreferrer"&gt;Micro&lt;/a&gt;. Micro enables you to quickly build APIs in Go on the backend and M3O provides simple free hosting of those services.&lt;/p&gt;

&lt;p&gt;We wanted to show the Jamstack audience how you could quickly leverage those APIs to build something on the frontend. Not only that, we really wanted to understand and experience the frontend developers perspective through dogfooding of our own APIs rather than just throwing stuff over the wall and hoping it works.&lt;/p&gt;

&lt;p&gt;Hopefully in that we we've done is demonstrate the value of our platform and how others can also make use of it with a real world app like Distributed to learn from. Let's talk more about Jamstack now.&lt;/p&gt;

&lt;h2&gt;
  
  
  Jamstack Development
&lt;/h2&gt;

&lt;p&gt;Jamstack is a new architecture pattern for frontend which offloads dynamic aspects of the stack to javascript and third party APIs. &lt;a href="https://vercel.com/" rel="noopener noreferrer"&gt;Vercel&lt;/a&gt;, the makers of &lt;a href="https://nextjs.org/" rel="noopener noreferrer"&gt;Next.js&lt;/a&gt; and related companies are pioneering the way forward for jamstack development.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fd33wubrfki0l68.cloudfront.net%2Fb7d16f7f3654fb8572360301e60d76df254a323e%2F385ec%2Fimg%2Fsvg%2Farchitecture.svg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fd33wubrfki0l68.cloudfront.net%2Fb7d16f7f3654fb8572360301e60d76df254a323e%2F385ec%2Fimg%2Fsvg%2Farchitecture.svg"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;center&gt;&lt;small&gt;Credit jamstack.org&lt;/small&gt;&lt;/center&gt;



&lt;p&gt;JAMstack stands for Javascript, API and Markup. The static part of the application is deployed to a CDN with javascript dynamically loading various pieces of dynamic content from backend APIs and rendering it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why we chose Next.js
&lt;/h2&gt;

&lt;p&gt;Next.js is a massively popular react based framework for Jamstack development. When we were looking at building out a demo on top of &lt;a href="https://m3o.com" rel="noopener noreferrer"&gt;M3O&lt;/a&gt; we had the choice of going down a number of routes but what really appealed to us was the how deliberate a lot of the choices were in how the Vercel team had constructed the Next.js framework.&lt;/p&gt;

&lt;center&gt;
  &lt;a href="https://nextjs.org" rel="noopener noreferrer"&gt;
    &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblog.m3o.com%2Fassets%2Fimages%2Fnextjs.png"&gt;
  &lt;/a&gt;
&lt;/center&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;
Being framework creators ourselves with the dominant framework &lt;a href="https://go-micro.dev" rel="noopener noreferrer"&gt;Go Micro&lt;/a&gt; for Go, we could appreciate the efforts required and strong opinions needed to drive such adoption and success. Vercel has done a phenomenal job in this way.&lt;br&gt;
&lt;br&gt;&lt;br&gt;
Beyond praising Vercel's efforts. The Next.js framework includes a lot of key components needed for the Jamstack including server side rendering, api routes and typescript support. For us these were mandatory feature requirements when building against not only our APIs but third party providers. &lt;/p&gt;

&lt;h2&gt;
  
  
  Micro for the Backend
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://micro.mu" rel="noopener noreferrer"&gt;Micro&lt;/a&gt; is an open source cloud platform for API development. With modern day complexity in writing software for the cloud, Micro has attempted to distill that down to a handful of primitives and a framework for building services in Go.&lt;/p&gt;

&lt;center&gt;
  &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmicro.mu%2Fimages%2Fmicro-3.0.png"&gt;
&lt;/center&gt;



&lt;p&gt;Micro took learnings from the original Go Micro framework and focused on not just gRPC based service development but actually packaging together a runtime and platform which exposes those services automatically as APIs. What this means is we can write microservices on the backend using gRPC and protobuf and immediately provide value to consumers and clients on the frontend via HTTP/JSON.&lt;/p&gt;

&lt;p&gt;To learn more about that check out the project at &lt;a href="https://micro.mu" rel="noopener noreferrer"&gt;micro.mu&lt;/a&gt; or the hosted platform at &lt;a href="https://m3o.com" rel="noopener noreferrer"&gt;m3o.com&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Building on Netlify
&lt;/h2&gt;

&lt;p&gt;We initially chose Netlify for hosting as we saw many people adopting it for Jamstack apps. Initially this proved really great for static content. As our apps got more complex and we started to build out the Distributed demo we found Netlify no longer scaled with our basic needs. The first example we can share is Netlify Functions for Next.js API routes.&lt;/p&gt;

&lt;p&gt;Next.js routes can be turned into Netlify Functions which are essentially hosted as AWS Lambda functions. It's a clever way of pushing certain requirements to the server side, like calling third party APIs with keys you don't want to expose to the client. Next.js is great in this regard and plugins like &lt;a href="https://github.com/netlify/netlify-plugin-nextjs" rel="noopener noreferrer"&gt;netlify-plugin-nextjs&lt;/a&gt; and &lt;a href="https://github.com/netlify/next-on-netlify" rel="noopener noreferrer"&gt;next-on-netlify&lt;/a&gt; &lt;br&gt;
let us do this really quickly but the performance left a lot to be desired.&lt;/p&gt;

&lt;p&gt;Our APIs are primarily hosted in London on DigitalOcean and while Netlify has a CDN for static content, the Lambda functions are deployed in a single region in US-East on AWS. For those who've suffered this pain you know exactly what that means. We were making cross atlantic calls from JS in the client to api routes on lambda and then finally to our apis. &lt;/p&gt;

&lt;p&gt;Needless to say this didn't scale for us. We weren't able to reach out the Netlify team to get help and so in frustration had to go down the self hosted route. Note we did test out Vercel and found the experience to be faster but self hosting on DigitalOcean just made more sense for our demo needs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Switching to Self Hosted
&lt;/h2&gt;

&lt;p&gt;One of the things DigitalOcean now provides is &lt;a href="https://www.digitalocean.com/products/app-platform/" rel="noopener noreferrer"&gt;App Platform&lt;/a&gt;, a container hosting solution which lets you pick regions, does TLS certificate management for your custom domain and automatic builds from Git. This turned out to be a perfect solution for self hosted Next.js apps. &lt;/p&gt;

&lt;p&gt;Next.js at the end of the day is a React and node.js based application. As much as you may want to separate out the static content to something like Netlify and functions on Lambda, it equally just makes sense to host the entire thing in one place and run many copies of it much like we did in the old php and rails days.&lt;/p&gt;

&lt;center&gt;
&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblog.m3o.com%2Fassets%2Fimages%2Fdo.png"&gt;
&lt;/center&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;
Because the APIs are colocated with the frontend we find this experience fairly fast, sub 100ms for all the API calls but we know it's not an ideal demonstration of the Jamstack's architecture and so we'll be working towards hosting on Vercel in the future to showcase that experience.&lt;/p&gt;

&lt;h2&gt;
  
  
  How It All Fits Together
&lt;/h2&gt;

&lt;p&gt;We're running Distributed as a Next.js application on the frontend talking to Micro APIs on the backend. All of this is constructed as API routes in Next.JS firing requests at our M3O platform and the various APIs we need. Let's walk through a typical request. &lt;/p&gt;

&lt;p&gt;For example, when loading a group we need to get the group info, user profile, chats and more. We could do this as a GraphQL APIbut that would require too much stitching together in terms of the schema on the backend. Instead we're using protobuf and RPC for rapid development there and Micro automagically exposes that as a HTTP/JSON API.&lt;/p&gt;

&lt;p&gt;So a typical flow is like so.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Frontend makes a request to &lt;code&gt;/api/groups/[id]&lt;/code&gt; which loads the api code in the Next.js app&lt;/li&gt;
&lt;li&gt;We validate the user is logged in by calling the &lt;code&gt;/users/Validate&lt;/code&gt; endpoint and ff authenticated load the group data by id using &lt;code&gt;/groups/Read&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Skipping ahead, we'll load group messages via &lt;code&gt;/threads/ListConversations&lt;/code&gt; and private messages using &lt;code&gt;/chats/ListMessages&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;We can check for already read messages via a "seen" API and then subscribe to the streams API for instant messaging&lt;/li&gt;
&lt;li&gt;Finally we render everything based on the content loaded for the user&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;.gist-data { max-height: 600px; overflow: auto;}&lt;/p&gt;

&lt;p&gt;Here's a code "snippet" for those interested. From an MVP standpoint this is just a very quick and rapid way for us to build against numerous separate APIs on the backend all hosted in the same place.&lt;/p&gt;

&lt;p&gt;For anyone interested in the "call" function. It's simply a small function we're using to call the Micro APIs on the backend. Remember Micro turns any RPC based service into a HTTP/JSON API automatically via an API gateway. M3O provides hosting for all this.&lt;/p&gt;



&lt;h2&gt;
  
  
  Performance &amp;amp; Productivity
&lt;/h2&gt;

&lt;p&gt;Aside from the structural benefits of a framework like Next.js we find it really unlocks significant productivity by providing an opinionated approach to frontend development. That coupled with Micro on the backend and our APIs hosted on M3O it's enabled us to rapidly ship this MVP within the space of 4-6 weeks with mostly 1 person doing the work. &lt;/p&gt;

&lt;p&gt;That really speaks to the power of the combination of Next.js and Micro. For this demo we built APIs for user management, group messaging, websocket streaming, sending invite emails and audio/video through Twilio WebRTC. One can only imagine where it would go with a dedicated team and full product focus.&lt;/p&gt;

&lt;p&gt;On the performance side, Next.js is blazingly fast by all measures. Whether it be the local reload for development or the server side rendering. It all adds to a really snappy experience on both the development and consumption side of things. With the backend we tried to pair this with Go based APIs written with Micro to ensure not just speed of development but also speed of delivery.&lt;/p&gt;

&lt;p&gt;All in all, we think Next.js and Micro are the perfect pairing for any Jamstack and API based development.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusions
&lt;/h2&gt;

&lt;p&gt;Thanks for reading this post on how we built &lt;a href="https://distributed.app" rel="noopener noreferrer"&gt;Distributed&lt;/a&gt; on the Jamstack using &lt;a href="https://nextjs.org/" rel="noopener noreferrer"&gt;Next.js&lt;/a&gt; and &lt;a href="//https:/micro.mu"&gt;Micro&lt;/a&gt;. Find the source code for distributed on &lt;a href="https://github.com/m3o/distributed" rel="noopener noreferrer"&gt;Github&lt;/a&gt;. If you want to build and host your own version signup to &lt;a href="https://m3o.com" rel="noopener noreferrer"&gt;M3O&lt;/a&gt; and start running the same services from our open source repository &lt;a href="https://github.com/micro/services" rel="noopener noreferrer"&gt;micro/services&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Reach out on &lt;a href="https://slack.m3o.com" rel="noopener noreferrer"&gt;slack&lt;/a&gt; or &lt;a href="https://twitter.com/m3oservices" rel="noopener noreferrer"&gt;twitter&lt;/a&gt; if you have any questions.&lt;/p&gt;

</description>
      <category>jamstack</category>
      <category>javascript</category>
      <category>micro</category>
    </item>
    <item>
      <title>M3O - A platform for API driven services development</title>
      <dc:creator>Asim Aslam</dc:creator>
      <pubDate>Sun, 22 Nov 2020 15:52:39 +0000</pubDate>
      <link>https://forem.com/m3o/m3o-a-platform-for-api-driven-services-development-1h89</link>
      <guid>https://forem.com/m3o/m3o-a-platform-for-api-driven-services-development-1h89</guid>
      <description>&lt;p&gt;Most of the time API development itself is not challenging. It's booting and managing the infrastructure and workflow for those APIs. &lt;a href="https://m3o.com"&gt;M3O&lt;/a&gt; is a new platform for API driven services development. Write your API in Go. Push the source directly or from a public Git server. Watch it become publicly routable in seconds. No ops needed.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://m3o.com"&gt;https://m3o.com&lt;/a&gt;&lt;/p&gt;

</description>
      <category>api</category>
    </item>
    <item>
      <title>Turn any blog or RSS feed into an API</title>
      <dc:creator>Asim Aslam</dc:creator>
      <pubDate>Mon, 16 Nov 2020 15:45:45 +0000</pubDate>
      <link>https://forem.com/m3o/turn-any-blog-or-rss-feed-into-an-api-i5i</link>
      <guid>https://forem.com/m3o/turn-any-blog-or-rss-feed-into-an-api-i5i</guid>
      <description>&lt;p&gt;Last time we talked to you about how we believe Micro is &lt;a href="//%7B%7B%20site.baseurl%20%7D%7D/2020/11/12/netlify-for-the-frontend-micro-for-the-backend.html"&gt;Netlify for the backend&lt;/a&gt;. &lt;br&gt;
We got a very strong positive reaction to that, filling a pain point it looks like many people had. In that post we used headless cms aka blog posts &lt;br&gt;
as an example of the API you'd build on the backend to be consumed by a frontend. Today we're going to take it a step further.&lt;br&gt;
We're going to turn any blog or RSS feed into an API.&lt;/p&gt;

&lt;p&gt;An API on its own isn't enough. There's no content. You have to populate it yourself. So what if we made it just a little bit easier. How about we help&lt;br&gt;
 you turn any blog, any content with an rss feed into an easy to consume API with just a handful of commands. That's the power of Micro. &lt;br&gt;
Exciting right, let's get to it.&lt;/p&gt;
&lt;h2&gt;
  
  
  Things to know before we start
&lt;/h2&gt;

&lt;p&gt;Before we start, just a little housekeeping. Here's the tools we provide and are making use of.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://micro.mu"&gt;Micro&lt;/a&gt; - is an open source framework for microservices development&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://m3o.com"&gt;M3O&lt;/a&gt; - is a hosted platform for backend API development powered by Micro&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These two things are fairly important to know before starting. Ok back to it.&lt;/p&gt;
&lt;h2&gt;
  
  
  Content in 2020
&lt;/h2&gt;

&lt;p&gt;For the most part blogging platforms haven't really evolved. There's still wordpress but interestingly everythings a bit of a silo or you have to &lt;br&gt;
run something yourself, we use a bit of jekyll + markdown, etc and that works but it's not very developer friendly (from an API standpoint). &lt;br&gt;
That's really led to firstly a bifurcation in adoption of tools and how content is stuck in walled gardens (another story for another day) and &lt;br&gt;
why we're seeing an explosion in headless CMS.&lt;/p&gt;

&lt;p&gt;People want to write content and get paid. Most of those places don't really have APIs but do have RSS feeds. Developers want to consume and &lt;br&gt;
use this content, quite honestly it goes beyond developers. Content is king and it's used for all sorts of sentiment analysis and other &lt;br&gt;
market research. It's also actually reblogged, retweeted, and put in lots of different places. It would be really great if there was a much &lt;br&gt;
simpler way to go about providing APIs for all this content out there.&lt;/p&gt;

&lt;p&gt;So let's do it. Micro is going to turn any blog or RSS feed into an API so it can be consumed from anywhere in any which way. And the key point &lt;br&gt;
here, it's all hosted for you, without having to think about doing that yourself.&lt;/p&gt;
&lt;h2&gt;
  
  
  Deploying the blog backend
&lt;/h2&gt;

&lt;p&gt;If you weren't around for the other post, we'll help you deploy the existing posts api and related services.&lt;/p&gt;
&lt;h3&gt;
  
  
  Signup to M3O
&lt;/h3&gt;

&lt;p&gt;You'll need to install micro and signup to M3O for this.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://install.m3o.com/micro | /bin/bash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For those wary of curl into bash, you can view it first &lt;a href="https://install.m3o.com/micro"&gt;https://install.m3o.com/micro&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Signup is purely CLI based for now so just issue the following command and follow the steps&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;micro signup
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once you're done you should have an account on M3O and be automatically logged in.&lt;/p&gt;

&lt;h3&gt;
  
  
  Run the API
&lt;/h3&gt;

&lt;p&gt;All the services you're going to run are open source. You can check them out at &lt;a href="https://github.com/micro/services"&gt;github.com/micro/services&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;Let's bootstrap the blog super quick. Because Micro is all about microservices development, we've decomposed the blog API into posts, comments and tags. &lt;br&gt;
You can find all the code on &lt;a href="https://github.com/micro/services/tree/master/blog"&gt;github&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Deploying these is super simple.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# run the posts service&lt;/span&gt;
micro run github.com/micro/services/blog/posts

&lt;span class="c"&gt;# run the tags service&lt;/span&gt;
micro run github.com/micro/services/blog/tags

&lt;span class="c"&gt;# run the comments service&lt;/span&gt;
micro run github.com/micro/services/blog/comments
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Check they're running using &lt;code&gt;micro status&lt;/code&gt;. You should see the status progress through starting, building and running. &lt;br&gt;
If you want to see logs or anything related just do &lt;code&gt;micro logs posts&lt;/code&gt; and the same for any other service by name.&lt;/p&gt;

&lt;p&gt;Now you've got those installed we need to move on to pulling the content from your current blog's rss feed.&lt;/p&gt;
&lt;h3&gt;
  
  
  Crawl your blog or RSS feed
&lt;/h3&gt;

&lt;p&gt;RSS feeds are a staple of the content industry. its a powerful standard that basically allows anything to be published as an XML based &lt;br&gt;
stream and then consumed and published in any other form. For most of us we're probably used to using RSS feed readers like &lt;br&gt;
&lt;a href="https://feedly.com"&gt;Feedly&lt;/a&gt; or similar. Its not glamorous but it definitely gets the job done.&lt;/p&gt;

&lt;p&gt;We've written a simple feeds service that can consume any RSS feed and populate your posts API. The code lives on &lt;br&gt;
&lt;a href="https://github.com/micro/services/tree/master/blog/feeds"&gt;github&lt;/a&gt; alongside all the other services you just started.&lt;br&gt;
Follow below to run and populate the feeds service.&lt;/p&gt;

&lt;p&gt;Run the feeds service&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;micro run github.com/micro/services/blog/feeds
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Check and wait for it to be in a running state&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;micro status
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;OK now the fun part. Enter your favourite rss feed to be saved and crawled.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;micro feeds new &lt;span class="nt"&gt;--name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"hackernews"&lt;/span&gt; &lt;span class="nt"&gt;--url&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;https://news.ycombinator.com/rss
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now if you give it a minute or so, what you should see is a list of posts from hacker news.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;micro posts query
&lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="s2"&gt;"posts"&lt;/span&gt;: &lt;span class="o"&gt;[&lt;/span&gt;
                &lt;span class="o"&gt;{&lt;/span&gt;
                        &lt;span class="s2"&gt;"id"&lt;/span&gt;: &lt;span class="s2"&gt;"334ff5ad67cfd018a42ddd6095d3d51c"&lt;/span&gt;,
                        &lt;span class="s2"&gt;"title"&lt;/span&gt;: &lt;span class="s2"&gt;"Winners of Close-Up Photographer of the Year"&lt;/span&gt;,
                        &lt;span class="s2"&gt;"slug"&lt;/span&gt;: &lt;span class="s2"&gt;"winners-of-close-up-photographer-of-the-year"&lt;/span&gt;,
                        &lt;span class="s2"&gt;"created"&lt;/span&gt;: &lt;span class="s2"&gt;"1605277921"&lt;/span&gt;,
                        &lt;span class="s2"&gt;"metadata"&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt;
                                &lt;span class="s2"&gt;"domain"&lt;/span&gt;: &lt;span class="s2"&gt;"news.ycombinator.com"&lt;/span&gt;,
                                &lt;span class="s2"&gt;"link"&lt;/span&gt;: &lt;span class="s2"&gt;"https://www.theatlantic.com/photo/2020/11/winners-close-up-photographer-year/617070"&lt;/span&gt;
                        &lt;span class="o"&gt;}&lt;/span&gt;
                &lt;span class="o"&gt;}&lt;/span&gt;,
                &lt;span class="o"&gt;{&lt;/span&gt;
                        &lt;span class="s2"&gt;"id"&lt;/span&gt;: &lt;span class="s2"&gt;"33a807b3636f0d232f219e01ff6ee576"&lt;/span&gt;,
                        &lt;span class="s2"&gt;"title"&lt;/span&gt;: &lt;span class="s2"&gt;"Scientists discover two new mammals in Australia"&lt;/span&gt;,
                        &lt;span class="s2"&gt;"slug"&lt;/span&gt;: &lt;span class="s2"&gt;"scientists-discover-two-new-mammals-in-australia"&lt;/span&gt;,
                        &lt;span class="s2"&gt;"created"&lt;/span&gt;: &lt;span class="s2"&gt;"1605277920"&lt;/span&gt;,
                        &lt;span class="s2"&gt;"metadata"&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt;
                                &lt;span class="s2"&gt;"domain"&lt;/span&gt;: &lt;span class="s2"&gt;"news.ycombinator.com"&lt;/span&gt;,
                                &lt;span class="s2"&gt;"link"&lt;/span&gt;: &lt;span class="s2"&gt;"https://www.cnet.com/news/scientists-discover-two-new-mammals-in-australia/#ftag=CAD-09-10aai5b"&lt;/span&gt;
                        &lt;span class="o"&gt;}&lt;/span&gt;
                &lt;span class="o"&gt;}&lt;/span&gt;,
                &lt;span class="o"&gt;{&lt;/span&gt;
                        &lt;span class="s2"&gt;"id"&lt;/span&gt;: &lt;span class="s2"&gt;"148774c2fa4762587f84375dd5359a64"&lt;/span&gt;,
                        &lt;span class="s2"&gt;"title"&lt;/span&gt;: &lt;span class="s2"&gt;"The Next Decade Could Be Even Worse"&lt;/span&gt;,
                        &lt;span class="s2"&gt;"slug"&lt;/span&gt;: &lt;span class="s2"&gt;"the-next-decade-could-be-even-worse"&lt;/span&gt;,
                        &lt;span class="s2"&gt;"created"&lt;/span&gt;: &lt;span class="s2"&gt;"1605277919"&lt;/span&gt;,
                        &lt;span class="s2"&gt;"metadata"&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt;
                                &lt;span class="s2"&gt;"domain"&lt;/span&gt;: &lt;span class="s2"&gt;"news.ycombinator.com"&lt;/span&gt;,
                                &lt;span class="s2"&gt;"link"&lt;/span&gt;: &lt;span class="s2"&gt;"https://www.theatlantic.com/magazine/archive/2020/12/can-history-predict-future/616993/"&lt;/span&gt;
                        &lt;span class="o"&gt;}&lt;/span&gt;
                &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Your posts as an API
&lt;/h3&gt;

&lt;p&gt;And just like we did last time, here's how to directly query your posts via an api .Get your namespace using the command &lt;br&gt;
&lt;code&gt;micro user namespace&lt;/code&gt; and compose the url as &lt;code&gt;$namespace.m3o.dev/posts&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# get your namespace&lt;/span&gt;
&lt;span class="nv"&gt;$ namespace&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;micro user namespace&lt;span class="si"&gt;)&lt;/span&gt;

&lt;span class="c"&gt;# get the posts from the api&lt;/span&gt;
&lt;span class="nv"&gt;$ &lt;/span&gt;curl https://&lt;span class="nv"&gt;$namespace&lt;/span&gt;.m3o.dev/posts/query
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And hey presto! Just like that we have turned your blog or RSS feed into a http API!&lt;/p&gt;

&lt;h2&gt;
  
  
  The value proposition
&lt;/h2&gt;

&lt;p&gt;What is the value of turning any content into an API? The world is moving towards being entirely driven by technology. It's not enough that &lt;br&gt;
we be able to consume through the web, we're now moving to mobile, voice and other platforms. APIs will power the world and to really &lt;br&gt;
have full opportunity to realise that we have to get this content out of silos and into a consumable format, that being http APIs.&lt;/p&gt;

&lt;p&gt;Companies like Stripe, Twilio, Sendgrid and others have been API-ifying (yea I said) payments, communication and email but content &lt;br&gt;
is still stuck in the dark ages. We think the best way to make it happen is by putting power into the hands of those actually creating &lt;br&gt;
the content or those who really want to program against it. Hopefully this serves as a nice example of how to do that with Micro on M3O.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Micro 3.0 (M3O) is a platform for cloud native development</title>
      <dc:creator>Asim Aslam</dc:creator>
      <pubDate>Tue, 10 Nov 2020 18:44:18 +0000</pubDate>
      <link>https://forem.com/m3o/micro-3-0-m3o-is-a-platform-for-cloud-native-development-49on</link>
      <guid>https://forem.com/m3o/micro-3-0-m3o-is-a-platform-for-cloud-native-development-49on</guid>
      <description>&lt;p&gt;This is the official announcement for the release of Micro 3.0 better known as M3O - a platform for cloud native development. &lt;br&gt;
Our 3.0 release is a major refactor and consolidation of the existing tooling into something that addresses the entire workflow of build, run, manage and consume all from the developers perspective.&lt;/p&gt;

&lt;p&gt;Read on to learn more or go straight to the &lt;a href="https://github.com/micro/micro/releases/latest"&gt;latest release&lt;/a&gt;. Head to &lt;a href="https://m3o.com"&gt;m3o.com&lt;/a&gt; for the hosted offering.&lt;/p&gt;
&lt;h2&gt;
  
  
  Overview
&lt;/h2&gt;

&lt;p&gt;Micro focuses on developer productivity for the backend. It's clear that the Cloud has become infinitely more complex over the past few years. Micro attempts to create order out of that chaos by distilling it all down to a handful of primitives for distributed systems development.&lt;/p&gt;

&lt;p&gt;Why should you care? If you're reading this you've no doubt encountered the tedious nature of infrastructure management, &lt;br&gt;
wrangling a kubernetes cluster on AWS or the thousands of things you need to do to cobble together a platform before &lt;br&gt;
starting to build a product. We think we've nailed the solution for that just as Android did for Mobile. Keep reading &lt;br&gt;
if you want to find out more.&lt;/p&gt;
&lt;h2&gt;
  
  
  Quick Flashback
&lt;/h2&gt;

&lt;p&gt;Micro started out as a &lt;a href="///blog/2016/03/20/micro.html"&gt;toolkit for microservices&lt;/a&gt; development, &lt;br&gt;
incorporating an api gateway, web dashboard and cli to interact with services built using a Go RPC framework. &lt;br&gt;
Back then it felt like getting anyone to buy into PaaS again was going to be a losing battle. So we chose to write single purpose tools around an RPC framework thinking it might allow people to adopt it piece by piece until they saw the need for a platform. It was really straight forward right until it wasn't. &lt;/p&gt;

&lt;p&gt;There was a simple Go framework plus some surrounding &lt;br&gt;
components to query and interact with them, but like any long lived project, the complexity grew as we tried to solve for that platform experience that just couldn't be done with a swiss army knife. The repo exploded with a number of independent libraries. To the creator its obvious what these are all for but to the user there is nothing but cognitive overload. &lt;/p&gt;

&lt;p&gt;In 2019 we went through a &lt;a href="///blog/2019/06/10/the-great-consolidation.html"&gt;consolidation&lt;/a&gt; of all those libraries which helped tremendously but there was still always one outstanding question. What's the difference between &lt;br&gt;
&lt;a href="https://github.com/micro/micro"&gt;micro&lt;/a&gt; and &lt;a href="https://github.com/micro/go-micro"&gt;go-micro&lt;/a&gt;? It's a good question and one we've covered before. We saw go-micro as a framework and micro as a toolkit but these words were basically empty and meaningless because multiple projects working in coordination really need a crisp story that makes sense and we didn't have one.&lt;/p&gt;

&lt;p&gt;In 2020 we're looking to rectify that but let's first let's talk about platforms.&lt;/p&gt;
&lt;h2&gt;
  
  
  PaaS in 2020
&lt;/h2&gt;

&lt;p&gt;5 years ago the world exploded with a proliferation of "cloud native" tooling as containers and container orchestration took centre stage. More specifically, Docker and Kubernetes redefined the technology landscape along with a more conscious move towards building software in the cloud.&lt;/p&gt;

&lt;p&gt;Micro took a forward looking view even as far back as 2015. It was clear distributed systems and cloud native was going to become the dominant model for backend services development over the coming years but, what wasn't clear is just how long we'd spend wrangling all sorts tools like docker, kubernetes, grpc, istio and everything else. It felt like we were rebuilding the stack and weren't really ready to talk about development aspects of it all.&lt;/p&gt;

&lt;p&gt;In fact at that time, people mostly wanted to kick the tyres on all these tools and piece something together. &lt;br&gt;
Running kubernetes yourself became all the rage and even using service mesh as the holy grail for solving all your distributed systems problems. Many of us have come to realise while all of this tech is fun it's not actually solving development problems.  &lt;/p&gt;

&lt;p&gt;We've gotten to the point of managed kubernetes and even things like Google Cloud Run or DigitalOcean App Platform, but none of these things are helping with a development model for a cloud native era. Our frustrations with the existing developer experience have grown and Micro felt like something that could solve for all that, but only if we took a drastic step to overhaul it.&lt;/p&gt;

&lt;p&gt;We think PaaS 3.0 is not just about running your container or even your source code but something that encapsulates the entire developer experience including a model for writing code for the cloud. Based on that Micro 3.0 aka M3O is a platform for cloud native development.&lt;/p&gt;
&lt;h2&gt;
  
  
  What even is Cloud Native?
&lt;/h2&gt;

&lt;p&gt;What is cloud native? What does it mean to build for the cloud? What is a cloud service?&lt;/p&gt;

&lt;p&gt;Cloud native is basically a descriptive term for something that was built to run in the cloud. That's it. It's not &lt;br&gt;
magic, it might sound like a buzzword, but the reality is it simply means, that piece of software was built to run in the cloud. How does that differ from the way we used to build before? Well the idea behind the cloud is that its ephemeral, scalable and everything can be accessed via an API.&lt;/p&gt;

&lt;p&gt;Our expectation for services running in the cloud is that they're mostly stateless, leveraging external services &lt;br&gt;
for the persistence, that they are identified by name rather than IP address and they themselves provide an API that can be consumed by multiple clients such as web, mobile and cli or other services. &lt;/p&gt;

&lt;p&gt;Cloud native applications are horizontally scalable and operate within domain boundaries that divide them as &lt;br&gt;
separate apps which communicate over the network via their APIs rather than as one monolithic entity. We think cloud services require a fundamentally different approach to software creation and why Micro 3.0 was designed with this in mind.&lt;/p&gt;
&lt;h2&gt;
  
  
  Micro 3.0 aka M3O
&lt;/h2&gt;

&lt;p&gt;Micro 3.0 (M3O) reimagines Micro as a platform for cloud native development. What does that mean? Well we think of &lt;br&gt;
it as PaaS 3.0, a complete solution for source to running and beyond. Micro has moved from just being a Go framework to incorporating a standalone server and hosted platform. Our hosted offering is called &lt;a href="https://m3o.com"&gt;M3O&lt;/a&gt;, a hat tip to Micro 3.0 or M[icr]o, whichever way you want to see it. &lt;/p&gt;

&lt;p&gt;Another way to think about it. What Git is to GitHub, Micro is to the M3O platform. Let's dig into it.&lt;/p&gt;

&lt;p&gt;Micro 3.0 includes the following.&lt;/p&gt;
&lt;h3&gt;
  
  
  Server
&lt;/h3&gt;

&lt;p&gt;The server is our abstraction for cloud infrastructure and underlying systems you might need for writing &lt;br&gt;
distributed systems. The server encapsulates all of these concerns as gRPC services which you can query via any language. The goal here is to say developers don't really need to be thinking about infrastructure but what they do need is design patterns and primitives for building distributed systems. &lt;/p&gt;

&lt;p&gt;&lt;a href="/images/micro-3.0.png" class="article-body-image-wrapper"&gt;&lt;img src="/images/micro-3.0.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The server includes the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Authentication&lt;/strong&gt;: Auth whether its authentication or authorization is part of the system. Create JWT tokens, define access rules, use one system to govern everything in a simple and straight forward manner. Whether it’s for a user or a service.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Configuration&lt;/strong&gt;: Dynamic config management allows you to store relevant config that needs to be updated without having to restart services. Throw API keys and business logic related configuration into the secure config service and let your services pick up the changes.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Key-Value Storage&lt;/strong&gt;: We’re focused on best practices for microservices development which means keeping services mostly stateless. To do this we’re providing persistent storage on the platform. Key-Value allows you to rapidly write code and store data in the format you care about.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Event Streaming&lt;/strong&gt;: Distributed systems are fundamentally in need of an event driven architecture to breakdown the tight dependencies between them. Using event streaming and pubsub allows you to publish and subscribe to relevant events async.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Service Registry&lt;/strong&gt;: Micro and M3O bake in service discovery so you can browse a directory of services to explore your service APIs and enable you to query services by name. Micro is all about microservices and multi-service development.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Service Network&lt;/strong&gt;: Because you don't want to have to resolve those service names to addresses and deal with the load balancing aspect, the server bakes in a "service mesh" which will handle your inter-service requests (as gRPC) and route to the &lt;br&gt;
appropriate instance.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Identity Proxy&lt;/strong&gt;: We include a separate identity proxy for external requests using gRPC via the CLI and other means. This enables you to query from your local machine or anywhere else using valid auth credentials and have it seamlessly work as if &lt;br&gt;
you were in the platform itself.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;API Gateway&lt;/strong&gt;: Finally there’s an API gateway that automatically exposes your services to the outside world over HTTP. Internally writing service to service using gRPC makes sense, but at the end of the day we want to build APIs consumed from clients via HTTP.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Clients
&lt;/h3&gt;

&lt;p&gt;The server provides inter-service communication and two means of external communication with a HTTP API and gRPC proxy but that &lt;br&gt;
experience is made much better when there's user experience on the client side that works. Right now we've got two ways of doing this.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Command Line&lt;/strong&gt;: The CLI provides a convenient and simple way to talk to the server via gRPC requests through the proxy. &lt;br&gt;
The most convenient commands are builtin but every service you write also gets beautiful dynamic generated commands &lt;br&gt;
for each endpoint. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;gRPC SDKs&lt;/strong&gt;: Every service in the server is accessible via gRPC. We're code generating clients for the server itself &lt;br&gt;
so you can access them from any language. What this enables is a wide array of experiences on the client side without &lt;br&gt;
having to handcraft libraries for each language.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Web Interface&lt;/strong&gt;: Coming soon is a dynamically generated web interface that creates a simple query mechanism through a &lt;br&gt;
browser for any of your services. We've got a http api, gRPC proxy and command line interface but feel like the browser &lt;br&gt;
could use some love too.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Framework
&lt;/h3&gt;

&lt;p&gt;One thing we really understood from our time working on go-micro was that the developer experience really matters. We &lt;br&gt;
see Go as the dominant language for the cloud and believe most backend services in the cloud will be written in Go. For &lt;br&gt;
that reason we continue to include a Service Framework which acts as a framework for building your services and accessing &lt;br&gt;
the underlying systems of the server.&lt;/p&gt;

&lt;p&gt;The Service Framework provides pre-initialised packages for all of the features of the server and creates a convenient &lt;br&gt;
initialiser for defining your own services starting with &lt;code&gt;service.New&lt;/code&gt;. A Service has a name, endpoints, contains &lt;br&gt;
a server of its own and a client to query other services. The framework does enough for you but then attempts to &lt;br&gt;
get out of your way so the rest is up to you.&lt;/p&gt;

&lt;p&gt;A main package for a Micro service looks something like this&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight go"&gt;&lt;code&gt;&lt;span class="k"&gt;package&lt;/span&gt; &lt;span class="n"&gt;main&lt;/span&gt;

&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="s"&gt;"github.com/micro/micro/v3/service"&lt;/span&gt;
    &lt;span class="s"&gt;"github.com/micro/micro/v3/service/logger"&lt;/span&gt;
    &lt;span class="s"&gt;"github.com/micro/services/helloworld/handler"&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;func&lt;/span&gt; &lt;span class="n"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c"&gt;// Create service&lt;/span&gt;
    &lt;span class="n"&gt;srv&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="n"&gt;service&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;New&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;service&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Name&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"helloworld"&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="c"&gt;// Register Handler&lt;/span&gt;
    &lt;span class="n"&gt;srv&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Handle&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;new&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;handler&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Helloworld&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;

    &lt;span class="c"&gt;// Run the service&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;err&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="n"&gt;srv&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Run&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; &lt;span class="n"&gt;err&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="no"&gt;nil&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;logger&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Fatal&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;err&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When you want to make use of something like the Config service just import it like so.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight go"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="s"&gt;"github.com/micro/micro/v3/service/config"&lt;/span&gt;

&lt;span class="n"&gt;val&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;err&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"key"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can find many more examples in &lt;a href="https://github.com/micro/services"&gt;github.com/micro/services&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Environments
&lt;/h2&gt;

&lt;p&gt;From our experience writing software isn't constrained to a single environment. Most of the time we're doing &lt;br&gt;
some form of local development followed by a push to staging and then production. We don't really see tools &lt;br&gt;
capturing that workflow effectively. Thinking about how to do this now we've built in environments as &lt;br&gt;
a first class system.&lt;/p&gt;

&lt;p&gt;M3O offers 3 builtin environments; local, dev and platform.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Local&lt;/strong&gt; - is Micro running on your local machine&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dev&lt;/strong&gt; - is a free development environment in the cloud&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Platform&lt;/strong&gt; - is a paid secure, scalable and supported production environment&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Our goal here is to really direct the flow from local &amp;gt; dev &amp;gt; platform as the lifecycle for any backend service &lt;br&gt;
development. Start by running the server locally, writing your code and getting it to work. Ship it to the &lt;br&gt;
dev environment for further testing but also to collaborate with others and serve it publicly. Then if you're &lt;br&gt;
interested in a scalable and supported production environment, pay for the platform environment. That's it.&lt;/p&gt;

&lt;p&gt;Interact with the environments like so.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# view the environments&lt;/span&gt;
micro &lt;span class="nb"&gt;env&lt;/span&gt;

&lt;span class="c"&gt;# set the environment&lt;/span&gt;
micro &lt;span class="nb"&gt;env set &lt;/span&gt;dev

&lt;span class="c"&gt;# add a new environment&lt;/span&gt;
micro &lt;span class="nb"&gt;env &lt;/span&gt;add foobar proxy.foo.com:443
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Micro isn't constrained to our built in environments. You can add others as you wish.&lt;/p&gt;

&lt;h3&gt;
  
  
  Local Environment
&lt;/h3&gt;

&lt;p&gt;The local environment is just that, your local laptop. Its where development starts and normally &lt;br&gt;
this requires you to run all sorts of crazy infrastructure. Micro focuses on providing pluggable &lt;br&gt;
abstractions as gRPC services so your service just talks gRPC directly to Micro and we hide the &lt;br&gt;
details from you. Locally that means we're using best effort stuff like mdns, file storage, etc. &lt;/p&gt;

&lt;p&gt;We've almost made it drop dead simple to start locally. You just run one command.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;micro server
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This will boot all the services you need and let you build a service that will look identical &lt;br&gt;
in any cloud environment running Micro as a Service.&lt;/p&gt;

&lt;p&gt;Set your environment to the local server when using it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;micro &lt;span class="nb"&gt;env set local&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Curl &lt;code&gt;localhost:8080&lt;/code&gt; with your namespace&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Micro-Namespace: &lt;/span&gt;&lt;span class="nv"&gt;$NAMESPACE&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="s2"&gt;"http://localhost:8080/helloworld?name=Alice"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Get your namespace like so&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;micro user namespace
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This might be blank locally but you'll get the idea for how namespace isolation works in a bit.&lt;/p&gt;

&lt;h3&gt;
  
  
  Dev Environment
&lt;/h3&gt;

&lt;p&gt;The 'dev' environment is a free cloud hosted environment that provides Micro 3.0 as a Service. What we've &lt;br&gt;
learned in the past few years is that open source is not enough. There's some great open source tools out there &lt;br&gt;
but as soon as we get to deployment there's so many hurdles to overcome. The dev enviroment provides &lt;br&gt;
everyone the ability to get up and running in minutes with the same tools you'd use for local development &lt;br&gt;
in the cloud.&lt;/p&gt;

&lt;p&gt;All you have to do is set the env to 'dev' and use it like local.&lt;/p&gt;

&lt;p&gt;If you're using the dev environment URLs are &lt;code&gt;*.m3o.dev&lt;/code&gt;. Find more details at &lt;a href="https://m3o.dev"&gt;m3o.dev&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Platform Environment
&lt;/h3&gt;

&lt;p&gt;The 'platform' environment is a secure, scalable and supported production environment for where you'd likely &lt;br&gt;
run customer facing services and products. This is a paid tier with 2x the resource limits of dev to start &lt;br&gt;
including slack &amp;amp; email support along with SLAs. You can think of it as the equivalent of a production platform &lt;br&gt;
you've come to know at any work place.&lt;/p&gt;

&lt;p&gt;Our goal with Local, Dev and Platform is to invoke that workflow we've all come to know and expect as a real &lt;br&gt;
product. These are totally separate environments and they're managed exactly as that with M3O as well.&lt;/p&gt;
&lt;h2&gt;
  
  
  Multi-Tenancy and Namespacing
&lt;/h2&gt;

&lt;p&gt;With the advent of a system like kubernetes and a push towards the cloud we can see that there's really a need &lt;br&gt;
to move towards shared resource usage. The cloud isn't cheap and we don't all need to be running separate &lt;br&gt;
kubernetes clusters. In fact wouldn't it be great if we could share that? Well Micro is doing it. We build in &lt;br&gt;
multi-tenancy using the same logic kubernetes does called Namespaces. &lt;/p&gt;

&lt;p&gt;We've mapped this same experience locally so you get a rudimentary form of namespacing for local dev but &lt;br&gt;
mostly we're making use of kubernetes namespaces in production along with a whole host of custom written &lt;br&gt;
isolation mechanisms for authentication, storage, configuration, event streaming, etc so Micro 3.0 &lt;br&gt;
can be used to host more than one tenant.&lt;/p&gt;

&lt;p&gt;Whether you decide to self host and share your cluster for dev, staging and production we felt like &lt;br&gt;
multi-tenancy needs to become a defacto standard in 2020. How it works in practice. Each tenant &lt;br&gt;
get's a namespace. That namespace has its own isolated set of users and resources in each subsystem. &lt;br&gt;
When you make any request as a user or service, a JWT token is passed with that so the &lt;br&gt;
underlying systems can route to the appropriate resources.&lt;/p&gt;

&lt;p&gt;Once you've signed up to the dev environment your namespace will be set for you. You can get it using &lt;br&gt;
the command&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;micro user namespace
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When you're using any sort of CLI commands, your namespace and auth token are automatically injected &lt;br&gt;
into request including refreshing those tokens. The same happens for any of your services running &lt;br&gt;
on Micro. If you want to use the http API or the public api url [api.m3o.dev] then go ahead &lt;br&gt;
and grab your namespace and set the header as &lt;code&gt;Micro-Namespace&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Additionally each namespace gets its own custom domain so the &lt;code&gt;foobar&lt;/code&gt; namespace becomes &lt;code&gt;foobar.m3o.dev&lt;/code&gt; &lt;br&gt;
with say the helloworld service routing would be to &lt;code&gt;foobar.m3o.dev/helloworld&lt;/code&gt;.&lt;/p&gt;
&lt;h2&gt;
  
  
  Source to Running
&lt;/h2&gt;

&lt;p&gt;Micro was built out of a frustration with the existing tools out there. One of the things I've really &lt;br&gt;
been saying for a long time is that I wanted "source to running" in just one command. With &lt;br&gt;
Heroku we sort of got that but it really took too much away from us. Back in 2010 Heroku was focused &lt;br&gt;
on monolithic Rails development. Since then I've really said Heroku took too much away and AWS gave &lt;br&gt;
too much back. We needed something in between.&lt;/p&gt;

&lt;p&gt;Micro can take your source code, from a local directory or a repo thats hosted on github, gitlab or bitbucket. &lt;br&gt;
In one command it will upload or pull from the relevant place, package it as a container and &lt;br&gt;
run it. That's it. Source to running in just one command. No more need to deal with the pipeline, &lt;br&gt;
no more hacking away at containers and the container registries. Write some code and run it.&lt;/p&gt;
&lt;h2&gt;
  
  
  Development Model
&lt;/h2&gt;

&lt;p&gt;Source to running is cool. It's what a PaaS is really for but one thing that's really been lacking even &lt;br&gt;
with the new PaaS boom is a development model. As I eluded to, Heroku takes too much away and AWS &lt;br&gt;
gives too much back. We're looking for a happy medium. One that doesn't require us to rely on VMs or &lt;br&gt;
containers but on the other side doesn't limit us to monolithic development.&lt;/p&gt;

&lt;p&gt;Micro has always focused on the practice of distributed systems development or microservices. The idea &lt;br&gt;
of breaking down large monolithic apps into smaller separate services that do one thing well. To do &lt;br&gt;
this we think you really have to bake the development model into the platform.&lt;/p&gt;

&lt;p&gt;What we include is the concept of a Service which contains a Client and Server for both handling &lt;br&gt;
requests and making queries to other services. We focus on standardisation around protobuf for API &lt;br&gt;
definitions and using gRPC for the networking layering. &lt;/p&gt;

&lt;p&gt;Not only that we're including pubsub for an event streaming architecture and other pieces like &lt;br&gt;
nosql key-value storage and dynamic config management. We believe there are specific primitives &lt;br&gt;
required to start building microservices and distributed systems and that's what Micro looks &lt;br&gt;
to provide.&lt;/p&gt;
&lt;h2&gt;
  
  
  Multi Language Clients
&lt;/h2&gt;

&lt;p&gt;One of the key learnings we had from the development of a Go framework called &lt;a href="https://github.com/asim/go-micro"&gt;go-micro&lt;/a&gt; was &lt;br&gt;
that we mostly use a single language for each platform we develop for such as web, mobile and so on. Cloud will be no different. &lt;br&gt;
We support Go for the Cloud, but think there needs to be an ecosystem for consumption of Go services and potentially extending beyond&lt;br&gt;
where there's no way around using python, java, ruby, rust or javascript. Because Micro's interface is gRPC we code generate gRPC &lt;br&gt;
clients and allow any language to leverage the Micro server.&lt;/p&gt;

&lt;p&gt;In the past multi-language clients have been pain stakingly hand crafted and one thing we learned from building a framework, &lt;br&gt;
it's incredibly hard to replicate this across languages also. With gRPC we've really found a happy medium of saying, there's &lt;br&gt;
a built in service framework you can use to write code really elegantly with Go but gRPC allows us to reduce the scope of the &lt;br&gt;
surface area and provide strongly typed clients that can support a different model of development, one that might have &lt;br&gt;
more scope for pushing microservices to wide scale adoption in a way that wasn't possible with frameworks.&lt;/p&gt;

&lt;p&gt;We additionally include grpc-web generated clients which enable frontend to quickly and easily make use of typed javascript &lt;br&gt;
clients to leverage the same development as the backend. We've seen grpc-web slowly gain adoption internally at various &lt;br&gt;
companies and think this might extend to the public domain fairly rapidly as well.&lt;/p&gt;

&lt;p&gt;See the &lt;a href="https://github.com/micro/micro/tree/master/client/sdk"&gt;micro/client/sdk&lt;/a&gt; directory for the generated clients. These will be &lt;br&gt;
pubished to their respective package managers in the near future.&lt;/p&gt;
&lt;h2&gt;
  
  
  Building API First Services
&lt;/h2&gt;

&lt;p&gt;Micro was built to make microservices development much easier and to increase developer productivity on the backend, beyond &lt;br&gt;
being able to consume those services using gRPC we think the world still really cares about HTTP/JSON based APIs and so &lt;br&gt;
Micro include an API gateway which translates http/json to grpc requests automatically. This means everyone is building &lt;br&gt;
API first services in the cloud without having to do anything.&lt;/p&gt;

&lt;p&gt;Here's a quick example.&lt;/p&gt;

&lt;p&gt;Say you write helloworld on the backend with the following proto&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight protobuf"&gt;&lt;code&gt;&lt;span class="na"&gt;syntax&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"proto3"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kn"&gt;package&lt;/span&gt; &lt;span class="nn"&gt;helloworld&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;service&lt;/span&gt; &lt;span class="n"&gt;Helloworld&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;rpc&lt;/span&gt; &lt;span class="n"&gt;Message&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Request&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;returns&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Response&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;message&lt;/span&gt; &lt;span class="nc"&gt;Request&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;message&lt;/span&gt; &lt;span class="nc"&gt;Response&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="na"&gt;msg&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then expose this as the "helloworld" service on the M3O platform. You'll instantly be able to access this as $namespace.m3o.dev/helloworld/message&lt;/p&gt;

&lt;p&gt;We use path based resolution to map a http request to gRPC. So /[service]/[method] becomes [Service.Method]. If your microservice name doesn't match &lt;br&gt;
the proto for whatever reason (you have multiple proto Services) then it works slightly differently e.g your service name is foobar then the endpoint &lt;br&gt;
becomes &lt;code&gt;/foobar/helloworld/message&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;One neat hack we've picked up from web browser is auto detecting an endpoint so we can shorthand something to something like /helloworld. With the web &lt;br&gt;
if an index.html page is found its served. In our case if we find the &lt;code&gt;Call&lt;/code&gt; method in your proto we'll automatically use it so /helloworld/call just &lt;br&gt;
shortens to /helloworld.&lt;/p&gt;

&lt;p&gt;With Stripe, Twilio, Segment and others become huge API players, we think the world is going in that direction and you are probably building http apis &lt;br&gt;
too. So Micro builds in this in as a first class primitive. In future we'll also look to include support for graphql.&lt;/p&gt;
&lt;h2&gt;
  
  
  Ten Commands
&lt;/h2&gt;

&lt;p&gt;Alright so we talk a good game, but how easy is it? Well lets show you.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Install the micro binary&lt;/span&gt;
curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://install.m3o.com/micro | /bin/bash

&lt;span class="c"&gt;# Set env to dev for the free environment in the cloud&lt;/span&gt;
micro &lt;span class="nb"&gt;env set &lt;/span&gt;dev

&lt;span class="c"&gt;# Signup before getting started&lt;/span&gt;
micro signup

&lt;span class="c"&gt;# Create a new service (follow the instructions and push to Github)&lt;/span&gt;
micro new helloworld

&lt;span class="c"&gt;# Deploy the service from github&lt;/span&gt;
micro run github.com/micro/services/helloworld

&lt;span class="c"&gt;# Check the service status&lt;/span&gt;
micro status

&lt;span class="c"&gt;# Query the logs&lt;/span&gt;
micro logs helloworld

&lt;span class="c"&gt;# Call the service&lt;/span&gt;
micro helloworld &lt;span class="nt"&gt;--name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;Alice

&lt;span class="c"&gt;# Get your namespace&lt;/span&gt;
&lt;span class="nv"&gt;NAMESPACE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;micro user namespace&lt;span class="si"&gt;)&lt;/span&gt;

&lt;span class="c"&gt;# Call service via the public http API&lt;/span&gt;
curl &lt;span class="s2"&gt;"https://&lt;/span&gt;&lt;span class="nv"&gt;$NAMESPACE&lt;/span&gt;&lt;span class="s2"&gt;.m3o.dev/helloworld?name=Alice"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Easy right? We see this as the common flow for most service development. Its a fast iterative loop&lt;br&gt;
from generating a new template to shipping it and querying to make sure it works. There's &lt;br&gt;
additional stuff in the developer experience like actually writing the service but we think that's &lt;br&gt;
a separate post.&lt;/p&gt;
&lt;h2&gt;
  
  
  Documentation
&lt;/h2&gt;

&lt;p&gt;Another thing we really learned from the past is nothing like this works without great documentation &lt;br&gt;
and tutorials. So we've written a whole suite of docs for Micro available at &lt;a href="https://micro.mu"&gt;micro.mu&lt;/a&gt; &lt;br&gt;
and provide help for using the M3O on &lt;a href="https://m3o.dev/"&gt;m3o.dev&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;You can find other interesting resources at &lt;a href="https://github.com/micro/awesome-micro"&gt;Awesome Micro&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;
  
  
  Licensing
&lt;/h2&gt;

&lt;p&gt;Micro continues to remain open source but licensed using &lt;a href="https://polyformproject.org/licenses/shield/1.0.0/"&gt;Polyform Shield&lt;/a&gt; &lt;br&gt;
which prevents the software for being picked up and run as a service. This is to contend with AWS and others &lt;br&gt;
running open source for profit without contributing back. It's a longer conversation for another day.&lt;/p&gt;
&lt;h2&gt;
  
  
  Motivations
&lt;/h2&gt;

&lt;p&gt;We really believe that writing software for the cloud is too hard. That there's far too much choice and &lt;br&gt;
time wasted focusing on how to piece everything together. There are tradeoffs to adopting a PaaS but &lt;br&gt;
ultimately our focus is &lt;strong&gt;developer productivity&lt;/strong&gt;. By choosing one tool and one way we stop thinking &lt;br&gt;
about the how and just get down to what we're trying to build.&lt;/p&gt;

&lt;p&gt;M3O and Micro 3.0 look at the state of distributed systems development in the cloud native era and &lt;br&gt;
try to drastically simplify that experience with a platform that bakes in the development model &lt;br&gt;
so you can just get back to writing code.&lt;/p&gt;
&lt;h2&gt;
  
  
  Deprecating Go Micro
&lt;/h2&gt;

&lt;p&gt;We will now be ending support for &lt;a href="https://github.com/micro/go-micro"&gt;go-micro&lt;/a&gt;. Having personally &lt;br&gt;
spent 6 years since inception on go-micro I feel as though its time to finally let it go. What &lt;br&gt;
started as a tiny library to help write Kubernetes-as-a-Service back in 2014 turned into a widely &lt;br&gt;
used open source framework for Go microservices development. Having now amassed more than 14k stars &lt;br&gt;
you might wonder why we leave it behind. The truth is, while it solved a problem for many it never &lt;br&gt;
became what it was intended for.&lt;/p&gt;

&lt;p&gt;Go Micro was built on the premise that developers need a simpler way to build distributed systems. &lt;br&gt;
With strongly defined abstractions and a pluggable architecture it did that well but that became &lt;br&gt;
really unwieldy to manage. With an MxN matrix of complexity, Go Micro became the thing it was &lt;br&gt;
trying to fight against. As we attempted to hone on this platform effort, it just became very &lt;br&gt;
clear that to do that we'd need to start fresh.&lt;/p&gt;

&lt;p&gt;Go Micro will live on as an independent library under my own personal account on GitHub but &lt;br&gt;
it will no longer be supported as an official Micro project. Hopefully it finds second life in &lt;br&gt;
some other ways but for now we say goodbye.&lt;/p&gt;

&lt;p&gt;If you'd like to upgrade from Go Micro v2 to Micro v3 please see this &lt;a href="https://dev.to/v2-to-v3-upgrade-guide"&gt;upgrade guide&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;
  
  
  Next Steps
&lt;/h2&gt;

&lt;p&gt;You can use the Micro 3.O as a self-hosted open source solution locally, on a VPS or managed kubernetes, &lt;br&gt;
whatever works for you. Our goal is to facilitate a vastly superior developer experience for building &lt;br&gt;
services in the Cloud. Come join &lt;a href="https://discord.gg/hbmJEct"&gt;Discord&lt;/a&gt; or &lt;a href="https://slack.m3o.com"&gt;Slack&lt;/a&gt; &lt;br&gt;
to chat more about it. And lastly head to to &lt;a href="https://m3o.com"&gt;m3o.com&lt;/a&gt; if you're tired of the way you're &lt;br&gt;
building software for today and want to learn of a better way that's going to make you 10x more productive.&lt;/p&gt;

&lt;p&gt;So to revisit. To get started for free in the cloud based dev environment just run the following commands.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Install the micro binary&lt;/span&gt;
curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://install.m3o.com/micro | /bin/bash

&lt;span class="c"&gt;# Set the env to the dev environment&lt;/span&gt;
micro &lt;span class="nb"&gt;env set &lt;/span&gt;dev

&lt;span class="c"&gt;# Signup before getting started&lt;/span&gt;
micro signup

&lt;span class="c"&gt;# Create a new service (follow the instructions and push to Github)&lt;/span&gt;
micro new helloworld

&lt;span class="c"&gt;# Deploy the service from github&lt;/span&gt;
micro run github.com/micro/services/helloworld

&lt;span class="c"&gt;# Check the service status&lt;/span&gt;
micro status

&lt;span class="c"&gt;# Query the logs&lt;/span&gt;
micro logs helloworld

&lt;span class="c"&gt;# Call the service&lt;/span&gt;
micro helloworld &lt;span class="nt"&gt;--name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;Alice

&lt;span class="c"&gt;# Get your namespace&lt;/span&gt;
&lt;span class="nv"&gt;NAMESPACE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;micro user namespace&lt;span class="si"&gt;)&lt;/span&gt;

&lt;span class="c"&gt;# Curl it via the public http API&lt;/span&gt;
curl &lt;span class="s2"&gt;"https://&lt;/span&gt;&lt;span class="nv"&gt;$NAMESPACE&lt;/span&gt;&lt;span class="s2"&gt;.m3o.dev/helloworld?name=Alice"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you want to test things out locally first&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# start the server locally&lt;/span&gt;
micro server

&lt;span class="c"&gt;# set the environment to local&lt;/span&gt;
micro &lt;span class="nb"&gt;env set local&lt;/span&gt;

&lt;span class="c"&gt;# login using user: admin pass: micro&lt;/span&gt;
micro login
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And that's it! Please come chat with us in &lt;a href="https://discord.gg/hbmJEct"&gt;Discord&lt;/a&gt; or &lt;a href="https://slack.m3o.com"&gt;Slack&lt;/a&gt; and &lt;br&gt;
&lt;a href="https://m3o.dev/getting-started/invite-users"&gt;invite friends&lt;/a&gt; to test out the M3O platform.&lt;/p&gt;

&lt;p&gt;To learn more about the M3O platform see the dev docs at &lt;a href="https://m3o.dev"&gt;m3o.dev&lt;/a&gt;. And for the open source docs &lt;br&gt;
check out &lt;a href="https://micro.mu"&gt;micro.mu&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;
&lt;em&gt;Written by Asim Aslam&lt;/em&gt;&lt;br&gt;
&lt;br&gt;&lt;br&gt;
Founder &amp;amp; CEO Micro&lt;/p&gt;

</description>
      <category>go</category>
      <category>cloud</category>
    </item>
    <item>
      <title>The value line in 2020: Dev vs Ops</title>
      <dc:creator>Asim Aslam</dc:creator>
      <pubDate>Fri, 11 Sep 2020 12:39:01 +0000</pubDate>
      <link>https://forem.com/m3o/the-value-line-in-2020-dev-vs-ops-4e4b</link>
      <guid>https://forem.com/m3o/the-value-line-in-2020-dev-vs-ops-4e4b</guid>
      <description>&lt;p&gt;Hat tip to my friend James Watters (&lt;a href="https://twitter.com/wattersjames"&gt;@wattersjames&lt;/a&gt;) for teaching me about the value line.&lt;br&gt;&lt;br&gt;
What is the value line? The value line is how you distinguish what's core to your business vs what you can and should outsource. In today's world we outsource a lot of things as non-core concerns but somehow continue to blur the line when it comes to Dev and Ops.&lt;/p&gt;

&lt;p&gt;I'm here to talk to you about the value line in 2020.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's my priority?
&lt;/h2&gt;

&lt;p&gt;The real question you have to start with is, what's my priority? What problem am I solving? Who's my user or customer? When you start with these questions then you begin to uncover where the focus really needs to lie. So let's begin with a thought experiment.&lt;/p&gt;

&lt;p&gt;Alice is setting up a new business. For this example let's say its a Neobank focused on Millenials...&lt;/p&gt;

&lt;p&gt;She's identified a real problem, as a millenial herself she understands the pains of managing money in 2020, trying to keep track of spending and what's worse, dealing with her bank over the phone or going to a branch when there's a problem. Banking just wasn't built for her. She's got a great idea, what if a bank was built just for her.&lt;/p&gt;

&lt;p&gt;Alice sets out to solve the problem with an MVP. Her and one other engineer (Joe) figure out how much they need to build to make something like this work. They'll need a mobile app, some sort of prepaid card and a way to manage all this on the backend.&lt;/p&gt;

&lt;p&gt;Alice knows how to build html5 apps and Joe is a pretty good full stack dev using ruby on rails plus they've seen that Stripe is a card issuer so they can potentially tap into that real quick. Alice and Joe decide to use Heroku for hosting a rails app with a mysql backend and try get something off the ground using Phonegap. &lt;/p&gt;

&lt;p&gt;Its a convoluted example but here Alice identified the problem was one she felt herself and needed to prototype for quickly. Offloading much of the initial tech requirements to a fully managed PaaS, a card issuer with an API and html to app converter.&lt;/p&gt;

&lt;p&gt;At every stage of your business you need to identify, what's the problem I'm solving and what tradeoffs am I making to solve that problem vs finding a perfectly scalable solution for the future. Basically, what's the value I'm creating and how much operational overhead do I need to incur.&lt;/p&gt;

&lt;p&gt;Let's take it a step further.&lt;/p&gt;

&lt;h2&gt;
  
  
  Initial Traction
&lt;/h2&gt;

&lt;p&gt;Alice and Joe put out the MVP and start getting traction. They're onboarding friends and posting on social media to get some of the initial users. The traction is good and they're starting to grow past a couple hundred users with line of sight to a thousand in a few weeks. They're already feeling the pains of heroku but decide to double down, phonegap performance is also poor so they're trying to find a solution.&lt;/p&gt;

&lt;p&gt;Alice decides they should scale the dynos on heroku, pay for more mysql storage and contract a developer for the app side. If the app is slow the user experience is terrible and that's what matters. Paying for stuff is one thing, but waiting 2-3 seconds for screens to load is terrible. She pays someone part time to start hacking on something for Android since most the users are Android users.&lt;/p&gt;

&lt;p&gt;Heroku has done its part, it seems costly compared to other solutions, but they don't need to manage anything which means more time to spend growth hacking and one less person to pay on the operations side. Phonegap also let them test out the market initially but has outlived it's time, they know now the user experience is what matters.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Scale Out and Break Out
&lt;/h2&gt;

&lt;p&gt;Things are blowing up faster than expected. Always a good thing, but now, everything's on fire. We need to figure out how to deal with the growth in the user base without having to completely rearchitect the stack. We need to break out the hotspots in the code into separate services.&lt;/p&gt;

&lt;p&gt;Joe identifies that the API is super slow since its written in Ruby. The monolithic app has gotten them pretty far but there's alot baked in which could be separated out to be done in a more appropriate language. In this case, the API needs to be something more performant since its handling all the requests. It also just uses a ton of memory.&lt;/p&gt;

&lt;p&gt;This is going to be non trivial on Heroku. They don't really support service oriented architecture. Everything is going to &lt;br&gt;
be a public API call. Talking to the backend is going to get complicated. Joe decides he needs to bite the bullet and &lt;br&gt;
make it work on Heroku, they're invested in it now and it still means they don't have to deal with Ops. &lt;/p&gt;

&lt;p&gt;Joe's been learning some Go and has seen many of the big tech companies adopt in for backend systems. He decides to write &lt;br&gt;
the API in Go and use a message queue in Heroku with Redis to publish anything to the existing monolith that needs to &lt;br&gt;
be processed in the background. Its going to require a bit of change in the Rails app but worth the performance gain.&lt;/p&gt;

&lt;p&gt;The Go API uses a 1/10th of the memory of the Ruby app, it actually only takes 1 dyno to serve all their needs. The monolithic Ruby app has now been left to deal with background job processing and some of the core functionality that was still pretty complex. The first phase of scale out and break out is successful.&lt;/p&gt;

&lt;h2&gt;
  
  
  Moving Beyond Heroku
&lt;/h2&gt;

&lt;p&gt;It's all going great, but now we've maxed out the capacity of heroku. Breaking down into more services is useful but we're &lt;br&gt;
incurring some pretty heavy costs to do it with a full blown PaaS. If we evaluate our costs in relation to our customer basethen we're actually losing money rather than making it. We have to find a better alternative. Heroku was built for &lt;br&gt;
monolithic apps not microservices.&lt;/p&gt;

&lt;p&gt;Pragmatism has gotten Alice and Joe this far. They proved out an MVP, got product/market fit and pushed the current &lt;br&gt;
infrastructure as far as it would go. Now they need to get off Heroku and find a better route forward.&lt;/p&gt;

&lt;p&gt;You're thinking I know exactly what you need to do now. A container platform on a major cloud provider. Just spin up &lt;br&gt;
that managed container orchestrator, learn some yaml, maybe a bit of terraform and off you go. This is where you &lt;br&gt;
need to start thinking very carefully about the value line. That's right we didn't forget about it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Value Line
&lt;/h2&gt;

&lt;p&gt;Getting to the breaking point in terms of scale both technically and organisationally pushes many companies to bring more and more operational burden in house. It is only natural to weigh up the cost of a managed service vs our current needs and assume that self managed is the most appropriate choice for the future. &lt;/p&gt;

&lt;p&gt;The customisation, the cost reduction on the managed service itself, all the possibilities. All without thinking about what the operational cost and maintenance burden is. I'm here to tell you, this, is a pivotal moment in your company's lifetime. &lt;/p&gt;

&lt;p&gt;Deciding where the value line is for your company now will determine where you spend the majority of your time and money &lt;br&gt;
moving forward. Self managed is a sunk cost, a pit that becomes incredibly hard to climb back out of. As much as you may believe you can transition off the in-house approach, we rarely see it happen.&lt;/p&gt;

&lt;p&gt;It is true that when you reach the breaking point of scale you need to start deviating from what worked before. What worked for 1, won't work for 100, won't work for 1000. But it does not mean you need to take on the entire operational burden of the platform owners of today.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Backend for Your Frontend
&lt;/h2&gt;

&lt;p&gt;M3O was born with an understanding of this exact pain. At the breaking point of scale every team and organisation has to make a choice, either move to a self managed platform to do microservices or incur the costs of solutions that were not built for purpose. We felt this pain, so we decided to build a solution.&lt;/p&gt;

&lt;p&gt;M3O is a cloud native development platform for Micro services. We focus on providing a fully managed platform for building &lt;br&gt;
microservices in Go using the open source framework &lt;a href="https://github.com/micro/micro"&gt;Micro&lt;/a&gt;. The goal is to enable &lt;br&gt;
large scale developer productivity on the backend while letting the folks like Netlify focus on the frontend.&lt;/p&gt;

&lt;p&gt;We think this solution works and why we coined the term, "Netlify for your frontend, Micro for the backend".&lt;/p&gt;

&lt;p&gt;Large scale software development is hard. The cloud hasn't made it any easier. In fact we feel like over the past 5 years &lt;br&gt;
if nothing else it's just gotten harder with all these tools promoted by the &lt;a href="https://www.cncf.io/"&gt;CNCF&lt;/a&gt;. We think &lt;br&gt;
things have to change. With millions now expecting online services to scale from day 1, we as software developers need help.&lt;/p&gt;

&lt;p&gt;The backend for your frontend. Let us manage the platform, help your write microservices, be super productive. Let &lt;br&gt;
Netlify deal with the frontend, and talk to us through a single consolidated API. That's right, no need to wrangle &lt;br&gt;
those microservices yourself into a cohesive API, we do it for you. &lt;/p&gt;

&lt;p&gt;When you're thinking about the value line for your business. When deciding whether the future of your company is developing &lt;br&gt;
software or managing the operations of it. Choose development every day of the week by letting us deal with the operations.&lt;/p&gt;

&lt;p&gt;If you're interested to learn more check out &lt;a href="https://m3o.com"&gt;m3o.com&lt;/a&gt; or join us at #m3o-platform on &lt;a href="https://slack.m3o.com"&gt;slack.m3o.com&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>cloud</category>
      <category>programming</category>
      <category>devops</category>
    </item>
    <item>
      <title>Micro v3.0.0 - A framework for cloud native development</title>
      <dc:creator>Asim Aslam</dc:creator>
      <pubDate>Fri, 21 Aug 2020 10:11:26 +0000</pubDate>
      <link>https://forem.com/m3o/micro-v3-0-0-a-framework-for-cloud-native-development-4gco</link>
      <guid>https://forem.com/m3o/micro-v3-0-0-a-framework-for-cloud-native-development-4gco</guid>
      <description>&lt;p&gt;Micro v3.0.0-beta is out! This is a huge departure from the Micro of past. We've now consolidated everything down to a simple server which you can run with the command &lt;code&gt;micro server&lt;/code&gt;. We've also launched Micro as a Service so you don't have to. Check out &lt;a href="https://m3o.com"&gt;https://m3o.com&lt;/a&gt; for that and the blog for more details.&lt;/p&gt;

&lt;p&gt;Micro like Rails and Spring of the past is a development framework. We're focused on making cloud-native development super easy. Hopefully you'll see that in the tooling.&lt;/p&gt;

&lt;p&gt;Feedback welcome!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/micro/micro"&gt;https://github.com/micro/micro&lt;/a&gt;&lt;/p&gt;

</description>
      <category>go</category>
      <category>microservices</category>
      <category>cloud</category>
    </item>
    <item>
      <title>Go Micro - A distributed systems development framework</title>
      <dc:creator>Asim Aslam</dc:creator>
      <pubDate>Sun, 28 Jun 2020 16:33:26 +0000</pubDate>
      <link>https://forem.com/asim/go-micro-a-distributed-systems-development-framework-2ol3</link>
      <guid>https://forem.com/asim/go-micro-a-distributed-systems-development-framework-2ol3</guid>
      <description>&lt;p&gt;Just like Java, the adoption of Go in the Enterprise will be driven a framework. Micro is that framework. Built for the next generation cloud and developers. &lt;a href="https://github.com/micro/go-micro"&gt;https://github.com/micro/go-micro&lt;/a&gt; #microservices #golang #cloud&lt;/p&gt;

</description>
      <category>go</category>
      <category>cloud</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
