기타
-
폴링, 롱 폴링, SSE 방식이 필요한 이유 폴링, 롱 폴링, SSE 등의 방식이 필요한 이유는 HTTP 프로토콜의 주요 특징인 비연결성 때문이다. 실시간 알림 기능은 서버가 클라이언트에게 데이터를 보내면 클라이언트가 이를 인지하여 알림을 띄워야하는 구조인데 HTTP 프로토콜인 웹에서도 실시간 기능이 필요했다. 이러한 실시간 처리가 필요할때 사용하는게 폴링, 롱 폴링, SSE 등의 방식이다. Polling 이란? 클라이언트가 주기적으로 서버로 요청을 보내는 방식이다. 일정시간마다 클라이언트가 서버로 요청을 보내 데이터 갱신이 있는지 확인하고, 갱신 시 응답을 받는 방식이다. 폴링 방식의 구현은 간단하지만 클라이언트가 계속해서 서버로 요청을 하기 때문에 리소스 낭비가 심하다. 보낼 데이터가 없지만 계속해서..
Polling(폴링), Long Polling(롱 폴링), SSE(Server Sent Events)폴링, 롱 폴링, SSE 방식이 필요한 이유 폴링, 롱 폴링, SSE 등의 방식이 필요한 이유는 HTTP 프로토콜의 주요 특징인 비연결성 때문이다. 실시간 알림 기능은 서버가 클라이언트에게 데이터를 보내면 클라이언트가 이를 인지하여 알림을 띄워야하는 구조인데 HTTP 프로토콜인 웹에서도 실시간 기능이 필요했다. 이러한 실시간 처리가 필요할때 사용하는게 폴링, 롱 폴링, SSE 등의 방식이다. Polling 이란? 클라이언트가 주기적으로 서버로 요청을 보내는 방식이다. 일정시간마다 클라이언트가 서버로 요청을 보내 데이터 갱신이 있는지 확인하고, 갱신 시 응답을 받는 방식이다. 폴링 방식의 구현은 간단하지만 클라이언트가 계속해서 서버로 요청을 하기 때문에 리소스 낭비가 심하다. 보낼 데이터가 없지만 계속해서..
2024.01.17 -
여러개의 프로세스가 동시에 접근하는 동시성 프로그래밍에서 가장 큰 숙제는 공유자원 관리이다. 공유자원을 안전하게 관리하기 위해서는 상호배제(Mutual Exclusion)을 달성하는 기법이 필요하다. 데이터 접근에 대해 한번에 하나의 프로세스만 접근할 수 있도록 제한을 두는 동기화 방식을 취해야 한다. 대표적인 방식으로는 뮤텍스와 세마포어가 있다. Mutex(뮤텍스) 공유된 자원의 데이터에 하나의 프로세스 혹은 쓰레드가 사용하고 있으면 또 다른 쓰레드는 접근할 수 없도록 막는 방법 특정 프로세스가 공유된 자원의 데이터에 접근하기 위해선 Key가 필요하며, 특정 프로세스가 Key를 가지고 자원에 접근해 있으면 다른 프로세스는 접근할 수 있는 Key가 반납될 때까지 대기하는 Key를 기반으로 하는 상호배제 ..
뮤텍스(Mutext), 세마포어(Semaphore)여러개의 프로세스가 동시에 접근하는 동시성 프로그래밍에서 가장 큰 숙제는 공유자원 관리이다. 공유자원을 안전하게 관리하기 위해서는 상호배제(Mutual Exclusion)을 달성하는 기법이 필요하다. 데이터 접근에 대해 한번에 하나의 프로세스만 접근할 수 있도록 제한을 두는 동기화 방식을 취해야 한다. 대표적인 방식으로는 뮤텍스와 세마포어가 있다. Mutex(뮤텍스) 공유된 자원의 데이터에 하나의 프로세스 혹은 쓰레드가 사용하고 있으면 또 다른 쓰레드는 접근할 수 없도록 막는 방법 특정 프로세스가 공유된 자원의 데이터에 접근하기 위해선 Key가 필요하며, 특정 프로세스가 Key를 가지고 자원에 접근해 있으면 다른 프로세스는 접근할 수 있는 Key가 반납될 때까지 대기하는 Key를 기반으로 하는 상호배제 ..
2023.02.24 -
ContentType 은 HTTP 요청 시 자원을 명시하기 위해 사용한다. HTTP 의 간단한 구조는 아래와 같다. Request Line HTTP Header Empty Line Message Body Post Method 를 이용해 ajax 요청 시 Message Body 부분에 데이터가 들어가고 해당 자원에 대해 명시하기 위해 HTTP Header 의 Content-Type 을 사용하는데 Content-Type에는 Body에 들어간 자원이 어떤 자원인지 표시해준다. Content-Type 종류 TEXT text/css, text/javascript, text/html, text/plain FILE multipart/form-data Application application/json, applica..
ajax 요청 시 contentType(application/json, application/x-www-form-urlencoded)ContentType 은 HTTP 요청 시 자원을 명시하기 위해 사용한다. HTTP 의 간단한 구조는 아래와 같다. Request Line HTTP Header Empty Line Message Body Post Method 를 이용해 ajax 요청 시 Message Body 부분에 데이터가 들어가고 해당 자원에 대해 명시하기 위해 HTTP Header 의 Content-Type 을 사용하는데 Content-Type에는 Body에 들어간 자원이 어떤 자원인지 표시해준다. Content-Type 종류 TEXT text/css, text/javascript, text/html, text/plain FILE multipart/form-data Application application/json, applica..
2023.02.07 -
Proxy Proxy 는 단어 뜻대로 대리, 대리인이라는 뜻을 가지고 있습니다. 대리, 대리인은 누군가를 대신해서 그 역할을 수행하는 존재입니다. Proxy 패턴에서도 Proxy 라는 단어에 맞게 어떤 일을 수행할 때 대신 전달하거나 처리하는 역할을 합니다. Proxy 패턴 위 Proxy 패턴 이미지를 보면은 DoAction() 메서드를 가지고 있는 Subject 라는 인터페이스가 존재합니다. Subject 인터페이스를 구현하는 클래스는 RealSubject 와 Proxy 2개의 클래스입니다. 클라이언트가 Subject 인터페이스를 구현한 RealSubject 클래스의 DoAction() 메서드를 호출하면 Proxy 라는 클래스가 대신 RealSubject 의 DoAction() 메서드를 호출하고 반환값..
[디자인 패턴] Proxy 패턴Proxy Proxy 는 단어 뜻대로 대리, 대리인이라는 뜻을 가지고 있습니다. 대리, 대리인은 누군가를 대신해서 그 역할을 수행하는 존재입니다. Proxy 패턴에서도 Proxy 라는 단어에 맞게 어떤 일을 수행할 때 대신 전달하거나 처리하는 역할을 합니다. Proxy 패턴 위 Proxy 패턴 이미지를 보면은 DoAction() 메서드를 가지고 있는 Subject 라는 인터페이스가 존재합니다. Subject 인터페이스를 구현하는 클래스는 RealSubject 와 Proxy 2개의 클래스입니다. 클라이언트가 Subject 인터페이스를 구현한 RealSubject 클래스의 DoAction() 메서드를 호출하면 Proxy 라는 클래스가 대신 RealSubject 의 DoAction() 메서드를 호출하고 반환값..
2022.11.22 -
해당 글은 VELOPERT님의 게시글을 참고하여 작성하게 되었습니다. 토큰 기반 인증 쿠키나 세션을 이용한 인증보다 더 보안성이 강하고 효율적인 인증 방법이다. 토큰에는 암호화 방식과 타입 등을 알려주는 헤더 정보, 전송할 원본데이터가 담긴 페이로드, 토큰 검증을 위한 서명을 인코딩(해싱)한 값이 포함되어 있다. 쿠키 인증은 아이디나 암호와 같은 사용자 정보를 담아 서버로 보내게 되는데, HTTP 방식의 통신을 사용할 경우 제 3자가 해당 정보를 염탐할 수 있습니다. 세션의 경우 Session ID 를 통해 사용자를 인증하므로 쿠키에 비해 보안성이 높다고 할 수 있지만 서버쪽의 추가적인 DB 공간이나 메모리에 저장할 경우 접근한 사용자가 많으면 메모리 관리가 쉽지 않습니다. 이러한 쿠키인증과 세션인증의 ..
[JWT] 토큰(Token) 기반 인증(Basic, Bearer)해당 글은 VELOPERT님의 게시글을 참고하여 작성하게 되었습니다. 토큰 기반 인증 쿠키나 세션을 이용한 인증보다 더 보안성이 강하고 효율적인 인증 방법이다. 토큰에는 암호화 방식과 타입 등을 알려주는 헤더 정보, 전송할 원본데이터가 담긴 페이로드, 토큰 검증을 위한 서명을 인코딩(해싱)한 값이 포함되어 있다. 쿠키 인증은 아이디나 암호와 같은 사용자 정보를 담아 서버로 보내게 되는데, HTTP 방식의 통신을 사용할 경우 제 3자가 해당 정보를 염탐할 수 있습니다. 세션의 경우 Session ID 를 통해 사용자를 인증하므로 쿠키에 비해 보안성이 높다고 할 수 있지만 서버쪽의 추가적인 DB 공간이나 메모리에 저장할 경우 접근한 사용자가 많으면 메모리 관리가 쉽지 않습니다. 이러한 쿠키인증과 세션인증의 ..
2022.09.22 -
동기(Synchronous) 와 블로킹(Blocking), 비동기(Asynchronous) 와 논블로킹(NonBlocking)은 의미적으로 비슷할 수 있지만 전혀 다른곳에서 사용되며 직접적인 관련은 없다. 동기와 비동기는 프로세스의 수행 순서에 대한 매커니즘이고 블로킹과 논블로킹은 프로세스의 유휴 상태에 대한 개념이다. 동기(Synchronous) 동기라는 단어처럼 동시에 일어나는 작업이다. 요청과 그 결과가 동시에 일어나는데 요청을 하고 그 결과가 돌아왔을 때 다음 작업을 진행할 수 있다. A 작업이 완전히 종료된 후에 B 작업을 진행할 수 있다. 아래와 같은 예시가 있다. 예상 결과는 '1 - a 작업', '2 - b 작업', '3 - c 작업' 이다. 예상 결과랑 맞게 나왔다. 동기적 작업은 순서대..
동기(Synchronous), 비동기(Nonsynchronous), 블로킹(Blocking), 논블로킹(Non-Blocking)동기(Synchronous) 와 블로킹(Blocking), 비동기(Asynchronous) 와 논블로킹(NonBlocking)은 의미적으로 비슷할 수 있지만 전혀 다른곳에서 사용되며 직접적인 관련은 없다. 동기와 비동기는 프로세스의 수행 순서에 대한 매커니즘이고 블로킹과 논블로킹은 프로세스의 유휴 상태에 대한 개념이다. 동기(Synchronous) 동기라는 단어처럼 동시에 일어나는 작업이다. 요청과 그 결과가 동시에 일어나는데 요청을 하고 그 결과가 돌아왔을 때 다음 작업을 진행할 수 있다. A 작업이 완전히 종료된 후에 B 작업을 진행할 수 있다. 아래와 같은 예시가 있다. 예상 결과는 '1 - a 작업', '2 - b 작업', '3 - c 작업' 이다. 예상 결과랑 맞게 나왔다. 동기적 작업은 순서대..
2022.09.02