public 네트워크: 홈페이지 접속 (nginx)
private 네트워크: 취약한 정보 저장 (mariaDB, mysql)
마우스, 키보드 보다는 종이와 펜 부터
EC2 관점에서 Traffic Flow 고려
익숙해 지면 유형 별 Cloudformation Template 작성
"VPC 내부" / "VPC 외부" 서비스 구분
Service Limits / 숨어있는(?) 제약사항 찾기
아키텍처 편집 프로그램 : www.draw.io
가비아 도메인 확인

aws route 53 으로 돌아와서 호스팅 영역 생성

Http(80) 대신에 Https(443) 사용 ( 보안 때문에, 인증서 등록 필요 )
aws certificate manager(ACM) 이동 , 인증서 요청
도메인 이름 추가 ( *.gabia.shop )

VPC 생성
vec-prd-vpc : 10.250.0.0/16 (65,563)
Subnet 생성( 보안 때문에 서브넷으로 나눔, 수정 불가능 하기에 /16 권장 )
1) AZ : 2A
VEC-PRD-VPC-BASTION-PUB-2A, (10.250.4.0/24) - 251, VEC-PRD-VPC-Bastion-PUB-SG-2A (80,443)
VEC-PRD-VPC-NGINX-PUB-2A, (10.250.1.0/24) - 251, VEC-PRD-VPC-NGINX-PUB-SG-2A (80,443)
VEC-PRD-VPC-TOMCAT-PRI-2A, (10.250.2.0/24) - 251, VEC-PRD-VPC-TOMCAT-PRI-SG-2A
VEC-PRD-VPC-DB-PRI-2A, (10.250.3.0/24) - 251, VEC-PRD-VPC-DB-PRI-SG-2A
2) AZ : 2C
서브넷을 나누는 기준: 비지니스 로직 ( 업무에 따라서 )
정적 홈페이지 (Static Website):
- 정적 홈페이지는 미리 만들어진 HTML, CSS, JavaScript 및 이미지 파일로 구성됩니다. 이러한 파일들은 웹 서버에 의해 그대로 서빙됩니다. 대표적인 웹 서버로는 Nginx, Apache 등이 있습니다.
- 사용자가 요청할 때마다 항상 동일한 콘텐츠가 제공됩니다. 따라서 동적 데이터베이스 쿼리나 사용자의 입력에 따라 페이지가 변하지 않습니다.
- 정적 홈페이지는 변경이 적고, 콘텐츠가 고정되어 있을 때 적합합니다.
동적 홈페이지 (Dynamic Website):
- 동적 홈페이지는 서버 측에서 요청에 따라 콘텐츠가 생성됩니다. 이는 주로 웹 애플리케이션 서버 (WAS)를 통해 이루어집니다. 대표적인 웹 애플리케이션 서버로는 Apache Tomcat, JBoss, WebSphere 등이 있습니다.
- 사용자의 요청이 들어올 때마다 서버는 데이터베이스 쿼리 등을 통해 동적으로 페이지를 생성하고 콘텐츠를 반환합니다. 이는 사용자에 따라 다른 콘텐츠를 제공하거나 상호작용이 필요한 경우에 유용합니다.
- 동적 홈페이지는 사용자에 따라 콘텐츠가 변경되거나, 사용자 입력에 따라 반응해야 할 때 적합합니다.
- 요약하자면, 정적 홈페이지는 미리 만들어진 콘텐츠를 제공하고, 동적 홈페이지는 요청에 따라 콘텐츠를 생성하여 제공하는 것이 주요 차이입니다.
Internet Gateway 생성 (Pub Sunbet 에 있는 인스턴스가 인터넷을 사용할 수 있도록 해주기 위함)
VEC-PRD-IGW
NAT GATEWAY 생성 (Private Subnet에 있는 인스턴스가 인터넷을 사용할 수 있도록 해주기 위함)
VEC-PRD-NGW-2A
KeyPair 이름 : soldesk.pem [각자 이름으로 해도됨]
AWS Linux2 ec2에 접속시 연결사용자계정 : ec2-user / 패스워드는 없다. soldesk.pem 를 이용해서 연결
10.250.1.13(Nginx) <========> 10.250.2.13 (Tomcat)
10.240.1.13 (VEC-DEV-VPC-Tomcat-2a) <========> 10.250.2.13 (VEC-PRD-VPC-Tomcat-2a) 성공
10.240.2.13 (VEC-DEV-VPC-Webserver-2a) <========> 10.250.2.13 (VEC-PRD-VPC-Tomcat-2a) 실패 왜?
ELB Security Name : VEC-NGINX-CLB-SG
Target Group : VEC-NGINX-CLB-TG
ELB Name : VEC-PRD-NGINX-ALB

서브넷 생성 ( 생성한 VPC 선택 )
가용영역 2A와 2C에 NGINX-PUB 서브넷 생성 ( 정적 홈페이지 )
가용영역 2A와 2C에 동적 홈체이지 생성 (Tomcat-PRI)

보안 그룹 생성

보안 그룹 규칙 추가 (인바운드)
public: ssh, http, https
private: ssh ( http, https는 x )


서브넷 연결 ( nginx와 tomcat끼리 연결 )
bastion subnet: 보안을 위해서 노출돼도 상관없는 subnet
bastion subnet -> nginx ( PUB ), -> tomcat ( PRI, 3 tier로 동작 )

인터넷 게이트웨이 생성 (Pub Subnet 에 있는 인스턴스가 인터넷을 사용할 수 있도록 해주기 위함)



NAT 게이트웨이 생성 ( PRI Subnet에 있는 인스턴스가 인터넷 사용 가능하게 )

키페어 생성



EC2 생성시 SSH 접속 및 root 암호 설정 ( 1234 )
접속해서 index.html에 my homepage success! 라고 작성
private ip로 생성한 인스턴스는 public ip로 생성한 인스턴스를 통해 접속하여 설정하는 것이 보안에 좋음
vi로 접속 /etc/yum.repos.d/nginx.repo ( 저장소 등록 )
시스템 시작 후 curl public ip
보안그룹 인바운드 그룹에 ssh권한이 있을 때 접속 ( /home 디렉터리에 key-pair 이동시키기, xftp를 이용해서 )
chmod 400 soldesk.pem.pem로 권한 변환 후 접속하기
ssh -i soldesk.pem.pem ec2-user@(private ip)
버킷 생성 후 이미지 업로드 ( 퍼블릭 액세스 차단 해제하는 것이 편하다 )
nginx-PUB-2A, nginx-PUB-2C 로드 밸런서
-> 로드밸런서 생성시 대상 그룹을 생성하고, ELB 지정
ELB 생성 ( 이름: VEC-PRD-NGINX-ALB, VPC 지정 )
생성 후 대상 그룹 포함

로드 밸런서 생성
ALB 생성 ( 어플리케이션 )
ALB의 체계는 인터넷 경계, DB는 내부
보안 그룹과 리스너 및 라우팅( http, https 추가 )

로드 밸런서 생성 확인 후에 상태 healthy 확인
별칭 선택 후 ALB 지정
지정 후에 접속해보기

인스턴스에서 이미지 생성해서 인스턴스 시작
인스턴스 세부 정보에서 이미지 생성 ( 재부팅 안 함 체크 )
이미지/AMI 에서 이미지로 인스턴스 시작해서 설정 후 인스턴스 생성