github.com/aacfactory/fns@v1.2.85/README.md (about)

     1  # Fns
     2  
     3  ---
     4  
     5  Fn services for Golang. Simplify the development process by using standardized development scheme. Every thing is function.
     6  
     7  ## Features
     8  * [x] Applicable to enterprise projects
     9    * [x] [Standardization]()
    10    * [x] Environmental [configuration]()
    11    * [x] Rapid development by [code-generations]()
    12    * [x] Built in [authorizations]() service
    13    * [x] Built in [permission]() service
    14    * [x] Built in [metric]()
    15    * [x] Built in [tracing]()
    16    * [x] Traceable and searchable [error]()
    17    * [x] Searchable [log]()
    18  * [x] High concurrency
    19    * [x] Goroutines pool
    20    * [x] Fasthttp
    21    * [x] [Barrier]()
    22  * [x] TLS
    23    * [x] Standard 
    24    * [x] [SSC]() 
    25    * [x] [ACMEs]() 
    26  * [x] Cluster
    27    * [x] [sharding]()
    28    * [x] [Hazelcast]() 
    29    * [x] [Redis]()
    30  * [x] Official services 
    31      * [x] Database
    32        * [x] [SQL]()
    33          * [x] [Distributed transaction]() 
    34          * [x] [Postgres ORM]() 
    35          * [x] [Mysql ORM]()
    36        * [x] [Redis]()
    37      * [x] Message queue
    38          * [ ] RabbitMQ
    39          * [x] [Kafka]()
    40          * [ ] RocketMQ
    41      * [ ] Third party integration
    42        * [ ] Oauth
    43        * [ ] Payments
    44        * [ ] SMS
    45        * [ ] Notifications
    46  * [x] [Documents]()
    47    * [x] Openapi
    48    * [ ] Official
    49  
    50  ## Quickstart
    51  ### Creation
    52  First: install `fns` commander.
    53  ```shell
    54  go install github.com/aacfactory/fns/cmd/fns@latest
    55  ```
    56  Second: use `fns` create a fns project.
    57  ```shell
    58  mkdir {your project path}
    59  cd {your project path}
    60  fns init --mod={mod_name} . 
    61  ```
    62  Third: look `main.go`, `configs`, `modules` to understand [project structure](https://github.com/aacfactory/fns/blob/main/docs/structure.md). 
    63  
    64  Last: add [dependencies]() and setup [config]().
    65  
    66  ### Coding
    67  1. First: create a [service]() ident.  
    68  2. Second: create a [function]().  
    69  3. Last: run `go generate` to generate source codes.
    70  4. Happy coding. 
    71  
    72  ### Running
    73  Setup `FNS-ACTIVE` env, such as `FNS-ACTIVE=local`, that the `fns-local.yaml` is used.
    74  
    75  ### View documents
    76  Setup [documents](), then done, so easy.
    77  
    78  ### Testing
    79  * Use [tests]() to make writing test units easy.
    80  * Use [pprof]() to analysis of profiling data.
    81  
    82  ## Cluster
    83  Use [hazelcast]() or [redis](), and create a [proxy]() server as gateway, then done, so easy.   
    84  When used in `kubernetes`, then [inject](https://kubernetes.io/zh-cn/docs/tasks/inject-data-application/environment-variable-expose-pod-information/) pod ip into `FNS-HOST`, and set `env` into config field `cluster.hostRetriever`.
    85  
    86  ## Customize transport
    87  * [Server]()
    88  * [Middleware]()