본문 바로가기

분류 전체보기

(31)
[개발] GraphQL - Apollo 웹 서버 구축하기 안녕하세요. devport 입니다. 이번 포스팅에서는 NodeJS로 간단한 Apollo 서버를 구축하고 GraphQL Playground로 Query 및 Mutation이 어떻게 동작되는지 자세하게 훑어보려고합니다. 예제는 처음 공식 홈페이지의 서버 구축 예제로 시작하도록 하겠습니다. Npm 설치 npm install --save apollo-server-express express Apollo 라이브러리를 웹서버에 올려 사용할 수있는 환경을 구축하기 위해서 관련 라이브러리를 프로젝트에 설치합니다. server.js 프로젝트 하위에 server.js파일을 생성하여 아래 코드를 삽입하여 줍니다. const express = require('express'); const { ApolloServer, gql ..
[개발] GraphQL - Schema & Type 안녕하세요. devport 입니다. 이번 포스팅에서는 GraphQL의 스키마가 어떻게 구성되고 있는지 알아보도록 하겠습니다. 스키마? GraphQL은 강력한 형식의 스키마를 제공하고 있습니다. 스키마는 클라이언트와 서버간 알아 볼 수 있는 데이터의 계층 구조를 정의하고 있으며 이를 실행할 수 있는 Query 및 Mutation을 정의 할 수 있습니다. 스키마의 장점 스키마는 클라이언트와 서버간의 데이터 및 전송방식을 정의합니다. - 명확하게 정의된 스키마를 사용하면 클라이언트와 서버간의 상호작용에 대한 이해가 더 쉬워집니다. API를 사용하는 동안 클라이언트 / 서버간의 상호 작용에서 발생할 수 있는 잘못된 부분들을 사전에 알 수 있게됩니다. 에러를 사전에 확인 가능합니다. - 정의된 유형에 위배되는 형..
[개발] GraphQL을 알아보자. 안녕하세요 Devport 입니다. 이번에 GraphQL을 적용하는 개인 프로젝트를 진행하면서 느꼇었던 점들을 하나하나 정리해보기 위해서 블로그를 시작하게 되었습니다. 저는 이번 개인 프로젝트에서 DB는 MongoDB를 사용하는 구조를 갖고 있습니다. MongoDB에서는 Join이 쉽지 않아 연관 Collection의 정보를 조회하는 부분이 어려움이 있는데 GraphQL의 연쇄 리졸버 기능으로 유사하게나마 구축할 수 있어 서버 개발에 시간을 단축할 수 있었습니다. 저는 이러한 부분에서 개발의 생산성을 올려줄수 있는 훌륭한 프레임워크라고 생각됩니다. GraphQL? GraphQL은 페이스북에서 2012년 네이티브 모바일 앱으로 GraphQL을 처음 사용하기 시작하였고 2015년 React 컨퍼런스에서 Gra..
Reverse-Proxy를 통해서 Multi Node Process에 Proxy 처리 upstream ffaso-server { ip_hash; server localhost:3000; server localhost:3001; } server { access_log /var/log/nginx/reverse-access.log; error_log /var/log/nginx/reverse-error.log; location / { proxy_pass http://example-server; } } Load balancing methods round-robin(디폴트) - 공평하게 돌아가면서 분배 hash - 해시한 값으로 분배, 사용하려면 "hash " 형태를 사용 ip_hash - 아이피로 해싱하여 분배 random - 랜덤 분배 least_conn - 연결 수가 가장 적은 서버를 선택해서..
PM2를 사용하여 Multi-Node 실행 pm2를 이용하여 nodejs를 관리가 되어야 하므로 global 영역에 설치 되어야 함 npm install -g pm2 아래 파일을 등록하여 node를 여러개 가동 할 수 있도록 한다. var ignoreWatch = [ 'node_modules', 'logs', 'data', 'dist', 'conf' ] // Options reference: https://pm2.keymetrics.io/docs/usage/application-declaration/ module.exports = { apps : [ { name: 'server-1', script: 'index.js', autorestart: true, watch: true, ignore_watch: ignoreWatch, max_memory_r..
무료 SSL인증서 발급 with Let's Encrypt 안녕하세요 devport 입니다. https 사이트를 운영하기 위해선 SSL 인증서가 필수적으로 필요합니다. 무료로 SSL을 설치할 수 있는 Let's Encrypt를 사용하여 제 개인 서버에 적용해보고자 합니다. Let's Encrypt는? 인증서는 3개월이 유효하고 주기적으로 갱신 필요 인증서를 발급받기 위해선 root 권한을 사용 Public 도메인이 할당된 서버에서만 발급이 가능 도메인 인증자 이메일을 계정당 1개의 인증서만 무료 1일 3회 이상 발급을 시도 할 수 없으므로 실수 하지 않도록 주의가 필요 Certbot 설치 Let's Encrypt를 설치하기 위해서는 Certbot을 설치가 필요합니다. # EPEL repository 활성화 $ yum -y install epel-release #..
Nunjucks에 대해 알아보자. 안녕하세요 Devport 입니다. 회사에서 서버는 Flask Framework를 사용하고 있는데요. Flask의 템플릿엔진을 사용하는 페이지 들이 있는데 매번 서버에 도큐먼트를 올려 검증을 하는 과정으로 인하여 Nunjucks 모듈에 대해서 알아보려고 합니다. Nunjucks(넌적스)? Nunjucks는 Javascript를 위해서 강력하고 정교한 템플릿 엔진을 제공 합니다. jinja2에 영감을 받아 개발되었기 때문에 많은 부분에서 Flask의 Template 엔진과 유사한 부분이 많이 있다고 볼 수 있습니다. Nunjucks에서는 Rich: 블록 상속, 자동 이스케이핑, 매크로, 비동기 제어 등의 기능을 제공합니다. Fast & Lean: 브라우저에 미리 컴파일된 템플릿으로 빠른 성능 Extensib..
E2E 테스트 프레임 워크 - Playwright_번역본 안녕하세요 Devport 입니다. 이번에 테스트 프레임워크 중 하나인 E2E에 대해서 스터디 하기 위해서 일단 Github 문서를 번역해두고 추후에도 쉽게 확인하기 위해서 해당 블로그를 작성하였습니다. 의역 및 오역이 있을 수 있을 수 있기 때문에 잘못 번역된 부분은 알려주시면 감사하겠습니다. Playwright? 단일 API로 Chromium, Firefox 및 WebKit을 자동화하는 Node.js 라이브러리 입니다. Playwright는 항상 친환경적이고 유능하고 안정적이며 빠른 크로스 브라우저 웹 자동화를 가능하게도록 구축되었습니다. Linux macOS Windows Chromium 97.0.4681.0 ✅ ✅ ✅ WebKit 15.4 ✅ ✅ ✅ Firefox 93.0 ✅ ✅ ✅ 사용방법 npm..