github.com/tickoalcantara12/micro/v3@v3.0.0-20221007104245-9d75b9bcbab9/docs/introduction/README.md (about)

     1  ---
     2  title: Introduction
     3  keywords: micro
     4  tags: [micro, overview]
     5  sidebar: home_sidebar
     6  permalink: /introduction
     7  summary: Introduction - A high level introduction to Micro
     8  ---
     9  
    10  ## Introduction
    11  {: .no_toc }
    12  
    13  This is a high level introduction to Micro
    14  
    15  ## Contents
    16  {: .no_toc }
    17  
    18  * TOC
    19  {:toc}
    20  
    21  ## About
    22  
    23  Micro is a platform for cloud native development. It addresses the key requirements for building services in the cloud. 
    24  Micro leverages the microservices architecture pattern and provides a set of services which act as the building blocks of a 
    25  platform. Micro deals with the complexity of distributed systems and provides simpler programmable abstractions to build on.
    26  
    27  <img src="{{ site.baseurl }}/images/micro-3.0.png" />
    28  
    29  Micro is the all encompassing end to end platform experience from source to running and beyond built with a developer first focus.
    30  
    31  ## Goals
    32  
    33  Micro's goal is to abstract away the complexity of building services for the Cloud. The cloud itself has gone through a huge 
    34  boom through managed Compute and infrastructure services from the likes of AWS and others. It's taken what was an operational 
    35  burden and turned it into a suite of fully managed on demand services which can be used via APIs.
    36  
    37  This has opened up the category of Cloud as Mobile did in the early 2000s but it has yet to define a development model to 
    38  effectively leverage these services. In fact we think the definition of a "Cloud Service" is yet to be determined and 
    39  the category of Cloud will likely shift to a vertically integrated solution that looks more like an operating system 
    40  bundled with cloud infrastructure rather than self installation and management.
    41  
    42  Think of Micro as Android for Cloud.
    43  
    44  ## Features
    45  
    46  Below are the core components that make up Micro.
    47  
    48  **Server**
    49  
    50  Micro is built as a microservices architecture and abstracts away the complexity of the underlying infrastructure. We compose 
    51  this as a single logical server to the user but decompose that into the various building block primitives that can be plugged 
    52  into any underlying system. 
    53  
    54  The server is composed of the following services.
    55  
    56  - **API** - HTTP Gateway which dynamically maps http/json requests to RPC using path based resolution
    57  - **Auth** - Authentication and authorization out of the box using jwt tokens and rule based access control.
    58  - **Broker** - Ephemeral pubsub messaging for asynchronous communication and distributing notifications
    59  - **Config** - Dynamic configuration and secrets management for service level config without the need to restart
    60  - **Events** - Event streaming with ordered messaging, replay from offsets and persistent storage
    61  - **Network** - Inter-service networking, isolation and routing plane for all internal request traffic
    62  - **Proxy** - An identity aware proxy used for remote access and any external grpc request traffic
    63  - **Runtime** - Service lifecycle and process management with support for source to running auto build
    64  - **Registry** - Centralised service discovery and API endpoint explorer with feature rich metadata
    65  - **Store** - Key-Value storage with TTL expiry and persistent crud to keep microservices stateless
    66  
    67  **Framework**
    68  
    69  Micro additionally contains a built in Go framework for service development. 
    70  The Go framework makes it drop dead simple to write your services without having to piece together lines and lines of boilerplate. Auto 
    71  configured and initialised by default, just import and get started quickly.
    72  
    73  **Command Line**
    74  
    75  Micro brings not only a rich architectural model but a command line experience tailored for that need. The command line interface includes 
    76  dynamic command mapping for all services running on the platform. Turns any service instantly into a CLI command along with flag parsing 
    77  for inputs. Includes support for multiple environments and namespaces, automatic refreshing of auth credentials, creating and running 
    78  services, status info and log streaming, plus much, much more.
    79  
    80  **Dashboard**
    81  
    82  Explore, discover and consume services via the browser using Micro Web. The dashboard makes use of your env configuration to locate the server 
    83  and provides dynamic form fill for services.
    84  
    85  **Environments**
    86  
    87  Finally Micro bakes in the concept of `Environments` and multi-tenancy through `Namespaces`. Run your server locally for 
    88  development and in the cloud for staging and production, seamlessly switch between them using the CLI commands `micro env set [environment]` 
    89  and `micro user set [namespace]`.
    90  
    91  ## Development
    92  
    93  Micro focuses on the microservices development model, which takes from the unix philosophy of writing tools that do one thing well. 
    94  We think the domain boundary you've come to know at the database table level in Rails monolithic web apps moves to service 
    95  boundaries at the network and naming layer.
    96  
    97  For example a blog app might consist of posts, comments, tags and so on as tables in a Rails app, but in Micro these 
    98  would be defined as independent services. These as Micro services which do one thing well and communicate over the 
    99  network or via pubsub messaging where necessary.
   100  
   101  Micro is built with this Service development model in mind which is why the underlying platform defines the primitives required 
   102  to write those along with accessing them from external means. Micro includes a Go service framework that makes it super 
   103  simple to get started fast.
   104  
   105  ## Cloud Services
   106  
   107  We think the definition of a Cloud Service is one that helps you build the next Twilio or Stripe. Cloud services are looking 
   108  more and more like something built to be consumed entirely as an API. So Micro builds with that model in mind. You write 
   109  microservices on the backend and stitch them together as a single API for the frontend.
   110  
   111  Micro provides an API gateway that handles HTTP/JSON requests externally and converts them to gRPC for the backend. This 
   112  massively simplifies the experience of building efficient highly performant services on the backend which are decoupled 
   113  from each other but presenting a single view to the consumers.
   114  
   115  ## Remote First
   116  
   117  Micro was built with the knowledge that not only do we exist in a multi-environment model but one that's remote first. Because 
   118  of that we build in a gRPC identity proxy for CLI and local services that enables you to remotely connect to any Micro server 
   119  securely and access those services and resources with your credentials stored in the Auth service.
   120  
   121  You can assume not only are your services built for a Cloud first era but that your access to them is in that manner also.
   122  
   123  ## Micro Services
   124  
   125  Check out the [micro/services](https://github.com/micro/services) repository for example services.
   126  
   127  ## Getting Started
   128  
   129  Head to the  [getting started](/getting-started) guide to start writing Micro services now.
   130