
Monolithic으로 시작하였지만, 서비스의 규모가 커저감에 따라 한 부분의 오류가 전체의 오류가 될 수 있기 때문에 MSA로 변경하는 흐름을 보인다. MSA가 통신의 속도 또한 더 빠르다. AWS도 처음에는 Monolithic이었다. AWS는 아마존이 사용하던 인프라를 그대로 서비스로 만들어 놓은 것이며, 이는 점점 분산 서비스 플랫폼으로 변경되었다. 따라서 현재 아마존의 첫 페이지를 구성하기 위해 1000개의 서비스를 호출하고 있다. AWS는 현재 분산 서비스를 만들며 클라우드 서비스를 제공한다.가까운 곳에서 전송함으로써 전송 속도를 높인다.캐싱을 사용하며, 사용자는 가까운 서버를 통해 웹 활성화 디바이스 또는 브라우저에서 인터넷 콘텐츠에 빠르게 접속할 수 있다.보안을 강화해 DDoS(Distributed Denial-of-Service) 공격과 같은 보안 문제와 악의적 공격자를 차단하는 기능을 웹사이트에 제공할 수 있다.AWS에서 제공하는 CDN
정적 파일들을 글로벌하게 캐싱해준다.
진행 흐름
S3 Bucket에 정적 파일을 업로드한다.Amazon CloudFront에서 해당 파일을 올리면 자동적으로 각 Edge Location들로 캐싱해서 올려준다.Edge Location들로 인해 접속하는 속도가 느리지 않게 된다.사용자는 자신의 S3 Bucket과 Amazon CloudFront을 연결하기만 하면 된다.

CloudFront 생성
원본 도메인만 맞추며, 해당 도메인은 나의 s3 bucket과 연결한 것이다. (클릭하면 자동생성되어 선택하면 됨)
하단의 배포 생성 버튼 클릭

다시 클라우드프론트 페이지로 돌아오면 다음과 같은 페이지가 생성되어 있다.

이제 도메인 이름을 입력해 접속해보도록 하겠다.

역시나 거절당했다. 왜냐하면 우리가 아까 설정에서 도메인만 입력했기 때문이다. 설정을 변경하도록 하겠다.
클라우드프론트 페이지에 있는 ID를 클릭한다. 그러면 편집을 눌러 설정을 변경할 수 있다.



배포 서비스DevOps플랫폼으로 발전development(개발)와 operations(운영)가 합쳐진 단어신속한 고품질 서비스 제공을 통해 비즈니스 가치와 대응력을 향상시키기 위한 기업 문화, 자동화, 플랫폼 설계에 대한 접근 방식레거시 애플리케이션과 최신 클라우드 네이티브 애플리케이션 및 인프라를 연결하는 것을 의미부담없이 자주 배포하기 위해서 CI/CD의 통합(소스저장소와 배포시스템을 통합)먼저 CloudFront에 대한 권한을 추가한다.
IAM 메뉴로 들어간다. (좌측)엑세스관리 - 사용자 - 사용자 이름을 누르게 되면 나의 권한을 볼 수 있다.
s3 bucket만 부여되어 있다. CloudFront에 대한 권한을 추가하도록 하겠다.

권한을 부여하였으니, GitHub Action을 사용하기 위해 repository를 생성하도록 하겠다.

위의 SSH를 복사해 pyCharm과 연동하도록 하겠다.
VCS에서 받기 버튼 클릭
SSH를 URL에 입력하고, 복제 클릭

계정 추가 클릭
GitHub를 통해 로그인 선택

이제 깃에 커밋을 진행해보도록 하겠다.
커밋 및 푸시를 눌러준다. 물론 커밋만 한다고 죽는거는 아니다. 그런데 커밋만 누르게 되면 다시 푸시 버튼을 눌러줘야 하므로 한 번에 끝내는 방향으로 진행한다.
GitHub으로 가 내용이 잘 올라왔는지 확인한다.

GitHub Action에서 사용방법 찾아보기
이제 배포에 필요한 파일들을 깃헙에 올리도록 하겠다.
index.html./github/workflows/main.yml다음과 같은 폴더 구조를 갖게 된다.

아까와 같이 커밋 & 푸시 진행
GitHub 체크

상단의 Actions 탭 클릭

git action file 추가를 눌러보면 다음과 같은 내용을 확인할 수 있다. 현재는 에러가 나 있는 상태이다.

main.yml 파일을 보면 아래 표시된 부분에 들어가는 내용은 세팅이 되어 있어야 한다. 하지만 우리는 세팅이 되지 않은 상태라 에러가 나는 것!

이 내용을 세팅하러 GitHub - Settings - Secrets로 이동한다.

New Repository secret 클릭

아까 변수로 선언되어 있던 비밀키들의 값을 이렇게 하나씩 넣어주면 됨
AWS_ACCESS_KEY_ID와 AWS_SECRET_ACCESS_KEY는 어제 저장해놓았던 키
BUCKET_NAME이랑 DISTRIBUTION_ID는 aws에서 확인 가능!
다 추가하고 아래로 스크롤을 내려보면 잘 저장된 것을 확인할 수 있다.

다시 배포를 진행한다.

Actions로 가서 초록불이 들어온 것을 확인하고 기뻐한다.

이렇게 하고 다시 클라우드 프론트 url에 들어가 본다.

잘 되긴 하는데, 이게 진짜 돌아가고 있는지 맞나라는 의심이 드므로 글자를 바꿔보도록 하겠다.
actions에 가서 초록색을 확인한다.

IPv4 CIDR : VPC에서 내부적으로 사용되는 IP (IP의 범위를 지정하는 방법)

IPv4 CIDR가 local로 잡혀있는 것을 볼 수 있음igw-0efe7aaf755727807는 인터넷 게이트웨이

VPC ID와 해당 인터넷 게이트웨이가 연결되어 있음을 알 수 있고, 이를 통해 외부와 통신을 할 수 있다.
방화벽의 개념과 비슷하다.
예를 들어, ec2에 들어올 수 있는, 즉 인바운드에 대한 규칙을 설정하는 곳이다. 몇 번 포트로만 들어올 수 있도록 하는 등의 보안을 설정한다.
아래의 메뉴를 통해 보안그룹에 들어갈 수 있다.

인바운드 및 아웃바운드 규칙
인바운드 규칙의 보안그룹 ID가 소스에 그대로 있는 것을 볼 수 있다. 즉, 해당 ID는 보안에 막히지 않는다는 뜻이다.

인바운드 및 아웃바운드 규칙 편집을 통해 변경이 가능하다.
리소스에 IP를 고정하는 것
다시 실행하게 되면 빨간 네모가 쳐져있는 퍼블릭 IPv4 주소가 변경된다. 탄력적 IP이다.
탄력적 IP 주소 할당 클릭
할당 클릭

탄력적 IP 주소 연결 클릭

3.36.62.133이 아닌 우리가 방금 만들었던 탄력적 IP 주소가 들어가 있는 것을 볼 수 있다.