반응형

web

    테스트 모듈 Assert 정리

    Assert는 node.js의 단위 테스트를 하기위해서 제공되는 테스트 모듈이다. 해당 모듈의 주요 메소드를 정리해보자. Assert 메소드 정리 // 모듈 로드 const assertion = require('assert');assertion.ok(object)인자값이 true가 아니면 에러assertion.ifError(object)인자값이 false가 아니면 에러assertion.equal(object, object) 두 개의 인자를 == 으로 비교 assertion.notEqual(object, object)두 개의 인자를 != 으로 비교assertion.staticEqual(object, object)두 개의 인자를 === 으로 비교assertion.notStaticEqual(object, ob..

    node.js express 모듈 - router

    Express 모듈은 node.js에서 핵심 모듈인 http와 connect 컴포넌트를 기반으로 하는 웹 프레임워크이다. 여기서 사용되는 router 기능에 대해 정리해보자.기본적으로 express 모듈을 사용하기 위해서는 다음과 같이 모듈을 로드해야한다. router 의 기본 형태는 다음과 같다. 123456const express = require('express');const router = express(); // 기본 동작 형태router.get('/' , (req, res, next) => { });Colored by Color Scriptercs 기본 router 등록은 위와 같다. http 요청 메서드에 따라 메서드의 이름은 post, put, delete등으로 변경해서 사용하면 되고 첫번..

    node.js에서 NODE_ENV를 사용하여 개발, 운영 환경 구분하기.

    express에서는 NODE_ENV라는 환경변수를 통해 개발환경과 운영환경에 따른 설정정보를 다르게 가져올 수 있다. 설정방법 Mac1export NODE_ENV=productioncs Window1set NODE_ENV=productioncs 사용방법expreess 모듈에서 process.env.NODE_ENV 값을 접근하여 저장된 환경설정 값을 가져올 수 있다. 아래와 같이 설정했을 때 환경설정이 없거나 developer이면 config/developer.js 파일을 읽어서 정보를 읽고 productiond이면 production.js 파일을 읽어온다. 이런 방식을 사용해서 개발과 운영에서 사용되는 db 정보 등등을 구별해서 사용할 수 있다.123456789101112131415161718192021..

    Node js 테스트 프레임워크 Mocha

    회사에서 node.js를 이용해서 백엔트 프로젝트에 참여하게 되어서 새롭게 node.js를 공부하게 되었다. 그러면서 node.js에서 새롭게 사용할 테스트 프레임워크를 찾던중 mocha라는 것을 발견했다. Mocha - node.js에서 사용하는 테스트 프레임워크로써 suite를 만들어서 unit 테스트를 가능하도록 제공해주는 프레임워크이다. 설치방법 mocha는 Node.js 6.x 버전 이상이부터 지원한다.123npm i mocha -g npm i --save-dev mochacspackage.json에 해당 스크립트를 추가해준다.123"script" : { "test" : "mocha"}cs 사용방법root 경로에 test directory를 생성하고 javascript를 추가한다. 그리고 des..

    Spring Boot Cross Domain 처리

    웹 브라우저에서 같은 도메인을 사용하는 서비스에 대한 요청은 정상적으로 처리가 되나 도메인이 같지 않은 서비스에 요청을 할경우에 오류가 발생한다. 이는 동일 출처 정책(Same Origin Policy) 라는 정책을 두어 다른 도메인의 서버에 요청하는 것을 보안 문제로 간주하고 이를 차단하는 것 때문에 발생한다. Spring Boot에서 간단한 방식으로 해결할 수 있다. 1. 요청에 @CrossOrigin 애노테이션 붙히기12345@GetMapping("/greet")@CrossOriginpublic Greet greeting() { return new Greet("test");}Colored by Color Scriptercs 2. 특정 도메인에서 오는 요청만 받고 싶을 경우.-> 특정 도메인에서 오는..

    스프링 웹플럭스(spring webflux)를 활용한 간단한 리액티브 마이크로 서비스

    자바 리액티브 프로그래밍은 리액티브 스트림 명세를 바탕으로 하고 있다. 리액티브 스트림 명세에는 컴포넌트 사이의 비동기 스트림 처리나 이벤트 흐름을 Non Blocking 방식으로 처리하기 위한 문법을 정의한다. 일반적인 옵저버 패턴과 달리 리액티브 스트림에는 시퀀스의 처리, 완료 알림, 실패시 backpressure 적용 등이 추가된다. backpressure는 받는 컴포넌트에서 보내는 컴포넌트에게 얼마만큼의 데이터를 소화할 수 있다고 알려줄 수 있다. 그래서 받는 컴포넌트에서 처리될 준비가 됐을 때만 데이터를 받을 수 있다. 그래서 서로 속도가 다른 컴포넌트 사이의 통신을 할 때 유리하다. 스프링 프레임워크 5 web flux는 Reactor 리액티브 스트림 명세를 기반으로 되어있다. 간단한 Spri..

    리액티브 스트림의 이해

    리액티브 스트림은 총 4개의 인터페이스로 구성되어 있다. ㅁ 발행자(Publisher) - 데이터의 소스를 가지고 있으며 Subscriber의 요청이 오면 데이터를 발행한다. 구독자는 발행자에 대한 구독을 추가할 수 있다. Subscribe 메소드를 통해서 구독자를 추가할수 있다.123public interface Publisher { public void subscribe(Subscriber

    스프링 부트와 RabbitMQ를 사용한 리액티브 마이크로 서비스

    publisher와 subscriber가 외부의 메시지 큐(RabbitMQ)와 연결되어 있는 애플리케이션을 만들어보자. Rabbitmq 설치 - 자세한 설치법은 검색을 해서 찾아보면 간단하게 나온다. - 하단의 내용은 local docker가 설치되어 있을때 docker-compose.yml을 작성할때 붙혀넣으면 된다. rabbitmq: image: rabbitmq:management ports: - "5672:5672” // 연결 포트 - "15672:15672” // 관리자 페이지 포트 (localhost:15672) Maven 의존성 추가1234 org.springframework.boot spring-boot-starter-amqpColored by Color Scriptercs Sender 클래..

    리액티브 마이크로 서비스 정리

    동일한 마이크로서비스는 서로 공유 및 통신하게 되어있다. 예를 들면 주문과 결재, 배송서비스들은 서로 공유되어있다. 이 서비스들의 호출 관계를 단순하게 동기 방식으로 호출하게 된다면 강한 의존성을 가지게 되기 때문에 마이크로 서비스의 강점을 충분하게 살릴 수 없다. 결국 모노토릭 서비스와 크게 다를게 없어진다. 그래서 도입되는 개념이 리액티브 마이크로 서비스이다. 리액티브 프로그래밍은 회복성(resilient), 응답성(responsive), 메시지 기반(message driven), 탄력성(elastic) 이렇게 4가지 기둥이 존재한다. 서로간에 마이크로서비스가 독립적으로 되어있기 때문에 특정 부분에 문제가 발생하면 해당 마이크로서비스의 복제본이 이를 대체할 수 있다. 하지만 이렇게 격리가 되었다고 해..

    Facebook Javascript plugin과 spring security를 이용한 페이스북 로그인

    개인적으로 공부겸 만들고 있는 Wedul Pos에는 아이디와 패스워드를 사용해서 로그인하는 방식을 제공했다. 하지만 페이스북 로그인 방식을 추가해보고 싶어서 facebook 개발자 사이트에 가입하여 정보를 얻고 추가해봤다. 우선 페이스북 로그인 방식을 처리하는 방식은 Facebook Javascript plugin을 사용하여 spring security에서 인증을 하는 방식과 /sign/facebook 요청만 front에서 보내면 server에서 모든 처리를 진행하는 방식 두가지가 있다. 그 중에 첫번째 javascript plugin을 이용하는 방식을 사용해서 구현해보자. 1. facebook developer 사이트에서 javascript 내용 얻기 https://developers.facebook...

반응형