대머리개발자

고랭(goLand) 프로젝트 셋팅 본문

개발이야기

고랭(goLand) 프로젝트 셋팅

대머리개발자 2025. 12. 9. 16:00

지금까지는 코틀린 기반  아르메리아와 R2DBC 를 써왔는데..체이닝 지옥에서 벗어 나고 싶었다.

Mono.zip()
.flatMap()
.thenReturn()

 

가벼운 마음으로 새 출발을 하기 위한  프레임을 찾아보는데

제미나이가 3가지를 추천해 주었다.

 

1. NestJS + Prisma(TypeORM)

개인적으로 노드를... PASS

 

2. Ktor + Komapper

진정한 코틀린을 맛 볼 수 있다고 하지만... PASS

 

3. Go + Ent

1번과 2번은 대에충 맛은 봤기 때문에 ㅋ 전혀 생소한 3번이 땡긴다. 꼬꼬!

 

만들려고 하는 모듈은 단순 사용자간 커뮤니티 모듈이다.

팔로워/팔로잉, 사용자 차단, 알림, 게시글, 댓글등... 전형적인 그래프 데이터라고 Ent하고 어울린다고 하네... 결국  SNS를 만드는것인데.

 

시작 해보자!!!고고

 

 

 

1. GOROOT : Add SDK... 눌러서 설치.

2. Location 에서 내가 만들고자 하는 프로젝트명으로 변경.

 

콘솔에서 필요한 프레임워크 땡겨!!

(야도 그래들/메이븐 같은거 있으면 좋겠네..)

go get -u github.com/gin-gonic/gin
go get entgo.io/ent/cmd/ent
### Postgres
### go get github.com/lib/pq    
go get -u github.com/go-sql-driver/mysql

 

와.. 파일썬에서 pip install 하는 거랑 비슷하네.

 

프로젝트 셋팅은 별거 없네.. 하면서 필요한거 땡기면 된다.

 

일다느 서버가 1초 이내로 기동된다. 

 

하나의 end-point 만들어서 호출 해봤다..

 

이제는 기존 레거시(자바) 말고 작년부터 코틀린으로 만들었는데 이제는 코틀린도 skip 앞으로는 고랭이닷! 꼬꼬!

 

문법은 어색하지만. 그건 AI에게 통해서 차차 진행하면 되고

 

미들웨이에서 인증처리 // 로그 처리 하면 되고    => 필터 

라우터는 end-point                                           => 콘트롤러

핸들러가 서비스 로직.

 

queryDsl 처럼 DB 날리고

func (h *UserHandler) GetUsers(c *gin.Context) { 
    name := c.Query("name")
   
    query := h.client.User.Query()

    if name != "" {
        // WHERE name = ?
        query.Where(user.NameEQ(name)) 
    }


    users, err := query.
        Order(ent.Desc(user.FieldID)). // Order By id DESC
        All(c)

    if err != nil {
        c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
        return
    }

    c.JSON(http.StatusOK, users)
}

 

준나 코딩할 생각에...행복하다... 바뻐야 기분이 좋아 ㅋㅋ

 

 

Go + Ent는 그래프 데이터 설계가 최적이라고... 뭔가 해서 봤더니...이미 나는 적용하고 있던 부분이였네..

 

복잡학 조인 대신.. 필요한 데이터를 독립적으로 불러서 조건으로 만드는 형태 -> 결과론적으로 커버링 인덱스와 같은 개념인거지.

 

조인 -> 조합

 

딱 끝... 이제.. 돈나게 파보자. ㅋㅋ..