실제로 사용해봤던 기술들을 배우는게 확실히 이해하는데 많이 도움 되는것 같다.
처음 EC2 를 사용해봤을때는 친구의 외주를 받아서 배포할때 사용해봤는데 그땐 EC2 가 뭘하는건지도 모르고 그냥 인터넷 따라 배포를 했었다...
그렇게 1년이 지나서 이걸 배우는데 너무 신기했다.
Ec2 는 Elastic Compute Computer 를 말하고 Iaas 를 제공한다.
서비스 로써 구조,,, Cloud 해보신 분들은 들어봤을꺼같음.
Ec2 에는 많은 기능들로 구성되어있는데 가장 많이 사용한 가상 머신을 대여해주는 Ec2,데이터를 저장하는 EBS,로드 분산이 가능한 ELB,서비스의 확장을 뜻하는 ASG 를 제공한다.
필요할때 마다 Computing 을 대여할수 있고 Ec2 가 예시이다.
Ec2는 OS,CPU,Ram,Storage,Network Card 를 고를수 있고
Security Group,Bootstrap Script 도 설정할수 있다.
정말 자신에게 맞는 서비스를 고를수 있다.
그래서 우리는 Instance 를 만들때 instance 를 부트스트랩 할수 있다.
머신이 작동할때 명령을 시작하는것을 뜻한다.
Script 는 처음 한번만 실행되고 Bootstrap 을 통해서 부팅작업을 자동화한다.
#!/bin/bash
# Use this for your user data (script from top to bottom)
# install httpd (Linux 2 version)
yum update -y
yum install -y httpd
systemctl start httpd
systemctl enable httpd
echo "<h1>Hello World from $(hostname -f)</h1>" > /var/www/html/index.html
Instance 를 설정하다 맨 밑쪽에 가면 Script 를 작성할수 있다.
사용자가 자신이 원하는 명령어를 작성할수있다.
대략적으로 8개의 분류로 나뉜다.
소분류로 나눠서 좀더 알아보기로 하고,, 기본적으로 AWS . 는이러한 Ec2 Instance를 부르는 Convention 이 있다.
m5.2xlarge 라는 이름을 가지는 Instance 를 보자.
m은 Incance 의 Class를 뜻한다.
5는 해당 class 의 세대를 뜻하고
2xlarge 는 instance class 의 size 를 뜻한다.(사이즈가 크면 클수록 더많은 memory,cpu 를 가질수 있다)
범용적인 목적을 가지는 사람들에게 추천되는 Instance 이다.
웹서버를 배포하거나,코드 저장소를 활용할때 사용하고싶으면 General Purpose . 에해당 하는 instance . 를 사용하면 된다.
Compute,Memory,Networking 간의 balance 가 좋다.
현재 실습을 통해서 사용하고 있는 t2.micro 라는 instance 도 General Purpose 에 해당하는 instance 이다.
컴퓨터 집약적인 작업에 최적화된 Instance 이다.
Batch Processing workloads
Media Transcoding
High Performance web servers
High Performance computing
Scientific modeling & machine learning
Dedicated gaming server
솔직히 중간에 고성능 서버,컴퓨팅,,,머신러닝 빼고 뭔소린지 하나도 모르겠지만
컴퓨터 성능이 높은것이 요구되는 서비스를 사용하기위한 Instance 라고 이해하면 될꺼같다.
이 Instance 들은 C로 시작한다.
메모리에서 대규모 데이터 셋을 처리하는 유형의 작업에 적합하다 한다.
relation/non-relation DB
Distributed web scale cache stores
in-memory databases optimized for BI
Applications performing real-time processing of big unstructerd data
이것도 솔직히 뭔소리를 하는지 하나도 모르겠음,,
하지만 메모리에 최적화된 Instance 인 만큼 그거에 맞는 거같다,,,
R로 시작한다.
Local Storage 에서 대규모의 데이터셋에 access 할때 적합한 Instance 라고 한다.
High Frequency OLTP systems
Relational & NoSQL databases
Cache for in memory db
data warehousing applications
distributed file systems
어떠한 것들을 잠시 저장하거나 ,,, 대기해야할때 사용하면 좋으려나,,, 이 부분은 좀더 찾아 봐야겠다.
Ec2 서비스의 방화벽이라고 생각하면 좋을꺼같다.
그 Security Groups 은 AWS의 Network 에 핵심이다.
EC2 Instance 에 들어오고 나오는 Traffic 을 제어한다.
그래서 Security Groups 은 허용만 포함하고
IP 주소 참조해서 규칙을 만들수 있다.
그래서 Port로 제한하고,,
IPv4,Ipv6의 범위를 제한
Instance 로 들어오는 Traffic 을 제어하는 inbound 규칙과
Instance 에서 나가는 Traffic 을 제어하는 outbound 규칙도 규제한다.
AWS 설명서에 있는 사진을 들고왔다.
EC2 Instance가 있고 그 Instance 의 Inbound 규칙 설정을 Ip와 Port로 규제하게 된다면 그에 맞지 않는 Ip 를 가지거나 Port 를 가지게 된다면 Ec2에 접근을 할수가 없다.
하지만 Outbound 의 초기 규칙은 모든 Port 를 허용한다.
Ec2 instance가 웹사이트 Access 연결을 시도하면 모든것이 허용된다.
이후에 바꿀수 있음.
Security Group 은 여러 instance에 가능하다.
지역 전환하면 새로 만들어야한다.
Traffic 차단되어도 ec2 는 모른다.-> 보안그룹은 Ec2 외부에 있기때문.
하나의 보안그룹으로 설정하는게 좋다고함...
그리고 Security Group 1의 Inbound 규칙을 Security Group 2 의 Inbound 규칙으로 허용할수도 있는데 이렇게 된다면 Security Group 1,2에 포함된 Instance 라면 Instance 를 접근할수 있게된다.
하지만 Security Group 3에 포함된 Ec2 Instance 는 instance 에 접근할수 없다.
뭐,,, 이렇게 여러개의 Security Group을 설정할수 있다는 말.
백엔드 개발하시는 분들은 웬만하면 . 다알꺼임...
22 = ssh
21 = FTP(파일 전송 프로토콜)
22 = SFTP(보안 파일전송 프로토콜) 이것도 SSH 로 보내기 때문에 22 포트 사용
80 = HTTP
433 = HTTPS
3389 = RDP 윈도우 컴퓨터 접근할때 이거 쓴다고 합니다.
Secure Shell 이라고 한다.
이전에 NCP 를 SSH를 통해서 연결했다. 운영체제에 따라서 SSH 접근하는 방법이 다르다고 하는데 이부분은 그냥 딱 보면 이렇게 될수밖에 없을꺼같다.
그래서 SSH 는 결국 Terminal 이나 명령들을 이용해서 원격 머신이나 서버를 제어할수 있게 해준다.
어렵게 써놨지만 사용해본 사람들이라면 무슨말인지 바로 알꺼임.
실습에도 실제 SSH 를 사용해서 접근할수있었다.
그리고 EC2 INstance에 접근하는 방법중 하나로 EC2 Instance Connect 라는것이 있다.
그냥 자신이 만들어놓은 instance 오른쪽 위에 보면 연결이 있다.
그거 누르면 바로,,, 연결된다,,,