딸기말차

[MSA] 1. Ubuntu, Docker 본문

Bootcamp/MSA

[MSA] 1. Ubuntu, Docker

딸기말차 2023. 9. 26. 20:57

엔코아 플레이데이터(Encore Playdata) Backend 2기 백엔드 개발 부트캠프 (playdata.io)

 

백엔드 개발 부트캠프

백엔드 기초부터 배포까지! 매력있는 백엔드 개발자 포트폴리오를 완성하여 취업하세요.

playdata.io


1.  설치

1. appwiz.cpl

appwiz.cpl

2. Windows 기능 켜기 / 끄기

Windows 기능 켜기 / 끄기

1. Linux용 Windows 하위 시스템 체크
2. 가상머신 플랫폼 체크
3. Windows 하이퍼 바이저 플랫폼 체크

3. Microsoft Store

Ubuntu 22.04.02 설치

윈도우에서 Ubuntu는 shell script 로 bash를 사용하고 있고, Mac 환경은 zsh을 사용한다.


2.  자주 사용하는 명령어

1. terminal

pwd 현재 위치
whoami  현재 사용자 확인
cd ~ home 디렉토리로 이동
cd / 폴더 이동
ls  파일 목록
ls -al (ll) 파일 목록과 정보도 함께 출력
echo "내용" 표준 입출력
cat  파일 보기
chmod 숫자 파일명 해당 파일의 권한 변경
cat /etc/issue 현재 우분투 운영체제 버전 보기

/etc 폴더는 시스템 환경 설정 파일 및 부팅과 관련 된 여러가지 스크립트 파일이 존재하기 때문에, 해당 디렉토리는 root 를 통해서만 관리해야한다.

 

2. cmd

wsl -l -v wsl 버전 확인
wsl --shutdown 백그라운드에서 돌아가고 있는 wsl 종료

 

3. vim

i 수정 모드
esc 비주얼 모드
: 명령어 모드
:q 종료
:wq 쓰기 후 종료

3. 권한

파일 정보를 순서대로 뜯어보면, 다음과 같다.

-rwxrw-r-- 1 lhs  lhs    12 Sep 26 11:16 encore.txt
- 파일표시 - : 파일, d : 디렉토리, l : 링크
rwx 소유자 권한 r : 읽기, w : 쓰기, x : 실행
rw- 그룹 권한 r : 읽기, w : 쓰기, x : 실행
r-- 다른 사용자 권한 r : 읽기, w : 쓰기, x : 실행
1 링크 수  
lhs 소유자  
lhs 소유자 그룹  
12 파일 크기  
Sep 26 11:16 수정한 날짜  
encore.txt 파일 이름  

 

권한을 변경하기 위해선, chmod 키워드와 함께 숫자를 작성한다. (chmod 755)

이 때 읽기는 4, 쓰기는 2, 실행은 1을 사용한다.

7 읽기 + 쓰기 + 실행 (4 + 2 + 1)
6 읽기 + 쓰기 (4 + 2)
5 읽기 + 실행 (4 + 1)
4 읽기 (4)
3 쓰기 + 실행 (2 + 1)
2 쓰기 (2)
1 실행 (1)

4. HTTP 와 HTTPS

HTTP는 클라이언트와 서버 간 통신을 위한 통신 프로토콜로, 사용자가 웹 사이트를 방문하면 사용자 브라우저가 웹 서버에 HTTP 요청을 전송하고 웹 서버는 HTTP 응답으로 응답한다.

HTTPS(Hypertext Transfer Protocol Secure)는 HTTP의 확장 버전 또는 더 안전한 버전으로, HTTPS에서는 브라우저와 서버가 데이터를 전송하기 전에 안전하고 암호화된 연결을 설정한다.

 

즉, HTTP는 브라우저에서 전송 된 정보를 제 3자가 가로채고 읽을 수 있기 때문에, HTTP 요청 및 응답을 SSL 및 TLS 기술에 결합해 보안계층을 추가한 HTTPS로 확장되었다.

  HTTP (Hypertext Transfer Protocol)  HTTPS (Hypertext Transfer Protocol Secure)
기본 프로토콜 TCP / IP (HTTP1, HTTP2)
QUIC (HTTP3) 
SSL / TLS, HTTP2
포트 80 443
보안 보안 기능 X Public Key 암호화에 SSL 인증서 사용
장점 인터넷을 통한 통신 지원 웹 사이트에 대한 권위, 신뢰성 및 검색 엔진 순위 개선

 

HTTPS의 공개키 알고리즘으로 RSA 를 많이 사용하고, 암호키 알고리즘으로 SHA-256 같은 알고리즘을 많이 사용한다.


5. IP

IP는 인터넷에 연결 된 컴퓨터의 고유주소이다. 네트워크의 IP 주소 체계는 여태 255.255.255.255 와 같은 형태의 IPv4를 사용했지만, 해당 주소는 32bit로 만들어졌을 당시와 다르게 현재는 주소의 수가 부족하게 되었다. 때문에 128bit 형태의 IPv6가 등장하게 되었다.

인터넷이 처음 생겼을 때 public ip를 마구 배분하니 ip부족사태가 발생했고,
기기들이 인터넷을 사용할때마다 public ip를 부여할 수 없게 됐다. 

그래서 공유기가 나왔고, 공유기에서 기기들에 인터넷 연결을 해주는 방법을 사용하기 시작했다.
즉, 공유기는 하나의 public ip를 할당받고 컴퓨터는 공유기로부터 사설 ip를 할당받아 인터넷 망에 접속한다.

사설 ip는 CMD 창에 IPCONFIG 또는 IFCONFIG를 치면 IPv4에 나오는 주소이다. 
이는 private ip주소이기 때문에 외부에 공개되지 않는다. 
또한, 하나의 공인 IP주소를 공유하여 여러 대의 컴퓨터가 인터넷에 접속하게 하려면 사설 IP 주소가 필요하다. 
때문에 사설 IP 주소는 자신의 네트워크 망 안에서만 유일한 주소이고, 이를 게이트웨이라 한다.

 

1. IP Class

IP Class IP 범위
A Class 10.0.0.0 - 10.255.255.255
B Class 172.16.0.0 - 172.31.255.255
C Class 192.168.0.0 - 192.168.255.255

6. 가상머신

가상머신

가상화 기술인 가상머신은, 하이퍼바이저를 이용해 여러 OS를 하나의 호스트에서 생성해서 사용하는 방식이다.

여기서 하이퍼바이저에 의해 생성되고 관리되는 운영체제를 Guest OS 라고 하고, 각 Guest OS는 다른 Guest OS와 독립적으로 동작한다. 이런식으로 동작하는 가상화 기술을 사용하는 대표적인 툴로 Virtual Box, VMware 가 있다.

 

그러나, 이러한 작업을 하기위해 반드시 하이퍼바이저를 거쳐야하기 때문에 일반 호스트에 비해 성능이 줄어드는 단점이 존재한다. 즉, 가상머신은 Guest OS를 사용하기 위해 라이브러리, 커널 등을 전부 포함하고 있기 때문에 가상머신을 배포하기 위한 이미지로 만들었을 때 그 크기 또한 커지게 되어 해당 이미지를 배포하기에 용량이 너무 크다는 단점이 있다.

1. 가상머신은 Hypervisor를 통해 여러개의 운영체제를 생성되고 관리된다. (Guest OS)
2. 시스템 자원을 가상화하고 독립된 공간을 생성하는 작업은 HyperVisor를 거치므로 성능손실이 크다.
3. 가상머신은 Guest OS를 사용하기 위한 라이브러리, 커널 등을 포함하므로 배포할 때 용량이 크다.

7. Docker

Docker

도커는 가상화 된 공간을 생성하기 위해 리눅스 자체 기능인 chroot, namespace, cgroup를 사용해 프로세스 단위의 격리 환경을 만든다. 즉, 내 컨테이너 내부에 도커의 기능을 심는 것이라 볼 수 있다.

 

때문에 도커는 성능 손실이 거의 없으며, 컨테이너 안에는 어플리케이션을 구동하는데 필요한 라이브러리 및 실행파일만 존재하기 때문에 컨테이너를 이미지로 만들었을 때 이미지의 용량이 가상머신에 비해 많이 줄어든다.

1. 도커 컨테이너는 가상화된 공간을 생성할 때 리눅스 자체 기능을 사용하여
프로세스 단위의 격리 환경을 만드므로 성능 손실이 거의 없다.

2. 가상머신과 달리 커널을 공유해서 사용한다.
즉, 컨테이너에는 라이브러리 및 실행파일만 있으므로 이미지의 용량이 작아, 배포시간이 빠르다.

9. 48일차 후기

MSA를 구성하기 위한 리눅스 환경, 가장 인기 많은 기술인 도커에 대해 수업을 진행하였다.

 

도커는 컨테이너 기반의 기술로, 간단히 말해 컨테이너에 개발한 어떤 파일을 넣던 모든 파일의 실행 방법이 동일해 진다.

즉, 자바로 만들던 자바 스크립트로 만들던 도커가 관리하는 이미지로 만든다면 동일하게 실행할 수 있게 된다.

이러한 방법을 리눅스에서도 cgroups. navespaces, libcontainer 같은 모듈로 컨테이너 기술을 사용 가능하지만, 너무 불편하기 때문에 도커를 추천하고 많이 사용한다.

 

따라서 운영 및 배포 시 사실상 도커가 필수이기 때문에, 해당 기술에 대해 꼭 알고 있어야 된다는 생각이 들었다.

'Bootcamp > MSA' 카테고리의 다른 글

[MSA] 6. Docker 활용, SQL 예제  (0) 2023.10.12
[MSA] 5. Docker 활용, Compose  (0) 2023.10.11
[MSA] 4. Docker 활용, Image Build  (0) 2023.10.10
[MSA] 3. Network  (1) 2023.10.05
[MSA] 2. Docker Image, Container  (0) 2023.09.27