본문 바로가기

BACK END

(12)
나도 할 수 있다 REST API 채용 공고를 보면 REST에 대한 내용이 정말 많습니다. 그래서 저도 정말 많이 찾아봤는데 처음엔 도통 무슨 말인가 이해가 하나도 되질 않았습니다. 안드로이드에서 Retrofit으로 서버와 통신을 할 때 도, 심지어 그 서버를 내가 만들어 놓고도 REST 방식인지도 몰랐습니다. 그래서 저 같은 사람도 쉽게 이해할 수 있도록 제 방식대로 쉽게 풀어보고자 합니다. 📌 REST 의 정의 우선 REST가 뭔지 검색을 해보면 대개 이렇게 설명을 합니다. REST는 "Representational State Transfer"의 약자로, 자원을 URI(Uniform Resource Identifier)로 표현하고 해당 자원의 상태를 주고 받는 웹 아키텍처 스타일입니다. HTTP 프로토콜을 기반으로 하며, 클라이언트와..
우당탕탕 Node JS Server 다시보기 이미지를 전송 받는 서버를 위해 고군분투 했던 저의 피 땀 눈물을 담은 글입니다. 나중에 똑같은 일을 두번 겪고 싶지 않아서 제가 했던 과정들을 기록해 볼게요 첫번째 난관은 바로 POST 요청 경로를 지정하는 것 이었습니다. Node.JS 서버만 사용했다면 손쉽게 해결할 수 있었을 탠데 저는 Nginx를 사용해서 리버스 프록시를 해놓은 상태였습니다. 즉, 직접 Node 서버에 접근할 수 없고 Nginx가 대신 요청을 받아 서버로 요청을 전송하는 구조입니다. Nginx.config 파일을 한번 살펴보겠습니다. # nginx.conf upstream nodeserver { server node:3000; } server { listen 80; location / { proxy_pass http://nodes..
Error: Connect econnrefused 예... 처음엔 누구나 그럴싸한 계획을 갖고 있죠... 금방 끝날 줄 알았던 도커는 저를 참교육 하기 시작했습니다. 범인은 바로 요녀석입니다. Node에서 MySQL과 연결이 무슨 짓을 해도 안되던 겁니다. 옆친데 덮친격으로 아침 모닝콜로 시원하게 회사 면접 탈락 통보도 받았습니다.😢😢 멘탈은 탈탈 털렸지만 어쩌겠습니다... 예,,, 해야죠 ,,, 다시 삽질을 지구 멘틀 끝 까지 하다 결국 성공했습니다. 그러면서 기존 작성한 코드를 하나하나 분석하게 되어서 한번 살펴 보겠습니다. 작성자의 멘탈이 아주 안좋아 글이 다소 중구난방일 수 있습니다. 우선 파악한 원인은 바로 MySQL을 시작하기 전에 Node Server가 구동되는 것 이었습니다. 대략적인 파일 구조입니다. 디렉토리 별로 맨 위부터 살펴 보자구..
Docker + Node.js + Nginx 4 이번엔 MySQL 이미지를 설치해 보겠습니다.root 경로에 작업 폴더를 생성해줍시다. mysql/conf.d/my.conf에는 다음과 같이 작성해 줍시다. [client] default-character-set = utf8mb4 [mysql] default-character-set = utf8mb4 [mysqld] character-set-client-handshake=FALSE init-connect='SET NAMES utf8' character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci bind-address=0.0.0.0 기본적인 encoding 설정은 제외하고 bind-address=0.0.0.0 은 사용 가능한 모든 네트워크 인터페이스를..
Docker + Node.js + Nginx 3 이번엔 docker-compose를 사용해서 nginx , nodejs multi container 환경을 만들어 보겠습니다. docker-compose란? 단일 서버에서 여러개의 컨테이너를 하나의 서비스로 정의해 컨테이너의 묶음으로 관리할 수 있는 작업 환경을 제공하는 관리 도구입니다. docker-compose를 사용하는 이유 docker-compose를 사용하지 않으면 웹 어플리케이션을 테스트할 때 웹 서버 컨테이너, 데이터베이스 컨테이너 두 개의 컨테이너를 각각 생성해야합니다. 매번 run 명령어에 옵션을 설정해 CLI로 컨테이너를 생성하기보다는 여러 개의 컨테이너를 하나의 서비스로 정리해 컨테이너 묶음으로 관리할 수 있다면 좀 더 편리할 것입니다. 프로젝트 루트 경로에 nginX의 root 경로..
Docker + Node.js + Nginx 2 본격적으로 Visual Studio에서 Docker를 설치하고 개발 환경을 세팅 하겠습니다. node js와 express 기본적으로 설치되어 있다는 가정하에 진행하겠습니다. server.js 파일을 생성하여 다음과 같이 입력해줍니다. const express = require('express') const app = express() const port = 3000; app.get('/', (req, res) => { res.send('Docker with nodejs') }) app.listen(port, () => { console.log(`Example app listening on port ${port}`) }) VS Code를 사용하여 Docker extension을 설치해야 합니다. Exte..
Docker + Node.js + Nginx 1 서론 Node 서버를 만들다 도커를 사용해 Nodejs와 Nginx를 한번에 배포할 수 있는 방법을 보게 됐다. AWS 프리티어가 만료 되서 아마 로컬 환경에서만 서버를 구동 할것 같지만 그래도 잼있어 보여서 도전해보려 한다. Docker 단어 자체의 뜻은 항만에서 컨테이너를 싣는 것과 같은 일하는 노동자를 의미 하는데요, 컨테이너라는 말을 보니까 의미만 봐도 무언가를 싣는 것과 관련이 있어 보입니다. 소프트웨어를 빌드하고 Deploy(배포)할 때 각기 다른 환경에서 하게 된다면 엄청난 비효율이 발생하기 때문에 도커는 바로 이 컨테이너라는 독립적인 환경을 구성할 수 있게 해주는 오픈소스 프로젝트입니다. 도커도 가상화 기술의 한 종류인데 기존 가상화 비교했을 때 기술과 어떤 차이가 있고 어떤 장점이 있어 ..
Node.js Multer 이미지를 저장하는 간단한 Node.js 서버를 만들어보겠습니다. express 프레임 워크는 이전장에서 설치했으니 이 과정은 재끼겠습니다. multer와 mysql2 패키지를 설치 합시다. npm install --save multer mysql2 Multer란? Multer는 파일 업로드를 위해 사용하는 Node.js의 미들 웨어랍니다. multipart/form-data 형식으로 파일 업로드를 지원하기 때문에 가장 많이 사용해요. 첫번째로 필요한 모듈들을 호출해주고 포트 번호를 지정해줍니다. 저는 Node.js를 사용하니 포트 번호는 3000번이네요. const express = require('express'); const multer = require('multer'); const mysql = ..