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]()