1주차에는 웹서버를 구축하고 웹 페이지의 기획서를 작성해보았다.
웹서버 구축을 통해 AWS에 처음 가입하여 사용해보았고 VPC, 서브넷, EC2 등의 개념을 알 수 있었다.
기존에 프론트엔드를 위주로 학습하다보니 Google Firebase를 이용하여 간편하게 서버리스 아키텍처를 구현한 적은 있으나
이렇게 직접 네트워크를 설정하고 서버를 열어서 웹 페이지에 접속해본건 처음이었다.
전공 과목 내장형시스템 수업에서 PuTTY를 이용해본 적은 있으나, 왜 사용하는지 잘 이해가 되지 않았는데 이번에 과제를 수행하면서 알게 되었다.
개발 지식에 비해 상대적으로 부족했던 네트워크 개념을 학습할 수 있는 시간이었다.
또한, 웹 페이지 기획서를 직접 작성하면서 기획 과정에서 고려해야할 부분에 대해 생각해볼 수 있었다.
AWS Calculator을 이용하여 처음으로 비용 산정을 하는게 낯설었지만 비용 산정 시 고려할 값에는 어떤 것이 있는지 알게 되었다.
웹서버 만들기
네트워크 설정
VPC 생성하기
- VPC(Virtual Private Cloud) : 사용자의 AWS 계정 전용 가상 네트워크
- 하나의 VPC는 하나의 Region 내에서만 생성 가능
- Default VPC는 실무에서 사용하지 않는다, 큰 서비스 단위로 VPC를 생성하여 사용한다.
- VPC이름 / IPv4 CIDR 블록 (IP 대역대) 지정 후 생성 완료
서브넷 만들기
- Public 서브넷과 Private 서브넷으로 나뉘어짐
- Private 서브넷은 인터넷 inbound/outbound가 불가능하고 다른 서브넷과의 연결은 가능함
- Public 서브넷 생성하기
- 생성한 VPC 선택
- 가용 영역 설정 (프리티어는 a존만 이용 가능하다)
- IPv4 CIDR 블록 지정
인터넷 게이트웨이 생성
- VPC의 구성 요소로 인스턴스와 인터넷 간의 통신을 가능하게 함
- 만들었던 VPC와 연결하는 작업 필요
EC2 설정
- EC2로 AWS의 컴퓨터 한대를 빌려서 사용할 수 있음
- 원하는 스펙의 가상 서버를 구축하고 사용한 만큼의 비용을 지불함
보안그룹 만들기
- 만들었던 VPC와 연결하기
- 인바운드 규칙 : EC2로 들어오는 방향의 제어를 설정함
- TCP 포트번호 22 (SSH) / 소스 : 내 IP
- TCP 포트번호 80 (HTTP) / 소스 : 내 IP
- 다른 사람에게 공개할 목적으로 구축하는 것이 아니므로 내 IP로 설정한 것
EC2 인스턴스 만들기
1단계 : AMI (Amazon Machine Image) 선택하기
- AMI란 EC2가 만들어낼 때 사용하는 OS 정보가 담긴 이미지 파일
- Linux2 AMI가 가장 일반적으로 사용된다.
2단계 : 인스턴스 유형 선택
- EC2의 제품 스펙을 설정하는 단계
- vCPU란 실제 물리 CPU를 논리적으로 쪼개서 사용하는 가상 CPU임
- 프리티어로 이용
3단계 : 인스턴스 세부 정보 구성
- 인스턴스 개수는 1개로, 네트워크와 서브넷은 만들었던 VPC와 서브넷 선택
- 퍼블릭 IP 자동 할당을 활성화하여 인터넷망을 사용한다.
- 인스턴스 종료 시 자동으로 삭제되도록 종료 방식 설정
4단계 : 스토리지 추가
- EBS(Elastic Block Storage)는 EC2에 주로 사용되는 스토리지 유형으로, 용량 증설은 가능하나 축소는 불가능하다.
- EBS옵션은 GP2나 GP3 중 아무거나 선택
- GP2 : 일반적인 SSD 방식
- GP3 : 업그레이드 된 SSD 방식으로, 1TB 미만일 때도 최저 네트워크를 보장한다.
- 30GB까지 무료로 이용 가능하다.
5단계 : 태그 설정
- 관리자가 확인하기 편하도록 구분하는 것, 반드시 설정할 필요는 없음
6단계 : 보안 그룹 구성
- 미리 만들었던 보안 그룹 선택
7단계 : 인스턴스 시작 검토
- 앞서 선택한 옵션을 확인하고 생성하기
- 새 키 페어 생성 - 키 페어 이름 설정 후 다운로드 (.pem 파일)
- 키 페어 파일은 재발급되지 않으므로 잘 보관해야함
서버 열기
- Windows에서는 pem 파일을 직접 사용할 수 없음
- 따라서 ppk 파일로 변환하는 작업을 거쳐야한다.
PuTTY 다운로드
- https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html에서 PuTTY 다운
- 다운받은 msi 파일 실행해서 설치 완료
pem -> ppk 파일 변환
- PuTTYgen 실행
- File - Load private key에서 pem 파일을 불러온 후 save private key 버튼 클릭
- ppk 파일은 C드라이브의 aws 폴더 안에 보관하는게 국룰이라고 함
PuTTY에서 서버 설정하기
- PuTTY는 서버에 접속할 수 있는 툴
- 관리자가 작업하기에 가장 좋은 환경은 SSH 클라이언트이다.
- EC2에서 할 수 있는 대부분의 작업 수행 가능
- 개발자가 가장 선호하는 서버 접근 방식
- Connection - SSH - Auth 메뉴에서 ppk 파일 불러오기
- Session 설정
- Host Name (for IP address) : EC2 인스턴스의 Public IPv4 주소 입력
- Saved Sessions에 현재 세션을 Save, 설정한 정보는 Load를 통해 불러올 수 있음
- Open 버튼을 클릭해서 서버에 접속한다.
EC2 접속하기
- 아이디는 ec2-user (AWS Linux를 사용할 때 최고 권한을 가진 사용자 계정)
- EC2를 웹서버로 바꾸기 위해 Apache 다운
sudo yum install httpd -y
- Apache 시작하기
sudo service httpd start
- http://(EC2 Public IP):80 으로 웹사이트 접속 가능
EC2 추가 관리 기능
고정 IP 부여하기
- 기본적으로 EC2를 중지하면 재시작할 때 IP 주소가 변경됨
- 이것을 방지하기 위해 고정 IP를 설정함
- 탄력적 IP 주소 연결 - 생성한 인스턴스 선택해서 연결하기
백업본 이미지 만들기
- EC2 백업은 AMI + EBS 백업을 통해 이루어진다.
- AMI : OST 정보가 담겨있음
- EBS : 스토리지 백업으로 웹서버가 백엄됨
- 인스턴스 선택 후 작업 - 이미지 및 템플릿 - 이미지 생성 선택
- 이미지 이름과 설명 입력 후 생성 완료 (AMI, EBS는 자동 생성됨)
- 백업된 AMI 이미지를 복원해서 새 EC2를 만들 수 있다.
웹 페이지 기획하기
1. 웹 페이지 기획 목적
- 웹 페이지 디자인 및 구현 경험
- 공부한 기술 스택 목록 정리
- 진행했던 프로젝트 목록 정리
2. 트래픽 목표 수치 산정
- 일주일에 한 번 접속, 한 번 접속 시 평균 5분의 사용 시간을 예상함
- 누구나 접속할 수 있는 페이지이므로 24시간 내내 오픈되어야 함
- 1개월에 최대 1시간의 사용량을 가질 것
3. 컨텐츠 종류 파악
- 텍스트 박스
- 이미지 파일 : 파비콘(.ico) 1개, 픽토그램(.png) 약 5개, 프로필 이미지(.jpg) 1개, 프로젝트 썸네일(.png) 약 5개
4. 기술 선정
- HTML, CSS, Javascript 언어 사용
- AWS EC2 웹서버
5. 비용 산정
- AWS 프리티어 이용 시 처음 12개월 동안은 무료로 사용
- AWS Simple Monthly Calculator을 이용하여 인스턴스 비용 산정
- t3.xlarge Linux 유형의 인스턴스 1개가 1개월에 1시간의 사용량을 가진다면 월별 비용은 $0.21일 것으로 나타남