반응형

IT is True 550

[Network] REST API란 무엇인가?

Intro 웹 애플리케이션에서는 HTTP 메서드를 이용해 서버와 통신한다. GET을 통해 웹 페이지나 데이터를 요청하고, POST로 새로운 글이나 데이터를 전송하며, DELETE로 저장된 글이나 데이터를 삭제할 수 있다. 이처럼 클라이언트와 서버가 HTTP 통신을 할 때는 어떤 요청을 보내고 받느냐에 따라 메서드의 사용이 달라진다. HTTP 메서드의 사용은 아무런 규칙 없이 이루어지는 것이 아니다. 요청과 응답을 할 때에는 정확히 요청하고 응답받을 수 있는 규약이 존재한다. REST란? REST API에서 REST는 REpresentational State Transfer의 약자로, 로이 필딩의 논문에서 웹(http)의 장점을 최대한 활용할 수 있는 아키텍처로써 처음 소개되었다. 즉, REST는 HTTP..

[Algorithm] 탐욕 알고리즘(Greedy)란 무엇인가?

Greedy Algorithm Greedy는 “탐욕스러운, 욕심 많은”이란 뜻을 가진 용어로, Greedy Algorithm은 탐욕 알고리즘이라 부른다. Greedy 알고리즘은 이름 그대로 현재 상황에서 지금 당장 좋은 것만 고르는 방법이다. 그리디 알고리즘으로 문제를 해결하는 방법 선택 절차(Selection Procedure) : 현재 상태에서 최적의 해답을 선택한다. 적절성 검사(Feasibility Check) : 선택된 해가 문제의 조건을 만족하는지 검사한다. 해답 검사(Solution Check) : 문제가 해결되었는지 검사하고, 해결되지 않았다면 선택 절차로 돌아간다. 그리디 알고리즘의 예로 거스름돈 계산 문제가 있다. 거스름 돈 n이 있고, 500원, 100원, 50원, 10원으로만 거슬러..

[SQL] SQL과 NoSQL의 차이 (관계형 데이터베이스 vs 비관계형 데이터베이스)

SQL vs NoSQL 데이터베이스는 크게 관계형 데이터베이스와 비관계형 데이터베이스로 구분한다. 관계형 데이터베이스는 SQL을 기반으로 하고, 비관계형 데이터베이스는 NoSQL로 데이터를 다룬다. SQL과 NoSQL은 만들어진 방식, 저장하는 정보의 종류, 저장하는 방법 등에 차이가 있다. 관계형 데이터베이스 관계형 데이터베이스는 테이블의 구조와 데이터 타입 등을 사전에 정의하고, 테이블에 정의된 내용에 알맞은 형태의 데이터만 삽입할 수 있다. 관계형 데이터 베이스는 행(rwo)과 열(column)로 구성된 테이블에 저장하며, 각 열은 하나의 속성에 대한 정보를 저장하고, 행에는 각 열의 데이터 형식에 맞는 데이터가 저장된다. 관계형 데이터베이스는 특정한 형식을 지키기 때문에, 데이터를 정확히 업력 했..

[DB] 트랜잭션(Transaction)과 ACID란?

트랜잭션(Transaction) 트랜잭션이란 여러 개의 작업을 하나로 묶은 실행 유닛이다. 각 트랜잭션은 하나의 특정 작업으로 시작해서 묶여 있는 모든 작업들이 모두 완료되어야 정상적으로 종료한다. 만약, 트랜잭션에 속해있는 여러 작업 중에서 단 하나의 작업이라도 실패하면, 해당 트랜잭션에 속한 모든 작업은 실패한 것으로 판단한다. 작업이 하나라도 실패를 하게 되면 트랜잭션도 실패이고, 모든 작업이 성공적일 때만 트랜잭션이 정상적으로 실행되고 종료되는 것이다. 즉, 트랜잭션은 성공 또는 실패 두 가지 결과만 존재하며 미완료된 작업 없이 모든 작업을 성공해야 한다. 데이터베이스 트랜잭션은 ACID라는 특성을 가지고 있다. ACID ACID는 데이터베이스 내에서 발생하는 하나의 트랜잭션(transaction..

[DB] 데이터베이스 SQL이란?

SQL이란? SQL(Structured Query Language)을 직역하면 구조화된 Query언어이다. SQL은 관계형 데이터베이스(RDBMS)에서 데이터를 관리하고 처리하기 위해 설계된 프로그래밍 언어이다. 여기서 Query는 질의문을 뜻한다. 저장되어 있는 정보를 필터링하기 위한 질문으로 검색창에 적는 검색어도 Query의 일종이다. 즉, SQL은 데이터베이스에 query를 보내 원하는 데이터만을 뽑아올 수 있도록 하는 언어이다. SQL을 사용하기 위해서는 데이터의 구조가 고정되어 있어야 한다. 데이터베이스의 필요성 전통적인 데이터를 처리하는 방법으로 파일 입출력(File I/O)을 통해 엑셀과 같은 스프레드 시트에 데이터를 저장하거나, 인메모리(In-memory) 형태로 데이터를 임시 저장하여 ..

[Network] HTTP란 무엇인가?

HTTP(HyperText Transfer Protocol) HTTP는 HyperText Transfer Protocol의 줄임말로, 직역하면 하이퍼텍스트 전달 프로토콜이다. 하이퍼텍스트(HyperText)는 인터넷 사용자가 필요한 정보의 자유로운 검색을 가능하도록 해주는 텍스트의 전개 방식이다. HTTP는 이러한 하이퍼텍스트 방식의 정보를 교환하기 위한 하나의 규칙이다. 즉, HTML과 같은 문서를 전송하기 위해 사용되며 OSI 7 계층에서 응용 계층에 있는 프로토콜이다. HTTP는 웹 브라우저와 웹 서버의 소통을 위해 디자인되었으며, 전통적인 클라이언트-서버 아키텍처 모델에서 클라이언트가 HTTP 메시지 양식에 맞춰 요청을 보내면, 이에 서버는 HTTP 메시지 양식에 맞춰 응답을 한다. HTTP는 특..

[JavaScript] AJAX란 무엇인가?

AJAX(Asynchronous JavaScript And XML)란? AJAX는 JavaScript, DOM, Fetch, XML, HTML 등의 다양한 기술을 사용하는 웹 개발 기법이다. AJAX의 가장 큰 특징은 웹 페이지에 필요한 부분에 필요한 데이터만 비동기적으로 받아 화면에 그려낼 수 있다는 것이다. 구글에 접속하면 다음과 같은 웹 페이지를 확인할 수 있다. 이 웹 페이지는 html에 의해 유저에게 필요한 페이지가 렌더링 된다. 그러나 검색창에서는 html에 작성된 대로 유저가 사용하는 것이 아니라, 유저의 요구에 따라 반응하며 변화한다. 검색창에 한 글자를 입력할 때마다, 해당 글자로 시작하는 단어들을 서버로부터 받아와 추천 검색어로 보여주게 된다. 이러한 경우가 필요한 데이터만 비동기적으로..

[Web] 웹 애플리케이션 아키텍처 개념 정리 및 구현, 기술

웹 애플리케이션 아키텍처란? 웹 애플리케이션의 구조를 간단하게 도식화하면 위 이미지로 나타낼 수 있다. 웹 브라우저를 통해 클라이언트의 요청에 따라 웹 서버에 도달하게 되고, 애플리케이션 서버와 데이터베이스를 거쳐 필요한 리소스를 받아 클라이언트로 응답한다. 이때 클라이언트는 결과를 화면에 표시하게 된다. 웹사이트 vs 웹 애플리케이션 웹사이트(Website)와 웹 애플리케이션(Web application)은 일상에서 혼용하여 사용하기도 한다. 하지만, 엄밀히 말하면 이 둘은 서로 다른 개념이다. 웹 개발 영역에서 웹사이트(Website)는 일반적으로 정적 페이지들의 집합체를 의미한다. 만약, 웹사이트에서 동적 페이지를 포함하게 되면 이는 웹 애플리케이션(Web application)이 된다. 웹 애플리..

[Web] 서버 사이드 렌더링(SSR)과 클라이언트 사이드 렌더링(CSR)

웹 개발을 하기 위해서는 SSR(Server Side Rendering)과 CSR(Client Side Rendering)의 차이점을 알아야 한다. SSR이란? 서버 사이드 렌더링(SSR)은 JavaScript가 웹 페이지를 브라우저에서 렌더링하는 대신에, 서버에서 렌더링 하는 것이다. 실 생활 예시로는 온라인에서 상품을 주문했을 때, 배송 출발지에서 조립을 완료한 상태로 보내는 것과 유사하다. 브라우저가 서버의 URI로 GET 요청을 보내면, 서버는 정해진 웹 페이지 파일을 브라우저로 전송하고, 서버의 웹 페이지가 브라우저에 도착하면 완전히 렌더링된다. 서버에서 웹 페이지를 브라우저로 보내기 전에, 서버에서 완전히 렌더링했기 때문에 서버 사이드 렌더링이라 한다. 웹 페이지의 내용에 데이터베이스의 데이터..

[Web] 웹(Web)의 개념 정리

웹(Web)이란? 월드 와이드 웹(World Wide Web)은 전 세계에 퍼져 있는 인터넷 정보들을 서로 거미줄처럼 연결해준다. 즉, 인터넷에 연결된 사용자들이 서로의 정보를 주고받을 수 있는 공간을 의미한다. 이러한 월드 와이드 웹을 WWW으로 줄여 말하기도 하며, 간단히 웹 또는 W3라고도 한다. 웹 프로젝트는 1989년 유럽 핵물리 공동 연구소(CERN)의 연구원이었던 팀 버너스 리에 의해서 처음 시작되었다. 연구소 내의 직원들이 수많은 정보를 주고받는 상황에 다른 운영체제나 애플리케이션을 사용하고 있어서 발생하는 문제를 해결하기 위해 만든 개념이다. 따라서 일정한 형식의 기준인 HTML을 제안하게 되었고, HTML은 운영체제나 애플리케이션이 달라도 인터넷 브라우저만 있으면 모두가 동일한 정보를 ..

반응형