Golang ORM library / gorm, xorm, sqlboiler, 비교
백엔드를 개발하다 보면 적절한 ORM library 선정도 중요하다. Golang을 공부하고 있기 때문에, Golang ORM을 선정해야해서 공부를 해봤는데, 각각 장단점이 있는 것 같아서 찾아 정리해봤다. 예전에 gorm을 사용했을 때는, 당시에 가장 많이 쓰여서 사용했었던 기억이 있다. 현재에도 가장 많이 사용하는 듯 찾아보면 장점은 열심히 README에 적어두고 단점은 잘 안적는 듯 그래서 찾아봤다. GORM Star나 Fork의 갯수로 라이브러리를 평가하는 것은 적합한 방식은 아니지만.. 참고용으로 둘러보곤 한다. 다른 라이브러리에 비해 Fork, Star수가 가장 많고 최근까지 꾸준하게 commit이 되는 것 같다. 장점 - preloading, Join, callbacks, plugin, RD..
2023. 2. 19.
Golang Gin Graceful restart, stop / golang, go, 고랭, 고, 언어
Graceful restart, stop은 gin framework에서만 사용하는 것이 아니라, 모든 프로세스에 적용이 가능한 작업이다. Graceful은 말그대로 우아한 종료, 재시작의 의미인다. 프로그래밍적으로 보자면 Network의 관점에서 보면 될 것 같다. - client에서 server로 요청이 들어와서 server에서 아직 처리 중 일때 - client와 server간 keep-alive나 websocket같은 protocol로 연결이 유지되고 있을 때 앞선 상황에서 서버가 강제로 종료되거나 재시작 된다면 client입장에서는 정상적인 response를 받을 수 없게 된다. 이럴 때 필요한 것이 graceful restart, stop이다. Golang Gin Graceful restart,..
2023. 2. 16.
Golang Gin Router / golang, go, 고랭, 고, 언어, 라우터
Golang Gin Router 저번에 이어서 기본적으로 web server를 배울 때 Router가 기본이라고 생각이 들어서, Router에 대해 찾아봤다. Vue / React를 할때도 Router를 기본으로 셋업하긴 했다. 저번에 이어서 바로 Router를 적용하면 package main import ( "github.com/gin-gonic/gin" "net/http" ) func setupRouter() *gin.Engine { r := gin.Default() v1 := r.Group("/api/v1") { v1.GET("/ping", func(c *gin.Context) { c.JSON(200, gin.H{ "message": "pong", }) }) v1.GET("/hello/:name",..
2023. 2. 4.