[2023 기능대회 준비] 5. CloudFront 실습

Yohan_05·2023년 3월 20일
0
post-thumbnail

CloudFront란?

클라우드 프론트란 aws에서 제공하는 CDN(Content delivery network) 서비스임. CDN의 개념도 한번 더 알아보자

CDN?

콘텐츠 전송 네트워크로써 지리, 물리적으로 떨어져있는 사용자에게 컨텐츠를 더 빠르게 제공하는 시스템을 말함.
사용자자가 원격지에 있는 서버로부터 Content(비디오, 음악, 이미지 등)을 다운 받을 때 더 가까이 있는 서버에서 받는 것보다 시간이 오래 걸리기에 사용자와 가까운 곳에 위치한 Cache Server에 해당 Content 를 저장(캐싱)하고 캐시 서버가 Response를 주도록함.

장점

웹 사이트 로딩 속도 개선, 인터넷 회선 비용 절감, 컨텐츠 제공의 안정성, 웹사이트 보안 개선 등이 있겠다.

실습 내용

우선 1과제 기능대회 아키텍처를 봐보면 CloudFront 가 쓰일 부분인 ALB랑 연결되는 부분밖에 없다. 그러니 간단하게 EC2에서 웹 애플리케이션을 띄우고 ALB 연결후, CloudFront로 접근해보자. 아래와 같은 아키텍처를 구축할 것이다. 실습은 이쪽을 참고했다.

EC2

bastion 생성 해주고, application 을 띄울 EC2도 생성해준다.

생성완료!

flask-application 까지 들어오면 거의 끝난거다. 세팅할건 별로 없고
1. 파이썬 설치
2. 가상환경 셋팅
3. app.py 만들기
4. Flask 애플리케이션 띄우고 확인하기
정도가 되겠다.

1. 파이썬 설치

$ yum install python3 으로 설치해주고
$ python3 --version 으로 버전 확인해서 잘 깔렸는지 확인해준다.

2. 가상환경 셋팅

$ python3 -m venv venv 로 가상환경을 세팅해주고
$ cd venv/bin 경로 이동후
$ source activate 로 가상환경에 들어와준다.

3. Flask 설치

$ pip3 install -U Flask 로 Flask를 설치해준다.

4. app.py 만들기

$ vi app.py 로 app.py 를 생성, 텍스트 에디터를 켜준다음

from flask import Flask

app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello,World!"

붙여넣기 진행 이후 :wq!

5. Flask 애플리케이션 띄우고 확인하기

$ flask run 하고 터미널 창을 하나 더 띄워 플라스크 애플리케이션을 실행시킨 인스턴스에서 curl http://localhost:5000 로 플라스크 페이지가 잘 뜨는지 체크하자.

헬로 월드가 잘 뜨는것을 볼 수 있다.

ALB

아키텍처에 나와있는것과 같이 ALB를 선택.

네트워크 매핑은 vpc 골라주고, 퍼블릭 서브넷들을 선택. 이때 보안그룹은 5000번을 열어준다.

대상그룹

유형은 인스턴스, 이후 프로토콜은 80번으로 해준다.

이후 flask application 이 돌아가는 인스턴스를 대상으로 포트를 5천번으로 설정한 이후 대상그룹을 생성. 이후 다시 alb 생성으로 돌아가 쭉쭉 내린 다음 생성해준다.

생성되는데 조금 시간이 걸리는 편이다. 생성이 됐다면 아래 사진과 같이 초록불이 들어올 것이다.

잘 됐는지 확인

ALB의 DNS 이름을 웹 브라우저에 붙여넣었을때 Hello,World 가 보인다면 ok 이다.이때 리스너에 https 를 추가하고 SSl 인증서까지 적용시킨다면 https:// 로도 접속이 가능하다.

CloudFront

원하는 방법으로 실습을 진행하기 위해선 도메인을 구매해야해서.. 무료 도메인 사이트도 막혔다시피하기때문에 원하는 방법으로 실습을 진행해볼 방법은 없지만 그래도 대강 이렇게 진행된다. 라고 알고 있으시면됩니다.

  1. 우선 배포 생성 원본 도메인에 우리가 만든 alb 를 설정. 프로토콜은 http 로(도메인 발급을 안해서 SSL 인증서 적용이 안됨 => https 안됨) 해주세요.
  1. 캐시, 원본 정책 설정

    알잘딱 설정해줍니다. 자세한 사항은 어.. 여기를 가서 공부해주세요 이러고 클라우드 프론트를 생성하면 배포 도메인 이름이 보일겁니다. 이제 이 주소로 접속하면

    요쪽은 도메인을 발급받고 ssl 인증서를 발급받게되면 설정할 수 있는 부분. 대충 이런게 있구나~ 하고 넘어가고 나중에 해봅시다.

    이러고 생성을 하면 배포가 생성될 건데(테스트한다고 하나 더 만들어서 필자는 2개임) 새로 생긴 도메인 네임을 컨트롤 c 하고 웹페이지에 붙여넣으면

    우리가 띄운 Flask 웹 애플리케이션이 보이게될 겁니다. (Hello, World! 가 보일거임)

마치며

도메인 이슈로 다른 설정들을 못만져서 실습을 제대로 진행하지 못했기? 때문에 이론을 한번 더 정리할 예정.

profile
안녕하세요 DevOps 엔지니어로 현업에서 활동중인 요한이라고 합니다.

0개의 댓글