간단한 환율 정보 api 만들기

혁콩·2023년 6월 4일
0

간단한 CRUD api 서버를 구현하는 과제가 생겼다

문제는 바로..

사용 기술이

  • node.js
  • graphql
  • mongodb

과제 내용을 보자마자 든 생각은 "다들 초면이신데요?" 였다.

그도 그럴게 node.js는 군 복무 중 책보고 며칠 따라해본게 전부였고 (기억이 나지 않습니다..), mongodb는 물론이거와 다른 noSQL또한 사용한적이 전무했으며, graphql이란 녀석 또한 처음 접해봤기 때문이다.

갈 길이 먼 것 같지만 차례대로 공부해보자

먼저

node.js의 express를 통해 api 서버를 만드는 법을 찾아봤다.

[Node.js] 간단한 API 서버 만들기

이것저것 찾아봤는데, node.js로 서버 제작 시, 거의 대부분은 express를 사용했다.

찾아보니 express는 router라는걸 이용해 엔드포인트를 정의하는 것 같다. 즉, 라우터가 컨트롤러 역할을 한다고 생각된다.

근데 비즈니스 로직은 어디에 작성해야 하지?

이에 관해 찾아보니 3 Layer Architecture 라는게 있었다.

엔드포인트 역할을 하는 컨트롤러(router)와 비즈니스 로직을 담당하는 service, 그리고 데이터에 접근할 어떠한 것 (DAO / DTO 등)으로 분리한다고 한다.

mongoDB

mongoDB는 noSQL의 한 종류인데, 간단하게 말하면 관계형 데이터베이스가 아니라는 것이다.
mongoDB는 Table이 아닌 Collection이라는 용어를 사용하며, 고정된 스키마가 없이 "키:값" 쌍으로 저장한다. (JSON과 유사)

설치와 쿼리문을 몇개 따라하면서 어떤 구조인지 확인해보았다.

이제

node.js와 mongoDB를 연결시켜야 하는데, 이때 mongoose라는 ODM을 사용한다고 한다.
Java Application에서 MyBatis나 JPA를 사용하는 것과 비슷한 것 같다.

mongoose api document 에서 간단한 예제와 사용법을 확인할 수 있었다.

어... 근데 뭔가 까먹은 것 같은데..?

Graphql

GraphQL이란?

GraphQL 은 API를 위한 쿼리 언어(Query Language)이며 타입 시스템을 사용하여 쿼리를 실행하는 서버사이드 런타임입니다.

SQL과 같은 쿼리 언어이며, REST api와는 다르게 하나의 엔드포인트로 쿼리문을 날려 관리가 편하고 리소스를 절약할 수 있다고 한다.

graphql은 Schema와 Resolver로 구성되는데,

  • Schema에는 사용할 Query와 Mutation, Type등을 정의
  • Resolver에는 Schema에서 정의한 기능을 구현한다.
  • Query는 조회를 위해, Mutation은 삽입/수정/삭제를 위해 사용

서비스 단에 비즈니스 로직을 작성했기 때문에 리졸버에는 서비스에 구현한 함수를 호출해주었다.

Graphql이 Controller를 대체한다!

프로젝트 구조는 다음과 같이 구성했다.

- graphql // 스키마 및 리졸버 
- mongoose
    - schema // 사용할 스키마 정의, 컬렉션
    - model // mongodb와 연결, 정의한 스키마들을 모아서 관리
- service // 비즈니스 로직

서비스 단에선 mongoose의 api들을 사용해 CRUD를 구현했다.

update가 작동을 안하는데, 해결하기엔 너무 가볍게 공부했고, 시간 또한 부족해서 참 아쉽다.

험난했던 과제였지만

이런저런 새로운 걸 경험해 참 흥미로웠다.
node.js도 나름 재밌는 것 같고, 특히 처음 사용해본 noSQL은 참 괜찮은 것 같다.

추후에 해당하는 기술을 이용해 프로젝트를 진행하게 된다면 기초부터 튼튼히 공부해 시작해야겠다.

profile
아는 척 하기 좋아하는 콩

0개의 댓글