나만의 주소 검색엔진 만들기 (Prisma)

·2022년 10월 23일
0

삽질

목록 보기
8/11

이번 작업은 나만의 사이드프로젝트같은 느낌으로 진행이 된 것이라, 힙한(?) 스택을 모조리 다 써보고 싶었다.

gql은 팀프로젝트에 써봤어서 감흥은 없었지만, Prisma가 너무 써보고 싶었고. 그래서 한번 사용해봤다.

솔직히 자세한 사용법은 알아봐야하고 쿼리빌더만큼 자유롭게 쿼리를 날릴 수는 없는 상태다(하하...)

Prisma 초기 세팅하기!

간단했는데 난 바보라 간단하게 못했따..

  1. npm install prisma --save-dev
    의존성 깔고
  2. npm i @prisma/client
    연결해주는 클라이언트 깔고
  3. npx prisma init
    초기 세팅(폴더와 함께 schema.prisma 파일이 생긴다.)
  4. npx prisma db pull instead
    URL을 세팅하고 사용하면 해당 DB의 테이블을 끌어온다.
  5. npx prisma generate
    파일에 정의한 테이블에 접근을 할 수 있게 된다.
const address = await this.prisma.main_address.findMany({
      where: { ZIP_NO: zipCode },
    });

그래서 코드로 짤 때는 이렇게 짰다!

조금은 다른 도커파일 세팅

TypeORM이라면 필요 없었던 제너레이트라는 작업이 필요해서, 도커파일을 조금 다르게 작성해야한다.

  • 이건 내가 과거 팀프로젝트에서 썼던 도커파일 (TypeORM)
FROM node:14

WORKDIR /myfolder
COPY ./package.json /myfolder/
COPY ./yarn.lock /myfolder/
RUN yarn install

COPY . /myfolder/
CMD yarn start:dev
  • 이번에 Prisma 적용한다고 새로 작성한 도커파일
FROM node:18

WORKDIR /backend
COPY ./package.json /backend/
COPY ./package-lock.json /backend/

RUN npm install
COPY . /backend/

COPY ./prisma /backend/
RUN npx prisma generate

CMD npm run start:dev

그러타 prisma 폴더도 카피해서 넣어주고, npx prisma generate까지 들어가야한다!

docker-compose에서 함께 돌아가는 DB의 host는 뭐지?

평소에 잘하다가 갑자기 헷갈려가지고(....) 좀 헤멨다!

근데 Logstash에서 잘 넣어놨는데 prisma 연결할때 헷갈림 (멍청아..)

로컬에서 연결할 때는 보통 localhost 혹은 127.0.0.1로 연결한다.

근데 도커내부에서 연결할 때는 이 방식이 안된다.

애초에 로컬호스트가 아니라고 하셨는데, 이 부분은 조금 찾아보긴 해야할 것 같다.
결국은 한 컨테이너 내부에서 돌아가.......니지만 로컬이 아니긴 한게 맞겠는데(?)

아무튼 docker-compose 기준으로 작성되어있는 service의 이름을 넣어주면 된다

요로코롬!

Decimal를 그래프큐엘에서 정의해보기.

아, 지금보니 테이블 정의를 잘못했다 ㅎㅎ; 그냥 INT 적어놓으면 됐는데...

아무튼 소수점을 표기하는 테이블 정의 방식 중 하나인데, 그래프큐엘에서 이게 정상적으로 지원을 안한다.

그래도 우리는 써야하는데, 그러면 보통 누군가 만들어놨다(?)

npm i prisma-graphql-type-decimal

번외로 이런 녀석도 있다

import { GraphQLJSONObject } from 'graphql-type-json';


이렇게 대략 4일간의 작은 나만의 프로젝트가 끝났다.

실제 프로덕션에 도입할 수 있는지, 안정성은 어떠한지, 신뢰도는 어느정도가 되는지는 검증이 필요하겠지만
다양한 것을 경험해볼 수 있었고 내가 써보고 싶었던 ELK STACK을 사용해본 것.

그리고 이유를 찾아서 제안을 하고, 내가 직접 구현까지 이렇게 할 수 있는 사람이라는 것을
나 자신에게도 알려준 것 같아서 기분이 정말 좋아졌다.

물론 그 과정 중에서 이것저것 알려주신 분이 계시지 않았더라면 지금도 열심히 땅을 파고 있었을 것 같은데(...)
그래도 이렇게 만들어서 너무 기뻤고 4일동안 정말 하드하게 작업을 한 것 같다.

이번 주말에 약속이 취소되서, 토요일에는 14시간, 일요일에는 11시간 가깝게 작업을 한 것 같은데....
돌아오는 주간은 조금 널널하게 하던가 하루 연차를 쓰고 조금 쉬는 시간이 필요할 것 같다.

재밌었다! 그리고 프로덕션에 내가 만든 주소 검색엔진이 도입되면 좋겠다 :>

profile
물류 서비스 Backend Software Developer

0개의 댓글