본문 바로가기

전체 글

(156)
브라우저 보안정책 CORS (Cross-Origin Resource Sharing)CORS는 원래 브라우저가 서버의 데이터를 보호하기 위해 존재하는 정책입니다. 브라우저는 기본적으로 출처(Origin)가 다른 요청을 차단하여, 악의적인 웹사이트가 임의로 API를 호출하는 것을 막음.Same-Origin Policy (SOP, 동일 출처 정책) :  브라우저는 현재 열려 있는 HTML 파일이 실행된 **출처(origin)**와 다른 출처에서 파일을 직접 가져오는 것을 제한합니다.출처(Origin)는 프로토콜 + 도메인 + 포트번호로 구성됩니다.보안 위협 예시: CORS가 없다면?1. 사용자가 https://bank.com에 로그인 (쿠키가 자동 포함됨)2. 사용자가 악성 사이트(https://hacker.com)를 방문3...
네트워크 접근제어(NAC) ; NAT, 방화벽 네트워크 보안 전체분류네트워크 보안 (Network Security) ├── 네트워크 접근 제어 (NAC) ← 네트워크에 "누가" 접근 가능한지 결정 │ ├── 방화벽 (Firewall) ← 특정 IP/포트 접근 허용/차단 │ ├── 보안 그룹 (Security Group) ← 클라우드 환경의 접근 제어 │ ├── ACL (Access Control List) ← 네트워크 장비에서 접근 제한 │ ├── VLAN 보안 ← 네트워크 내부 트래픽 분리 │ ├── MAC 필터링 ← 특정 MAC 주소만 허용 │ ├── 802.1X 인증 ← 사용자 인증을 통한 네트워크 접근 제어 ├── 침입 탐지 및 차단 (IDS/IPS) ← 네트워크 공격 탐지 및 차단 ├── VPN (Virt..
RabbitMQ 구현 RabbitMQ 핵심 요소요소설명Producer (생산자)메시지를 RabbitMQ에 전송하는 역할 (IP와 Port로 rabbitMQ 식별)Exchange (교환기)메시지를 큐에 전달하는 역할 (Producer가 보낸 routing key로 Queue 맵핑)Queue (큐)메시지가 저장되는 공간 ( Consumer가 ip,port, id, pw, virtualHost로 consumer로 등록)Consumer (소비자)큐에서 메시지를 가져와 처리하는 역할 (Consume역할은 queue의 이름으로 맵핑하여 consume)  . Exchange 유형Direct자주사용특정 Routing Key가 일치하는 Queue에만 메시지를 전달 / 특정 로그 레벨 (error, warning, info)을 필터링하여 전-..
제로베이스 연습프로젝트 : 매장 테이블 예약 서비스4 - MQ, Websocket 기능확장 도입 필요성 : 비즈니스 시나리오  매장주인이 예약을 거절할 경우에 손님은 즉시, 이 내용에 대해서 알림을 받을 필요성이 있다. 이를 위해서 웹소켓 방식을 도입하여 서버에서 request가 없는 상황에서도 알림을 발송하게끔 하고자 한다.또한, 매장 주인이 예약을 거절할 경우에 DB에 status 변경작업도 일어나야 하기 때문에, 웹소켓 발송 서비스와 DB 저장 서비스를 비동기적으로 실행시켜서 결합도를 느슨하게 하고자한다. 설계검토 : 동기화할 task와 비동기 task 식별동기화할 작업 : DB저장과 MQ Task Produce는 동기화 되어야된다. 왜냐하면, 예약상태 변경과 DB저장은 핵심적인 비즈니스 로직이기 때문에 이 작업이 미완료 되었는데 MQ task Produce는 생성되면 거짓 알람이 되는..
Blocking / Non-Blocking I/O 어플리케이션 레벨에서의 I/O 처리방식 I/OInput과 Output, 데이터의 입출력OS 상의 I/O의 종류로 Network(Socket), file, pipe, device가 존재함.네트워크 통신은 socket을 통해서 데이터가 입출력되며, 네트워크 요청자들은 각각 소켓을 열고 통신한다 Blocking I/O (블로킹)I/O 작업을 요청한 프로세스/스레드는 요청이 완료될때까지 블락됨 Non-Blocking I/O (논블로킹)프로세스/스레드를 블락시키지 않고 요청에 대한 현재상태를 즉시 리턴요청을 보낸 후 해당 요청이 완료될 때까지 기다리지 않고 즉시 제어권을 반환합니다.요청을 처리하는 작업은 별도의 메커니즘(콜백, Future, 이벤트 루프 등)을 통해 비동기적으로 실행됩니다.   논블락킹 I/O 결..
메시지 큐, RabbitMQ, Kafka 개념 메세지란?메시지(Message)는 정보를 전달하기 위한 데이터 단위메세지큐란 ? 'Non-Blocking I/O 기반의 비동기화 미들웨어로, Producer와 Consumer를 분리하고 Queue에 이벤트를 임시 저장하여 비동기 메시징을 구현.' 메시지 큐의 기본 개념Producer(생산자): 메시지를 생성하여 큐에 삽입하는 역할Consumer(소비자): 큐에서 메시지를 꺼내 처리하는 역할Broker(중개자): 메시지를 큐에 저장하고 전달하는 메시징 시스템 (예: RabbitMQ, Kafka, Redis Pub/Sub) 메시지 큐 도입이유메시지 큐를 활용하여 내재된 동기기능을 외부화하고, 비동기 병렬처리를 통해 부하를 분산하며, I/O Block 방지하여 자원을 효율적으로 사용할 수 있음  동기적으로 다..
AI 영상분석과 websocket + message broker WebSocket에서 "확장성"이란 단순히 보관하는 데이터 양을 의미하는 것이 아니라,👉 "서버가 얼마나 많은 WebSocket 연결을 동시에 유지하고, 메시지를 효율적으로 전달할 수 있는가?" 를 의미해.👉 즉, 트래픽 증가에 따라 WebSocket 연결을 어떻게 관리할 것인가에 대한 개념이야.🔹 1. WebSocket에서 "확장성(Scalability)"이 중요한 이유📌 WebSocket은 **"지속적인 연결(Persistent Connection)"**을 유지해야 하므로,📌 사용자가 많아질수록 서버의 부하가 증가하고, 네트워크 리소스를 더 많이 소모하게 돼.📌 따라서 확장성을 고려하지 않으면, 사용자가 많아질수록 성능 문제가 발생할 수 있어.✔ 예제: 10명 vs 1만 명이 WebSock..
실시간 통신 기술의 개발 역사 실시간 통신 기술의 개발 역사 & WebSocket의 등장 배경웹 초창기에는 클라이언트가 서버의 데이터를 가져오는 단순한 방식이었지만, 점점 더 동적인 데이터를 실시간으로 받아야 할 필요성이 커짐. 이를 해결하기 위해 Polling, Long Polling, SSE 같은 방법이 등장했고, 이후 WebSocket이 실시간 양방향 통신의 최적 솔루션으로 자리잡음.실시간 통신 기술의 역사적 흐름시기기술특징한계1990년대 후반Polling클라이언트가 일정 주기로 서버에 요청네트워크 부하 심함, 실시간성 부족2000년대 초반Long Polling (Comet 기법)서버가 응답을 지연하여 실시간성 개선여전히 HTTP 요청-응답 방식, 서버 부하 큼2000년대 중반 (~2009)SSE (Server-Sent Even..