전체 글 342

[DB] ACID

ACID는 데이터베이스 트랜잭션이 안전하게 수행된다는 것을 보장하기 위한 성질을 말한다. 트랜잭션은 여러 개의 작업을 하나로 묶은 실행 유닛으로, 각 트랜잭션은 하나의 특정 작업으로 시작해 묶여있는 모든 작업들을 완료해야 정상적으로 종료한다. 만약 하나의 트랜잭션 속에 속한 여러 작업 중에서 단 하나의 작업이라도 실패하면 모든 작업을 실패한 것으로 판단한다. 따라서, 미완료된 작업 없이 모든 작업을 성공해야 한다. 데이터베이스 트랜잭션은 ACID라는 특성을 갖고 있으며, ACID는 원자성(Atomicity), 일관성(Consistency), 독립성(Isolation), 지속성(Durability)으로 이루어져 있다. Atomicity(원자성) 트랜잭션과 관련된 작업들이 부분적으로 실행되다가 중단되지 않는..

개발 일지/CS 2023.01.30

[DB] SQL

SQL(Structured Query Language)는 구조화된 쿼리 언어라고 해석할 수 있다. SQL은 데이터베이스 언어로, 주로 관계형 데이터베이스 시스템(RDBMS)에서 자료를 관리 및 처리하기 위해 설계된 언어이다. SQL 문을 통해 데이터베이스에서 정보를 저장, 제거, 검색 및 업데이트를 할 수 있다. 여기서 query는 '질의문'이라는 뜻으로, 예를 들어 검색을 할 때 기존에 존재하고 있는 데이터를 검색어로 필터링하기 때문에 입력하는 검색어도 일종의 쿼리라고 할 수 있다. 데이터베이스 관련 명령어 데이터베이스 생성 CREATE DATABASE 데이터베이스_이름; 데이터베이스 사용 USE 데이터베이스_이름; 테이블 생성 CREATE TABLE user ( id int PRIMARY KEY AU..

개발 일지/SQL 2023.01.30

[Web] HTTP 요청 메서드

HTTP는 요청 메서드(HTTP 동사)는 클라이언트가 웹 서버에게 사용자 요청의 목적이나 종류를 알리는 방법이다. 각각의 메서드는 서로 다른 의미를 구현하지만, 일부 기능은 메서드 집합 간에 서로 공유하기도 한다. 이를테면 응답 메서드는 안전하거나, 캐시 가능하거나, 멱등성을 가질 수 있다. Method HEAD : GET과 유사한 방식이지만, 실제 문서가 아니라 문서 정보를 요청하는 것이다. 응답 본문을 포함하지 않는다. GET : 특정 리소스의 표시를 요청한다. GET을 사용하는 요청은 오직 데이터를 받기만 한다. POST : 클라이언트에서 서버로 전달하고자 하는 정보를 서버로 보낸다. 종종 서버의 상태 변화나 부작용을 일으킨다. PUT : POST처럼 정보를 서버로 제출하는 것이지만 보통 갱신 위주..

[Web] HTTP Messages

HTTP(HyperText Transfer Protocol)는 HTML과 같은 문서를 전송하기 위한 Application Layer 프로토콜이다. 웹 브라우저와 웹 서버의 소통을 위해 디자인 되었으며, HTTP는 특정 상태를 유지하지 않는 특징(Stateless, 무상태성)이 있다. HTTP messages는 클라이언트와 서버 사이에서 데이터가 교환되는 방식으로 타입은 요청(request)과 응답(response)이 있다. 요청과 응답은 다음과 같이 비슷한 구조를 가진다. start line : 요청이나 응답의 상태를 나타낸다. 항상 첫 번째 줄에 위치하며 이 줄은 한 줄로 끝난다. 응답에서는 status line이라고 부른다. HTTP headers : 요청에 대한 설명 혹은 메시지 본문에 대한 설명이..

개발 일지/CS 2023.01.26

[Web] AJAX

AJAX(Asynchronous JavaScript And XMLHttpRequest)는 JavaScript, DOM, Fetch, XMLHttpRequest, HTML 등의 다양한 기술을 사용하는 웹 개발 기법이다. 기본적으로 HTTP 프로토콜은 화면의 내용을 갱신하기 위해서는 클라이언트 쪽에서 request를 보내고 서버 쪽에서 response를 받으면서 페이지 전체를 갱신하게 되는데, 이런 경우 자원과 시간의 낭비가 발생한다. 하지만 AJAX는 페이지 전체가 아닌 일부분만 갱신할 수 있기 때문에 그만큼의 자원과 시간을 아낄 수 있다. 가장 큰 특징으로는 웹 페이지에 필요한 부분에 필요한 데이터만 비동기적으로 받아올 수 있다는 것이다. 이러한 '비동기성'을 통해 사용자의 Event가 있으면 전체 페이..

개발 일지/CS 2023.01.26

[Web] SSR / CSR

SSR(Server Side Rendering) SSR은 JavaScript가 웹 페이지를 브라우저에서 렌더링 하는 대신에, 서버에서 렌더링 한다. 브라우저가 서버의 URI로 GET 요청을 보내면 서버는 정해진 웹 페이지 파일을 브라우저로 전송한다. 그리고 서버의 웹 페이지가 브라우저에 도착하면 완전히 렌더링 된다. 만약 웹 페이지의 내용에 데이터베이스의 데이터가 필요한 경우, 서버는 데이터베이스의 데이터를 불러온 다음 웹 페이지를 완전히 렌더링 된 페이지로 변환하여 브라우저에 응답으로 보낸다. SSR은 다음의 경우에 사용한다. SEO(Search Engine Optimization)가 우선순위일 경우 웹 페이지의 첫 화면 렌더링이 빠르게 필요한 경우 웹 페이지가 사용자와 상호작용이 적은 경우 SSR은 ..

개발 일지/CS 2023.01.26

[Web] 웹 애플리케이션

웹 애플리케이션(web application)은 인터넷을 통해 웹 브라우저에서 이용할 수 있는 응용 프로그램이다. 웹사이트(website)와 헷갈릴 수 있지만, 웹 개발 영역에서 웹사이트는 일반적으로 정적 페이지들의 집합체를 의미한다. 만약 웹사이트가 정적 페이지들 뿐 아니라, 동적 페이지를 포함하게 된다면 웹 애플리케이션이 된다. 사실 오늘날 만들어지는 대부분의 웹사이트는 웹 애플리케이션이라고 할 수 있다. 유저가 웹브라우저에서 요청을 하면 애플리케이션의 다양한 요소들이 상호작용을 한다. 수많은 유저들의 다양한 요청과 입력에 대해 알맞은 응답을 하기 위해 웹 애플리케이션 서버는 많은 부분 요소와 외부 애플리케이션 또한 공유하여 설계된다. 웹 애플리케이션은 인터넷에 공개되는 순간부터 글로벌 네트워크의 막..

개발 일지/CS 2023.01.26

[Web] 클라이언트-서버 아키텍처

웹에서 제공되는 서비스는 주로 서비스를 이용하는 클라이언트와 서비스를 제공하는 서버로 나뉜다. 즉 리소스가 존재하는 곳과 리소스를 사용하는 앱을 분리시킨 것을 클라이언트-서버 아키텍처(2티어 아키텍처)라고 부른다. 리소스를 사용하는 앱이 '클라이언트', 리소스를 제공(serve)하는 곳이 '서버'이다. 클라이언트는 사용자가 직접 이용하기 때문에 사용 편의성이나 휴대성 등을 고려하여 개발이 이루어지며, 서버는 사용자와 직접적 접점이 없기 때문에 편의성보다는 기능에 중점을 두고 개발이 이루어진다. 클라이언트와 서버는 요청과 응답을 주고 받는 관게이며, 요청을 해야 응답이 오고 요청없이 응답이 오는 경우는 없다. 일반적으로 서버는 리소스를 전달해주는 역할만을 담당한다. 그리고 리소스를 저장하는 공간을 '데이터..

개발 일지/CS 2023.01.26

[Network] URL

URL(Uniform Resource Locator)은 웹에 게시된 어떤 자원을 찾기 위한 브라우저에서 사용되는 메커니즘이다. 쉽게 말해 웹 페이지를 찾기 위한 주소도 포함되어 있으며, 주소뿐만 아니라 컴퓨터 네트워크상의 자원을 모두 나타낼 수 있다. 브라우저의 주소창에 입력한 URL은 서버가 제공되는 환경에 존재하는 파일의 위치를 나타낸다. URL은 scheme, hosts, url-path로 구분할 수 있다. scheme : 통신 방식(프로토콜) 결정 hosts : 웹 서버의 이름이나 도메인, IP를 사용하며 주소를 나타냄 url-path : 웹 서버에서 지정한 루트 디렉토리로부터 시작해 웹 페이지, 이미지, 동영상 등이 위치한 경로와 파일명을 나타냄 URI(Uniform Resource Identi..

개발 일지/CS 2023.01.26

[Network] TCP / UDP

TCP와 UDP는 TCP/IP 4계층 모델을 기준으로 IP 프로토콜의 계층인 인터넷 계층의 상위에서 동작한다. 전송계층에 속하는 TCP와 UDP는 2계층에서 동작하는 IP와 4계층에서 동작하는 애플리케이션(http 등)을 중개하는 역할을 한다. 전송계층은 송수신자를 연결하는 통신서비스를 제공하는 계층이며, 쉽게 말해 데이터의 전달을 담당한다. 여기서 데이터를 보내기 위해 사용하는 프로토콜이 바로 TCP와 UDP이다. TCP와 UDP는 중개하는 역할을 하는 점에서는 동일하지만 서로 다른 특징을 가지고 있다. TCP(Transmission Control Protocol) TCP는 인터넷상에서 데이터를 메시지의 형태로 보내기 위해 IP와 함께 사용하는 프로토콜이며, 다음과 같은 특징을 가지고 있다. 연결 지향..

개발 일지/CS 2023.01.26