HTTP Request Methods 클라이언트가 웹서버에게 요청하는 목적 및 그 종류를 알리는 수단 종류 1. GET 지정된 자원을 검색하는데 사용 서버의 데이터를 변경하지 않음 (READ) 2. POST 서버에 새로운 자원을 생성하도록 요청하는데 사용 (CREATE) 일반적으로 클라이언트에서 서버로 데이터를 보낼 때 사용 3. PUT 지정된 자원의 전체 내용을 업데이트하는데 사용 (UPDATE) 만약 지정된 자원이 없다면 새로운 자원을 생성 기존 데이터를 갱신할 때 사용 4. DELETE 지정된 자원을 삭제하는데 사용 (DELETE) 보통 클라이언트에서 서버 리소스를 삭제하도록 하진 않아서 비활성화로 구성 5. HEAD GET과 동일한 응답을 요구하지만, 응답 본문(body)을 포함하지 않는다. 주로..
저장 프로시저 저장 프로시저는 데이터베이스 시스템에서 실행을 위해 미리 컴파일하고 저장해둔 쿼리의 집합이며, 여러 명령문을 하나의 로직으로 묶어서 관리한다. 프로시저를 만들어두면, 쿼리가 필요할 때 인자 값만 전달하면 된다. SQL 예시 코드 CREATE PROCEDURE GetEmployeeByID @EmpID INT AS BEGIN SELECT * FROM Employees WHERE EmployeeID = @EmpID; END // 호출 EXECUTE GetEmployeeByID @EmpID = 123; MySQL 예시 코드 CREATE PROCEDURE `GetEmployeeByID`(IN `empID` INT) BEGIN SELECT * FROM Employees WHERE EmployeeID ..
쿠키와 세션은 사용자의 정보를 일정 시간 동안 저장하여 웹 브러우저와 웹 서버 사이에서 사용자를 식별하기 위해 사용되는 기술이다. 쿠키(Cookie) 쿠키는 클라이언트 측에 저장되는 키와 값이 들어있는 작은 데이터 파일이다. 사용자가 특정 웹 사이트를 방문할 때 웹 서버는 HTTP 응답헤더를 사용하여 클라이언트에 쿠키를 전송한다. 웹 브라우저는 이 쿠키를 저장하고, 이후 해당 서버에 요청을 보낼 때마다 쿠키를 HTTP 요청 헤더에 추가하여 전송한다. 이를 통해 서버는 사용자를 식별하고 사용자의 정보를 기억할 수 있다. 주로 사용자 로그인 상태를 유지하거나, 쇼핑 사이트의 장바구니 같은 상태 정보를 저장하는데 사용된다. 또한, 사용자의 행동 패턴이나 선호하는 설정 등을 통해 개인화된 사용자 경험을 제공하는..
브라우저 브라우저는 사용자가 인터넷을 통해 웹 페이지를 보고 상호작용하는데 사용되는 응용 소프트웨어이다. 이것은 동기적으로 HTML, CSS, JS 언어를 해석하고, 이를 시각적인 형태로 사용자의 화면에 표시하는 역할을 수행한다. 브라우저는 웹 페이지를 보기 위해 웹 서버에 필요한 자원을 요청하고, 웹 서버는 이 요청에 대해 응답하여 필요한 자원을 제공하고, 브라우저는 이를 받아서 해석한다. 이 때, 웹 페이지의 형태는 다양하며 HTML, PDF, 이미지 등 여러 형식으로 제공될 수 있다. 브라우저는 HTML과 CSS의 명세에 따라 웹 페이지를 해석하여 표시한다. 이 명세는 W3C(World Wide Web Consortium)에서 관리되며, 웹 페이지를 일관되고 표준화된 방식으로 해석하도록 지침을 제공..
Blocking I/O I/O 작업이 진행되는 동안 유저 프로세스는 자신의 작업을 중단하고 대기하는 방식 유저는 커널에 read 작업 요청 데이터가 입력될 때까지 대기 데이터가 입력되면 유저에게 결과를 전달한 뒤 return 단점 : I/O 작업이 CPU 자원을 거의 쓰지 않으므로 자원 낭비가 심하다. Non-Blocking I/O I/O 작업이 진행되는 동안 유저 프로세스의 작업을 중단시키지 않는 방식 유저가 커널에 read 작업 요청 I/O 작업이 즉시 완료될 수 없다면, 입력 데이터가 없다는 결과 메세지(EWOULDBLOCK)를 반환받고, 프로그램은 다른 작업을 계속 한다. 일정 시간 후에, I/O 작업을 다시 요청하여 데이터가 준비되었는지 확인한다. 데이터가 준비 될 때까지 2-3번을 반복하며, ..
Blocking/Non-blocking 블럭/논블럭은 호출된 함수가 호출한 함수에게 제어권을 건네주는 유무의 차이이다. Blocking A 함수가 B 함수를 호출할 때, B 함수가 자신의 작업이 종료되기 전까지 A 함수에게 제어권을 돌려주지 않는 것 예를 들어, 파일에서 데이터를 읽는 작업이 'Blocking'으로 수행되면, 해당 작업이 완료되어 데이터가 준비될 때까지 프로그램의 실행이 잠시 중지된다. 이는 프로그램이 데이터를 사용할 수 있을 때까지 아무런 작업도 수행하지 못하게 되어, 자원을 비효율적으로 사용할 수 있다는 단점이 있다. Non-blocking A 함수가 B 함수를 호출 할 때, B 함수가 제어권을 바로 A 함수에게 넘겨주면서, A 함수가 다른 일을 할 수 있도록 하는 것 즉, 특정 작업..
로드 밸런싱 (Load Balancing) 로드 밸런싱은 분산식 웹 서비스로, 네트워크 트래픽이나 어플리케이션의 요청을 여러 서버에 균등하게 분배하는 프로세스를 의미한다(= Scale-out). 즉, Load Balancer를 클라이언트와 서버 사이에 두고, 부하가 일어나지 않도록 여러 서버에 분산시켜주는 방식이다. 서비스를 운영하는 사이트의 규모에 따라 웹 서버를 추가로 증설하면서 로드 밸런서로 관리해주면 웹 서버의 부하를 해결할 수 있다. Scale-up & Scale-out Scale-up : 하드웨어의 성능을 올리는 것 Scale-out : 여러 대의 서버가 나눠서 일하도록 만드는 것 로드 밸런싱의 주요 목적 서버의 부하 분산 시스템의 가용성과 신뢰성 향상 응답 시간 줄이기 L4 로드 밸런싱 & ..
Redis Redis(REmote Dictionary Server)는 오픈 소스, 인 메모리 데이터 구조 스토어로서, 데이터베이스, 캐시, 메시지 브로커 등의 역할을 수행할 수 있다. 다양한 종류의 데이터 구조를 지원하며, 데이터 구조는 key-value 값이다. 따라서 Redis는 비정형 데이터를 저장하는 비관계형 데이터베이스 관리 시스템이다. Redis의 주요 특징 1. In-Memory Data Store Redis는 모든 데이터를 메모리에 저장하고 관리함으로써 빠른 성능을 제공한다. 하지만 영구적인 데이터 저장을 위해 디스크에 스냅샷(snapshot)을 저장하거나 AOF(Append Only File) 등의 방법으로 데이터 유실을 방지할 수 있다. snapshot : 특정 지점을 설정하고 디스크에..
Isolation Level 데이터베이스에서 여러 트랜잭션을 동시에 처리할 때, 특정 트랜잭션에서 수행하는 작업이 다른 트랜잭션에 얼마나 '보이는가'를 결정하는 것이다. 즉, 트랜잭션에서 일관성 없는 데이터를 허용하도록 하는 수준을 말한다. Isolation Level의 필요성 여러 트랜잭션이 동시에 데이터베이스에 접근할 때 발생하는 문제를 해결하기 위해 Isolatino Level이 필요하다. 1. Dirty Read 한 트랜잭션이 아직 커밋되지 않은 다른 트랜잭션의 변경을 읽는 현상 이로 인해 트랜잭션의 실패로 롤백이 발생하더라도 이미 읽혀진 데이터가 원래의 값으로 돌아가지 않는 문제가 생긴다. 2. Non-Repeatable Read 같은 트랜잭션 내에서 같은 쿼리를 두 번 실행했을 때, 그 결과가..
트랜잭션 (Transaction) 데이터베이스의 상태를 변화시키기 위해 수행하는 작업 단위 데이터의 무결성과 일관성을 보장하기 위해 사용 상태 변화: DML을 통해 DB에 접근하는 것(SELECT, INSERT, DELTE, UPDATE) 트랜잭션의 상태 활동(Active): 트랜잭션이 실행 중인 상태 실패(Failed): 트랜잭션의 실행 중에 오류가 발생하여 작업이 중단된 상태. 이 단계에서는 트랜잭션이 이전 상태로 롤백되어야 한다. 부분 완료(Partially Committed): 트랜잭션의 모든 작업이 성공적으로 실행되었지만, 아직 커밋되지 않은 상태. 이 단계에서는 트랜잭션의 결과를 데이터베이스에 영구적으로 반영하기 전에 커밋 여부를 결정해야 한다. 완료(Committed): 트랜잭션이 성공적으로..