
API를 개발하다 보면 비동기적으로 처리해야 하는 무거운 로직을 개발해야 할 순간이 발생한다. 이때 비동기 처리 프로세스를 정리해보려고 한다. 1) 장고 어플리케이션에서 비동기적으로 일을 처리해야 할 때 일단 프론트에 응답(큐 적재 성공 시 200, 적재 실패 시 500)하고, (진짜 결과를 응답하는게 아님, 진짜 로직을 처리한 결과는 Redis에 저장) RabbitMQ에 메세지(비동기task를 가리키는)를 적재한다. 2) Celery Worker는 같은 메세지큐를 바라보게 해서 메세지 가져오고 진짜 task를 수행한다. 3) Worker가 task 수행한 후에 결과를 Redis 서버에 저장한다. 1.RabbitMQ 서버 띄우기 ✔️rabbitmq-server 2. Redis 실행 및 중단 ✔️brew ..

클라이언트에서 요청을 보낸다. 웹서버는 요청을 받는다. 이 때, 동적인 페이지를 요청했다면 WSGI 서버를 호출한다. 웹서버는 Nginx, Apache 같은 소프트웨어이다. 웹 서버의 역할 웹 페이지를 클라이언트로 전달한다. 주로 그림, css, 자바스크립트를 포함한 html 문서가 클라이언트로 전달된다. WSGI 서버는 장고(WSGI를 사용하는 웹 어플리케이션, WSGI는 파이썬에 종속적임) 를 호출한다. WSGI 서버는 장고와 통신할 때 'wsgi.py' 파일을 통해 장고 어플리케이션을 호출한다. 만약 프로젝트의 디렉토리 구조를 커스터마이징하여 settings.py 파일이 이동하게 된다면 그 경로를 여기서 반드시 수정한다. 참고로 장고 내장서버는 WSGI 기능을 자체적으로 포함한다. (python m..

※ 모듈(Module)이란 함수, 변수들의 집합으로 ~.js 파일로 작성됨 모듈로 만들면 여러 프로그램에서 재사용 가능 ※ CommonJS 모듈 - Node.js 기본 module.exports 로 내보낼 객체 또는 함수 지정해야 함 require() 함수로 모듈 가져올 수 있음 require()를 여러 번 실행하더라도 모듈은 한번만 실행 따라서 리턴된 객체 또는 함수는 동일 !! exports 는 module.exports 를 참조한다. exports는 속성 또는 메소드만 작성 가능 module.exports에 새로운 객체를 대입하면 exports는 사용 못함(참조가 깨지기 때문!!! - 주의) ※ ES6 모듈 - Node.js 지원 , React 기본 ECMA Script 2015(ES2015, ES..

1. Node.js 개념 및 내부 구조 크롬 V8 자바스크립트 엔진으로 빌드된 자바스크립트 런타임 런타임: 프로그램들을 실행할 수 있게 해주는 가상 머신이다. [내부 구조] V8 엔진 : 오픈 소스 자바스크립트 엔진 libuv : 노드의 특성인 이벤트 기반, 논블로킹 I/O 모델을 구현한 라이브러리 우리는 Node.js Core Library만 알면 되고, 나머지는 내부적으로 작동된다. 2. Node.js 특징 1. 이벤트 기반 처리 이벤트가 발생할 때 이벤트 핸들러(리스너)에 미리 지정해둔 작업(콜백 함수)을 수행하는 방식이다. -> 즉, 이벤트 기반 처리기 때문에 비동기가 쉬워진다. 2. 논블로킹(=비동기) I/O 처리 오래 걸리는 함수를 백그라운드로 보내서 다음 코드가 먼저 실행 I/O 작업(파일 ..

※ React 특징 뷰(View)만 신경쓰는 프레임워크이다. 사용자 인터페이스만 신경 쓰는 라이브러리이기 때문에 라우팅, 네트워킹은 별도 라이브러리를 이용해야 한다. 사용자 인터페이스를 컴포넌트화(실행가능한 독립적인 객체)시킴으로서 재사용성이 증가된다. 전체 DOM을 변경하지 않고 이전 DOM과 차이가 나는 부분만 업데이트 한다. 지속적으로 데이터가 변화하는 대규모 애플리케이션에 유리하다. -> SPA 특징 CSR(Client Side Rendering, SPA)로 동작하는 것이 기본이다. (검색 엔진 최적화 불가능) SSR(Server Side Rendering, MPA)로 동작하도록 구성될 수 있다. (Next.js는 SSR 방식) React 프로젝트를 개발하는데 필요한 도구들이 Node.js를 사용..

※ 랜더링 위치에 따른 애플리케이션 분류 (SSR vs CSR) 1. 서버 사이드 렌더링(SSR) - Multi Page Application(MPA) ▶ 장점 개발 및 유지보수가 쉬움 검색엔진 최적화(SEO - Search Engine Optimization) 쉬움 ▶ 단점 네트워크 트래픽 증가 서버 처리량 증가 페이지 전환이 느림 ▶ 특징 새로운 DOM으로 라우팅 일부 AJAX 통신 ▶ SSR vs MPA - SSR : AJAX 통신을 통해서 html 코드 조각을 바꿈 - MPA : 페이지 이동 방식 - 공통점 : 둘 다 서버에서 랜더링함. 2. 클라이언트 사이드 렌더링(CSR) - Single Page Application(SPA) ▶ 장점 네트워크 트래픽 감소 서버 처리량 감소 페이지 전환이 빠름..

※ Sequelize 개념 소개 ▶ 우선, Sequelize란 Node.js ORM 프레임워크이다. 기본적으로 DB연결은 네트워크 통신을 필요로하고, 따라서 비동기 처리를 위해 Promise 기반으로 만들어져있다. ▶ Sequelize 하나로 다양한 DBMS (Postgres, MySQL, MariaDB, SQLite, Microsoft SQL Server)를 지원하지만, 각 SQL을 DBMS 특성마다 성능을 최적화시킬 수 없다는 아쉬움이 있다. https://sequelize.org/master/ Manual | Sequelize Constraints & Circularities Adding constraints between tables means that tables must be created i..

※ Express란? 웹 및 모바일 어플리케이션을 위한 강력한 기능을 가진 간결하고 유연한 프레임워크이다. 수많은 HTTP 유틸리티 메소드 및 미들웨어를 통해 쉽고 빠르게 강력한 API 서버 개발 ※ Express Framework 프로젝트 생성하기 1. package.json 생성 npm init 2. express 설치 npm install express 3. nodemon 설치 npm install -D nodemon (-D옵션은 개발용, 배포 시 미포함) (nodemon은 서버 코드에 수정이 발생하면 자동으로 서버를 재시작해줌) 4. package.json 수정 start: nodemon app.js (개발시에는 node 대신에 nodemon 사용) ▶ 프로젝트 폴더 구조 - public : 정적..

※ npm (Node Package Manager) 외부 패키지(모듈)을 npm 서버에서 다운로드해서 사용할 수 있도록 관리 npm 서버에서 패키지 검색할 수 있음 node.js를 설치하면 npm 명령어도 같이 설치됨 (확인 명령어: npm -v) https://www.npmjs.com/ npm Bring the best of open source to you, your team, and your company Relied upon by more than 11 million developers worldwide, npm is committed to making JavaScript development elegant, productive, and safe. The free npm Registry has b..

▷ 인증 방법 3가지 1. 세션 기반 인증 (서버 기반 인증) - 하나의 도메인에서 사용할 때 : 만약 유저가 로그인을 하게 되면, 서버 측에서 유저가 현재 로그인 중이라는 인증정보를 기억하고 있어야 한다. 이 정보를 세션이라고 부른다. 세션을 유지하기 위해서는 메모리, 디스크, 데이터베이스 시스템 등에 담아둔다. 하지만 이러한 방식은 큰 규모의 어플리케이션을 개발하기에 어려움이 있다. ※ 스프링 시큐리티도 세션 기반 인증이다. ※ 세션에는 객체를 저장할 수 있지만, JWT는 문자열 타입만 저장할 수 있다. ※ 세션 기반 인증의 문제점 2가지 ✔️ 세션을 유지하게 될 때, 로그인 중인 유저가 많아지면 메모리 또는 디비의 성능에 무리가 간다. ✔️ 서버 확장이 어렵다. 세션을 사용하면서 분산된 시스템을 설..
- Total
- Today
- Yesterday
- @functools.singledispatch
- 백준2206 파이썬 풀이
- 클래스와객체
- 객체지향개념
- 백준
- nodejs
- yarn start
- 인스턴스멤버
- jdk
- 자바스레드
- 정적멤버
- 사용자정의예외클래스
- @functools.wraps
- os
- 생성자필드메소드
- ES6
- Git
- es6모듈
- 자바스크립트Call-back
- nunjucks
- 익명자식객체
- 자바빌드도구
- 메이븐 저장소
- method와 function
- java
- jre
- dynamic-project
- 자바스크립트Promise
- sequelize.fn
- @functools.lru_cache
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |