vi라는 이름은 한 줄씩 편집하는줄단위 편집기가 아니라 한 화면을 편집하는 비주얼 에디터(visual editor)라는 뜻에서 유래했습니다.
간결하면서도 강력한 기능으로 사용자가 많습니다.
리눅스에는 vim 에디터만 설치되어 있습니다.
소문자로 vi 라고 치면 vim 이 실행되고, vim 이라고 쳐도 vim 이 실행됩니다.
리눅스에서는 vi를 쓸지 vim을 쓸지 고민하지 않아도 됩니다. 둘다 똑같은 것입니다.
vim 안에는 vi 의 기능들도 다 포함되어 있기에, 유닉스를 다룬다고 하더라도 vi 를 따로 익힐 필요는 없습니다.
삽입
키기능
i
커서 위치에 Insert
I
줄 맨 앞에서 Insert
a
커서 다음에 Insert
A
줄 맨 뒤에서 Insert
o
커서 아래로 한 줄 띄우고 Insert
O
커서 위로 한 줄 띄우고 Insert
i / a / o 를 누르면 -- INSERT -- 모드로 변경돼서 입력이 가능하다.
이동
키기능
개인적으로 많이 쓰는 이동키는 {} 와 :$ / :^ 이다.
그리고 전체 삭제할 땐 :1,$d를 누르면 해당 파일의 전체 내용이 삭제된다.
w
단어 첫 글자 기준으로 다음으로 이동
W
공백 기준으로 다음(단어의 시작)으로 이동
b
단어 첫 글자 기준으로 이전으로 이동
B
공백 기준으로 이전으로 이동
e
단어 마지막 글자 기준으로 다음으로 이동
E
공백 기준으로 다음(단어의 끝)으로 이동
gg
문서 맨 앞으로 이동
G
문서 맨 아래로 이동
^
문장 맨 앞으로 이동
$
문장 맨 뒤로 이동
{
띄어쓰기가 있는 문단의 맨 앞으로 이동
}
띄어쓰기가 있는 문단의 맨 뒤로 이동
참고사항 : vi 편집기가 아닌 커맨드라인(명령줄)에서
맨 앞으로 가고 싶을 땐 ctrl + a (append)
맨 뒤로 가고 싶을 땐 ctrl + e (end)
검색
:/단어 = 검색할 단어를 검색, `n`과 `N`으로 다음/이전 찾기
:se nu = 코드 줄 번호를 볼 수 있다. (set number의 약자로 se nu라고만 입력해도 줄 번호를 볼 수 있다.)
:se nonu = set number 모드를 취소할 수 있다.
ex) :3 = 3번째 줄로 커서를 이동시킬 수 있다.
편집
키기능 = 복사, 붙여넣기, 잘라내기 할 때 유용하다.
ex) 만약 잘 못 삭제한 코드가 있다면 u를 입력해서 되돌리기가 가능하다.
5줄을 동시에 복사할 땐 5y를 하면 5줄이 복사되고 붙여넣고 싶은 줄에 p를 입력하면 5줄이 복사된다.
dd
현재 줄 잘라내기
yy
현재 줄 복사하기
p
붙여넣기
u
실행취소 (Undo)
ctrl + r
재실행 (Redo)
v
Visual모드
y
복사
c
잘라내기
저장
키기능 : 코드 수정 후에 저장 또는 저장하지 않고 닫기를 해야 한다.
:w
저장
:q
닫기
:q!
저장하지 않고 닫기
:wq
저장하고 닫기
:숫자
지정한 줄 번호로 이동
h, j, k, l - 좌,하,상,우 커서이동
i - 현재 커서 위치에 Insert 하기
I - 현재 줄 맨앞에 Insert 하기
a - 현재 커서 다음칸에 Insert 하기
A - 현재 줄 맨뒤에 Insert 하기
O - 윗줄에 Insert 하기
o - 아랫줄에 Insert 하기
w - 단어 첫글자로 이동하기
W - 화이트스페이스 단위로 다음 글자로 이동하기
b - 백워드 방향으로 단어의 첫글자로 이동하기
B- 백워드 방향으로 화이트스페이스 단위로 다음 글자로 이동하기
e - 단어의 마지막 글자로 이동하기
ge - 백워드 방향으로 단어의 마지막 글자로 이동하기
gg - 문서 맨 앞으로 이동
G - 문서 맨끝으로 이동
^ - 문장 맨 앞으로 이동
0 - 라인 맨 앞으로 이동
$ - 문장 맨 뒤로 이동
f문자 - 문자의 위치로 이동 ; 를 누르면 계속 이동
F문자 - 백워드로 문자의 위치로 이동
t문자 - 문자의 앞위치로 이동
T문자 - 백워드방향으로 문자의 앞위치로 이동
/단어 - 문서에서 단어 찾기 n이나 N으로 다음/이전 찾기
* - 현재 단어를 포워드 방향으로 찾기
# - 현재 단어를 백워드 방향으로 찾기
Ctrl + f - 다음 페이지 이동
Ctrl + b - 이전 페이지 이동
Ctrl + u - 페이지절반만큼 다음으로 이동
Ctrl + d - 페이지절반만큼 이전으로 이동
H - 현재 화면의 맨 위라인으로 이동
M - 현재 화면의 중간 라인으로 이동
L - 현재 화면의 마지막 라인으로 이동
]] - 포워드 방향으로 여는 컬리 블레이스( { )로 이동
[[ - 백워드 방향으로 여는 컬리 블레이스( { )로 이동
][ - 포워드 방향으로 닫는 컬리 블레이스( { )로 이동
[] - 백워드 방향으로 닫는 컬리 블레이스( { )로 이동
% - {}나 ()에서 현재 괄호의 짝으로 이동
dd - 현재 줄 잘라내기
dw - 단어 잘라내기
yy - 현재 줄 복사하기
p - 붙혀넣기
r - 현재 글자 교체하기
u - Undo
Ctrl + R : Redo
x - 현재 글자 지우기
X - 앞의 글자 지우기
> - 들여쓰기
< - 내어쓰기
. - 이전 명령어를 다시 실행
v - 비쥬얼모드(비쥬얼 모드에서 커서 이동해서 블럭지정 가능)
y - 복사하기
c - 잘라내기
cw - 단어 잘라내기
J - 다음 라인을 현재 줄의 끝으로 이어 붙힘
~ : 선택 문자 대소문자 변경
Ctrl + A : 숫자를 증가시키기
Ctrl + X : 숫자를 감소시키기
:w - 문서 저장하기
:q - 현재 문서 닫기
:q! - 저장하지 않고 닫기
:wq - 저장하고 닫기
:숫자 - 지정한 라인넘버로 이동
:new - 가로로 분할된 창 열기
:vs - 세로로 분할된 창 열기
Ctrl + w - 분할창 간에 이동하기
:tabnew - 새로운 탭 열기
:gt - 다음 탭으로 이동하기
:gT - 이전 탭으로 이동하기
:e ./ - 현재 탭에 오픈할 파일 탐색하기( ./ 는 현재위치에서 탐색 시작)
:colorscheme 스키마명 - VIM의 칼라스키마를 변경함(blue, desert, evening 등.. 스키마명에서 탭누르면 자동완성됨)
zc - 코드 접기(fold)
zo - 접힌 코드 펼치기
zd - fold 지우기
zR - 접힌 코드 모두 펼치기
zM - 코드 모두 접기
zD - 모든 fold 지우기
:buffers - 현재 Vim에서 여러 파일을 열었을때 버퍼에 있는 목록 확인
:buffer 숫자 - 버퍼 목록에 나온 숫자를 입력하면 해당 파일을 오픈함 ( :buffer 대신 :b 도 가능)
:bnext - 버퍼에 있는 다음 파일로 이동 ( :bn 도 가능)
:bprevious - 버퍼에 있는 이전 파일로 이동 ( :bp 도 가능)
:ball - 버퍼 목록에 있는 파일들이 가로로 분할된 창에 열림
nmcli를 사용하면 Network Manager 및 네트워크 상태, Linux 시스템에서 네트워크 장치 및 연결을 관리하고 구성하는 데 사용할 수 있는 명령어이다. 새 네트워크 연결 만들기, 기존 연결 수정, 네트워크 장치 관리와 같은 네트워크 구성을 위한 포괄적인 기능을 제공한다. 명령줄 작업을 선호하는 사용자에게 유용한 도구이다. 시간이 절약되고 자신감이 생기며 스크립트에서 사용할 수 있으며 Linux 서버 네트워킹 문제를 해결하고 기능을 신속하게 복구하기 위해 사용하는 첫 번째 도구이다.
nmcli dev status (사용 가능한 모든 장치의 상태 표시)
nmcli dev show <장치 이름(ex.ens33)> (해당 장치의 구성 세부 정보 출력)
nmcli con show (사용 가능한 모든 연결의 상태를 표시)
nmcli con show ens33 <연결 이름> (해당 연결의 세부 정보 출력)
nmcli con add con-name <연결 이름> ifname <인터페이스 이름> type <연결 타입>
<연결 이름>을 원하는 연결 이름으로, <인터페이스 이름>을 사용하려는 인터페이스 이름으로, <연결 타입>을 생성하려는 연결 유형(예: 이더넷, wifi 등)으로 작성한다.
nmcli con up <연결 이름> (해당 이름의 연결이 활성화 된다.)
nmcli con down <연결 이름> (해당 이름의 연결이 비활성화)
nmcli con edit <연결 이름> (해당 연결의 구성을 변경할 수 있는 대화형 편집기가 열린다.)
nmcli con mod <이름> ipv4.addresses <ip/24> ipv4.gateway [gateway ip] ipv4.dns [dns ip]
<이름>을 수정하려는 연결로 바꾸고 <IP/24>로 원하는 IP 주소와 서브넷 마스크로 바꾼다. 게이트웨이와 DNS서버도 등록 가능
- nmtui (Network Manager Text User Interface)
nmtui는 Network Manager를 사용하는 Linux에서 연결을 관리할 수 있는 간단한 TUI(Text User Interface) 화면을 제공한다. nmcli의 기능을 화면으로 볼 수 있는 그래픽 인터페이스를 제공한다. 그래픽 화면을 제공하기 때문에 nmcli 명령줄 입력을 선호하지 않는 사용자에게 보다 쉽고 간단하게 네트워크 구성을 할 수 있도록 편의를 제공해준다.
nmtui 초기 화면 = 3가지 기능 제공(연결 수정, 연결 활성화, 호스트네임 수정)Edit a connection 화면 = 네트워크 세부사항을 수정할 수 있다.Activate a Connection 화면 = NIC(ens33)에 *별 표시가 들어와야 활성화가 됐다는 뜻이다.Set System Hostname = nmtui에서는 호스트 네임도 쉽게 변경할 수 있다.
- vi /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE= 여기에 이더넷 유형이 있습니다. 와이파이, 팀, 본드 등을 가질 수 있습니다.
BOOTPROTO= 값이 "dhcp”인 경우dhcp 서버에서 동적 IP를 가져옵니다. 값이 "static"인 경우 동적 IP를 사용하지 않고 고정 IP를 할당할 수 있습니다.
NAME= 인터페이스 명이며, 장치명을 뜻합니다.
DEVICE= 이 프로필과 연결된 네트워크 장치의 이름입니다.
ONBOOT= 기본 값은 "no"로 설정되어 있으며, "yes"로 변경 할 경우 부팅 시 컴퓨터가 이 프로필을 읽고 기기에 설정에 둔 고정IP를 할당하려고 시도함을 의미합니다.
PREFIX= 서브넷 마스크 값, 24는 255.255.255.0을 의미합니다. 바이너리 형식을 적어두면 서브넷 마스크를 더 잘 이해할 수 있습니다. 예를 들어 값 16, 24, 26은 처음 16, 24 또는 26비트가 각각 1이고 나머지는 0임을 의미하며, 정확히 네트워크 주소와 할당할 수 있는 IP 범위를 정의합니다. 즉 IP를 사용할 수 있는 호스트는 256명입니다.
GATEWAY= 게이트웨이 IP, VMware NAT Gateway IP
IPADDR은 프로필에 할당하는 고정 IP입니다.
DNS1,DNS2= 사용할 두 개의 DNS 서버, 보통 168.126.63.1(KT DNS 서버) / 8.8.8.8(구글 DNS 서버)를 입력합니다.
vi로 네트워크 인터페이스 카드를 변경해준 뒤에는
systemctl restart network 명령어 입력을 통해 네트워크 연결을 최신화해줘야 한다!
Staging Area : 커밋을 하기 위해 $ git add 명령어로 추가한 파일들이 모여있는 공간
Repository : 커밋들이 모여있는 저장소
열심히 코드를 작성하다가 커밋을 해야하는 순간이 오면 git add .를 통해 커밋할 파일들을 추가합니다.
이 파일은 바로 Repository에 올라가지 않고, Staging Area에 올라가게 됩니다.
Staging Area에 추가한 파일들을 Commit을 한다면 최종적으로 저장소(Repository)로 저장되게 됩니다.
Git 에서 세 가지 영역
Git 프로젝트는 Git 디렉터리, 워킹 디렉터리, Staging Area 라는세 가지 영역을 갖게 됩니다.
Git 프로젝트에서 파일들은 아래 세 가지 영역별로 다양한 상태를 가지게 됩니다.
워킹 디렉터리(워킹 트리)
워킹 디렉터리는 Git 디렉터리에서 특정 버전을 Checkout 해온 것입니다.
또한 우리는 이곳에서 프로젝트 작업(개발 및 수정)을 진행하게 됩니다.
쉽게 말하면 내가 작업하고 있는 프로젝트의 디렉터리를 뜻합니다. Git Directory는 지금 작업하는 디스크에 있고 그 디렉터리 안에 압축된 데이터베이스에서 파일을 가져와 Working Directory를 만듭니다.
git clone 'github repo https 주소'
Staging Area
또 다른 하나는Stating Area이며, 실제로는 Git 디렉터리에 파일로 존재합니다. Index 영역이라고도 하지만 Staging Area가 표준 명칭으로 자리 잡힌 상태입니다.
Staing Area는 워킹트리에서 작업한 내용이 Git 디렉터리에 Commit 되기 전에 거쳐가는 공간이지만, 이곳을 거치지 않고 바로 Commit 될 수 있습니다.
스테이징 영역은 작업 디렉토리와 Git 저장소의 변경 이력 사이에 징검다리 역할을 하는데요.
작업 디렉토리는 아직 커밋할 준비가 안된 변경 내용을 자유롭게 수정할 수 있는 공간인 반면에,
스테이징 영역은 커밋할 준비가 된 변경 내용이 Git 저장소에 기록되기 전에 대기하는 장소라고 생각할 수 있습니다.
git add 명령어를 사용하면 현재 작업 디렉토리에 있는 모든 또는 일부 변경 내용을 스테이징 영역으로 이동시킬 수 있습니다.
1. git add . (현재 디렉터리에 있는 모든 디렉터리 및 파일을 staging area로 보냄)
2. git add /경로/추가할 파일만 지정 가능)
3. git status (staging area에 잘 들어갔는지 확인)
git status는 크게 3개의 영역으로 구성 되어 있습니다.
Changes to be committed: 이 영역은 스테이징 영역에 넘어가 있는 변경 내용을 보여줍니다.
Changes not staged for commit: 이 영역은 아직 워킹 디렉토리에 있는 변경 내용을 보여줍니다.
Untracked files: 이 영역도 아직 워킹 디렉토리에 있는 아직 한 번도 해당 Git 저장소가 관리한 적이 없는 새로운 파일을 보여줍니다.
Git 디렉터리(.git 디렉터리, 깃 저장소)
Git 디렉터리는 최초에 git init 명령으로 프로젝트가 Git 프로젝트로 만들어질 때 .git이라는 이름으로 생성되며, Git 프로젝트의 모든 메타데이터와 객체 데이터베이스가 이곳에 저장됩니다. 따라서 가장 중요한 공간이며, Git의 핵심이라고 할 수 있습니다. 또한 Clone으로 원격 저장소를 복사해서 가져올 때 이 .git 디렉터리를 만들고 원격 저장소의 모든 데이터를 복사하여 가져옵니다.
Git으로 하는 작업
Git으로 하는 작업은 기본적으로 다음과 같습니다.
1. 워킹 디렉터리에서 파일을 수정합니다.
2. Staing Area에 파일을 Stage 하여 커밋할 스냅샷(버전)을 만듭니다.
3. Staing Area에 있는 파일들을 Commit 하여 Git 저장소에 영구적으로 스냅샷을 저장합니다.
영역별 상태
영역별 상태는 단순히 세 영역을 구분지어 설명하자면 다음과 같으며, 세밀하게 들어가면 더욱 복합적인 상태들이 존재합니다. 다음은 파일들의 상태가 영역별로 어떤 상태로 존재하는지를 나타냅니다.
1. Git 디렉터리에 존재하는 파일들은 Committed 상태입니다.
2. Git 디렉터리로부터 워킹 트리에 Checkout 하고 파일을 수정하고 Staging Area에 추가했다면 Staged 상태입니다.
3. Git 디렉터리로부터 워킹 트리에 Checkout 하고 파일을 수정했지만 아직 Staging Area에 추가하지 않은 경우 Modified 상태입니다.
더욱 자세한 상태는 [Git] Git 상태 확인하기 - git status 명령어 및 상태에 대한 설명을 참고합니다.
Git의 Staging Area는 어떤 점이 유용한가
Git에는 Staging Area라는 공간이 있다.
어떤 변경사항이 저장소에 커밋되기 전에, 반드시 거쳐야만 하는 중간단계이다.
다른 버전관리 도구에는 이에 정확히 대응하는 것은 없다.
저장소가 추적하는(관심의 대상이 되는) 파일들의 목록을 유지하고, 그 파일들에 대한 메타데이터를 관리하는 것은 다른 저장소들도 하는 일이지만, Git 처럼 커밋될 예정인 파일의 내용들까지 기억하지는 않는다.
이 Staging Area의 존재는 처음 Git을 사용하는 입장에서는 그저 불편만 안겨주고 이해만 더디게 만들어주는 목적불명의 무언가에 지나지 않는다. 다른 SCM에선 파일을 고치고 바로 커밋하면 되었는데, Git은 반드시 그 전에 add를 해 줘야 한다. 이런 비용을 감수하면서까지 Git이 Staging Area라는 공간을 사용자들에게 노출시키고 있는 이유는 무엇일까. 어떤 상황에서 Staging Area가 유용한지 살펴보면서 이해해보자.
일부분만 커밋할 때
Working directory에서 코드를 고칠 때는 자유롭게 고치고 싶다.
하지만 커밋할때는 일부분만 하고 싶다. 이를 가능하게 하려면 커밋할 때 working directory 전체가 아니라 부분만 커밋하면 될 것이다.
staging area라는 것이 없다고 가정해보자. ‘커밋될 예정인 내용들’을 디스크에 저장해 둘 공간이 없으므로, 커밋할 때 어느 부분을 커밋할지 한번에 결정해야 한다.
한번에 어렵지 않게 결정할 수도 있지만 시간을 들여 생각해야 할 수도 있다.
시간을 들여 조금씩 커밋할 부분을 결정해 나간다고 하면, 그 시간동엔 나의 결정사항들은 메모리상에 존재해야 한다.
메모리에 올라와있는 정보는 디스크에 저장되어 있는 정보보다 다루기 까다롭다.
Staging Area에 저장되어있는 ‘곧 커밋될 예정인 내용’들은 쉽게git diff --staged등의 명령으로 확인할 수 있겠지만, 이것이 메모리에 올라와있는 상태라면, 해당 메모리 영역을 사용하고 있는 프로세스를 찾아서 물어봐야 알 수 있다.
실수로 그 프로세스를 죽였다면 공들여 커밋을 준비하던 것이 허사가 된다.
(커밋을 깔끔하게 만드는데 과도하게 공을 들인다는 생각이 드는가? 하지만 이런 개발자들이 실제로 있다)
충돌을 해결할 때
충돌을 해결해야 하는 상황에서도 비슷한 문제가 있다.
5개의 파일을 merge(병합)했는데 그 중 2개에서 충돌이 발생했다고 해 보자.
3개의 파일은 그냥 커밋하면 되고 2개는 충돌을 해소(resolve)해줘야한다.
여기서도 위와 같은 문제가 생긴다.
큰 규모의 충돌이 발생한 경우 이를 해결하는 것은 상당히 시간이 들어가는 일이고, 이를 위한 작업 데이터를 메모리에만 올려놓는 것은 참으로 불안하다.
따라서 이 정보 역시 Staging Area와 같이 디스크의 어떤 공간에 저장해두는 것이 훨씬 좋을 것이다.
이것은 Staging Area가 없는 Subversion이라도 마찬가지다.
서브버전은 어떤 파일이 충돌했는지 ‘파일 상태’를 기억한다. 그러나 이보다는 Git의 방식이 더 낫다.
서브버전은 파일 단위로 충돌 여부를 기억하기 때문에, 파일의 일부분만 충돌을 해소한 후 커밋하는 것은 매우 어렵기 때문이다. Git이라면 간단하다.
충돌이 발생한 파일에서, 필요한 만큼만 충돌을 해소하고 그 부분만 add하여 커밋하면 된다.
커밋 다시하기
commit --amend명령으로 커밋을 다시 할 때도 Staging Area의 존재는 빛을 발한다.
커밋을 다시 할 때 로그메시지만 고치는 것이 아니라 파일들도 좀 고치고 싶다면,commit --amend전에 파일을 고쳐서 Staging Area에 add하기만 하면 된다. Staging Area가 없었다면commit --amend시에 Git에게 다른 방법으로 패치를 전달해주었어야 했을 것이다.
요약
Staging Area는 단순하지만 유용한 저장공간이다.
많은 Git의 명령들이 Staging Area를 활용하여 Git을 더욱 생산적인 도구로 만들어준다.
물론 Staging Area라는 생소한 개념이 Git의 진입장벽을 더욱 높이는 것은 사실이지만, 그럼에도 불구하고
Git을 즐겨쓰는 많은 개발자들에게 Staging Area는 여전히 필수불가결한 존재이다.
누군가 이해하기 쉬우면서도 현 Staging Area에 대한 요구를 흡수할(혹은 불필요하게 만들) 수 있는 어떤 개념을 만들어낸다면 몰라도 그 전까지는 Git의 핵심 기능이자 특징으로서의 지위가 변하는 일은 없을 것이다.
Git 설치 방법 (CentOS 7 기준)
repo 설치에 필요한 명령어 복사하여, 터미널에 붙여넣거나 수기로 입력한 다음 Enter키를 눌러준다.
(인터넷이 된다면) yum install https://repo.ius.io/ius-release-el7.rpm https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum install -y git
1. Github 계정 생성
2. Github repository 생성
3. Git 설치 및 설정
1) 터미널에서 명령어 입력
git --version
git clone 'github repo https 주소'
2) git token
Github Settings - Developer settings - Personal access tockens(classic)
repo 권한 부여, 생성된 토큰은 잘 보관하기
git password를 요구할 경우 git token 사용
3) git 초기 설정
# User_name 설정
git config --global user.name "your_name"
# User_email 설정
git config --global user.email "your_email"
# 설정 확인
git config --list
4. Github에 처음 코드 업로드
1) 초기화(처음 업로드 할 때만 해주면 된다)
git init
2) 추가할 파일 add
1. git add . (현재 디렉터리 안에 있는 파일을 모두 추가)
2. git add /경로/추가할 파일 (파일 지정해서 추가)
3) 상태 확인(add가 잘 됐는지)
git status
4) commit(업로드명 설정)
# 같은 이름의 파일을 변경해서 업로드할 때 구분하기 힘들기 때문에
# github에 올릴 때 commit을 설정하는 것이다
ex) git commit -m "first commit"
5) github repository와 연결
# https://github.com/nkw/testproject.git 이 repository로
# 내 소스코드를 보낸다는 의미
git remote add origin https://github.com/nkw/testproject.git
6) 연결 확인
git remote -v
7) 업로드 하기
# git branch 확인
git branch
# git push
git push origin "branch 명"
ex) git push origin master
Username for 'namgungu': [깃허브 네임]
Password for '~~~~~~~': [이전에 만든 token 값]
5. github 새로고침
업로드한 파일이 github repository에 올라가있는걸 볼 수 있다.
6. 변경사항 적용 후 업로드
yml 파일 변경사항 적용 후 저장
git pull origin master(push전에는 push 해주기)
git add .
git status
git commit -m "second commit"
git push origin master
IP Class는 IPv4 주소를 영역별로 나눈 것으로 크게 A, B, C, D, E 클래스로 나뉘며 각각 네트워크 크기와 호스트의 수가 다르다. 이중 D와 E는 특수용도로 D는 멀티캐스트용, E는 향후 사용을 위해 예약된 주소다.
나머지 A, B, C는 일반 사용자에게 부여하는 용도로 이번에 어떻게 나뉘는지 알아보려고 한다.
아래의 범위에 있는 IP들은 사설 IP로 정하자고 약속함.
예를 들어 61.123.44.1 주소가 있다면, 아래의 사설 IP 주소 대역에 속하지 않으므로
일반적으로 공인 IP 주소로 간주된다.
이름
Class
IP Address Range
IP 개수(호스트 수)
서브넷 마스크
24-bit block
A
10.0.0.0~10.255.255.255
16,777,216
255.0.0.0
20-bit block
B
172.16.0.0~172.31.255.255
104,857
255.240.0.0
16-bit block
C
192.168.0.0 ~ 192.168.255.255
65,536
255.255.0.0
D
E
IP 주소를 8비트로 4등분한 각각을 옥텟(Octet)이라고 한다. 각 옥텟 별로 0~255개의 범위가 되므로 각 256개가 들어갈 수 있다.
그리고 이 옥탯 별로 IP의 클래스를 A, B, C로 나눌 수 있다. 각 클래스마다 위에서 배운 네트워크 ID 부분과 호스트 ID 부분 범위가 서로 다른 것을 볼 수 있다. 이런 식으로 나눔으로써 각 클래스마다 할당되는 총 호스트 개수가 나뉘어 보다 체계적으로 관리할 수 있게 된다.
CIDR
Classless Inter Domain Routing(CIDR) : 클래스에서 발전하여 더 이상 클래스를 사용하지 않음.
CIDR이란 무엇인가요?
Classless Inter-Domain Routing(CIDR)은인터넷상의 데이터 라우팅 효율성을 향상시키는 IP 주소 할당 방법
인터넷에 연결되는 모든 컴퓨터, 서버 및 최종 사용자 디바이스는 IP 주소라는 고유한 번호가 연결되어 있다.
- IP는 주소의 영역을 여러 네트워크 영역으로 나누기 위해 IP를 묶는 방식
- 여러 개의 사설망을 구축하기 위해 망을 나누는 방법
CIDR Block CIDR를 기반으로 나눈 것이 CIDR Block : IP 주소의 집합
CIDR Notation : CIDR Block을 표시하는 방법
- 네트워크 주소와 호스트 주소로 구성
- 각 호스트 주소 숫자만큼의 IP를 가진 네트워크 망 형성 가능
- A.B.C.D/E 예) 172.16.0.0/12
A.B.C.D: 네트워크 주소+호스트 주소 표시 / E: 0~32 네트워크 주소가 몇 bit 인지 표시
CIDR Notation은 네트워크 비트(고정)와 호스트 주소 비트(변경 가능)를 보여준다.
- 호스트 주소 비트만큼 IP 주소를 보유 가능
예) 192.168.2.0/24
- 네트워크 비트 24
- 호스트 주소 = 32-24 = 8
- 즉 2^8 = 256개의 IP 주소 보유(192.168.2.0 ~192.168.2.255)
서브넷이란?
서브넷 : 네트워크 안의 네트워크
큰 네트워크를 잘게 쪼갠 단위
일정 IP 주소의 범위를 보유
- 큰 네트워크에 부여된 IP 범위를 조금씩 잘라서 작은 단위로 나눈 후 각 서브넷에 할당(AWS VPC 등)
예) 192.168.0.0/16 이라는 큰 네트워크 안에서 서브넷을 잘게 자를 때 사용하는 것이 CIDR Notation임.
AWS Kinesis Data Firehose: 안정적으로 실시간 스트림을 데이터 레이크, 웨어하우스, 분석 서비스에 로드
데이터 레이크 및 웨어하우스로 스트리밍
데이터를 Amazon S3로 스트리밍하고, 처리 파이프라인 구축 없이 데이터를 분석에 필요한 형식으로 변환합니다.
보안 강화
네트워크 보안을 실시간으로 모니터링하고, 잠재적 위협이 발생할 경우 지원되는 보안 정보 및 이벤트 관리(SIEM) 도구를 사용해 알림을 생성합니다.
기계 학습 스트리밍 애플리케이션 구축
기계 학습(ML) 모델을 통해 데이터 스트림을 보강하여, 스트림이 대상으로 이동할 때 데이터를 분석하고 추론 엔드포인트를 예측합니다.
Lambda@Edge: 사용자에게 더 가까운 위치에서 코드 실행
Lambda@Edge는Amazon CloudFront의 기능 중 하나로서 애플리케이션의 사용자에게 더 가까운 위치에서 코드를 실행하여 성능을 개선하고 지연 시간을 단축할 수 있게 해 줍니다. Lambda@Edge를 사용하면 전 세계 여러 위치에 있는 인프라를 프로비저닝하거나 관리하지 않아도 됩니다. 사용한 컴퓨팅 시간만큼만 비용을 지불하고, 코드가 실행되지 않을 때는 요금이 부과되지 않습니다.
Lambda@Edge는 서버 관리 부담 없이 웹 애플리케이션을 전 세계로 배포하고 성능을 개선하여 효과를 향상해 줍니다. Lambda@Edge는 Amazon CloudFront콘텐츠 전송 네트워크(CDN)에 의해 생성된 이벤트에 대한 응답으로 코드를 실행합니다. 코드를 업로드하기만 하면 AWS Lambda가 최종 사용자와 가장 가까운 AWS 로케이션에서 뛰어난 가용성으로 코드를 실행하고 확장하는 데 필요한 모든 작업을 처리합니다.
Amazon Cognito 안전하고 마찰 없는 확장 가능한 고객 ID 및 액세스 관리 구현
Amazon Cognito를 사용하면 사용자 가입 및 로그인 기능을 추가하고 웹 및 모바일 애플리케이션에 대한 액세스를 제어할 수 있습니다. Amazon Cognito는 수백만 명의 사용자 규모로 확장되고 소셜 및 엔터프라이즈 아이덴티티 페더레이션을 지원하며 고급 보안 기능으로 소비자와 비즈니스를 보호하는 ID 스토어를 제공합니다. Amazon Cognito는 개방형 ID 표준을 기반으로 구축되었기 때문에 다양한 규정 준수 규제를 지원하고 프런트엔드 및 백엔드 개발 리소스와 통합됩니다.
유연한 인증으로 고객 참여 유도
고객이 직접 또는 소셜 또는 엔터프라이즈 ID 제공자를 통해 사용자의 브랜딩이 포함된 호스팅 UI에 로그인할 수 있습니다.
멀티 테넌시를 통한 ID 관리
비즈니스에 다양한 수준의 정책 및 테넌트 격리를 제공하는 다양한 멀티 테넌시 옵션을 사용합니다.
고급 보안 및 네트워크 보호
기본 AWS WAF 통합을 통해 적응형 인증을 활성화하고, 손상된 자격 증명을 식별하고, 계정 도용 위험을 모니터링하고, 봇과 악의적인 행위자를 차단합니다.
AWS 리소스에 대한 역할 기반 액세스 가능
Amazon S3, Amazon DynamoDB 및 AWS Lambda와 같은 AWS 서비스에 대해 안전하게 역할 기반으로 액세스할 수 있습니다.
AWS Secrets Manager: 보안 암호의 수명 주기를 중앙에서 관리
AWS Secrets Manager는 수명 주기에 걸쳐 데이터베이스 보안 인증 정보, API 키 및 기타 보안 암호를 관리, 검색 및 교체하는 데 도움이 됩니다.
AWS KMS(key management service): 데이터를 암호화하거나 디지털 서명할 때 사용하는 키를 생성 및 제어
저장 데이터 보호
AWS KMS에서 사용자가 제어하고 관리하는 KMS 키를 사용하여 서버 측 암호화를 활성화합니다.
데이터 암호화 및 복호화
AWS Encryption SDK를 사용하여 애플리케이션의 암호화 작업을 안전하게 처리합니다.
디지털 서명의 서명 및 확인
AWS KMS에서 비대칭 KMS 키를 사용하여 서명 작업을 보호합니다.
안전한 다중 테넌트 데이터베이스 구축
AWS Database Encryption SDK를 사용하여 데이터베이스의 중요한 레코드를 쉽게 암호화합니다.
AWS Lambda란?
우선 AWS Lambda에 대해 알아보자. Lambda는 주로 서버리스(serverless)라는 용어와 함께 사용된다. 서버리스란 '서버가 없음'을 의미하지만 사실 서버가 아예 없는것은 아니고 서버의 관리 주체가 aws로 넘어감을 의미한다.
람다는 백엔드를 작은 함수 단위로 쪼개어 aws 내부의 서버에 업로드 하는 방식이다. 그러면 aws는 해당 함수를 내부 서버에 업로드 하고 요청 발생시 요청에 맞는 람다함수를 실행시켜준다.
따라서 람다를 이용하면 별도의 서버 구성 없이 클라이언트의 요청에 따라 원하는 함수를 실행시킬 수 있다. 그리고 람다는 요청 수 기반으로 비용이 측정되기 때문에 24시간 켜놓아야 하는 EC2같은 서비스 대비 저렴하게 이용할 수 있다.
또한 AWS의 다른 서비스와도 연계하여 사용할 수 있는 등 다양한 장점이 있다.
API Gateway란?
API Gateway는 API의 소비자, 즉 클라이언트가 백엔드 서비스의 데이터 비즈니스 로직 또는 기능에 액세스할 수 있게 해주는 게이트 역할을 한다. 쉽게 말하면 백엔드의 HTTP 엔드포인트 역할을 제공하는 서비스라고 볼 수 있다.
앞서 말한 람다는 '함수'의 역할을 수행하기 때문에, 실제로 해당 람다에 접근할 수 있도록 하기 위해서는 API gateway를 연결하여 엔드포인트를 만들어 주어야 한다.
그러면 클라이언트는 API Gateway를 통해서 Lambda 함수를 호출할 수 있다. 예를 들면 만약 클라이언트가 GET /products HTTP 요청을 보내면, API Gateway가 이것을 받아서 해당 path에 매칭되는 람다 함수를 실행시켜 주는 방식으로 동작한다.
Amazon DynamoDB: 모든 규모에서 10밀리초 미만의 성능을 제공하는 빠르고 유연한 NoSQL 데이터베이스 서비스
Amazon DynamoDB는 모든 규모에서 고성능 애플리케이션을 실행하도록 설계된 완전관리형의 서버리스
키-값 NoSQL 데이터베이스입니다. DynamoDB는 기본 제공 보안, 지속적인 백업, 자동화된 다중 리전 복제, 인 메모리 캐시 및 데이터 가져오기/내보내기 도구를 제공합니다.
글로벌 테이블을 사용하여 액티브-액티브 복제
Amazon DynamoDB 글로벌 테이블은 99.999%의 가용성으로 원하는 AWS 리전 전체에서 데이터의 액티브-액티브 복제를 제공합니다. 글로벌 테이블은 다중 활성 방식이므로 모든 복제본에서 쓰고 읽을 수 있고, 전역적으로 배포된 애플리케이션은 선택한 리전에서 로컬로 데이터를 액세스할 수 있으므로 10밀리초 미만의 읽기 및 쓰기 성능을 달성할 수 있습니다.
0으로 규모를 조정하는 서버리스
Amazon DynamoDB를 사용하면, 서버를 프로비저닝하거나 패치를 적용하거나 관리할 필요가 없으며, 소프트웨어를 설치하거나 관리하거나 운영할 필요도 없습니다. Amazon DynamoDB는 버전(메이저, 마이너 또는 패치)과 유지 보수 기간이 없으며, 가동 중지 시간이 없는 유지 보수를 제공합니다.Amazon DynamoDB 온디맨드 요금은 사용량에 따른 요금을 제공하고, 0으로 규모를 조정하고, 용량에 맞게 자동으로 테이블 크기를 조정하고, 관리 없이 성능을 유지합니다.
Amazon Redshift클라우드 데이터 웨어하우징을 위한 최고의 가격 대비 성능
데이터 웨어하우스 인프라를 관리할 필요 없이 모든 데이터에 대해 몇 초 만에 분석을 실행하고 확장할 수 있습니다.
Amazon Redshift는 SQL을 사용하여 여러 데이터 웨어하우스, 운영 데이터베이스 및 데이터 레이크에서 정형 데이터 및 반정형 데이터를 분석하고 AWS가 설계한 하드웨어 및 기계 학습을 사용해 어떤 규모에서든 최고의 가격 대비 성능을 지원합니다. 대량 데이터 분석 처리에 사용됩니다.
Amazon S3 Intelligent-Tiering(S3 지능형 계층화)
액세스 패턴 변경 시 데이터를 이동하여 스토리지 비용 절감을 자동화합니다.
액세스 빈도 또는 불규칙한 사용 패턴(=예측할 수 없는 패턴)을 모를 때 완벽한 사용 사례입니다.
AWS DataSync안전한 데이터 마이그레이션의 간소화 및 가속화
데이터 마이그레이션
빠르게 AWS로 파일 및 객체 데이터를 이동합니다. 이동 중 암호화 및 포괄적인 데이터 검증을 통해 데이터를 보안합니다.
데이터 보호
Simple Storage Service(Amazon S3) 스토리지 클래스를 포함하여 비용 효율적인 AWS 스토리지 서비스로 안전하게 데이터를 복제합니다.
콜드 데이터 아카이브
Amazon S3 Glacier 아카이브 스토리지 클래스로 직접 데이터를 이동하여 온프레미스 스토리지 비용을 절감합니다.
하이브리드 데이터 워크플로 관리
중요한 하이브리드 워크플로를 가속화하도록 온프레미스 시스템 및 AWS 사이에서 데이터를 원활하게 이동합니다.
AWS Lake Formation 간단한 권한 부여, 취소 하는 권한 모델을 제공
Lake Formation 권한은 AWS IAM권한과 결합되어 데이터 레이크에 저장된 데이터 및 해당 데이터를 설명하는 메타데이터에 대한 액세스를 제어합니다. 다양한 팀에서 모든 데이터를 사용할 수 있도록 하고 운영 오버헤드를 최소화하기 위해 회사는 AWS Lake Formation을 사용하여 데이터 레이크를 생성할 수 있습니다. 이를 통해 회사는 모든 데이터를 한 곳에서 중앙 집중화하고 세분화된 액세스 제어를 사용하여 데이터에 대한 액세스를 관리할 수 있습니다.
솔루션 설계자는 Lake Formation 액세스 제어를 사용하여 데이터에 대한 액세스를 제한할 수 있습니다.
이 솔루션은 데이터에 대한 세분화된 권한을 관리하고 운영 오버헤드를 최소화하는 기능을 제공합니다.
AWS Glue - JDBC 연결을 통해 다음 데이터 스토어에 연결할 수 있습니다 => Amazon Redshift
AWS Glue DataBrew
최대 80% 더 빠르게 데이터를 정리 및 정규화
AWS Glue DataBrew는 데이터 분석 및 데이터 과학 작업에서 데이터를 손쉽게 정리 및 정규화하여 분석 및 기계 학습(ML)에 적합한 상태로 준비하는 데 도움이 되는 시각적 데이터 준비 도구입니다. 사전 빌드된 250개 이상의 변환 구성 중에서 선택하여 코드 작성 없이도 데이터 준비 작업을 자동화할 수 있습니다.
DataBrew는 사용자가 데이터 품질을 이해하고 개선하는데 도움이 되는 데이터 계보 및 데이터 프로파일링 기능을 제공
데이터 계보는 각 데이터세트의 소스와 대상, 그리고 각 레시피 단계에서 데이터가 변환되는 방식을 보여줍니다.
데이터 프로파일링은 열과 같은 각 데이터세트에 대한 다양한 통계 및 측정항목을 표시합니다.
또한 이상 항목 필터링, 표준 형식으로 데이터 변환, 잘못된 값 수정, 기타 작업을 자동화할 수 있습니다.
데이터가 준비되면 분석 및 ML 프로젝트에 바로 사용할 수 있습니다.
사용한 만큼만 요금을 지불하며 사전 약정은 없습니다.
AWS Glue DataBrew는 데이터 분석가와 데이터 과학자가 분석 또는 기계 학습을 위해 데이터를 최대 80% 더 빠르게 정리하고 정규화할 수 있게 해주는 시각적 데이터 준비 도구입니다.
Cloud Trail 리소스 내역을 기록/전송하는 서비스
Amazon RDS 프록시
AWS RDS의 완전 관리형 고가용성 DB 프록시로 애플리케이션의 확장성과 데이터베이스 오류에 대한 복원력 및 보안을 더욱 강화합니다. RDS Proxy를 사용하면 애플리케이션이 데이터베이스와 설정된 연결을 풀링하고 공유할 수 있어 데이터 베이스 효율성과 애플리케이션 확장성이 향상됩니다.
Amazon FSx for Lustre S3와 통합된 클라우드 파일 스토리지
전 세계에서 널리 사용되는 고성능 파일 시스템에 구축된 완전관리형 공유 스토리지입니다.
기계 학습(ML) 가속화
컴퓨팅 리소스에 대한 처리량 최대화 및 Amazon S3에 저장된 훈련 데이터에 대한 원활한 액세스를 통해 훈련 횟수를 줄입니다.
고성능 컴퓨팅(HPC) 활성화
AWS 컴퓨팅 및 오케스트레이션 서비스에 기본적으로 포함된 고속 고가용성 스토리지를 통해 가장 까다로운 HPC 워크로드의 처리를 돕습니다.
빅 데이터 분석 활용
페타바이트급 데이터에 대한 복잡한 분석 워크로드를 실행하는 수천 개의 컴퓨팅 인스턴스를 지원합니다.
미디어 워크로드 민첩성 개선
컴퓨팅 상황에 따라 확장되는 스토리지를 사용하여 매우 짧은 시각 효과(VFX), 렌더링, 트랜스코딩 타임라인에 대처합니다.
AWS Transfer Family단순하고 안전하며 확장 가능한 파일 전송을 통해 데이터를 손쉽게 관리하고 공유
AWS Transfer Family는 SFTP, FTPS, FTP 및 AS2 프로토콜을 사용하여 AWS 스토리지 서비스로의 반복적인 B2B 파일 전송을 안전하게 조정합니다. AWS Transfer Family를 사용하면 인증, 권한 부여 및 스토리지 백엔드로 S3와의 통합을 통해 SFTP 서버를 쉽게 설정할 수 있습니다.
(<=> S3 (파일) 게이트웨이는 NFS, SMB 프로토콜을 통한 파일 기반 엑세스에 주로 사용)
관리형 파일 전송 현대화
PCI, PII 또는 HIPAA와 같은 규제 데이터에 대한 금융 기관 및 의료 기관의 보안 파일 전송을 현대화합니다.
데이터 레이크 확장을 통한 인사이트 확보
일반적인 비즈니스 애플리케이션과 IoT 디바이스를 분석 및 데이터 처리를 위한 데이터 레이크에 연결하여 인사이트를 지원합니다.
거래 파트너 네트워크 전반에 걸친 협업 개선
공급망 거래 파트너 전반에 걸친 협업과 연결성을 개선하여 ERP, 운송 관리 시스템 또는 기타 시스템을 포함한 비즈니스 애플리케이션 전체의 실시간 인사이트를 촉진합니다.
콘텐츠 배포 비즈니스 확장
다수의 연결 옵션을 통해 구독자 접근 범위를 확장합니다. 기본 제공되는 세분화된 액세스 제어를 적용하여 매출을 보호할 수 있습니다.
Amazon S3 Transfer Acceleration 더 빠른 장거리 S3 업로드 및 다운로드
모바일 및 웹 애플리케이션 업로드 및 다운로드
많은 고객이 S3에 파일을 업로드하는 기능을 갖춘 모바일 또는 웹 애플리케이션을 개발합니다.이러한 애플리케이션에 대상 S3 버킷에서 멀리 떨어진 사용자가 있는 경우 업로드 및 다운로드가 느려질 수 있습니다.S3TA는 이러한 장거리 전송 속도를 높여 사용자에게 더 나은 경험을 제공할 수 있습니다.
분산된 사무실 이전
IT 인프라 팀과 사업 부문 팀은 S3 API를 사용하여 파일, 연구실 이미지 또는 미디어를 중앙 집중식 버킷에 저장하는 분산된 위치에 온프레미스 애플리케이션을 보유하고 있습니다.S3TA는 장거리에서 시간에 민감한 전송 속도를 높이는 데 도움이 될 수 있습니다.
신뢰할 수 있는 파트너와의 데이터 교환
연구 개발 프로젝트에 참여하는 회사는 종종 대량의 데이터를 생성합니다.그들은 대학, 병원, 싱크탱크 또는 심지어 동료 회사와 협력할 수도 있습니다.회사 간에 대규모 데이터 세트를 공유하기 위해 고객은 가속화된 업로드를 통해 S3 버킷에 대한 특별 액세스를 설정하여 데이터 교환 및 혁신 속도를 높일 수 있습니다.
ALB와 NLB의 차이점
ALB와 NLB의 차이점은 프로토콜에 있다. 앞서 언급했듯, ALB는 TCP, UDP 프로토콜을 지원하며, NLB는 HTTP(S) 프로토콜을 지원한다. 그렇기 때문에,NLB는 VPC와 같은 Private한 네트워크 환경에서 사용되며, ALB는 HTTP 통신이 이루어지는 Public 환경에서 동작한다.
AWS SQS(Simple Queue Service)
마이크로서비스, 분산 시스템 및 서버리스 애플리케이션을 위한 완전관리형 메시지 대기열
Amazon Simple Queue Service(SQS)를 사용하면 메시지 손실을 우려하거나 다른 서비스를 제공할 필요 없이 소프트웨어 구성 요소 간에 어떤 볼륨의 메시지든 전송, 저장 및 수신할 수 있습니다.
Amazon Simple Queue Service(SQS)는 마이크로 서비스, 분산 시스템 및 서버리스 애플리케이션을 분리하고 확장할 수 있는 완전관리형 메시지 대기열 서비스입니다.
SQS는 메시지 지향 미들웨어 관리 및 운영과 관련된 복잡성과 오버헤드를 제거하고 개발자가 차별화 작업에 집중할 수 있도록 합니다. 새 이미지가 S3 버킷에 업로드 되면 Lambda 함수를 트리거하여 이미지를 처리하고 압축합니다.
애플리케이션 신뢰성 및 확장성 향상
Amazon SQS는 고객이 대기열을 사용하여 구성 요소(마이크로서비스)를 분리하고 연결할 수 있는 간단하고 안정적인 방법을 제공합니다.
마이크로서비스 분리 및 이벤트 기반 애플리케이션 처리
뱅킹 애플리케이션에서와 같이 프론트엔드를 백엔드 시스템과 분리합니다. 고객은 즉시 응답을 받지만 청구서 결제는 백그라운드에서 처리됩니다.
작업을 비용 효율적이고 정시에 완료하도록 보장
자동 크기 조정 그룹의 여러 작업자가 워크로드 및 지연 시간 요구 사항에 따라 확장 및 축소되는 단일 대기열에 작업을 배치합니다.
메시지 순서 유지 및 중복 제거
메시지 순서를 유지하면서 대규모로 메시지를 처리하여 메시지 중복을 제거할 수 있습니다.
AWS Snowcone휴대가 용이한 데이터 전송 및 엣지 컴퓨팅 디바이스를 어디에나 배포
AWS Snowcone는 연결이 거의 또는 전혀 없는 열악한 환경에서 엣지 컴퓨팅, 데이터 스토리지, 이동 중 데이터 전송을 제공하는 견고하고 안전한 소형 디바이스입니다.
플릿 데이터 수집 및 분석 가속화
작은 크기에 견고한 설계, 전원 옵션, 강화된 보안을 갖추었으며 대규모 차량 운용 조직에서 매일 테라바이트 급의 데이터를 쉽게 수집합니다.
극한 상황에서의 IoT 데이터 수집
공장, 광산, 유전처럼 공간과 대역폭이 제한된 열악한 환경 조건에 적합하게 설계된 엣지 컴퓨팅 및 스토리지 솔루션을 배포합니다.
환자 결과 개선
이동 중이나 현장에서 환자에게 뛰어난 치료를 제공하고, 내장 Wi-Fi 및 AWS DataSync를 사용하여 실시간으로 중요한 데이터를 전송합니다.
콘텐츠 배포 촉진
빠르게 진행되고 공간 제약이 있는 환경에서 고해상도 이미지 등의 콘텐츠를 수집 및 처리하고 팀 성과를 개선합니다.
Amazon GuardDuty
AWS 계정 보호 서비스 AWS 계정 및 워크로드에서 악의적 활동을 모니터링하고 상세한 보안 결과를 제공하여 가시성 및 해결을 촉진하는 위협 탐지 서비스
Cloudfront도 DDos 공격 대처 가능, 정적 및 동적 콘텐츠 모두 작동
Cloudfront, AWS Global Accelerator, Route 53은 모두 엣지 로케이션에서 작동하며 aws 서비스를 활용하여 모든 인프라 계층 공격에 대한 포괄적인 가용성 보호를 구축함.
단, Cloudfront는 TCP, UDP 프로토콜을 지원하지 않습니다.
AWS Global Accelerator
AWS 글로벌 네트워크를 사용하여 애플리케이션의 가용성, 성능, 보안을 향상시키는 네트워킹 서비스입니다.
AWS 글로벌 네트워크를 사용하여 사용자 트래픽을 성능 및 상태에 따라 최적의 엔드포인트로 라우팅합니다.
AWS Global Accelerator는 퍼블릭 애플리케이션의 가용성, 성능 및 보안을 개선하는 데 유용한 네트워킹 서비스입니다.
Global Accelerator는 애플리케이션 엔드포인트의 고정 진입점 역할을 하는 두 개의 글로벌 정적 공용 IP
(예: Application Load Balancer, Network Load Balancer, Amazon Elastic Compute Cloud(EC2) 인스턴스 및 탄력적 IP)를 제공합니다. 모든 사용자에게 가능한 최저 지연 시간을 보장할 수 있습니다.
글로벌 트래픽 관리자
트래픽 다이얼을 사용하여 트래픽을 가장 가까운 리전으로 라우팅하거나 리전 간에 빠른 장애 조치를 지원합니다.
API 가속화
엣지에서 TCP 종료를 활용하여 API 워크로드를 최대 60%까지 가속화합니다.
글로벌 정적 IP
엔터프라이즈 방화벽 및 IoT 사용 사례에서 허용 목록 생성을 간소화합니다.
지연 시간이 짧은 게임 및 미디어 워크로드
맞춤형 라우팅을 사용하여 트래픽을 EC2 인스턴스 플릿으로 최종 라우팅합니다.
AWS Backup 데이터 보호를 중앙에서 관리하고 자동화
중앙 집중식 백업 관리 서비스이며, 필요한 동시 파일 액세스 및 중복기능 제공하지 않음.
클라우드 네이티브 백업
여러 AWS 서비스 간에 버킷, 볼륨, 데이터베이스, 파일 시스템 등의 주요 데이터 스토어를 백업합니다.
하이브리드 클라우드 워크플로우 스토어
기계 학습 또는 빅 데이터 분석과 같은 AWS 서비스에서 처리하기 위해 온프레미스 애플리케이션에서 생성된 데이터를 사용하여 데이터를 객체로 분류합니다.
중앙 집중식 데이터 보호 정책
회사의 AWS 계정, 리소스, AWS 리전에서 백업 활동을 구성, 관리, 통제합니다.
데이터 보호 규정 준수
조직 또는 규정의 요구 사항을 준수하는지 확인하기 위해 데이터 보호 정책에 대한 리소스를 검사합니다.
S3 파일 게이트웨이 엔드포인트 vs S3 인터페이스 엔드포인트
S3 파일 게이트웨이 엔드포인트는 트래픽이 인터넷을 통과할 필요없이 VPC와 S3 서비스 간에 안전한 비공개 연결을 제공합니다. S3 파일 게이트웨이 엔드포인트를 통해 EC2는 VPC 내에서 직접 S3 API에 액세스 할 수 있으므로 트래픽이 인터넷을 통해 이동하지 못하게 하는 보안 요구사항을 충족합니다.
Amazon S3는 파일게이트웨이 엔드포인트와 인터페이스 엔드포인트를 모두 지원합니다.
게이트웨이 엔드포인트를 사용하면 VPC 인터넷 게이트웨이 또는 NAT 디바이스를 사용하지 않고 추가 비용 없이 VPC에서 Amazon S3에 액세스할 수 있습니다.
하지만 게이트웨이 엔드포인트는 온프레미스 네트워크, 다른 AWS 리전의 피어링된 VPC 또는 전송 게이트웨이를 통한 액세스를 허용하지 않습니다.
인터페이스 엔드포인트는프라이빗 IP 주소를 사용하여 VPC 내부, 온프레미스 또는 VPC 피어링이나 AWS Transit Gateway를 사용하여 다른 AWS 리전의 VPC에서 Amazon S3로 요청을 라우팅함으로써 게이트웨이 엔드포인트의 기능을 확장합니다.
Compute Savings Plan
Savings Plans는 1년 또는 3년 기간의 일정 사용량 약정(시간당 USD 요금으로 측정)을 조건으로 Amazon EC2, AWS Lambda 및 AWS Fargate 사용량에 대해 저렴한 요금을 제공하는 유연한 요금 모델입니다. Savings Plans에 가입하면 약정 사용량까지 할인된 Savings Plans 요금을 적용받습니다. AWS는 2가지 유형의 Savings Plans를 제공합니다.
Compute Savings Plans
Compute Savings Plans는 최대 66%까지 비용을 절감할 수 있는 가장 유연한 요금 모델입니다. 이 플랜은 인스턴스 패밀리, 크기, AZ, 리전, OS 또는 테넌시와 관계없이 EC2 인스턴스 사용량에 적용되며, Fargate 또는 Lambda 사용량에도 적용됩니다. 예를 들어, Compute Savings Plans를 이용할 경우, 언제든지 C4에서 M5 인스턴스로 변경하거나, EU(아일랜드)에서 EU(런던)로 전환하거나 워크로드를 EC2에서 Fargate 또는 Lambda로 이전하면서도 자동으로 Savings Plans 요금을 계속 이용할 수 있습니다.
EC2 Instance Savings Plans
EC2 Instance Savings Plans는 리전의 개별 인스턴스 패밀리에 대한 사용량 약정(예: 버지니아 북부의 M5 사용량)을 조건으로 최대 72%의 할인 혜택을 제공하는 가장 저렴한 요금 모델입니다. 이 요금을 이용하면 AZ, 규모, OS 또는 테넌시에 관계없이 해당 리전에서 선택한 인스턴스 패밀리의 비용이 자동으로 절감됩니다. EC2 Instance Savings Plans는 해당 리전의 패밀리 내에서 인스턴스 간에 사용량을 변경할 수 있는 유연성을 제공합니다. 예를 들어 Windows를 실행하는 c5.xlarge를 Linux를 실행하는 c5.2xlarge로 변경할 경우 Savings Plans 요금의 혜택이 자동으로 적용됩니다.
Amazon Athena
페타바이트 규모 데이터를 상주 위치에서 쉽고 유연하게 분석
Amazon Simple Storage Service(S3) 데이터 레이크 및 온프레미스나 SQL 또는 Python을 사용하는 기타 클라우드 시스템을 포함하는 25개 이상의 데이터 소스로부터 데이터를 분석하거나 애플리케이션을 구축
s3인벤토리로 표준 sql 쿼리
S3, 온프레미스 또는 기타 클라우드에서 쿼리 실행
SQL 쿼리를 제출하여 온프레미스나 클라우드에서 실행되는 관계형, 비관계형, 객체, 사용자 지정 데이터 소스의 데이터를 분석합니다.
ML 모델을 위한 데이터 준비
SQL 쿼리 또는 Python에서 ML 모델을 사용하여 판매 예측 및 이상 탐지, 고객 코호트와 같은 복잡한 작업을 간소화합니다.
분산된 빅 데이터 보정 엔진 구축
클라우드용으로 구축된 엔진과 함께 보정 도구를 배포하여 방대한 데이터를 대규모로, 효과적으로 검증합니다.
멀티클라우드 분석 수행
Amazon QuickSight를 사용하여 Azure 시냅스 애널리틱스 데이터를 쿼리하고 결과를 시각화할 수 있습니다.
Data Lake 빅데이터로 가치를 만드는 호수
데이터 레이크는 조직에서 수집한 정형*·반정형**·비정형*** 데이터를 원시 형태(raw data)로 저장하는 단일한 데이터 저장소입니다.
기업에서는 전통적으로 데이터를 데이터베이스와 데이터 웨어하우스****에 저장했습니다.
*정형 데이터 : 형태가 있고 연산할 수 있는 데이터. ‘엑셀’ 같은 시트에 저장되는 형태, 수치, 기호, 도형 등이 그 예. **반정형 데이터 : 형태는 있지만 연산할 수 없는 데이터. 메일 등 통신 내용 기록 같은 로그 등이 그 예. ***비정형 데이터 : 형태가 없고 연산할 수 없는 데이터. 인터넷 댓글, 영상, 음성 등이 그 예. ****데이터 웨어하우스(data warehouse) : 회사의 각 사업부문에서 수집된 모든 자료 또는 중요한 자료에 관한 중앙창고.
요즘 기업에서 데이터 레이크에 관심 갖는 이유는 뭘까?
먼저 부서별·분야별로 흩어진 데이터를 한데 모아 분석하면 조직 전체 시너지를 높일 수 있고요.
기업이 보유한 데이터를 최대한 활용해서 가치를 끌어내기에 유용합니다.
IBM에 따르면, 기업에서 저장하는 데이터 약 80~90%가 텍스트·비디오·오디오 등 비정형 데이터라고 하죠.
데이터 웨어하우스는 정형 데이터를 저장하는 데 최적화돼 있습니다만.
데이터 레이크에는 비정형 데이터도 원시 형태로 저장할 수 있고요. 이를 분석하면 기업 경영에 주효한 인사이트를 풍부하게 얻을 수 있죠. 누구든 빅데이터로 가치를 만들고 싶다면 데이터 레이크를 알아두는 게 좋습니다.
AWS Batch
AWS Batch는 사용자가 AWS에서 배치 작업을 실행할 수 있게 해주는 완전 관리형 서비스입니다. 다른 언어로 작성된 다양한 유형의 작업을 처리하고 EC2 인스턴스에서 실행할 수 있습니다.
또한 Amazon EventBridge(Amazon CloudWatch Events)와 통합되어 시간 또는 이벤트 트리거를 기반으로 작업을 예약합니다.
AWS Batch를 사용하면 개발자, 과학자, 엔지니어가 수십만 개의 배치 및 기계 학습 컴퓨팅 작업을 효율적으로 실행하면서 컴퓨팅 리소스를 최적화하여 결과 분석 및 문제 해결에 집중할 수 있습니다.
소프트웨어 또는 서버를 설치하지 않고도 수십만 건의 배치 및 기계 학습 컴퓨팅 작업을 실행할 수 있습니다.
금융 서비스 분석 실행
1일 거래 비용, 완료 보고 및 시장 성과에 대한 분석을 자동화합니다.
약물 및 게놈 서열 스크리닝
약물 설계를 위한 더 나은 데이터를 캡처하기 위해 저분자 라이브러리를 빠르게 검색합니다.
시각 효과 렌더링
콘텐츠 렌더링 워크로드를 자동화하여 의존성에 따른 인력의 개입 필요성을 최소화합니다.
기계 학습 모델 훈련
모든 규모에서 컴퓨팅 집약적인 ML 모델 훈련 및 추론을 효율적으로 실행합니다.
AWS Config 리소스 구성에 대한 진단, 감사 및 평가
솔루션 설계자가 AWS Config 규칙을 사용하여 적절하게 태그가 지정되지 않은 리소스를 정의하고 감지해야 합니다. AWS Config가 모범 사례 및 회사 정책을 준수하는지 AWS 리소스 구성을 평가하는데 사용하는 사용자 지정 가능한 규칙 세트입니다. AWS Config 규칙을 사용하면 비준수 리소스를 식별하고 담당 팀에 알리는 프로세스를 자동화하므로 이 검사를 구성하고 운영하는 노력을 최소화할 수 있습니다.
AWS Config는 AWS, 온프레미스 및 기타 클라우드에서 리소스의 구성과 관계를 지속적으로 평가, 감사 및 평가합니다.
AWS Inspector 규모에 맞는 지속적인 자동 취약성 관리
Amazon EC2, AWS Lambda 함수 및 Amazon ECR과 같은 AWS 워크로드에서 소프트웨어 취약성과 의도하지 않은 네트워크 노출을 거의 실시간으로 탐지하세요.
컴퓨팅 워크로드의 제로데이 취약성을 신속하게 발견
50개 이상의 취약성 인텔리전스 소스를 사용하여 취약성을 자동으로 발견하고 취약성 라우팅을 가속화하며 MTTR을 단축합니다.
패치 수정 우선순위 지정
현재의 일반 취약성 및 노출(CVE) 정보와 네트워크 접근성을 사용하여 상황에 맞는 위험 점수를 생성하여 취약한 리소스의 우선순위를 지정하고 해결합니다.
규정 준수 요구 사항 충족
Amazon Inspector 스캔으로 NIST CSF, PCI DSS 및 기타 규정에 대한 규정 준수 요구 사항 및 모범 사례를 지원합니다.
S3 Object Lock S3 객체 수정 및 삭제 방지
규정 준수 모드에서는 AWS 계정의 루트 사용자를 포함하여 어떤 사용자도 보호 객체 버전을 덮어쓰거나 삭제할 수 없다.
거버넌스 모드에서는 특별한 권한이 없는 한 개체 보존 모드를 변경할 수 없으며 보존기간을 단축할 수도 없습니다.
(일부 사용자만 보존을 변경하거나 개체를 삭제할 수 있는 특별한 권한이 있습니다)
Apache Parquet 형식
Apache Parquet는 효율적인 데이터 스토리지와 검색을 지원하도록 설계되었으며,컬럼 중심의 오픈 소스 데이터 파일 형식입니다. 복잡한 데이터를 일괄적으로 처리하는 기능을 더욱 향상하여 효율적인 데이터 압축 및 인코딩 방식을 제공합니다.
Amazon EventBridge(Amazon CloudWatch Events)
EventBridge는 이벤트를 사용하여 애플리케이션 구성 요소를 서로 연결하는 서버리스 서비스로, 확장 가능한 이벤트 기반 애플리케이션을 더 쉽게 구축할 수 있습니다.이벤트 중심 아키텍처는 이벤트를 내보내고 이에 응답하여 함께 작동하는 느슨하게 결합된 소프트웨어 시스템을 구축하는 스타일입니다.이벤트 중심 아키텍처는 민첩성을 높이고 안정적이고 확장 가능한 애플리케이션을 구축하는 데 도움이 됩니다.
EventBridge를 사용하여 자체 개발 애플리케이션, AWS 서비스 및 타사 소프트웨어와 같은 소스의 이벤트를 조직 전체의 소비자 애플리케이션으로 라우팅합니다.EventBridge는 이벤트를 수집, 필터링, 변환 및 전달하는 간단하고 일관된 방법을 제공하므로 애플리케이션을 신속하게 구축할 수 있습니다.
이벤트소스에서 붙어오는 이벤트라 보면 된다. AWS 서비스를 예를 들면 EC2의 상태가 변경된다던지, Auto Scaling Group에 인스턴스가 추가될 때, event가 발생한다.
만약 내가 개발하고 있는 커머스 어플리케이션이라 하면, 사용자가 특정 상품을 구매한 경우, 상품을 구매했다는 이벤트를 생성할 수 있다.
AWS Shield 관리형 DDoS 보호 기능을 통해 애플리케이션 가용성과 응답성을 최대화
애플리케이션 가동 중지 시간 및 지연 시간 최소화
결정론적 패킷 필터링 및 우선 순위 기반 트래픽 형성과 같은 인라인 완화 조치를 배포하여 기본 네트워크 계층 공격을 차단합니다.
AWS Shield Advanced
AWS Shield Advanced는 엑사바이트급 탐지 기능을 사용하여 AWS 전반의 데이터를 집계함으로써 위협을 식별하는 맞춤형 보호 프로그램입니다.
AWS Elastic Beanstalk 웹 애플리케이션 배포 및 크기 조정
간단하고 빠른 방법으로 웹 애플리케이션을 업데이트 및 배포할 수 있습니다. 인프라 프로비저닝 및 관리 대신 코드 작성에 집중할 수 있습니다. 애플리케이션을 강화하기 위한 최적의 AWS 리소스를 선택하고 완벽하게 제어할 수 있습니다. 트래픽 급증을 처리하기 위해 조정 가능한 설정을 사용하여 비용을 최소화하는 동시에 애플리케이션의 크기를 조정할 수 있습니다.
AWS Organizations SCP(서비스 제어 정책)
추가 비용 없이 리소스 및 팀에 대한 새 AWS 계정을 프로그램밍 방식으로 생성하여 환경을 신속하게 확장할 수 있습니다. 사용자 기반 권한 관리를 간소화하여 팀이 목표 거버넌스 경계 내에서 자유롭게 구축할 수 있습니다. AWS 계정 및 리소스에서 비용을 관리하고 최적화할 수 있습니다. 모든 AWS 계정에서 환경을 중앙 집중식으로 보안 및 감사할 수 있습니다.
SCP(서비스 제어 정책)는 조직의 권한을 관리하는 데 사용할 수 있는 조직 정책 유형입니다.
SCP는 계정 관리자가 영향을 받는 계정의 IAM 사용자 및 역할에 위임할 수 있는 작업에 대해 권한 범위를 정의하거나 제한을 설정합니다.
관리자는 실제로 권한을 부여하기 위해 여전히자격 증명 기반 또는 리소스 기반 정책을 IAM 사용자 또는 역할에 연결하거나 계정의 리소스에 연결해야 합니다.
유효 권한은 SCP가 허용하는 권한과 IAM 및 리소스 기반 정책이 허용하는 권한 간의 논리적 교집합입니다.
AWS Snowball 오프라인 데이터 또는 원격 스토리지를 클라우드로 신속하게 이동
스토리지 용량 또는 컴퓨팅 파워 제한 없이 테라바이트 용량의 데이터를 클라우드로 쉽게 마이그레이션합니다.
연결이 끊긴 외진 엣지 환경에서 애플리케이션 성능을 가속화하고 연결이 없거나 거의 안되는 상황에서 컴퓨팅 워크로드를 실행합니다.
Snowball의 견고한 섀시, 통합 물류, 부정 개봉 방지 상자를 통해 전송 중 데이터를 보호하고 데이터를 원하는 위치에 빠르게 전달할 수 있습니다.
페타바이트 규모의 데이터 마이그레이션
특히 네트워크 조건이 제한되어 있을 때 데이터베이스, 백업, 아카이브, 의료 기록, 분석 데이터 집합, IoT 센서 데이터 및 미디어 콘텐츠를 클라우드로 이동합니다.
로컬에서 데이터 처리 및 분석
Amazon EC2 내에서 Amazon Machine Image(AMI)를 실행하고, 기계 학습(ML) 또는 기타 애플리케이션을 사용하여 AWS Lambda 코드를 Snowball Edge 디바이스에 배포합니다.
제조업용 데이터 최적화
현장 공장 데이터를 수집 및 분석하여 프로세스를 미세 조정하고 안전, 효율성, 생산성을 개선합니다.
AWS Snowball Edge
엣지 컴퓨팅 및 데이터 마이그레이션을 위한 설계
AWS Snowball은 두 가지 디바이스 유형으로 사용할 수 있습니다.
더 높은 컴퓨팅 성능을 제공하는 Snowball Edge Compute Optimized는 고성능 워크로드에 적합하며, 더 많은 스토리지를 제공하는 Snowball Edge Storage Optimized는 대규모 마이그레이션 및 용량 중심의 워크로드에 적합합니다.
Snowball
- 데이터 마이그레이션 및 엣지 컴퓨팅 디바이스
- S3와 호환되는 객체 스토리지 제공
-Snowball Edge Storage Optimized:TB~PB사이즈의 데이터를 AWS로 빠르고 안전하게 전송해야할 때 사용
- Snowball Edge -> S3 -> Glacier(수명주기 정책) 패턴으로 많이 사용
AWS Storage Gateway 온프레미스 애플리케이션에 사실상 무제한의 클라우드 스토리지 액세스 제공
사용자 및 애플리케이션 워크플로 유지 관리에 의한 비즈니스 중단 없이 클라우드 지원 스토리지에 온프레미스 애플리케이션 액세스를 제공합니다.
하이브리드 클라우드 워크플로우 스토어
기계 학습 또는 빅 데이터 분석과 같은 AWS 서비스에서 처리하기 위해 온프레미스 애플리케이션에서 생성된 데이터를 사용하여 데이터를 객체로 분류합니다.
애플리케이션 데이터를 EBS로 마이그레이션
온 프레미스 볼륨의 스냅샷을 사용하여 EBS에서 데이터를 다시 생성하고 Amazon EC2 기반 애플리케이션에서 사용할 수 있습니다.
클라우드로 데이터 백업
온프레미스 파일 및 데이터베이스 애플리케이션에 대해 클라우드 기반 백업을 제공하여 저렴한 비용으로 거의 무제한으로 확장할 수 있습니다.
S3 스토리지 클래스
아래와 같이 스토리지 클래스를 전환할 수 있다(폭포수 모델)
Standard IA: 수명이 길지만 자주 엑세스하지 않는 데이터, 즉시 접근 가능해야할 때 Intelligent Tiering: 데이터 엑세스 패턴이 변경될 때 스토리지 비용을 자동으로 최적화해준다. Frequent Access, Infrequent Access 두 엑세스 티어간에 데이터를 이동시켜 자동으로 절약시켜줌 One Zone IA: 단일 AZ에 데이터 저장, 저렴하지만 AZ 파괴 시 데이터 손실 Glacier: 장기적으로 보관할 데이터, 즉시 접근 가능할 필요 없을 때, Standard IA보다 비용 절감 Glacier Deep Archive: 1년에 한 두 번정도만 엑세스하는 데이터 장기 보관
S3 Multipart Upload - 대형 객체를 여러 개로 나누어서 업로드
- 기존 객체의 복사본 생성
S3 Transfer Acceleration - 클라이언트와 S3 버킷 간에 파일을 빠르고 쉽고 안전하게 장거리 전송
- 전 세계 각지에서 중앙의 버킷으로 업로드
- 전 세계에 정기적으로 수 기가바이트에서 수 테라바이트의 데이터를 전송
S3 Cross Region Replication(CRR) - 서로 다른 AWS 리전의 S3 버킷에서 객체 복사하는데 사용
- 고객이 두 군데의 지리적 위치를 갖는 경우 사용자와 지리적으로 더 가까운 AWS 리전에 객체 복사본을 유지하여 객체 액세스 지연 시간을 최소화
S3 Global Accelerator - 고정 IP 주소를 통해 애플리케이션에 고정된 진입점을 제공
- DNS 구성을 업데이트하거나 클라이언트 애플리케이션을 변경하지 않고도 가용 영역 또는 AWS 리전 간에 엔드포인트를 손쉽게 이동
S3 Simple Region Replication(SRR) - 동일한 리전의 S3 버킷에서 객체 복사하는데 사용
- 여러 버킷에 또는 여러 계정 간에 로그를 저장하는 경우, 리전 내 단일 버킷으로 로그를 손쉽게 복제
S3 LifeCycle 만료 작업: 일정 기간(한 주 or 한 달 ...)동안만 보관한 후 삭제해야할 때
전환 작업: 다른 스토리지 클래스로 전환해야할 때(30일 후 Standard IA로 전환, 1년 후 Glacier로 전환 등)
S3 데이터 보호 SSE-KMS: KMS를 사용해 암호화 키 관리, 객체 접근하려면 별도 권한 필요, 감사 추적 기능, 추가 비용 발생
**KMS 키 삭제 시: 7일안에 복구 가능, 7일이 지난 후에는 모든 메타 데이터를 삭제하며 되돌릴 수 없음**
SSE-S3: 각 객체는 고유한 키로 암호화되며 주기적으로 바뀌는 마스터 키를 사용하여 키 자체 암호화