전체 글 (1210) 썸네일형 리스트형 postgreSQL wal_level postgreSQL의 wal_level은 기본으로 replica로 설정되어 있지만, CDC를 활용하여 다른 데이베이스에 저장하려하면 postgreSQL의 wal_level을 logical로 바꿔야만 동작합니다.왜 그냥 하면 안되지? 하는 마음에 wal_level에 대해서 정리해보았습니다. 1. WAL (Write-Ahead Logging)과 wal_levelPostgreSQL의 WAL은 데이터베이스 변경 사항을 로그에 기록하여 데이터 복구와 복제를 지원합니다.wal_level은 WAL 데이터를 어떤 수준으로 기록할지를 제어하며, PostgreSQL은 다음 세 가지를 제공합니다.minimal: WAL 로그를 최소 수준으로 기록. 데이터 복구를 위한 최소한의 정보만 포함.replica: WAL 로그에 데이.. kafka를 이용한 서버 아키텍처 구현 저번 글에 이어서 kafka를 이용해서 구현해 보겠습니다. (지난번 포스팅 : https://uiandwe.tistory.com/92183 )큐 역활을 했던 redis 대신 kafka를 사용하는 이유는 대용량 메시지처리와 함께 팬아웃(갑작스런 대규모 요청) 등을 빠르고 안전하게 서비스 하기 위해 kafka를 사용합니다. 단점으로는 kafka를 운영하는 시간과 filaover 지점이 늘어나게 됩니다. 주요 구성 요소FastAPI 웹 서버: 요청을 받아 작업을 kafka 토픽에 넣습니다.kafka: Queue 역할을 합니다.Worker: 토픽에서 작업을 가져와 처리합니다. 처리 완료확인을 위해 redis에 데이터를 넣습니다.redis : 캐시 역활 Kafka는 메시지를 처리한 후 상태를 저장하는 기능이 기.. redis pub/sub을 이용한 서버 아키텍처 구현 Pub/Sub(발행-구독) 아키텍처는 비동기적 데이터 흐름과 확장성이 필요한 상황에서 주로 사용됩니다.일반적으로 다음의 상황들에 적용하게 됩니다.- 이벤트 기반 시스템 ( 이메일/푸시 알림 , 데이터 실시간 업데이트)- 마이크로서비스 간 통신 (주문 처리 시스템, 사용자 인증)- 스트리밍 데이터 처리- 데이터 동기화- 장애 복구 및 재처리 (결제 시스템)- 확장 가능한 비동기 작업 처리 ( 백그라운드 처리 ) 이번 예제에서는 Redis와 Python의 FastAPI를 사용하여 비동기 웹 서버를 만들고 관리하는 설정을 구성할 수 있습니다. 아래는 전체적인 구성 예제입니다.주요 구성 요소FastAPI 웹 서버: 요청을 받아 작업을 Queue에 넣습니다.Redis: Queue 역할을 합니다.Worker: R.. 1-5. Node.js 이벤트 루프 https://nodejs.org/ko/learn/asynchronous-work/event-loop-timers-and-nexttick Node.js — The Node.js Event LoopNode.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.nodejs.org Node.js가 시작되면 이벤트 루프를 초기화하고 제공된 입력 스크립트를 처리하거나 비동기 API 호출, 일정 타이머 또는 호출을 수행한 다음 이벤트 루프 처리를 시작합니다. 이벤트 루프의 연산 순서를 간략하게 나타낸 것입니다. ┌───────────────────────────┐┌─>│ timers ││ └──────────.. 1-4. 콜백 지옥 "콜백 지옥"이란, 비동기 함수에서 여러 개의 콜백을 중첩시키는 구조로 인해 코드가 들여쓰기(Indentation) 깊이가 많아지고 복잡해지는 현상을 의미합니다. Express 서버에서도 비동기 작업을 콜백으로 처리하다 보면 이런 현상이 발생할 수 있습니다.아래는 콜백 지옥을 만든 간단한 Express 서버 예시입니다. 이 서버는 여러 비동기 작업을 콜백을 이용해 처리하는 방식으로 구성되어 있습니다.예시 코드: 콜백 지옥const express = require('express');const app = express();// 예시로 사용할 비동기 함수들 (콜백을 사용하는 비동기 함수들)function step1(callback) { setTimeout(() => { console.log.. 7-4 express 404 페이지 핸들링 메인 화면 만큼 가장 중요한 페이지가 바로 404 페이지 입니다!!저의 경우 웹싸이트의 404 페이지가 웹싸이트의 개성을 가장 잘 살린다고 생각합니다.(가장 사소할지도 모르는 페이지를 어떻게 꾸미느냐에 따라서 깊이 있는 개발이라고 생각합니다.)쨋든! express 에서 404 페이지 핸들링(은 다른 페이지들도 똑같은 방법으로 핸들링 가능합니다.)은 간단합니다!! 다음과 같이 서버 코드 부분에 추가해주면 404 에러를 리턴하게 됩니다.// 404 핸들러: 정의된 라우트 외의 요청에 대해 404 반환app.use((req, res) => { res.status(404).send('404 - Page Not Found');}); 만일 서버사이드 랜더링으로 ejs를 사용한다면 다음과 같이 추가해주면 됩.. 7-1 웹프레임워크 express 시작! Express 는 노드기반의 웹 개발 프레임워크입니다. 앞써 node의 기본 http 모듈 만으로도 기초적인 웹은 제작 가능합니다. 단순히 몇페이지의 웹이라면 말이죠. 프레임워크의 쓰임새는 반복되는 작업의 최소화라고 생각합니다. 웹개발에선 반복되는 작업이 무수하게 많습니다. 그작업을 조금이라도 줄이기 위해선 우린 프레임워크를 써야하죠. 이번장은 간단하게 express 의 간단한 화면 띄우기로 부터 ejs , jade까지 외부모듈을 사용한 웹 개발 프레임워크입니다. express 의 공식 홈페이지는 http://expressjs.com 입니다. 가이드라인과 API들을 둘러보시면 더욱 좋습니다. 1. 먼저 express 를 설치 합니다. 제가 설치한 버전은 express@4.21.2 버전이군요. sudo.. 4-2 npm 을 이용해서 모듈 의존 관리하기 npm 을 통해서 java의 maven 같이 모듈의 의존성 관리를 할수 있습니다. 그것도 엄청 간단합니다. 1. 먼저 npm init 를 통하여 의존성 관리를 할 package.json 파일을 만들어야 합니다. 원하는 이름 버전 설명 라이센스 정책 등을 물어보지만 이름만 써준후 엔터로 다 넘기셔도 됩니다. npm init 2. 해당 폴더에 package.json 파일이 생성된것을 보실수 있습니다. 3. 이제 모듈하나를 설치해 보겠습니다. 다른점이 있다면 -g 옵션으로 글로벌로 설치합니다. sudo npm install -g request 4. 모듈이 설치된후 package.json 파일을 열어보면 dependencies 목록이 생성되었으며 방금 설치한 모듈명과 버전이 기록된 것을 확인할수 있.. 이전 1 2 3 4 5 6 7 8 ··· 152 다음