본문 바로가기

백엔드

(25)
GraphQL with Prisma2 설계 구조 개발자가 GraphQL 모델(model.graphql)과 대응하는 Prisma 모델(schema.prisma)을 작성해 줍니다. Prisma1에선 GraphQL 모델과 Prisma 모델이 거의 비슷했지만, Prisma2는 약간 달라졌습니다. Prisma CLI를 사용하여 Prisma 모델 구조를 따르는 데이터베이스 테이블을 생성합니다. 참조: Prisma CLI를 사용하여 데이터베이스 테이블 생성 Prisma CLI를 사용하여 Prisma 클라이언트를 생성합니다. 참조: Prisma2 클라이언트 생성 GraphQL 모델(model.graphql)이 뭔가요? 타입, 쿼리, Mutation을 정의해 놓은 graphql 파일입니다. 예를 들어 User라는 타입을 정의할 때는 User가 갖는 속성들 id, na..
Prisma1 vs Prisma2 비교 Prisma1을 사용하려면 2개의 백앤드가 필요했습니다. GraphQL 서버 모듈인 Prisma 클라이언트가 데이터베이스와 직접 통신하는 것이 아니라 GraphQL 서버로 동작하는 Prisma 서버가 데이터베이스와 통신하며, Prisma 클라이언트는 GraphQL 서버와 Prisma 서버간의 중개 역할만 합니다. Prisma CLI를 사용하여 Prisma 서버를 Prisma 개발 서버에 생성할 수 있고, 이렇게 생성된 서버를 heroku에 쉽게 배포할 수 있지만, 번거로울 뿐만 아니라 서버 비용이 추가로 발생하는 문제가 있습니다. 또한 자바 환경에서 동작하기 때문에 메모리 문제가 있을 수도 있습니다. Prisma2는 Prisma 클라이언트에 Prisma 서버의 기능을 통합했습니다. 자바스크립트 모듈인 P..
Prisma2 설치 (CLI, 클라이언트) Prisma CLI(@prisma/cli)와 클라이언트(@prisma/client) 두 개의 모듈을 설치해 주어야 합니다. npm install @prisma/cli --save-dev npm install @prisma/client Prisma CLI는 개발할 때만 사용되기 때문에 --save-dev 옵션을 추가해 줍니다. schema.prisma 파일을 작성한 후에 Prisma CLI를 사용해서 데이터베이스 테이블을 생성하거나 Prisma 클라이언트를 생성할 수 있습니다. 참조: Prisma2 CLI를 사용하여 데이터베이스 테이블 생성 참조: Prisma2 클라이언트 생성 Prisma CLI(@prisma/cli)가 schema.prisma 파일로 부터 Prisma 클라이언트를 ./node_modul..
Prisma란? 데이터베이스 테이블과 쿼리를 만들어주는 도구입니다. User 테이블에서 id가 1인 사용자를 찾아서 반환하는 SQL 쿼리입니다. SELECT * FROM User WHERE id=1 Prisma를 사용하면 다음과 같이 표현할 수 있습니다. 하지만 더 직관적입니다. prisma.user.findOne( where: { id: 1 } ) 보시다시피 데이터베이스에 접근하는 방법은 ORM과 거의 비슷합니다. ORM(Object Relation Mapping)과 다른점은 무엇인가요? Prisma는 테이블에 대응하는 클래스를 직접 만들 필요가 없습니다. 데이터 모델링을 하고, Prisma 클라이언트를 생성하면, 위와 같이 prisma.user을 통해서 User 테이블에 접근할 수 있습니다. 단, Prisma는 항상..
[인스타그램 클론코딩] 사용자 인증 & GraphQL Context 활용 Cognito ID 토큰 복호화 포스트에서 클라이언트에서 보낸 토큰을 복호화해서 userName, 이메일, 토큰 유효성을 얻을 수 있었습니다. 이때 ApolloServer 생성자의 context 속성(함수)을 사용했었는데요. 여기서 context가 반환한 객체는 GraphQL의 모든 Resolvers가 공유할 수 있습니다. 아직 GraphQL, Resolver가 뭐지 모른다면? 추천: 나의 첫번째 GraphQL서버 만들기 handler.js const server = new ApolloServer({ schema, context: async ({ event, context }) => { const authorization = event.headers.authorization || event.headers..
서버리스 GraphQL 백앤드 구축 서버리스 프레임워크 초기화 및 AWS에 연결 포스트에서 생성한 서버리스 설정값을 사용하여 람다 함수를 배포할 것입니다. 1. 서버리스 프로젝트 생성 npx serverless create --template aws-nodejs --path instagureng-backend 2. 패키지 설치 GraphQL API 관련 패키지 npm install apollo-server-lambda graphql 테스트용 패키지 배포하기 전에 로컬 서버 3000포트로 미리 테스트할 수 있도록 해주는 패키지입니다. npm install serverless-offline --save-dev 3. handler.js schema는 typeDefs, resolvers 객체를 포함하는 객체입니다. Prisma와 ID 토큰 관련 ..
서버리스 GraphQL 백앤드 구성 GraphQL이 무엇인지는 구글에서 쉽게 찾을 수 있으니 생략하겠습니다. 추천: 나의 첫번째 GraphQL서버 만들기 이번 포스트에서는 AWS 람다를 사용해서 GraphQL 백앤드를 구축하는 방법에 대해 알아보겠습니다. 노마드 코더님의 인스타그램 클론코딩 강의에서는 GraphQL 서버를 만들기 위해서 graphql-yoga 모듈을 사용했습니다. graphql-yoga는 Node.js에서 GraphQL 서버를 쉽게 설정할 수 있도록 도와주는 Node.js 모듈입니다. 하지만 graphql-yoga 모듈은 항상 동작하고 있는 서버에서만 사용할 수 있습니다. 평소에는 유휴(Cold) 상태로 있다가 사용자 요청이 입력되면 활성화(Warm)되는 AWS 람다 서버에서는 작동하지 않습니다. AWS 람다 서버에서 Gr..
서버리스 프레임워크 초기화 및 AWS에 연결 Amplify CLI와 같이 서버리스 프레임워크도 CLI를 통해 AWS 서비스에 배포되는 프로그램이기 때문에, AWS IAM에서 사용자로 인증되어야 코드를 배포할 수 있습니다. 1. 서버리스 프레임워크 설치 yarn global add serverless 2. IAM 사용자 생성 AWS IAM > 엑세스 관리 > 사용자 > 사용자 추가 프로그래밍 방식 엑세스 체크 Amplify 초기화와 마찬가지로 Access key id와 Secret Access key가 발급됩니다. 한 번만 확인할 수 있으니 잘 저장해 둡시다. 3. 권한 설정 4. 서버리스와 AWS 연결 아래 명령어를 입력하여 serverless CLI에게 Access key id와 Secret Access key를 전달해 줍니다. 는 빼고 입력해야..