서비스개발(Web, App)/Back-End

    Nest JS 프레임워크 공부하기 - TypeORM, MariaDB(mysql) 연동

    Nest JS 프레임워크 공부하기 - TypeORM, MariaDB(mysql) 연동

    오늘은 서비스를 운용하기 위해 필요한 데이터베이스를 직접 연결해보는 방법에 대해서 알아보도록 하자. 오늘날 대부분의 서비스들은 데이터를 저장하고 저장된 데이터로 sight와 의미를 생성해내는 일을 하고 있으며, 이를 실현하기 위해서는 서버와 데이터베이스의 연결은 가히 필수라고 말할 수 있다. 과거 서비스의 데이터베이스를 연동하기 위해서는 데이터베이스 전문가인 DBA가 쿼리를 생성하고, 백엔드 개발자가 해당 쿼리를 JDBC등을 통해 데이터를 받아오는 작업을 했었다. 그렇다 보니 회의를 할 때도, 이 둘 간의 신경전이 꽤나 있었다고 한다... 결국 서비스의 기능은 데이터베이스의 데이터가 핵심이기 때문에 DBA의 권력이 더 강했고, 이에 화가 난 백엔드개발자가 DBA 없이 프로그래밍에만 집중하여 개발할 수 있..

    Nest JS 프레임워크 공부하기 (Node.js) - 3 [DTO, DAO, Entity]

    Nest JS 프레임워크 공부하기 (Node.js) - 3 [DTO, DAO, Entity]

    오늘은 프레임워크에 좀 더 상세히 알아보면서 모듈로 관리하는 방법에 대해 알아보도록 하자. DB까지 접근하기 위한 Framework의 구조는 주로 다음과 같이 구성되며 이전에 Contorller, Service, Repository에 대한 설명을 했었다. [이전 글 참조 : https://roothyo.tistory.com/56?category=1034781] 간단히 설명하자면, Contoller : 해당 서버로 요청이 오는 것을 처리해주는 Router 기능 Service : 유저가 요청한 데이터를 실질적으로 처리하고 Controller에게 건네주는 기능 Repository : 서버에서 DB로 직접 접근하여 데이터를 가져오는 기능 이라고 보면 된다. 그럼 그냥 Framework를 위와 같이 3개의 구조로..

    Nest JS 프레임워크 공부하기 (Node.js) - 2

    Nest JS 프레임워크 공부하기 (Node.js) - 2

    오늘은 Service에 대해 알아보려 한다. Nest는 객체지향적 방식으로 종속성을 설계하기 때문에 서비스, 리포지토리, 팩토리, 헬퍼 등이 프로바이더로 취급되며 사용된다. 서버에서의 처리 과정을 다음과 같이 크게 3가지로 분리된다. Controller - 클라이언트의 요청을 받음 - 요청에 대한 처리는 서비스에게 전담 - 클라이언트에게 응답 Service - 사용자의 요구사항 처리 - DB 정보가 필요한 경우 Repository에게 전담 Repository - DB 관리(연결, 해제, 자원 관리) - DB CRUD 작업 처리 그럼, Nest.js에서 Service를 구현하는 것을 알아보자. 먼저, Nest CLI를 통해 Service를 생성해준다. 서비스 name은 controller와 똑같이 movi..

    Nest JS 프레임워크 공부하기 (Node.js) - 1

    Nest JS 프레임워크 공부하기 (Node.js) - 1

    npm install -g @nest/cli nest new nestJS 시작에 앞서 nest/cli를 npm을 통해 설치를 하고 nest 명령어를 통해 새 프로젝트를 생성한다. npm과 yarn중에 편한 것을 고르면 된다. 필자는 npm을 사용하였다. 처음에 패키지를 시작하기 위해 설치를 하는데 시간이 걸리니까 잠깐 기다리면 알아서 구조와 필요한 dependency를 설치해준다. 만들어진 nest-js 디렉토리를 vscode로 열고 src 파일을 보면 코드 구조는 다음과 같으며, 각각의 설명이 있다. src ㄴapp.controller.spec.ts app.controller.ts app.module.ts app.service.ts main.ts app.controller.ts 하나의 라우트가 있는 기..

    Nest JS 프레임워크 공부하기 (Node.js) - 0

    서비스를 구현하기 위해 처음으로 배웠던 기술 스택은 Node.js였다. 당시에는 구현을 할 수 있으면 된다고 생각했고, 가볍게 구현하기 쉽다는 소리를 들었기 때문이다. 또한 프론트에서도 js 백엔드에서도 js를 활용하면 1가지 언어로 2가지를 다 구현 가능한 것이 마음에 들어 시작하게 되었다. 3학년과 4학년 동안 꾸준히 서비스를 만들어보고, 해커톤도 나가보니, 점점 코드의 체계적인 구조가 필요하다는 것을 깨닫았고, 당시에는 따로 프레임워크를 배우지 않고, 주로 사용하는 구조를 직접 나누고 구현했다. 물론 Java Spring이나 Nest.js에 대해 들어보기도 했으나, 당시 새로운 기술을 배우고 적용할 시간이 부족할 뿐더러 아직 필요성을 느끼지 못했다. 그러나 졸업학기가 되고 취직 준비를 하면서 기업의..

    Node.js ioredis(Redis) 외부 접속

    socket io를 사용한 채팅서버 개발중에 local과 server에서의 db를 통합시키기 위해서, ioredis로 외부 접속을 하기 위한 방법에 대해 정리하기 위하여, 포스팅을 한다. 먼저 로컬에서 Redis 인스턴스를 선언하는 부분이다. const Redis = require("ioredis"); const redisClient = new Redis({ host: 'Domain or IP', port: port, }); module.exports = redisClient; host 부분에 도메인 혹은 IP를 입력하고 port 부분에 열린 port를 넣어주면 된다. 그리고 Redis의 config도 바꿔주어야 한다. /etc/redis/redis.conf 파일을 수정해준다. #bind 127.0.0...

    socket.io에서 사용되는 Redis (Pub/Sub 구조)

    socket.io에서 사용되는 Redis (Pub/Sub 구조)

    Redis 의 Publish / Subscribe 구조 : 발신자(게시자)가 특정 수진자(구독자)에게 메시지를 보내도록 프로그래밍 되지않은 pub/sub 메시징 패러다임이다. 게시된 메시지는 구독자에 대한 정보 없이 채널로 특성화된다. 구독자는 하나 이상의 채널에 관심을 표하게 되면, 오직 관심있는 pub들의 메시지들만 받게 된다. foo와 bar 채널을 구독하기 위해 client는 다음의 명령어를 실행한다. SUBSCRIBE foo bar 다른 클라이언트가 foo나 bar에 보낸 메시지들은 구독한 client에게 pushed 됩니다. Pub/Sub는 key에 대해 일체의 간섭이 없게 만들어졌습니다. 1보다 숫자가 많은 10번 db에서 publising 하더라도, 1번 db에서 subscribe 할 수 ..

    Redis란?? (Redis 정의 및 설명)

    Redis는 오픈소스의 In-memory 방식의 데이터 저장 소프트웨어이며, 데이터베이스, 캐쉬, 메시지 브로커(message broker; 송신자의 메시지 프로토콜 형식으로부터의 메시지를 수신자의 메시지 프로토콜 형식으로 변환하는 중간 컴퓨터 프로그램 모듈)로써 사용된다. Redis는 String, Hash, list, set, sorted set의 데이터 구조를 사용하고 있으며, replication(복제), Lua scripting (루아 스크립트), LRU eviction (LRU 캐싱방식), transactions (트랜잭션), and different levels of on-disk persistence (다른 레벨의 디스크 지속성)등의 사용된다. Redis는 원자성 실행(atomic oper..