1. WSL (Window Subsystem for Linux)
정의
- 윈도우에서 리눅스 환경처럼 Linux 명령어를 사용 할 수 있음
- Linux환경을 수정하지 않고 Windows에서 직접 기본 Linux 명령줄 도구를 실행할 수 있는 Windows 10의 기능
누구를 위한 WSL인가 ?
- 오픈 소스 프로젝트에서 작업하거나 Linux 서버 환경에 배포하는 개발자(특히 웹개발자)를 위한 도구
- Bash, 일반적인 Linux 도구(sed, awk, 등등) 및 Linux 프레임워크(Ruby, Python 등) 사용을 좋아하는 사람들을 위한 것
1. bash ? 명령어 편집 기능, 다수의 명령어를 지원
2. awk ? 데이터 조작을 위해 쉘 스크립트에서 사용되는 필수 툴
WSL 설치 방법
-
우분투를 설치한 뒤, 아래와 같이 wsl 설정을 하고 실행해보면 powershell에서 쉽게 wsl로 전환 가능
-
이제 윈도우에서도 스크립트도 편하게 짜고 마치 리눅스 서버처럼 각종 서버들을 설치하고 사용 가능
참조: https://hirlawldo.tistory.com/137
WSL로 할 수 있는 것은 ?
- WSL을 사용하면 배포 ( Ubuntu, Debian, Kali 등)를 선택하여 Bash Shell에서 실행할 수 있다.
1. 리눅스 배포판 ? 리눅스 커널 기반의 설치형 Linux OS를 뜻하며 사용자 프로그램과 라이브러리를 지원
2. 리눅스 OS? 리눅스 OS는 오픈소스이고 GNU GPL로 제공되므로 누구나 소스 코드를 실행, 분석, 수정, 재배포하고 수정한 코드의 사본 판매 가능
=> 예를 들면 , lsb_release -a 를 작성하고 enter를 누르면 현재 실행 중인 Linux 배포판의 세부 정보가 표시 됨
또한, Linux Bash Shell 내에서 로컬 시스템의 파일 시스템에 엑세스 가능
=> /mnt 폴더 아래에 탑재된 로컬 드라이브를 찾을 수 있다. 예를 들어 C: 드라이브는 /mnt/c 아래에 마운트 됩니다.
2. WAS vs Web Server
정의
- WAS는 DB 조회나 다양한 로직 처리를 요구하는 동적인 컨텐츠를 제공하기 위해 만들어진 어플리케이션 서버
- Web Server는 정적인 콘텐츠(HTML, CSS, IMAGE 등)를 요청받아 처리
WEB서버와 WAS를 나누는 이유
- WAS = Web Server + Web Container이며 웹 서버를 사용하지 않더라도 수행 가능! 하지만, 나누는 이유는 ?
- 데이터 처리 방식 : 예시로 클라이언트에 이미지파일을 보내는 과정에서 클라이언트는 HTML 문서를 먼저 받고 그에 맞게 필요한 이미지 파일들을 다시 서버로 요청하면 그때서야 이미지 파일을 받아옴
따라서, 웹서버에서는 정적인 컨텐츠만 처리하도록 기능 분배하여 서버의 부담을 줄일 수 있다.
- 보안 : 사람들에게 WAS는 공개되어질 필요가 없기 때문에 사용자에게 요청은 웹서버가 받고 그 요청을 WAS로 전달함
WEB서버와 WAS의 동작 과정
WAS 종류
- Tomcat
- JSP/Servlet Container중 하나로 사용자에게 JSP 요청을 받으면 서블릿으로 바꾸어 실행
- Web Server에서 요청한 동적 페이지를 읽어 프로그램 실행 후, 그 결과를 다시 HTML로 재구성하여 웹서버에게 전달
3. Docker
정의
클라우드
참조 : https://www.cloudflare.com/ko-kr/learning/cloud/what-is-the-cloud/
- 클라우드를 통해 사용자가 거의 모든 장치에서 동일한 파일과 애플리케이션을 엑세스할 수 있음
- 정보는 클라우드에 영구적으로 저장되고 컴퓨터, 노트북, 휴대용 기기 등과 같은 클라이언트에는 일시적으로 보관되어 사용되는 원리
도커 - 컨테이너 (설치/실행에 필요로하는 모든 정보 모아둠)
- 도커는 이러한 클라우드 원리를 이용하여 개발에 있어서 빠르고 편리함을 위해 고안된 기술
- 도커의 컨테이너 기술은 플랫폼에 상관없이 애플리케이션을 실행할 수 있는 기술을 의미
*컨테이너 ? 정형화된 규격에 맞춰 제품을 넣으면 운송수단에 관계없이 효율적인 운송이 가능
도커에서 중요한 개념 - 이미지
- 이미지는 서비스에 필요한 프로그램, 라이브러리, 소스 코드 등을 묶은 파일을 뜻함
- 예를 들면, Ubuntu 이미지는 Ubuntu를 실행하기 위한 모든 파일을 가지고 있음
- 즉 , OS로 치면 이미지는 실행파일 / 컨테이너는 프로세스
참조: https://devowen.com/249
=> 도커는 리눅스 환경에서만 구동이 되며, 리눅스 터미널에서 도커엔진을 통해 이미지를 검색
=> 예시 : python3.3 버전이 설치된 환경을 가지고 싶다면, 이미지명이 python3.3인 이미지를 검색하여 적절한 이미지를 다운 받아 새로운 컨테이너를 설치하게 되는 것
도커가 각광 받는 이유 ? 효율적인 개발!
- 개발환경을 구축하는데 걸리는 시간 단축
- 격리된 환경을 활용하여 실험적인 개발 가능 + 비용절감
- 개발자들은 환경을 위한 패키지 구성 요소를 많이 신경 쓸 필요 없이 컨테이너 등장 이후에는 기본적인 운영베이스만 만들어주면 끝 => 컨테이너는 OS 커널에 관계 없이 실행 가능 !
참조 : https://ssola22.tistory.com/12