hyo_jung
[Work Book] UMC 서버 1주차 본문
학습 목표
- 서버의 정의와 역할을 이해한다.
- 서버의 구성요소과 각 요소와의 관계를 이해한다.
- 서버가 어떻게 구축되는지 이해한다.
- 서버와 관련된 개념들을 이해한다.
핵심 개념 키워드
서버와 서비스
- 서버는 클라이언트에게 서비스를 제공하는 존재, 클라이언트의 요청에 의하여 서비스를 한다.
클라이언트 - 서버 관계
- 요청과 응답
- 클라이언트가 서버에게 요청을 하면 서버는 클라이언트의 요청에 맞는 서비스를 제공한다.
서버의 동작 방식과 순서(요청이 들어왔을 때 서비스가 어떻게 처리되는가?)
- client의 요청을 server program이 받는다.
- server program이 backend language에게 요청을 전달하면 backend language가 요청에 맞는 작업을 수행한다.
- backend language가 작업을 수행할 때 필요한 데이터를 DB에서 가져오기 위해 DB로 query를 보낸다.
- DB로부터 query에 대한 결과를 받으면 backend language가 server program에게 요청에 대한 결과를 알려준다.
- server program이 client에게 요청 결과를 보여준다.
서버의 구조
- Server Program
- 웹서버
- 웹 브라우저와 같은 클라이언트로부터 HTTP 요청을 받아들이고, HTML 문서와 같은 웹 페이지를 반환하는 컴퓨터 프로그램이다. 주로 그림, CSS, 자바스크립트를 포함한 HTML 문서가 클라이언트로 전달된다.
- 웹 서버 - 위키백과, 우리 모두의 백과사전
- nginx
- 동시 접속 처리에 특화된 웹 서버 프로그램이다.
- 비동기 이벤트 기반 구조를 가지는데 이러한 구조는 서버에 많은 부하가 생길 경우의 성능을 예측하기 쉽게 해준다.
- NGINX 소개 - NGINX
- Nginx 이해하기 및 기본 환경설정 세팅하기
- apache
- 오픈소스, 크로스 플랫폼 HTTP 웹 서버 프로그램이다.
- 스레드/프로세스 기반 구조를 가진다.
- 현재 가장 인기 있는 웹 서버이다.
- 웹서버
- Back-end Language
- java - spring, spring boot
- Spring
- 자바 기반의 웹 어플리케이션을 만들 수 있는 프레임워크이다.
- 자바 객체와 라이브러리들을 관리해주며, 톰캣과 같은 WAS가 내장되어 있어 자바 웹 어플리케이션을 구동할 수 있다.
- Spring Boot
- 매우 간단하게 프로젝트를 설정할 수 있게 하여, Spring 개발을 조금 더 쉽게 만들어주는 도구이다.
- Spring의 많은 부분을 자동화하여 다양한 설정을 직접 할 필요가 없다.
- 스프링(Spring), 스프링 부트(Spring Boot)란? 개념 정리
- Spring vs Spring Boot
- Spring
- javascript - node.js, express
- Node.js
- 서버 사이드 어플리케이션 개발에 사용되는 소프트웨어 플랫폼이다.
- 자바스크립트를 활용하며 non-blocking I/O와 단일 스레드 이벤트 루트를 통한 높은 처리 성능을 가지고 있다.
- 내장 HTTP 서버 라이브러리를 포함하고 있어 웹 서버에서 아파치 등의 별도의 소프트웨어 없이 동작하는 것이 가능하다.
- express
- node.js의 핵심 모듈인 http와 Connect 컴포넌트를 기반으로 하는 웹 프레임워크이다.
- 개발자들이 특정 프로젝트에 필요한 라이브러리를 자유롭게 선택할 수 있다.
- 자바스크립트 - 위키백과, 우리 모두의 백과사전
- Node.js - 위키백과, 우리 모두의 백과사전
- Node.js, Express 개념정리하기
- Node.js
- python - django, flask
- django
- 파이썬으로 만들어진 무료 오픈소스 웹 어플리케이션 프레임워크이다.
- MVC 패턴을 따르고 있다.
- flask
- django보다 가벼운 파이썬 웹 프레임워크이다.
- 특별한 도구나 라이브러리가 필요없다.
- Django 소개 - Web 개발 학습하기 | MDN
- django
- java - spring, spring boot
- DB, DBMS
- SQL은 정해진 데이터 스키마에 따라 테이블에 저장되므로 스키마를 따르지 않으면 데이터 추가가 불가능하다.
- NoSQL에서는 스키마와 관계가 없기 때문에 다른 구조의 데이터를 같은 컬렉션에 추가하는 것이 가능하다.
APM
- 웹 서버를 구성하는 주요 도구인 Apache, PHP, MySQL을 묶어서 이르는 말이다.
비트나미
- 가상 어플라이언스 및 웹 애플리케이션, 개발 스택용 소프트웨어 패키지 및 설치 라이브러리이다.
- 어플리케이션 솔루션들을 패키지로 만들어 사용자가 어플리케이션을 쉽게 설치하도록 도와준다.
로컬호스트(localhost)
- 컴퓨터 네트워크에서 사용하는 루프백 호스트명으로, 자신의 컴퓨터를 의미한다.
- 로컬 컴퓨터를 원격 컴퓨터인 것처럼 통신할 수 있다.
가상머신(Virtual Machine)
- Virtual Box
- 컴퓨터 가상화 프로그램이다.
- 1개 이상의 운영체제를 동시에 실행시킬 수 있다.
- 대부분의 운영체제를 구동시킬 수 있다.
- VMware
- 컴퓨터 가상화 프로그램이다.
Linux, Ubuntu
- Linux
- 무료이며 오픈소스이다.
- UNIX기반 OS이다.
- Ubuntu
- Linux 배포판 중 하나로 다른 배포판에 비해 편리한 설치, 유지보수 절차, 사용자 친화적인 사용법과 인터페이스가 특징이다.
리눅스 명령어
리눅스 디렉토리 구조
- 전체적으로 트리 구조를 가지고 있다.
- 리눅스 디렉토리 구조
vi(vim) 편집기 사용법
추가 개념 키워드
Web Server(WS)와 Web Application Server(WAS)
- [Web] 웹 서버와 WAS의 차이를 쉽게 알아보자
- WEB 서버와 WAS 서버의 차이
- {즉문즉설} WAS와 WS의 차이점은? (feat. Nginx, Node Express, Flask)
- [10분 테코톡] 👩🦰희봉의 웹서버 vs WAS
운영체제(OS)
- 운영체제
- Window
- 컴퓨터 역사상 가장 대중적으로 널리 알려지고, 가장 많이 사용되고 있는 운영체제이다.
- Microsoft에서 개발한 컴퓨터 운영체제이다.
- MacOS
- 애플이 개발한 유닉스 운영체제로 현존하는 유일한 PC용 유닉스 운영체제이다.
CLI와 GUI
- 인터페이스
- 서로 다른 두 개의 시스템, 장치 사이에서 정보나 신호를 주고받는 경우의 접점이나 경계면이다.
- 사용자가 기기를 쉽게 동작시키는데 도움을 주는 시스템을 의미한다.
- 인터페이스 (컴퓨팅) - 위키백과, 우리 모두의 백과사전
- GUI
- 사용자가 편리하게 사용할 수 있도록 입출력 등의 기능을 알기 쉬운 아이콘 따위의 그래픽으로 나타낸 것이다.
- 컴퓨터를 사용하면서, 화면 위의 물체나 틀, 색상과 같은 그래픽 요소들을 어떠한 기능과 용도를 나타내기 위해 고안된 사용자를 위한 컴퓨터 인터페이스이다.
- 그래픽 사용자 인터페이스 - 위키백과, 우리 모두의 백과사전
- CLI
- 가상 터미널 또는 터미널을 통해 사용자와 컴퓨터가 상호 작용하는 방식이다.
- 명령 줄 인터페이스 - 위키백과, 우리 모두의 백과사전
HTTP
- HTML 문서와 같은 리소스들을 가져올 수 있도록 해주는 프로토콜이다.
- HTTP - 위키백과, 우리 모두의 백과사전
패키지 설치와 컴파일 설치
- 패키지 매니저
- 패키지를 설치, 업데이트, 수정, 삭제하는 작업을 편리하고 안전하게 수행하기 위해 사용되는 툴이다.
- 패키지 매니저(Package Manager)란?
- 컴파일 설치
- 소스를 다운로드받고 컴파일하여 설치하는 방법으로 버전, 빌드 옵션 등을 직접 설정할 수 있다.
'개발 > Backend' 카테고리의 다른 글
| [Work Book] UMC 서버 5주차 (0) | 2021.11.07 |
|---|---|
| [Work Book] UMC 서버 4주차 (0) | 2021.11.04 |
| [Work Book] UMC 서버 3주차 (0) | 2021.10.18 |
| [Work Book] UMC 서버 2주차 (0) | 2021.10.15 |
| Quick DBD 사용 후기 (0) | 2021.10.10 |