일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- JWT
- NoSQL
- 숙제
- 개발일지
- SQL
- 위키백과
- Node.js
- Transaction
- nginx
- cors
- post
- HTTPS
- 항해99
- 부트스트랩
- 4주차
- 노드 윈스턴
- 2주차
- 1주차
- Sequelize
- MongoDB
- 3주차
- 비동기
- 트랜잭션
- OpenAPI
- node winston
- 스파르타코딩클럽
- 웹 스크래핑(크롤링)
- Get
- 5주차
- db
- Today
- Total
목록
728x90
전체 글 (110)
얼음꽃의 일지
Helmet은 Express로 만들어진 웹 사이트의 보안을 강화하기 위해 사용되는 모듈입니다. npm install helmet const helmet = require("helmet"); // 헬멧의 모든 기능 사용 app.use(helmet()); // 헬멧의 특정 기능 사용 app.use(helmet.contentSecurityPolicy()); app.use(helmet.dnsPrefetchControl()); app.use(helmet.expectCt()); app.use(helmet.frameguard()); app.use(helmet.hidePoweredBy()); app.use(helmet.hsts()); app.use(helmet.ieNoOpen()); app.use(helmet.noSn..
WebSocket 과 Socket.io는 사용하는 방향성에 따라 차이가 있으나, 이게 무조건 좋아 , 저게 무조건 나빠라는 부분은 없습니다. 그러나 Socket.io가 WebSocket보다는 평안한 부분이 있는건 사실입니다. Websocket - 엄청나게 가벼워서 단순한 사용에 적합 - 누구인지에 따라 절대적인 통제권을 가짐 - 로깅, 구독, 방, 네임스페이스, 자동복구 등 기술들이 없으므로 모두 직접 구현 - 디자인을 먼저 디버깅해야 하는데 시간이 오래 걸림 - http처럼 한번 요구하고 한번 받고 끝인 형태가 아닌 실시간으로 상태저장하면서 사용 - 서버 계층이 각각의 개별 websocket 연결을 추적하고 상태 정보를 유지 및 관리를 해야하기 때문에 대규모 처리가 까다로움 - 일부 브라우저는 webs..
서버를 돌리다보면 이런 생각 듭니다. 개발중에서는 로컬을 켜서 돌려가지고 오류 생겨서 멈추면 오류 확인하고 고치고 다시 돌려보고 할 수 있지만, 다 만들고 배포를 하게되면 그때는 오류로 인해 꺼지면 안되고, 계속 실행을 시켜놔야합니다. 즉, 1. 서비스 사용 도중 오류로 인해 서버가 꺼지는 문제를 해결 2. Node자체가 싱글 스레드인데 이걸 늘리는 문제를 해결 ( 클러스터링 ) 이때, 사용할 수 있는게 PM2(Process Manager 2) 입니다. PM2 는 백그라운드 프로세스를 쉽게 관리할 수 있는 생산 등급 프로세스 관리자입니다. 이걸 사용하게되면 모니터링, 로그확인, 애플리케인션 배포가 간단해 집니다. 거기다 메모리가 넘친거나, 오류로 인해 강제종료 등 문제가 생겨도 알아서 자동으로 켜집니다...
아키텍처 패턴이란? - 소프트웨어의 구조를 구성하기 위한 가장 기본적인 토대를 제시 - 각각의 시스템들과 그 역할이 정의되어 있고, 여러 시스템 상이의 관계와 규칙 등이 포함되어 있음 - 검증된 구조로 개발을 진행하기 때문에 안정적인 개발 가능 - 도메인이 복잡할수록 모델이나 코드를 더 쉽게 변경할 수 있는 측면에서 큰 이익 대표적인 아키텍처 패턴 - 저장소 패턴(Repository Pattern) : 영속적인 저장소에 대한 추상화 - 서비스 계층 패턴(Service Layer Pattern) : 유스 케이스의 시작과 끝을 명확하게 정의하기 위한 패턴 - 작업 단위 패턴(Unit Of Work Pattern) : 원자적 연산을 제공 - 애그리게이트 패턴(Aggregate Pattern) : 데이터 정합성..
트랜잭션 : 여러 개의 작업을 하나로 묶어서 실행하는 것입니다. 좀 더 자세히 말하자면 데이터베이스에서 트랙재션은 데이터베이스 관리 시스템 또는 유사한 시스템에서 상호작용의 단위입니다. 단일 트랜잭션은 DB 내에 읽거나 쓰는 여러 개 쿼리를 요구합니다. 이때, 중요한 것은 데이터베이스가 수행된 일부 쿼리가 남지 않는 것입니다. 예를 들면, 송금을 할 때 한 계좌에서 인출되면 다른 계좌에서 입금이 확인되는 것이 중요합니다. 즉, 자신의 계좌에서 돈이 차감되고 나서 돈을 받은 계좌에서 입금이 되어야하는데 차감만 될뿐 입금이 안되면 돈이 증발 하기때문에 이런일이 발생하면 처음부터 다시 하도록 rollback 해주는 것입니다. 만약 문제가 없으면 그때는 commit을 해주는 것이구요. 이게 트랙잭션의 한 과정이..
NoSQL : No + SQL 이 아니라 Not Only SQL 이라는 뜻으로 SQL뿐만 아니라 라는 의미가 있습니다. 즉, SQL 뿐만 아니라 다른 데이터베이스도 존재한다라는 뜻입니다. SQL(관계형 데이터베이스)은 대표적으로 MySQL, Oracle 등이 존재하고 NoSQL(비관계형 데이터베이스)은 대표적으로 MongoDB, Redis 등이 존재합니다. RDBMS 가 있는데 NoSQL이 나온 이유는 다음과 같습니다. - ACID의 완화 - 수평 확장 가능한 분산 시스템 - Schema의 정의가 없음 그럼 RDBMS와 NoSQL의 차이점은 무엇인가? RDBMS NoSQL 데이터 모델 정규화와 참조 무결성이 보장된 스키마 스키마가 없는 자유로운 데이터 모델 트랜젝션 강한 ACID 완화된 ACID 확장 수..
Nginx는 로드 밸런스 처리에 특화된 경량 웹 서버 프로그램이다. Nginx를 서버 앞 단에 두어 Express가 사용하는 실제 포트를 숨기고 Nginx의 80번 포트를 통해 Reverse proxing 함으로써 보안 이슈를 방지하고, Nginx의 여러 기능도 사용할 수 있다. 클라이언트로부터 요청을 받았을 때 요청에 맞는 정적 파일을 응답해 주는 HTTP Web Server로 활용되기도 하고, Reverse Proxy Server로 활용하여 WAS 서버의 부하를 줄일 수 있는 로드 밸런서로 활용되기도 한다. Nginx는 Event-Driven 구조로 동작하기 때문에 한 개 또는 고정된 프로세스만 생성하여 사용하고, 비동기 방식으로 요청들을 Concurrency 하게 처리할 수 있다. Nginx는 새로..
CORS 란? CORS 는 Cross -Origin Resource Sharing의 약자로 교차 출처 리소스 공유라고 합니다. 브라우저가 로드를 허용해야하는 자체가 아닌 다른 출처를 서버가 나타낼 수 있도록 하는 HTTP 헤더 기반 메커니즘이고, 서버가 실제 요청을 허용하는지 확인하기 위해 브라우저가 교차 출처 리소스를 호스팅하는 서버에 "프리플라이트" 요청을 하는 메커니즘에 의존합니다. * 프리플라이트 : CORS 실행 전의 요청으로 CORS 프로토콜이 이해되고 서버가 특정 메서드와 헤더를 사용하여 인식하는 확인하는 CORS 요청입니다. 프리플라이트는 자동으로 실행되며 일반적인 경우 프론트 엔드 개발자는 이러한 요청을 직접 작성할 필요가 없습니다. request가 "to preflighted"로 규정되..