Computer Theory/Web 14

Computer Theory/Web
웹 서버와 WAS (Django, Nginx, Gunicorn)

django 프로젝트를 하다 보면, gunicorn과 nginx로 배포하는 경우가 흔하다. 하지만 강의나 여러 글만 따라가면서 프로젝트를 진행했기에 gunicorn과 nginx에 대한 개념이 뚜렷하지 않다. 따라서 이에 대한 개념을 잡아보고자 한다. NginxNginx에 알아보기 전 웹서버와 WAS에 대해서 짚고 넘어가자. https://www.youtube.com/watch?v=Zimhvf2B7Es&t=659s    웹서버: 웹 브라우저 클라이언트로부터 HTTP 요청을 받아 콘텐츠를 제공하는 프로그램을 의미한다. 대표적으로는 Apache와 Nginx가 있다.WAS(Web Application Server): DB조회나 다양한 로직 처리를 요구하는 동적인 콘텐츠를 제공하기 위해 만들어진 애플리케이션 서버..

Computer Theory/Web
호스팅(Web Hosting)

이번에는 호스팅에 대해서 알아보고자 한다.   호스팅(Hosting)호스팅이란 어떤 서비스를 빌려서 사용한다는 의미이다. 인터넷에서 호스팅이란 주로 3가지(웹 호스팅, 서버 호스팅, 쿨라우드 호스팅)의 종류로 나누어 나타내고 있다.   웹 호스팅 웹 호스팅은 여러 고객이 하나의 서버를 함께 사용하는 형태를 의미한다. 하나의 서버를 나누어 쓰기 때문에 저렴하게 이용할 수 있고 호스팅 업체의 통합 관리를 받기 편하다. 하지만 사용할 수 있는 하드웨어가 제한적이라는 단점을 가지고 있다.  서버 호스팅서버 호스팅은 고객이 단독 서버를 사용하는 형태를 의미한다. 넓은 하드웨어 공간을 사용 할 수 있고, 서버/운영 관리에 대한 직접적인 권한을 가질 수 있다. 하지만 단독으로 사용하는 만큼 높은 비용을 지불하여야 한..

Computer Theory/Web
도메인과 DNS 그리고 DNS의 작동원리

이번에는 DNS와 그 작동원리에 대해서 알아보고자 한다.   도메인 (Domain)도메인이란 인터넷에 연결된 컴퓨터를 사람이 쉽게 기억하고 입력 할 수 있도록 영문, 한글로 만든 인터넷 주소를 의미한다. 인터넷에 연결된 모든 컴퓨터는 IPv4 또는 IPv6 중 하나인 공용 IP 주소를 통해 접근할 수 있다. (예 : 127.0.0.1) 하지만 이런 주소는 컴퓨터가 쉽게 처리할 수 있으나 사람들은 해당 서버를 들어가기 위해서 IP주소를 일일이 기억하기 어렵다. 따라서 우리는 이런 IP 주소에 이름을 붙여 사람이 읽을 수 있도록 하는 주소인 도메인 주소를 사용하고자 하였다.  도메인 이름의 구조도메인 이름은 점으로 구분되고 오른쪽에서 왼쪽으로 읽히는 여러 부분으로 구성된 구조를 가지고 있다.  각 부부은 전..

Computer Theory/Web
HTTP란 무엇인가?

이번에는 HTTP 통신에 대해서 알아보고자 한다.   HTTP의 의미HTTP는 HTML 문서와 같은 리소스들을 가져올 수 있도록 하는 프로토콜을 의미한다. HTTP는 웹에서 이루어지는 모든 데이터 교환의 기초이며, 클라이언트 - 서버 프로토콜이기도 하다.  - 클라이언트 서버 프로토콜 : 주로 클라이언트가 서버에게 요청을 보내여 리소스를 획득하는 프로토콜을 의미한다.  클라이언트와 서버들은 개별적인 메시지를 교환을 통해 통신을 한다. 보통 브라우저인 클라이언트에 의해 전송되는 메시지 요청을 request라고 부르며 이로 인해 서버에서 응답하는 메시지를 responses라고 부른다.  HTTP는  애플리케이션 계층의 프로토콜로, 신뢰가능한 전송 프로토콜이라면 이론상으로는 무엇이든 사용가능하나, TCP혹은 ..

Computer Theory/Web
HTTP 메서드 종류

HTTP Method 종류HTTP 메서드란 클라이언트와 서버 사이에 이루어지는 요청, 응답에 대한 데이터 전송 방식을 말한다. 주요 메소드GET : 리소스 조회POST:  요청 데이터 처리, 주로 등록에 사용PUT : 리소스를 대체(덮어쓰기), 해당 리소스가 없으면 생성PATCH : 리소스 부분 변경 (PUT이 전체 변경, PATCH는 일부 변경)DELETE : 리소스 삭제기타 메소드HEAD : GET과 동일하지만 메시지 부분(body 부분)을 제외하고, 상태 줄과 헤더만 반환OPTIONS : 대상 리소스에 대한 통신 가능 옵션(메서드)을 설명(주로 CORS에서 사용)CONNECT : 대상 자원으로 식별되는 서버에 대한 터널을 설정TRACE : 대상 리소스에 대한 경로를 따라 메시지 루프백 테스트를 수행..

Computer Theory/Web
API에 대하여

이번에는 API에 대한 기본개념과 그에 대한 REST, Json APIs 등의 기타 개념에 대해서 알아보고자 한다. API API는 Application Programming interface의 줄임말로 정의 및 프로토콜 집합을 사용하여 두 소프트웨어 구성 요소가 서로 통신 할수 있도록 하는 메커니즘을 의미한다. API가 생성된 시기와 이유에 따라 4가지 방식으로 작동할 수 있다. SOAP API 이 API는 단순 객체 접근 프로토콜을 사용한다. 클라이언트와 서버는 XML을 사용하여 메시지를 교환하며, 과거에 더 많이 사용되었지만 유연성이 떨어지는 API 이다. RPC API 원격 프로시저 호출이라고 한다. 클라이언트가 서버에서 함수나 프로시저를 완료하면 서버가 출력을 클라이언트로 다시 전송 한다. We..

Computer Theory/Web
Transaction과 ACID

오늘은 ACID에 대해서 알아보고자 한다. 트랜잭션(Transaction) 트랜잭션이란 데이터베이스의 상태를 변환시키는 기능을 수행하기 위한 하나 이상의 쿼리를 모아놓은 하나의 작업단위를 뜻한다. 데이터 베이스 트랜잭션은 ACID라는 특성을 가지고 있다. ACID ACID는 데이터베이스 내에서 일어나는 하나의 트랜잭션의 안정성을 보장하기 위해 필요한 성질을 말한다. ACID는 Atomicity(원자성), Consistency(일관성), Isolation(격리성, 고립성), Durability(지속성)을 줄인 말이다. Atomicity(원자성) 원자성이란 트랙재션의 안정성을 보장하기 위해 가져야 할 성질 중의 하나이다. 원자성이란 시스템에서 한 트랜잭션의 연산들이 모두 성공하거나 반대로 전부 실패하는 성질..

Computer Theory/Web
ORM(Object Ralational Mapping)

오늘은 ORM에 대해서 알아보고자 한다. ORM ORM은 객체를 연결해준다는 의미로 어플리케이션과 데이터베이스 연결 시 SQL언어가 아닌 어플리케이션 개발 언어로 데이터 베이스에 접근 할 수 있게 해주는 툴을 의미한다. ORM은 SQL문법 대신 어플리케이션 개발언어를 그대로 사용함으로써, 개발 언어의 일관성과 가동성을 높여준다는 장점을 가지고 있다. 아래는 Django에서 사용하는 ORM과 실제 SQL질의문을 나타낸 예이다. >>> queryset = Event.objects.all() >>> str(queryset.query) SELECT "events_event"."id", "events_event"."epic_id", "events_event"."details", "events_event"."yea..

Computer Theory/Web
RDB와 NOSQL DB

이번에는 RDB(Relational DataBase)와 NoSQL DataBase에 대해 알아보고자 한다. RDB 관계형 데이터베이스라고 불리는 RDB는 말그대로 관계형 모델을 기반으로 하는 데이터베이스를 의미한다. 이를 유지하고 관리하는 시스템을 RDBMS(Management System)이라고 부른다. 이러한 RDBMS는 주로 SQL(Structured Query Lang)을 이용해 데이터를 조회, 관리하게 된다. 관계형 데이터 베이스의 특징은 아래와 같다. 2차원 데이터로 표현한다. (행과 열) 상호 관련성을 가진 테이블의 집합으로 구성된다. 테이블 사이의 관계를 외래키로 나타낸다. 스키마의 변경이 어렵다. RDB는 매우 정교한 설계아래 만들어진다. 테이블 사이에 서로 의존성이 있고 쳇바퀴처럼 맞물..