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 주소
가 들어가 있는 것을 볼 수 있다.