0. 기초 개발 용어 사전(2)

gyrud02·2021년 6월 24일
0

이론(THEORY)

목록 보기
2/24
출처: (https://www.inflearn.com/pages/weekly-inflearn-12)

[네트워크]

* 웹(Web)

-- 인터넷 기반의 정보기술을 말하며 World Wide Web의 줄임말로 줄여서 WWW라고도 한다. 전 세계의 거대한 네트워크 망을 통해 정보를 고유하며 정보의 흐름은 양방향성을 가진다.

* 서버(Server)와 클라이언트(Client)

-- 서비스(Service) 제공을 하는가와 받는가에 따라 구분된다. 외부에 필요한 서비스를 제공하도록 만든 컴퓨터나 프로그램 영역을 서버(Server)라고 하며, 서버(Server)에 접속하여 서비스(Service)를 요청하고 제공받는 유저가 클라이언트(Client)가 된다.

* 도메인(Domain)

-- 숫자로만 이루어진 IP와는 달리 google.com처럼 문자로 지정된 인터넷 URL주소를 말한다.

* URI(Uniform Resource Identifier)

-- 말 그래도 통합 자원 식별자로써 웹에 있는 다양한 자원을 식별할 수 있는 수단 혹은 문자 구성을 말한다.

* URL(Uniform Resource Locator)

-- URI의 한 형태이자, 자원에 접근하는데 필요한 프로토콜, 도메인, 파일의 경로 및 접근할 파일명 등으로 구성되어 있으며 특정 서버 상에 있는 자원들의 구체적인 위치를 가리킨다.

* URN(Uniform Resource Name)

-- URI의 한 형태이자, 위치와 상관없이 자원이 이름값을 이용해서 접근하는 방식이다. 자원의 이름이 변하지 않는 한, 여러 종류의 네트워크 접속 프로토콜로 접근해도 문제가 없다.

* DNS(Domain Name System)

-- 도메인(Domain)이 올라가있는 웹서버에 IP로 연결하는 시스템을 말한다. 웹페이지에 접속하기 위해서는 IP가 필요하지만 일일이 IP를 챙길 필요없이 도메인과 IP를 변환해주는 역할을 하는 것을 말한다.

* TCP/IP(Transmission Control Protocol)

-- 인터넷 동작의 중심이 되는 통신규약으로 IP는 데이터를 한 장소에서 다른 장소로 정확하게 옮겨주는 역할을 하며, TCP는 전체 데이터가 잘 전송될 수 있도록 데이터의 흐름을 조절하고 성공적으로 상대편 컴퓨터에 도착할 수 있도록 보장해주는 역할을 한다. 개방형 프로토콜의 표준으로 특정 하드웨어나 운영체제의 독립적으로 사용하는 것이 가능하다. 또, 인터넷에서 서로 다른 시스템을 가진 컴퓨터들을 서로 연결하고, 데이터를 전송하는데 사용하는 통신 프로토콜로 근거리 및 원거리 모두에 사용할 수 있다.

* UDP(User Datagram Protocol)

-- 사용자 데이터그램 프로토콜이라고 하며, 데이터를 데이터그램 다위로 처리하는 통신규약이다(프로토콜). 여기서 데이터그램이란 독립적인 관계를 지니는 패킷이라는 뜻으로, 비연결형 프로토콜이다. 연결을 위해 할당되는 논리적인 경로가 없기 때문에 각각의 패킷은 다른 경로로 전송되고, 각각의 패킷은 독립적인 관계를 지니게 되는데 이렇게 데이터를 서로 다른 경로로 독립적으로 처리하는 프로토콜을 UDP라고 한다.

* SSH(Secure Shell Protocol)

-- 컴퓨터가 인터넷과 같은 공공의 네트워크를 통해 서로 통신을 할 때, 보안적으로 안전하게 통신을 하기 위해 사용하는 프로토콜이다. SSH는 대표적인 사용의 예로는 데이터 전송과 원격 제어이다. 데이터 전송은 Github, 원격 제어는 AWS를 생각하면 된다.

* 프로토콜(Protocol)

-- 컴퓨터나 서버, 통신 장비 등의 장치 사이에서 서로 통신하기 위해 미리 정해놓은 규칙을 말한다. TCP/IP, HTTPS, HTTP 등이 모두 인터넷 프로토콜이다.

* HTTP와 HTTPS

-- HTTP는 하이퍼텍스트 전송 프로토콜(Hypertext Transfer Protocol)의 약자로 네트워크에서 HTML문서를 주고받기위한 통신규약이다. 한편, HTTPS는 SSL(Secure Socket Layer) 개념을 덧붙임으로 HTTP가 가진 보안 취약점을 암호화 및 인증 구조를 통해 개선하기 위해 만들어졌다.

* SSL(Secure Socket Layer)

-- 인터넷에서 데이터를 안전하게 전송하기 위한 인터넷 통신 규약 프로토콜이다. 인터넷 프로토콜이 보안면에서 기밀성을 유지하지 못한다는 문제를 극복하기 위해 개발되었다. 웹 브라우저와 웹 서버간에 서로 상대의 신원을 확인하는 기능을 한다.

* 패킷(Packet)

-- 인터넷 내에서 데이터를 보내기 위한 경로배정(라우팅)을 효율적으로 하기 위해서 데이터를 여러 개의 조각들로 나누어 전송하는데 이 때, 이 조각을 패킷이라고 한다.

* 소켓(Socket)

-- 프로그램이 네트워크 상에서 데이터를 송신과 수신을 하기 위한 연결부를 말한다. 일반적으로 TCP/IP (또는 UDP) 프로토콜을 이용하거나 웹소켓(WebSocket)을 이용한다.

* 웹소켓(WebSocket)

-- 웹소켓은 IP, PORT를 통해 통신한다는 점에서 TCP/IP 소켓과 비슷하지만 HTTP 레이어에서 작동하는 소켓으로 TCP/IP 소켓의 레이어가 다르다. 웹소켓의 통신 TCP 80PORT를 상용하면서 HTTP 프로토콜과 호환되며, 웹 브라우저와 서버간 통신을 가능하게 해준다. 웹소켓의 프로토콜 표시는 ws(WebSocket), wss(WebSocket Secure)이다. 웹소켓은 트래픽이 많고 지연이 낮은 접속 환경에서 유리하다. 기존 HTTP 통신은 단방향 통신으로, 실시간 통신을 하기 위해 실시간처럼 보이는 방식을 사용했다. 이후 실제로 실시간 양방향 통신이 가능한 웹소켓은 2011 국제 인터넷 표준화 기구(IETF)에서 RFC-6455로 표준화되었다.

* 폴링(Polling) 방식

-- 하나의 장치(또는 프로그램)가 충돌 회피 또는 동기화 처리 등을 목적으로 다른 장치(또는 프로그램)의 상태를 주기적으로 검사하여 일정한 조건을 만족할 때 송수신 등의 자료 처리를 하는 방식을 말한다.

* COMET(Long Polling)

-- 클라이언트가 웹 서버에게 새로운 내용이 있는지 물어보았을 때 웹 서버에서 새로운 내용이 없다면 대답해주지 않다가 새로운 내용이 생기면 이 때, 대답해주는 방식이다. 클라이언트가 서버에게 Handshake 방식으로 요청을 하면 그 요청을 받은 서버는 연결 통로를 연다. 웹소켓으로 연결이 된 클라이언트와 서버는 양방향 통신을 하면서 메세지를 주고 받는다. 서버측에서 연결을 끊으면 클라이언트의 연결도 끊긴다. 클라이언트 측에서 연결을 끊으면 해당 세션에 해당하는 연결이 끊긴다.

* WebSocket Handshake

-- HTTP에서 웹소켓으로의 프로토콜 전환을 웹소켓 핸드쉐이크라고 한다. 브라우저가 HTTP에서 웹소켓으로 프로토콜을 전환하려는 요청을 할 때, Header에 Upgrade속성을 추가하여 보내게 되는데 이 때, 서버는 Upgrade속성을 통해 프로토콜의 전환 요청을 받고 이에 동의하게 되면 서버와 브라우저는 ws 프로토콜을 사용하게 된다.

* 웹 접근성(Web Accessiblity)

-- 누구에게나 평등한 웹 환경을 구성하는 요소이다. 웹 표준을 지킴으로써 남녀노소 평등하게 웹에서 제공하는 정보를 원활하게 이용할 수 있도록 보장하는 것을 말한다. 시각장애인에게 시각 콘텐츠에 대한 의미나 용도를 이해할 수 있도록 대체 텍스트를 제공하거나, 키보드만으로 서비스의 모든 기능을 사용할 수 있도록 하는 것이 포함된다.

* 검색 엔진 최적화(SEO : Search Engine Optimize)

-- 웹 페이지를 검색 엔진이나 포털사이트의 기준에 맞춰 구성하는 작업이다. 사람들이 많이 검색할만한 관련 키워드를 배치하고, 웹 표준을 지키며, 스팸으로 분류되지 않게끔 하는 등 웹 페이지 링크가 더 많이 노출되도록 처리한다. 온라인 마케팅의 필수 요소로도 꼽히는데, SEO가 잘 적용된 웹 페이지는 검색 시 상단에 오를 수 있기 때문이다.

* 트래픽(Traffic)

-- 서버(Server)를 통행 전송되는 데이터의 양을 말한다. 서비스 방문자 수가 많을수록, 접속이 잦아질수록 트래픽이 증가한다. 트래픽이 너무 높아지면 서버가 먹통이 되어 터져버리거나 외부에서 많은 PC를 감염시켜 의도적으로 특정 서비스가 마비되도록 공격하는 디도스(DDoS) 등 모두 트래픽 초과와 관련이 깊다. 때문에 백엔드 개발자라면 시스템을 안정적으로 개발하여 높은 트래픽에도 서비스 접근이 제한되지 않도록 유지하는 것이 관건이다.

* CDN(Content Delivery Network/Content Distribution Network)

-- 콘텐츠 전송 네트워크라는 의미로 멀리 떨어진 사용자에게 콘텐츠를 더 빠르게 제공할 수 있도록 하는 기술이다. 원 서버에서 사용자에게 직접 콘텐츠를 전송하는 대신, 사용자와 가까운 서버로 데이터를 분산시켜 제공하는 제공하는 네트워크 시스템이다. 다양한 콘텐츠를 전달해야하는 서비스에서는 필수로 사용하는 기술이다.

* 캐시(Cache)

-- 데이터베이스, 서버, 세션 관리 등 다양한 장치에서 널리 쓰이는 개념으로, 사용자가 데이터에 빠르게 접근할 수 있도록 데이터를 임시로 저장해둔 장소이다. 이를 활용하는 것을 캐싱(Caching)이라고 하며, CDN 역시 웹 컨텐츠를 캐싱한 데이터를 사용자에게 전달함으로써 데이터를 더 빠르게, 트래픽 부담을 줄여서 더 많이 전송하는 기술이다.

* 브라우저 캐싱(Browser Caching)

-- 웹 페이지에 방문했을 때 페이지를 이루는 이미지나 HTML, CSS 문서 등 일부 데이터를 사용자의 PC에 저장해둔 뒤, 페이지를 재방문했을 때 서버에 요청할 필요없이 PC에 저장했던 데이터를 불러오는 캐싱 기술이다.

* 세션(Session)

-- 웹 브라우저를 통해 서버에 접속하여 연결을 끊기 전까지(브라우저를 종료하기 전까지) 한 브라우저를 통해 사용자가 요청하는 상태 정보를 서버에서 일정하게 유지하는 기술이다. 한 사이트 내에서 페이지를 이동할 때마다 로그인이 끊기지 않도록 하는 것을 대표적인 예로 들 수 있다.

* 쿠키(Cookie)

-- 서버에 저장되는 세션과는 달리 사용자의 브라우저에 대한 간단한 정보를 저장하는 작은 데이터 파일로, 키(KEY)와 값(VALUE)의 구조로 이루어진다. 브라우저에 아이디나 암호를 저장하거나 사이트 방문 기록을 저장하는데 주로 쓰인다.

* 정적 페이지(Static pages)

-- image, html, css, javascript 파일과 같이 컴퓨터에 저장되어있는 파일들을 의미한다. 웹 서버에서 요청에 알맞은 파일을 반환하며, 항상 동일한 페이지를 반환한다(정적 페이지). 웹 서버(Web Server)에서 제공한다.

* 동적 페이지(Dynamic pages)

-- 들어온 요청에 맞게 동적으로 만들어진 컨텐츠를 의미한다. DB, 서버 내 로직 등을 활용하여 만들어진 컨텐츠를 반환한다. 웹 어플리케이션 서버(WAS)에서 제공한다.

* 웹 어플리케이션(Web Application)

-- 인터넷을 통해 웹 브라우저에서 이용할 수 있는 응용 소프트웨어를 의미한다.

-- [웹 어플리케이션의 구성요소]

  • 1) 웹 서버(Web Server) : HTTP 요청을 받아 Static contents를 제공하는 서버이다. HTTP 프로토콜을 기반으로 하여 클라이언트의 요청을 서비스하는 기능을 담당한다. 대표적인 예로 Apache Server를 들 수 있다.
  • 2) 웹 어플리케이션 서버(WAS: Web Application Server) : 다양한 서버 내에 알고리즘, 비즈니스 로직, DB 조회 등 클라이언트 요청에 따라 동적인 컨텐츠를 제공하는 서버이다. HTTP 프로토콜을 기반으로 하여 클라이언트의 요청에 따라 구현된 비즈니스 로직을 통해 동적으로 만들어진 컨텐츠를 반환한다. 대표적인 예로 Tomcat을 들 수 있다.
  • 3) 웹 브라우저(Web Browser) : 클라이언트에서 요청을 하고 전달받은 페이지를 볼 수 있는 환경을 말한다. 대표적인 예로 Chrome, IE, Safari, Firefox 등이 있다.
  • 4) 데이터베이스(Database) : 웹 어플리케이션이 필요한 데이터를 저장한다.

-- [웹 어플리케이션의 종류]

  • 1) 서블릿(Servlet) : 클라이언트의 요청을 처리하고, 그 결과를 반환하는 Servlet 클래스의 구현 규칙을 지킨 자바 웹 프로그래밍 기술이다. 좀 더 쉽게 설명하자면 클라이언트가 요청을 했을 때, 그에 대한 결과를 다시 반환하여 전송해주어야 하는데 이러한 역할을 하는 자바 프로그램이다.
    (예: 로그인 시도할 때, 사용자는 ID, PW를 입력하고 로그인 버튼을 클릭한다. 이 때, 서버는 클라이언트의 아이디와 비밀번호를 확인하고, 다음 페이지를 띄워주어야 하는데 이러한 역할을 수행하는 것이 바로 서블릿이다. 그래서 서블릿은 자바로 구현된 CGI라고 말한다)
  • 2) JSP(Java Server Pages) : HTML 코드에 JAVA 코드를 넣어 동적 웹 페이지를 생성하는 웹 어플리케이션 도구이다. JSP가 실행되면 자바 서블릿(Servlet)으로 변환되며 AWS에서 동작되어 필요한 기능을 수행하고 생성된 데이터를 웹 페이지와 함께 클라이언트에게 반환(응답)한다.
  • 3) 기타
    (1) CGI(Common Gateway Interface) : 특별한 라이브러리나 도구를 의미하는 것이 아니고, 별도로 제작된 웹서버와 프로그램간의 교환방식이다. CGI방식은 어떠한 프로그래밍 언어로도 구현이 가능하며, 별도로 만들어 놓은 프로그램에 HTML의 Get/Post 방법으로 클라이언트의 데이터를 환경변수로 전달하고, 프로그램의 표준 출력 결과를 클라이언트에게 전송하는 것이다. 즉, 자바 어플리케이션 코딩을 하듯 웹 브라우저용 출력 화면을 만드는 방법이다.
    (2) PHP(Professional Hypertext Preprocessor, Personal HomePage Tools) : C언어를 기반으로 만들어진 서버 측에서 실행되는 서버 사이드 스크립트 언어이다. PHP는 동적 웹 페이지를 쉽고 빠르게 만들 수 있도록 해주는 데 목적이 있다. PHP로 작성된 코드를 HTML 코드 안에 추가하면, 웹 서버는 해당 PHP 코드를 해석하여 동적 웹페이지를 생성한다.
    (3) ASP(Active Server Pages) : 동적인 웹 페이지를 작성할 수 있도록 도와주는 기법이다. 자바스크립트, 파이썬 등과 같이 스크립트 언어를 HTML 문서에 끼워넣어서 사용할 수 있다. ASP파일은 HTML 파일 내에 VBScript(비베스크립트), JavaScript가 포함하도록 작성한 다음 확장자를 .asp로 바꿔주면 사용할 수 있다. ASP의 장점은 초보자도 쉽게 시작할 수 있는 환경을 제공함으로써 웹사이트 관리 기능이 윈도우 체제로 되어있어 접근성이 좋고 DB와의 연동이 매우 쉽다.

* IIS(Internet Information Services)

-- 인터넷 정보 서비스의 약자로서, MS사의 윈도우 시스템에서 사용하는 웹서버 프로그램이다. ASP는 IIS 웹서버에서 동작하는 언어이며 비베스크립트라고도 부른다.

* 비즈니스 로직(Business Logic)

-- 하나의 프로젝트나 프로그램 중 업무와 관련된 처리를 하는 일부분을 뜻한다. 프로젝트를 하면서 DB에서 어떠한 자료를 가져와 웹에서 출력할 때 DB 연결, 통신, 자료가공, 페이지 구성 등 여러가지 작업을 하지만 그 중에서 사용자가 원하는 자료의 가공 부분을 의미한다. 즉, 비즈니스 로직은 유저의 눈에 보이지는 않지만, 유저가 바라는 결과물을 올바르게 도출할 수 있게 짜여진 코드 로직을 말한다.

* 컨테이너(Container)

-- 웹 서버가 보낸 JSP, PHP, ASP.net 등의 파일들을 실행하고 수행결과를 다시 웹 서버로 보내주는 역할을 한다. 결국, WAS는 웹 서버에서 요청을 받고, 이를 웹 컨테이너로 보내 로직을 수행하고 그 결과를 다시 웹 서버로 보내 최종적으로 클라이언트에게 보내주는 것이다.

* 서블릿 컨테이너(Servlet Container)

-- 서버에 서블릿을 만들었다고 해서 스스로 작동하는 것이 아니라 서블릿을 관리해주는 것이 필요한데. 그러한 역할을 하는 것이 서블릿 컨테이너이다. 예를 들어, 서블릿이 어떠한 역할을 수행하는 정의서라고 본다면, 서블릿 컨테이너는 그 정의서를 보고 수행한다고 볼 수 있다. 서블릿 컨테이너는 클라이언트의 요청(Request)을 받아주고 응답(Response)할 수 있게, 웹서버와 소켓으로 통신하며 대표적인 예로 톰캣(Tomcat), Redhat의 JBoss 등이 있다. 톰캣은 실제로 웹 서버와 통신하여 JSP(Java Server Page)와 서블릿이 작동하는 환경을 제공해준다.

* 클라우드 컴퓨팅(Cloud Computing)

-- 클라우드에서 서버, 스토리지, 소프트웨어 등 필요한 IT 자원을 받아서 사용하는 기술을 의미한다. 예를 들어 인터넷상의 서버에서 단순히 자료를 저장하는 것뿐만 아니라, 따로 프로그램을 설치하지 않아도 웹에서 제공하는 응용 프로그램의 기능을 이용하여 원하는 작업을 수행할 수 있으며, 여러 사람이 동시에 문서를 공유하면서 작업을 진행할 수 있다.

-- [클라우드 컴퓨팅의 종류]

  • 1) SaaS(Software as a Service) : 서비스 제공자가 모든 인프라와 소프트웨어 제품을 제공한다. 사용자는 웹 기반의 프론트엔드를 사용하여 서비스와 상호하여 필요할 때 원하는 비용만 내면 어디서든 곧바로 쓸 수 있다는 장점이 있다. PC나 기업 서버에 소프트웨어를 설치할 필요가 없는 만큼 소프트웨어 설치를 위해서 비용과 시간을 들이지 않아도 된다. 또 중앙에서 해당 소프트웨어를 관리하기 때문에 사용자가 일일이 업그레이드나 패치 작업을 할 필요도 없다. 대표적인 예로 구글 앱스, 세일즈포스닷컴, MS오피스 365, 드롭박스와 같은 클라우드 스토리지 서비스 등이 있다.

  • 2) PaaS(Platform as a Service) : 서비스 제공자가 자체 하드웨어 인프라에서 호스트하는 소프트웨어와 제품 개발 도구를 제공하는 클라우드 서비스이며 기본 인프라를 관리할 필요없이 애플리케이션을 실행 할 수 있게 해준다. DB 또는 애플리케이션 서버 등의 개발 환경과 관련한 서비스(OS, DB, WAS, JDK) 미들웨어를 제공한다. 특히 PaaS 서비스를 제공하기 위해서는 개발 기술을 모듈화, 표준화하는 능력, 기반에 최적화해 설치하는 기술력 그리고 지원력 등의 기술요건이 필요하다. 또한 모니터링이나 프로비저닝, 비용 처리 방식도 솔루션 개발사에 유리하게 구성되어 있다. 대표적인 예로 Google App Engine 등이 있다.

  • 3) IaaS(Infrastructure as a Service) : 가상 서버, 데이터 스토리지 및 데이터베이스와 같은 일련의 빌딩 블록에 대한 액세스를 서비스 형태로 제공하는 클라우드 서비스이다. IaaS 서비스를 제공하기 위해서는 대규모 데이터 센터의 서버 구축 및 운용 능력, 자본력, 넓은 대지, 풍부한 전력 환경 등이 필요하다. 가상 공간의 서버 자원을 제공하는 서비스로 서버의 확장이 가능하며, 윈도우나 리눅스 모두 지원하므로 몇 분 안에 서버를 만들어 낼 수 있다. 사용자는 이러한 빌딩 블록을 결합거나 계층 구조하하여 애플리케이션을 실행하는 데 필요한 인프라를 구축할 수 있다. 대표적인 예로 AWS(Amazon Web Service)와 Rackspace가 있다.

* AWS(Amazon Web Service)

-- 아마존닷컴에서 개발한 클라우드 컴퓨팅 플랫폼이다. 네트워킹을 기반으로 가상 컴퓨터와 스토리지, 네트워크 인프라 등 다양한 서비스를 제공하고 있다. 비즈니스와 개발자가 웹 서비스를 사용하여 확장이 가능하고 정교한 애플리케이션을 구축할 수 있도록 지원해준다. 현재 소규모 법인 및 개인회사를 포함한 다양한 사용자들이 사용하고 있으며, 클라우드 컴퓨팅의 장점을 이용하기 위해 많은 거대 기업에서도 활용하고 있다.

* 호스팅(Hosting)

-- 외부 서버의 기능을 빌려쓰는 것을 의미한다. 크게 웹 호스팅, 서버 호스팅, 클라우드 호스팅으로 구분한다.

-- [호스팅의 종류]

  • 1) 웹 호스팅 : 회원들의 홈페이지(웹사이트)를 올려놓은 인터넷 상의 공간을 임대하여 사용하는 것이다. 서버 및 인프라 구축이 필요없고 가격이 저렴하다는 장점이 있으나 단독 서버 사용자에 비해 자원 사용량이 제한되고, 서버 관리 권한이 없다는 단점이 있다.
  • 2) 서버 호스팅 : 호스팅 업체의 물리 서버를 단독으로 임대 혹은 구매하여 사용 서버 운영에 필요한 인프라와 기술력까지 제공받는다. 서버 관리에 대한 직접 권한을 갖고, 서버의 모든 자원을 활용이 가능하다. 또 서버 단독 사용으로 웹호스팅과 비교하여 보안상 유리하다. 하지만 초기 구축에 시간과 비용이 많이 소요되고 가격도 웹, 클라우드 호스팅에 비해 비싸다는 단점이 있다.
  • 3) 클라우드 호스팅 : 호스팅 업체의 가상 서버를 단독으로 사용하여 단, 몇 분 만에 서버를 생성 후 바로 사용하는 것이다. 서버 관리에 대한 직접 권한을 가진다 그렇기 때문에 사용자가 필요할 때 자유롭게 서버를 확장하거나 축소가 가능하다. 서버 호스팅과 비교하여 서버 스펙도 마음대로 조절이 가능하여 이용한 만큼만 지불하는 후불제로 매우 경제적이다. 하지만 하나의 프로그램에 이상이 생기면 연결된 다른 프로그램도 영향을 받는 다는 단점이 있으나 이중화 및 백업으로 커버가 가능하다.

* 프록시(Proxy)

-- 클라이언트가 자신을 통해서 다른 네트워크 서비스에 간접적으로 접속할 수 있게 해주는 컴퓨터 시스템이나 응용 프로그램을 말한다. 서버와 클라이언트 사이에 중계기로서 대리로 통신을 수행하는 것이며, 그 중계 기능을 하는 것을 프록시 서버(Proxy Server)라고 한다. 보안을 위해 사용하기도 하고, 캐시를 사용하여 리소스로의 접근을 빠르게 하기 위해 웹 프록시는 웹 서버로부터 웹 페이지를 캐시로 저장하는데 흔히 쓰인다.

-- [프록시 서버(Proxy Server)의 종류]

  • 1) 포워드 프록시(Forward Proxy) : 일반적인 프록시 서버를 말하며, 클라이언트와 웹 서버의 중계역할로 클라이언트가 요청 시 프록시 서버는 해당 요청을 웹 서버로 중계해 자원을 가져온다. 프록시 서버는 클라이언트가 요청하기 전까지 웹 서버의 주소를 알 수 없다.
  • 2) 리버스 프록시(Reverse Proxy) : 클라이언트와 내부망(Private Network) 서버 사이에 위치하여 제어 역할을 한다. 그래서 클라이언트가 요청을 하면 프록시 서버가 내부망 서버에 요청 후 응답받은 자원을 클라이언트에게 전달해준다. 리버스 프록시 서버는 실제 서버들에 대한 주소를 매핑하고 있어야 하며, 내부망에 서버에 대해 보안적으로나 로드밸런싱을 위해 사용되기도 한다.

* 로드밸런싱(Loadbalancing)

-- 부하 분산을 위해서 가상 IP를 통해 여러 서버에 접속하도록 분배하는 기능을 말한다. 하나의 인터넷 서비스가 발생하는 트래픽이 많을 때, 여러 대의 서버가 분산처리하여 서버의 로드율 증가, 부하량, 속도 저하 등을 고려하여 적절히 분산처리하여 해결해주는 서비스이다. 로드밸런싱을 해주는 소프트웨어 혹은 하드웨어 장비를 로드밸런서(Loadbalancer)라고 한다. 로드밸런서의 주 목적은 동시에 오는 수많은 커넥션을 처리하고 해당 커넥션이 요청 노드 중의 하나로 전달될 수 있게 하는 것이다. 그리고 단지 노드를 추가하는 것만으로 서비스가 확장성을 가질 수 있도록 한다. 오픈 소스 로드 밸런서 중 많이 사용되고 있는 것은 HAProxy이다.

-- [로드밸런싱의 주요 기술]

  • 1) NAT(Network Address Translation) : private IP를 public IP로 바꾸는데 사용하는 통신망의 주소변조기이다.
  • 2) DSR(Dynamic Source Routing protocol) : 로드밸런서 사용 시 서버에서 클라이언트로 되돌아가는 경우 목적지 주소를 스위치의 IP주소가 아닌 클라이언트의 IP주소로 전달해서 네트워크 스위치를 거치지 않고 바로 클라이언트를 찾아가는 개념이다.
  • 3) Tunneling : 인터넷상에서 눈에 보이지 않는 통로를 만들어 통신할 수 있게 하는 개념으로, 데이터를 캡슐화하여 연결된 상호간에만 캡슐화된 패킷을 구별해 캡슐화를 해제할 수 있다.

* RESTful API(Representational State Transfer)

-- HTTP 통신에서 어떤 자원에 대한 CURD(Create, Read, Update, Delete) 요청을 Resource와 Method로 표현하여 특정한 형태로 전달하는 방식이다. 즉, REST란 어떤 자원에 대해 CRUD 연산을 수행하기 위해 URI로 요청을 보내는 것으로 GET, POST 등의 방식(Method)을 사용하여 요청을 보내며, 요청을 위한 자원은 특정한 형태로 표현된다. 그리고 이러한 REST 기반의 API를 웹으로 구현한 것이 RESTful API이다.

* VPN(Virtual Private Network)

-- VPN은 가상의 사설망이라 할 수 있다. 회사의 네트워크가 구성되어있고 보안 상의 이유로 직원간 네트워크를 분리하고 싶다면 기존 인터넷선 선공사도 다시 해야하고 건물의 내부선을 다 뜯어고쳐야하며 다시 전용선을 깔아주어야 하는데, 이를 위해서 가상의 VPN을 사용하게된다. 즉, VPN은 네트워크A와 네트워크B가 실제로 같은 네트워크상에 있지만 논리적으로 다른 네트워크인 것처럼 동작한다. 이를 VPN이라 한다.

* VPC(Amazon Virtual Private Cloud)

-- 사용자 AWS 계정 전용 가상 네트워크이다. AWS 클라우드와 논리적으로 분리되어 있다고 규정함으로써 사용자에게 프라이빗한 가상 클라우드를 제공하는 클라우드 컴퓨팅 시스템이다.

* 서브네팅(Subnetting)

-- 네트워크 관리자가 네트워크 성능을 향상시키기 위해 자원을 효울적으로 분배하는 것을 말한다. 여기서 자원을 효율적으로 분배한다는 것은 네트워크 영역과 호스트 영역을 분할하는 것이다. 자원에는 한계가 존재하기 때문에 제한적인 자원으로 인해 주소에 낭비없이 아껴써야한다. 반대되는 단어로는 슈퍼네팅이 있다. 서브네팅은 서브넷 마스크를 통해 수행된다.

[서브네팅 사용 목적]

  • 1) 효율성 : IP주소를 효율적으로 나누어 낭비하는 것을 막을 수 있으며, 필요와 편의에 따라 구분하면 IP만을 통해 용도를 나눌 수도 있다.
  • 2) 성능 - (Broadcast) : 네트워크 브로드캐스트 사이즈를 줄일 수 있다. 이는 조직 단위 사이즈를 줄여 브로드캐스트 내 트래픽을 줄여 성능을 향상시킨다.
  • 3) 보안 - 네트워크 분리 : 테크워크를 분리함에 따라 보안성이 향상된다. 단일 도메인 내 여러 시스템이 존재하면 보안 이슈에 대한 파급 영향도 커진다.

* 서브넷(Subnet)

-- 하나의 네트워크가 분할되어 나눠진 작은 네트워크이다. 네트워크를 나눈다 혹은 쪼갠다고 표현한다. 네트워크를 운영중인 서비스의 규모에 맞게 분할하여 사용하기 위한 기술이다. 매우 큰 네트워크를 작게 나눠서 사용하면서, 낭비되는 IP주소 자원을 최소화하려는 것이 주된 목적이다.

* 서브넷마스크(Subnet Mask:부분망)

-- 필요한 네트워크 주소만 호스트 IP로 할당할 수 있게 만들어 네트워크 낭비를 방지한다.

* 게이트웨이(Gateway)

-- 컴퓨터 네트워크에서 서로 다른 통신망, 프로토콜을 사용하는 네트워크 간의 통신을 가능하게 하는 컴퓨터나 소프트웨어를 두루 일컫는 용어이다. 즉, 다른 네트워크로 들어가는 입구 열하는 하는 네트워크 포인트이다. 넓은 의미로는 종류가 다른 네트워크 간의 통로의 역할을 하는 장치이다. 또한 게이트웨이를 지날 때마다 트래픽도 증가하기 때문에 속도가 느려질 수 있다. 게이트웨이는 서로 다른 네트워크 상의 통신 프로토콜을 적절히 변환해주는 역할을 한다.

* 라우터(Router) 혹은 라우팅 기능을 갖는 공유기

-- 패킷의 위치를 추출하여, 그 위치에 대한 최적의 경로를 지정하며, 이 경로를 따라 데이터 패킷을 다음 장치로 전향시키는 장치이다. 이 때, 최적의 경로는 일반적으로는 가장 빠르게 통신이 가능한 경로이므로, 이것이 최단 거리 일수도 있지만, 돌아가는 경로라도 고속의 전송로를 통하여 전달이 되는 경로가 될 수 있다. 간단히 말해서 서로 다른 네트워크 간에 중계 역할을 해준다.

수정일자 2021-09-16
profile
Back-End Engineer

0개의 댓글

관련 채용 정보