많은 방법이 있는데 제일 좋은 방법은 먼저 컨텐츠에 도달하는 속도를 올리는 방법이다. 컨텐츠에 대한 도달속도를 확인하는 방법은 첫번째로
tracert 이다.
테스트하는 도메인의 구성이다.
>tracert 리눅서.com 1 1 ms <1 ms <1 ms 192.168.2.1 2 1 ms 1 ms 1 ms 121.125.68.225 3 2 ms 3 ms 3 ms 100.127.39.21 4 3 ms 4 ms 2 ms 10.222.41.224 5 3 ms 2 ms 3 ms 10.222.14.73 6 2 ms 2 ms 6 ms 211.210.54.34 7 * * * 요청 시간이 만료되었습니다. 8 * * * 요청 시간이 만료되었습니다. 9 * * * 요청 시간이 만료되었습니다. 10 * * * 요청 시간이 만료되었습니다. 11 4 ms 5 ms 4 ms 52.93.248.221 12 4 ms 3 ms 4 ms 54.239.123.121 13 3 ms 3 ms 3 ms 54.239.122.38
54.239.122.38 IP는 아마존 IP로 아마존 내 네트워크 까지 연결된것을 확인할수 있었다.
그다음 도메인은 cf에 연결된 도메인이다.
>tracert linuxer.name 1 1 ms <1 ms <1 ms 192.168.2.1 2 1 ms 1 ms 1 ms 121.125.68.225 3 1 ms 3 ms 3 ms 100.127.36.21 4 4 ms 2 ms 2 ms 10.222.41.230 5 2 ms 1 ms 1 ms 10.222.15.91 6 2 ms 3 ms 3 ms 211.210.54.34 7 3 ms 3 ms 3 ms 52.93.248.36 8 3 ms 2 ms 2 ms 52.93.248.83 9 2 ms 2 ms 2 ms 54.239.41.13 10 * * * 요청 시간이 만료되었습니다. 11 * * * 요청 시간이 만료되었습니다. 12 * * * 요청 시간이 만료되었습니다. 13 2 ms 2 ms 2 ms server-54-230-181-122.icn50.r.cloudfront.net [54.230.181.122] 추적을 완료했습니다.
지금 구성에서 linuxer.name 과 리눅서.com 사이트의 동작 자체는 동일하나 리눅서.com은 로드벨런서를 다이렉트로 바라보고 있고 linuxer.name 은 cloudfront 로 연결되어 오리즌을 로드벨런서로 바라보고 있는상태이다.
그럼 라우팅은 정상적으로 cloudfront 쪽이 빠른걸 확인했으니 컨텐츠에 대해 접근이 빠른지 확인해 보려면 어떤방법을 사용해야할까? TTFB와 여러지표를 확인하기로 했다. 웹개발자 도구로 timing을 확인하면정확하게 확인할수 있을거라 생각했다.
ttfb 가 312.65ms 다 그럼 다이렉트로 로드벨런서에 연결된 도메인은 속도가 얼마나 나올까?
ttfb 가 435.53ms 다. 오잉? 생각보다 속도 차이가 있다.
그럼 일단 더테스트하려면...어쩔까..간단하게 해외로 간다!
18353km 떨어진 상파울루 리전의 win ec2 이용하여 테스트 하겠다.
cf가 적용되어있는-linuxer.name
cf가 적용되지 않은 리눅서.com
상황에 따른 응답속도의 차이가 있긴하지만 확실히 dynamic cdn 을 적용한 도메인쪽이 좀더 빨리 떳다.
그리고 AmazonS3FullAccess 권한을 가진 사용자를 Programmatic access 방식으로 생성한다.
그리고 버킷을 생성한다. AmazonS3FullAccess full acces 권한을 줬는데 이 권한은 업로드 권한만 줘도 무방하다. 하지만 편한 테스트를위해 전체 권한을 부여하였다.
일단 모든 퍼블릭 엑세스 차단을 해제한다. 나머지는 모두 기본설정이다. 위 설정은 편한 설정을 위한 선택이므로 각자 개인의 선택을 요한다.
미리 wp-content/uploads 폴더까지 생성한다. 그리고 cloudfront 를 생성한다.
Restrict Bucket Access -yes Origin Access Identity - Create a New Identity Grant Read Permissions on Bucket - Yes, Update Bucket Policy 위 순서대로 선택하면 s3 버킷 정책이 자동으로 삽입된다.
그리고 cloudfront는 https 로만 통신하기 떄문에 route53에 도메인을 생성하여 붙여주는게 좋다. 도메인을 붙일떈 acm 을 생성하여야 한다. acm은 버지니아 북부에서 생성한 acm만 사용할수 있다.
acm은 route53을 사용하면 버튼 클릭 한번으로 생성 가능하다. 하나의 acm에는 50개의 도메인을 추가할수 있다. 간단하게 linuxer.name *.linuxer.name 을 추가하였다. 여기에 linuxer.com 이나 linuxer.kr namelinuxer.net 등 여러가지의 도메인을 한꺼번에 추가하여 사용할수 있다.
이후 cloudfront 를 생성한다. 이후에 wordpress 플러그인 설정화면으로 진입한다.
엑세스키와 시크릿키를 입력하고 save를 하면 디비에 저장이 된다. 디비에 저장하고 싶지 않을경우에 wp-config.php 파일에 추가를 한다.
그리고 플러그인 Offload Media Lite 으로 진입하여 cname 설정을 진행한다.
OFF 되어있는 버튼을 누르고 설정된 cloudfront 에 설정한 cname 을 입력한다. 이 설정을 마칠쯤이면 cloudfront 가 Deployed 상태로 변경될것이다.
그러면 이제 테스트 게시물을 작성하여 보자.
업로드가 정상적으로 이루어 지게 되면 이미지가 정상적으로 보이게되고 주소복사를 눌렀을떄 해당 페이지가 cdn 페이지로 열리면 정상적으로 upload-s3-cdn 이 구조로 생성이 된것이다.
그리고 s3 로 uploads 디렉토리를 이동하는것은 선택이다.
하지만 그부분도 진행하였다.
#aws configure AWS Access Key ID [None]: AWS Secret Access Key [None]: Default region name [None]:ap-northeast-2
aws configure 명령어를 이용하여 이전에 만든 엑세스 키를 입력하고 리전을 지정한다. 그리고 aws s3 명령어를 이용하여 sync 한다.