데이터 베이스, HTTP, 소켓, Kafka를 이용한 go언어 기반 백엔드 서버 기본 모델
Language: go (go1.21.9)Database: mariadbweb framework: gorillacommunication: kafka, tcp/ip, restful api, sse
gobesvrbase
- http RestApi and SSE 기능을 제공
- Kafka and Tcp/ip 기능을 제공
- Database access(mariadb)
- 프로세스간 통신은 shared memory를 이용함
- CLI 기능을 제공(디버깅, 상태테크 등)
apimp: 메인 프로세스, 하위프로세스의 동작을 관리apisvr: 백엔드 프로세스, http, sse, kafka, tcp/ip, database access의 기능을 수행cli: Client line interface
- 메인 패키지
- apisvr package tree
├── main
├── app
│ ├── appmodel `[global model package]`
│ ├── dbapp `[Database interface package]`
│ │ └── mdb `[mariadb access package]`
│ ├── httpapp `[http api, sse package]`
│ ├── msgapp `[network message processing package]`
│ ├── netapp `[tcp/ip 통신 패키지]`
│ ├── kafkatapp `[kafka message consume and produce 패키지]`
│ └── objdb `[Object management package]`
└── comm `[tcp/ip wrapper package]`
- cli package tree
├── main
└── cmd `[command processing package]`
- $sh make.sh
- move bin directory : $cd ./bin
- execute process : apimp
/gettest: get test api, 응답 : "{"result":0,"data":[{"Dt":"2024-08-05 17:09:33","Val":1}],"reqdata":null}"/posttest: post test api, 응답 : "{"result":0,"data":"PostTest","reqdata":null}"/deltest: delete test api, 응답 "{"result":0,"data":"DelTest","reqdata":null}"/netcmd: request network command(소켓을 통한 메세지 전송)/events: SSE, send server time every 1sec (YYYY-MM-DD HH:MM:SS)
- command list
* help
* system
* version
* process
* debug
* exit
* termiante
- help : show help message
- system : show system infomation
- version : show application version infomation
- process : show process state infomation
- debug : change logging level
- exit : quti cli
- terminate : terminate all process



