[Python] 백준 18108번 1998년생인~ 문제풀이 (브론즈V)
문제 ICPC Bangkok Regional에 참가하기 위해 수완나품 국제공항에 막 도착한 팀 레드시프트 일행은 눈을 믿을 수 없었다. 공항의 대형 스크린에 올해가 2562년이라고 적혀 있던 것이었다. 불교 국가인 태국은 불멸기원(佛滅紀元), 즉 석가모니가 열반한 해를 기준으로 연도를 세는 불기를 사용한다. 반면, 우리나라는 서기 연도를 사용하고 있다. 불기 연도가 주어질 때 이를 서기 연도로 바꿔 주는 프로그램을 작성하시오. 입력 서기 연도를 알아보고 싶은 불기 연도 y가 주어진다. (1000 ≤ y ≤ 3000) 조건 불기 연도를 서기 연도로 변환한 결과를 출력한다. 예제 입력 2541 예제 출력 1998 문제 풀이 print(int(input())-543) 먼저 숫자만 입력할 수 있도록 input을..
2023.09.25
[Python] 백준 10926번 ??! 문제풀이 (브론즈V)
문제 준하는 사이트에 회원가입을 하다가 joonas라는 아이디가 이미 존재하는 것을 보고 놀랐다. 준하는 놀람을 ??!로 표현한다. 준하가 가입하려고 하는 사이트에 이미 존재하는 아이디가 주어졌을 때, 놀람을 표현하는 프로그램을 작성하시오. 입력 첫째 줄에 준하가 가입하려고 하는 사이트에 이미 존재하는 아이디가 주어진다. 아이디는 알파벳 소문자로만 이루어져 있으며, 길이는 50자를 넘지 않는다. 조건 첫째 줄에 준하의 놀람을 출력한다. 놀람은 아이디 뒤에 ??!를 붙여서 나타낸다. 예제입력 joonas 예제출력 joonas??! 문제 풀이 print(input(),"??!",sep="") 해당 문제에서는 리스트같은 것을 만들어 비교하는 것이 아닌 바로 출력하라고 했기 때문에 입력한 것에 바로 "??!"를..
2023.09.24
[Python] 백준 10862번 사칙연산 문제풀이 (브론즈V)
문제 두 자연수 A와 B가 주어진다. 이때, A+B, A-B, A*B, A/B(몫), A%B(나머지)를 출력하는 프로그램을 작성하시오. 입력 두 자연수 A와 B가 주어진다. (1 ≤ A, B ≤ 10,000) 조건 첫째 줄에 A+B, 둘째 줄에 A-B, 셋째 줄에 A*B, 넷째 줄에 A/B, 다섯째 줄에 A%B를 출력한다. 문제 풀이 A, B = map(int, input().split()) a = A + B # 덧셈 b = A - B # 뺄셈 c = A * B # 곱셈 d = A / B # 나눗셈 e = A % B # 나머지 # 다른 사칙 연산 f = A // B # 몫만 출력(3 // 2 == 1) print(a,b,c,d,e, sep='\n') 한 줄, 한 줄 print 문항을 써 출력을 할 수도 ..
2023.09.23
[Python] 백준 1001번 A-B 문제풀이
문제 두 정수 A와 B를 입력받은 다음, A-B를 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 A와 B가 주어진다. (0 < A, B < 10) 조건 첫째 줄에 A-B를 출력한다. 문제 풀이 A, B = map(int,input().split()) print(A-B) 이전 A+B의 설명과 동일 합니다. map 함수는 주로 리스트, 튜플, 문자열 등과 같은 반복 가능한(iterable) 객체의 모든 요소에 동일한 함수를 적용하고 그 결과를 새로운 iterable로 반환하는 역할을 합니다. 이 함수는 map(각 요소에 지정할 함수, 요소, ...)로 작성이 가능하고 위 문제에서는 다음과 같이 풀이할 수 있습니다. 입력한(input) 것을 분리(split)하여 숫자열(int)로 지정(map)할 것입니다. ..
2023.09.23
[Python] 백준 1000번/A+B 문제풀이
문제 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 A와 B가 주어진다. (0 < A, B < 10) 조건 첫째 줄에 A+B를 출력한다. 문제 풀이 A, B = map(int,input().split()) print(A+B) map 함수는 주로 리스트, 튜플, 문자열 등과 같은 반복 가능한(iterable) 객체의 모든 요소에 동일한 함수를 적용하고 그 결과를 새로운 iterable로 반환하는 역할을 합니다. 이 함수는 map(각 요소에 지정할 함수, 요소, ...)로 작성이 가능하고 위 문제에서는 다음과 같이 풀이할 수 있습니다. 입력한(input) 것을 분리(split)하여 숫자열(int)로 지정(map)할 것입니다. A + B를 출력(print)하겠습니..
2023.09.22
[Python] 백준 2557번/Hello World 문제풀이
문제 Hello World!를 출력하시오. 입력 없음 조건 Hello World!를 출력하시오. 문제 풀이 print('Hello World!') # or print("Hello World!") 문제 페이지 2557번: Hello World Hello World!를 출력하시오. www.acmicpc.net
2023.09.21
[AWS SAA] 56. AWS WAF
AWS WAF WAF는 일반적인 웹 악용과 봇으로부터 웹 애플리케이션이나 API를 보호하는 데 도움이 되는 웹 애플리케이션 방화벽입니다. AWS WAF에서는 트래픽이 애플리케이션에 수신되는 방식을 제 어할 수 있습니다. SQL 명령어 삽입(SQLi) 또는 크로스 사이트 스크립팅(XSS)과 같은 일반적인 공격 패턴을 차단하고 봇 트래픽을 제어하는 보안 규칙을 생성하면 됩니다. 호환 AWS 서비스로 전달되는 HTTP(S)요청도 모니터링할 수 있습니다. 트래픽은 웹 액세스 제어 목록(웹 ACL)을 기준으로 평가된 후 대상 위치로 전송됩니다. 한 번도 거부되지 않고 웹 ACL을 모두 통과하는 트래픽은 대상 위치 AWS 서비스로 전송됩니다. 상세 액세스 제어 구성 요소 WAF를 구성하기 전에 AWS 리소스에 대한..
2023.09.15
[AWS SAA] 55. 서비스 보호 방법 - AWS Shield
공격 방식 DDoS DDoS는 다수의 오염된 시스템이 네트워크 또는 웹 애플리케이션과 같은 대상에 많은 양의 트래픽으로 대상에 서비스 장애를 일으키려고 시도하는 공격입니다. DDoS 공격은 정상적인 사용자의 서비스 액세스를 방해할 수 있으며 과도한 트래픽 볼륨으로 인해 시스템에 장애를 발생시킬 수 있습니다. DDoS 공격의 일반적인 개념은 추가 호스트를 활용하여 대상에 대한 요청을 증대시켜 최대 용량에 도달하게 해 사용할 수 없게 만드는 것입니다. OSI 계층 공격 DDoS 공격은 대개 공격 대상 Open Systems Interconnection(OSI) 모델 계층을 기준으로 격리할 수 있습니다. DDoS 공격은 네트워크(3계층), 전송(4 계층), 표현(6 계층) 및 애플리케이션(7 계층) 계층에서 ..
2023.09.14
[AWS SAA] 54. CloudFront
콘텐츠 전송 네트워크 웹 트래픽이 지리적으로 분산된 경우 전체 인프라를 전 세계에 복제하는 것은 때떄로 불가능할 수도 있습니다. 또한 비용 효율적이지 않습니다. 콘텐츠 전송 네트워크(CDN)에서는 웹 콘텐츠의 캐시된 사본을 고객에게 제공하기 위해 엣지 로케이션의 글로벌 네트워크를 사용할 수 있습니다. 응답 시간을 줄이기 위해 CDN은 고객 또는 발신 요청 위치에 가장 가까운 엣지 로케이션을 사용합니다. 가장 가까운 엣지 로케이션 사용 시에는 웹 자산이 캐시에서 제공되므로 처리량이 크게 증가합니다. 동적 데이터의 경우, 다수의 CDN이 오리진 서버에서 데이터를 검색하도록 구성할 수 있습니다. 엣지 로케이션에 유지할 정도로 자주 액세스되지 않는 콘텐츠가 있을 때는 리전 엣지 캐시를 사용합니다. 이러한 콘텐츠..
2023.09.13
반응형

문제

ICPC Bangkok Regional에 참가하기 위해 수완나품 국제공항에 막 도착한 팀 레드시프트 일행은 눈을 믿을 수 없었다. 공항의 대형 스크린에 올해가 2562년이라고 적혀 있던 것이었다.

불교 국가인 태국은 불멸기원(佛滅紀元), 즉 석가모니가 열반한 해를 기준으로 연도를 세는 불기를 사용한다. 반면, 우리나라는 서기 연도를 사용하고 있다. 불기 연도가 주어질 때 이를 서기 연도로 바꿔 주는 프로그램을 작성하시오.

 

입력

서기 연도를 알아보고 싶은 불기 연도 y가 주어진다. (1000 ≤ y ≤ 3000)

 

조건

불기 연도를 서기 연도로 변환한 결과를 출력한다.

 

예제 입력

2541

예제 출력

1998

 

문제 풀이

print(int(input())-543)

먼저 숫자만 입력할 수 있도록 input을 int로 감싸주었고, 불기와 다른 연도 차이는 543임으로 주어진 불기에 이를 빼면 서기로 출력됩니다.

 

 

문제 페이지

https://www.acmicpc.net/problem/18108

 

18108번: 1998년생인 내가 태국에서는 2541년생?!

ICPC Bangkok Regional에 참가하기 위해 수완나품 국제공항에 막 도착한 팀 레드시프트 일행은 눈을 믿을 수 없었다. 공항의 대형 스크린에 올해가 2562년이라고 적혀 있던 것이었다. 불교 국가인 태국

www.acmicpc.net

 

반응형
반응형

문제

준하는 사이트에 회원가입을 하다가 joonas라는 아이디가 이미 존재하는 것을 보고 놀랐다. 준하는 놀람을 ??!로 표현한다. 준하가 가입하려고 하는 사이트에 이미 존재하는 아이디가 주어졌을 때, 놀람을 표현하는 프로그램을 작성하시오.

 

입력

첫째 줄에 준하가 가입하려고 하는 사이트에 이미 존재하는 아이디가 주어진다. 아이디는 알파벳 소문자로만 이루어져 있으며, 길이는 50자를 넘지 않는다.

조건

첫째 줄에 준하의 놀람을 출력한다. 놀람은 아이디 뒤에 ??!를 붙여서 나타낸다.

 

예제입력

joonas

예제출력

joonas??!

 

문제 풀이

print(input(),"??!",sep="")

해당 문제에서는 리스트같은 것을 만들어 비교하는 것이 아닌 바로 출력하라고 했기 때문에 입력한 것에 바로 "??!"를 출력하도록 만들었습니다.

 

 

문제 페이지

 

 

10926번: ??!

준하는 사이트에 회원가입을 하다가 joonas라는 아이디가 이미 존재하는 것을 보고 놀랐다. 준하는 놀람을 ??!로 표현한다. 준하가 가입하려고 하는 사이트에 이미 존재하는 아이디가 주어졌을 때

www.acmicpc.net

 

반응형
반응형

문제

두 자연수 A와 B가 주어진다. 이때, A+B, A-B, A*B, A/B(몫), A%B(나머지)를 출력하는 프로그램을 작성하시오. 

 

입력

두 자연수 A와 B가 주어진다. (1 ≤ A, B ≤ 10,000)

 

조건

첫째 줄에 A+B, 둘째 줄에 A-B, 셋째 줄에 A*B, 넷째 줄에 A/B, 다섯째 줄에 A%B를 출력한다.

 

문제 풀이

A, B = map(int, input().split())

a = A + B # 덧셈
b = A - B # 뺄셈
c = A * B # 곱셈
d = A / B # 나눗셈
e = A % B # 나머지

# 다른 사칙 연산
f = A // B # 몫만 출력(3 // 2 == 1)

print(a,b,c,d,e, sep='\n')

한 줄, 한 줄 print 문항을 써 출력을 할 수도 있지만 sep=을 사용해 결과 사이에 줄바꿈을 넣어주었습니다.

 

 

문제 페이지

 

 

10869번: 사칙연산

두 자연수 A와 B가 주어진다. 이때, A+B, A-B, A*B, A/B(몫), A%B(나머지)를 출력하는 프로그램을 작성하시오. 

www.acmicpc.net

 

반응형
반응형

문제

두 정수 A와 B를 입력받은 다음, A-B를 출력하는 프로그램을 작성하시오.

 

입력

첫째 줄에 A와 B가 주어진다. (0 < A, B < 10)

 

조건

첫째 줄에 A-B를 출력한다.

 

문제 풀이

A, B = map(int,input().split())
print(A-B)

이전 A+B의 설명과 동일 합니다.

 

map 함수는 주로 리스트, 튜플, 문자열 등과 같은 반복 가능한(iterable) 객체의 모든 요소에 동일한 함수를 적용하고 그 결과를 새로운 iterable로 반환하는 역할을 합니다.

 

이 함수는 map(각 요소에 지정할 함수, 요소, ...)로 작성이 가능하고 위 문제에서는 다음과 같이 풀이할 수 있습니다.

입력한(input) 것을 분리(split)하여  숫자열(int)로 지정(map)할 것입니다.
A - B를 출력(print)하겠습니다.

 

이와 동일한 방식으로 10998(AXB), 1008(A/B)도 동일하게 문제를 푸실 수 있을 것 입니다.

 

문제 페이지

 

 

 

1001번: A-B

두 정수 A와 B를 입력받은 다음, A-B를 출력하는 프로그램을 작성하시오.

www.acmicpc.net

 

 

10998번: A×B

두 정수 A와 B를 입력받은 다음, A×B를 출력하는 프로그램을 작성하시오.

www.acmicpc.net

 

반응형
반응형

문제

두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.

 

 

입력

첫째 줄에 A와 B가 주어진다. (0 < A, B < 10)

 

 

조건

첫째 줄에 A+B를 출력한다.

 

 

문제 풀이

A, B = map(int,input().split())
print(A+B)

map 함수는 주로 리스트, 튜플, 문자열 등과 같은 반복 가능한(iterable) 객체의 모든 요소에 동일한 함수를 적용하고 그 결과를 새로운 iterable로 반환하는 역할을 합니다.

 

 

이 함수는 map(각 요소에 지정할 함수, 요소, ...)로 작성이 가능하고 위 문제에서는 다음과 같이 풀이할 수 있습니다.

입력한(input) 것을 분리(split)하여  숫자열(int)로 지정(map)할 것입니다.
A + B를 출력(print)하겠습니다.

 

문제 페이지

 

 

1000번: A+B

두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.

www.acmicpc.net

 

반응형
반응형

문제

Hello World!를 출력하시오.

 

 

입력

없음

 

 

조건

Hello World!를 출력하시오.

 

 

문제 풀이

print('Hello World!')

# or

print("Hello World!")

 

 

문제 페이지

 

 

2557번: Hello World

Hello World!를 출력하시오.

www.acmicpc.net

 

반응형

[AWS SAA] 56. AWS WAF

이지IT
|2023. 9. 15. 12:12
반응형

AWS WAF

WAF는 일반적인 웹 악용과 봇으로부터 웹 애플리케이션이나 API를 보호하는 데 도움이 되는 웹 애플리케이션 방화벽입니다. AWS WAF에서는 트래픽이 애플리케이션에 수신되는 방식을 제 어할 수 있습니다. SQL 명령어 삽입(SQLi) 또는 크로스 사이트 스크립팅(XSS)과 같은 일반적인 공격 패턴을 차단하고 봇 트래픽을 제어하는 보안 규칙을 생성하면 됩니다. 호환 AWS 서비스로 전달되는 HTTP(S)요청도 모니터링할 수 있습니다.

 

트래픽은 웹 액세스 제어 목록(웹 ACL)을 기준으로 평가된 후 대상 위치로 전송됩니다. 한 번도 거부되지 않고 웹 ACL을 모두 통과하는 트래픽은 대상 위치 AWS 서비스로 전송됩니다.

 

상세

 

 

액세스 제어 구성 요소

WAF를 구성하기 전에 AWS 리소스에 대한 액세스를 제어하는 데 사용되는 구성 요소를 이해해야 합니다. 구성 요소는 다음과 같습니다.

  • 웹 ACL
    웹 ACL을 사용하여 AWS 리소스 집합을 보호합니다. 규칙을 추가하여 웹 ACL을 생성하고 보호 전략을 정의합니다.
  • 규칙
    규칙에서는 웹 요청을 검사하기 위한 기준을 정의하고 이 기준과 일치하는 요청을 처리하는 방법을 지정합니다.
  • 규칙 그룹
    규칙은 개별적으로 사용하거나 재사용 가능한 규칙 그룹에서 사용할 수 있습니다. AWS WAF용 AWS 관리형 규칙 및 AWS Marketplace 판매자는 사용할 관리형 규칙 그룹을 제공합니다. 사용자 고유의 규칙 그룹을 정의할 수도 있습니다.
  • 규칙 문
    AWS WAF에서 웹 요청을 검사하는 방법을 지시하는 규칙의 일부입니다. AWS WAF가 웹 요청이 스테이트먼트와 일치한다고 표현합니다.
  • IP 집합
    규칙 문에서 함께 사용할 정규 표현식 모음입니다. 정규식 패턴 집합은 AWS 리소스입니다.
  • 정규식 패턴 집합
    규칙 문에서 함께 사용할 정규 표현식 모음입니다. 정규식 패턴 집합은 AWS 리소스입니다.
  • 모니터링 및 로깅
    CloudWatch를 사용하여 웹 요청, 웹 ACL 및 규칙을 모니터링할 수 있습니다. 로깅을 활성화하여 웹 ACL에서 분석한 트래픽에 대한 자세한 정보를 얻을 수도 있습니다. 로그를 전송할 위치를 CloudWatch Logs, S3, Kinesis Data Firehose 중에서 선택할 수 있습니다.

 

ACL 규칙 구문을 사용하는 트래픽 제어

규칙 문은 웹 요청을 검사하는 방법을 AWS WAF에 제시하는 규칙의 일부입니다. AWS WAF가 웹 요청에서 검사 기준을 찾으면 웹 요청이 스테이트먼트와 일치한다고 표현합니다.

 

모든 규칙 스테이트먼트는 다음을 수행합니다.

  • 구문 유형에 따라 무엇을 어떻게 찾을지 지정합니다.
  • 다른 구문을 포함할 수 있는 하나의 최상위 규칙 구문이 있습니다.

규칙 문은 매우 간단할 수 있습니다. 예를 들어 웹 요청을 확인할 출처 국가 집합을 제공하는 구문이 있을 수 있습니다. 규칙 문은 매우 복잡할 수도 있습니다. 예를 들어 다른 많은 구문을 논리적 AND, OR 및 NOT 구문과 결합한 고문이 있을 수 있습니다.

 

웹 ACL에는 규칙 그룹을 참조하는 규칙 구문이 포함될 수 있습니다. 콘솔에서 웹 ACL은 규칙 구문으로 표현되지 않습니다. 모든 웹 ACL에는 JSON 형식 표현이 있습니다. JSON에서 이러한 특수 유형의 규칙 구문을 볼 수 있습니다. 복잡한 규칙의 경우 JSON 편집기를 사용하여 웹 ACL을 관리합니다.

 

AWS WAF에서는 여러 규칙 문의 중첩을 지원합니다. 예를 들어 중첩을 사용하여 특정 지리적 영역에서 들어오는 요청의 속도를 제어합니다. 속도 기반 규칙을 사용하고 그 안에 지리적 일치를 중첩하여 범위를 좁힙니다.

 

상세

반응형

'자격증 > AWS SAA' 카테고리의 다른 글

[AWS SAA] 58. AWS Outposts  (0) 2023.10.11
[AWS SAA] 57. AWS Firewall Manager  (0) 2023.10.10
[AWS SAA] 55. 서비스 보호 방법 - AWS Shield  (0) 2023.09.14
[AWS SAA] 54. CloudFront  (0) 2023.09.13
[AWS SAA] 53. 엣지 서비스와 Route 53  (0) 2023.09.12
반응형

공격 방식

DDoS

DDoS는 다수의 오염된 시스템이 네트워크 또는 웹 애플리케이션과 같은 대상에 많은 양의 트래픽으로 대상에 서비스 장애를 일으키려고 시도하는 공격입니다. DDoS 공격은 정상적인 사용자의 서비스 액세스를 방해할 수 있으며 과도한 트래픽 볼륨으로 인해 시스템에 장애를 발생시킬 수 있습니다.

 

DDoS 공격의 일반적인 개념은 추가 호스트를 활용하여 대상에 대한 요청을 증대시켜 최대 용량에 도달하게 해 사용할 수 없게 만드는 것입니다.

 

OSI 계층 공격

DDoS 공격은 대개 공격 대상 Open Systems Interconnection(OSI) 모델 계층을 기준으로 격리할 수 있습니다. DDoS 공격은 네트워크(3계층), 전송(4 계층), 표현(6 계층) 및 애플리케이션(7 계층) 계층에서 가장 많이 나타납니다.

 

  1. 인프라 계층 공격
    3 계층과 4 계층에 대한 공격은 일반적으로 계층 공격으로 분류됩니다. 가장 흔히 발생하는 DDoS 공격 유형인 인프라 계층 공격에는 동기화(SYN) 서비스 장애 등의 백터, 그리고 UDP(User Datagram Protocol) 패킷 서비스 장애와 같은 기타 반사 공격이 포함됩니다. 이러한 공격은 대개 볼륨이 상당히 크고, 네트워크 또는 애플리케이션 서버 용량에 과부하가 걸리게 하는 것을 목표로 합니다. 다행히 이러한 공격 유형은 징후가 분명하고 탐지하기가 좀 더 쉽습니다.

  2. 애플리케이션 계층 공격
    공격자가 7 계층 공격을 사용해 애플리케이션 자체를 표적으로 삼기도 합니다. 이러한 공격에서는 SYN 플러드 인프라 공격과 유사하게 공격자가 애플리케이션의 특정 기능을 오버로드하여 애플리케이션이 적법한 사용자에게 응답하지 않거나 사용할 수 없게 만드려 시도합니다.

 

AWS Shield

AWS Shield는 AWS에서 실행되는 애플리케이션을 보호하는 관리형 DDoS 보호 서비스입니다. 이 서비스는 애플리케이션 가동 중지 및 지연 시간을 최소화하는 동적 탐지 및 자동 인라인 완화 기능을 제공합니다. AWS Shield에는 Shield  Standard와 Shield Advanced라는 두 가지 계층이 있습니다.

 

AWS Shield Standard에서는 흔히 발생하는 가장 일반적인 인프라(3, 4 계층) 공격 중 일부에 대한 보호 기능을 제공합니다. 이러한 공격에는 SYN/UDP flood 및 리플렉션 공격이 포함됩니다. Shield Standard는 악성 트래픽을 탐지하며 실시간 문제 완화 기능을 제공합니다. Shield Standard의 보호 기능 사용 시에는 추가 요금이 부과되지 않습니다.

애플리케이션을 DDoS 공격으로부터 더욱 철저히 보호해야 하는 경우에는 Shield Advanced를 사용할 수 있습니다. 이는 복잡한 대규모 DDoS 공격 탐지 및 완화 기능이 추가로 제공됩니다. 그리고 이러한 공격을 실시간에 가깝게 확인할 수 있으며, 웹 애플리케이션 방화벽인 AWS WAF와 통합도 가능합니다.

 

작동방식

반응형

'자격증 > AWS SAA' 카테고리의 다른 글

[AWS SAA] 57. AWS Firewall Manager  (0) 2023.10.10
[AWS SAA] 56. AWS WAF  (0) 2023.09.15
[AWS SAA] 54. CloudFront  (0) 2023.09.13
[AWS SAA] 53. 엣지 서비스와 Route 53  (0) 2023.09.12
[AWS SAA] 52. Step Functions  (0) 2023.09.11
반응형

콘텐츠 전송 네트워크

웹 트래픽이 지리적으로 분산된 경우 전체 인프라를 전 세계에 복제하는 것은 때떄로 불가능할 수도 있습니다. 또한 비용 효율적이지 않습니다. 콘텐츠 전송 네트워크(CDN)에서는 웹 콘텐츠의 캐시된 사본을 고객에게 제공하기 위해 엣지 로케이션의 글로벌 네트워크를 사용할 수 있습니다.

 

응답 시간을 줄이기 위해 CDN은 고객 또는 발신 요청 위치에 가장 가까운 엣지 로케이션을 사용합니다. 가장 가까운 엣지 로케이션 사용 시에는 웹 자산이 캐시에서 제공되므로 처리량이 크게 증가합니다. 동적 데이터의 경우, 다수의 CDN이 오리진 서버에서 데이터를 검색하도록 구성할 수 있습니다.

 

엣지 로케이션에 유지할 정도로 자주 액세스되지 않는 콘텐츠가 있을 때는 리전 엣지 캐시를 사용합니다. 이러한 콘텐츠는 리전 엣지 캐시를 사용합니다. 이러한 콘텐츠는 리전 내 엣지 캐시에 수집되므로 오리진 서버에 해당 콘텐츠를 검색할 필요가 없습니다.

 

 

CloudFront

CloudFront는 웹 사이트, API, 동영상 콘텐츠 또는 기타 웹 자산의 전송을 가속화하는 글로벌 CDN 서비스입니다. 다른 AWS 제품과 통합하여 사용하면 개발자와 기업이 사용자에게 쉽고 빠르게 콘텐츠를 전송할 수 있습니다. 최소 사용 약정이 없습니다.

 

CloudFront는 지연 시간 및 처리량을 위한 네트워크 계층 최적화와 함께 캐시 동작 최적화를 위한 강력한 유연성을 제공합니다. CDN은 기본적으로 멀티 티어 캐시를 제공합니다. 멀티 티어 캐시에 포함되어 있는 리전 엣지 캐시는 객체가 엣지에 아직 캐싱되어 있지 않은 경우 지연 시간을 단축하고 오리진 서버의 부하를 줄입니다.

 

CloudFront는 WebSocket 프로토콜을 통한 실시간 양방향 통신을 지원합니다. 이 영구 연결을 통해 클라이언트와 서버가 반복적인 연결로 인해 오버헤드 없이 서로 실시간 데이터를 전송할 수 있습니다. 이는 특히 채팅, 공동 작업, 게임, 금융 거래 같은 통신 애플리케이션에 유용합니다.

 

이처럼 CloudFront에서 WebSocket이 지원되므로 고객은 다른 동적 및 정적 콘텐츠와 동일한 경로를 통해 WebSocket 트래픽을 관리할 수 있습니다. CloudFront를 사용하면 CloudFront가 기본 제공하는 AWS Shield 및 AWS WAF와의 통합을 통해 DDoS 보호를 활용할 수 있습니다.

 

 

엣지 캐싱

CloudFront가 아닌 일반적인 웹 서버에서 이미지를 제공한다고 가정합니다. URL A/photo.png를 사용하여 photo.png라는 이미지를 제공할 수 있습니다. 사용자는 이 URL로 쉽게 이동해 해당 이미지를 볼 수 있습니다.

 

이미지가 발견될 때까지 인터넷으로 이루어진 상호 연결된 네트워크의 복잡한 모음을 통해 네트워크에서 다른 네트워크로 요청이 라우팅되었다는 사실은 아마 모를 것입니다.

 

CloudFront는 AWS 백본 네트워크를 통해 콘텐츠를 가장 효과적으로 서비스할 수 있는 엣지 로케이션으로 각 사용자 요청을 라우팅하여 콘텐츠 배포 속도를 높입니다. 일반적으로 CloudFront 엣지의 서버가 유저에게 가장 빠른 속도로 제공합니다. AWS 네트워크를 사용하면 사용자의 요청이 반드시 통과해야 하는 네트워크의 수가 줄어들어 성능이 향상됩니다. 파일의 첫 바이트를 로드하는 데 걸리는 지연 시간이 줄어들고 데이터 전송 속도가 빨라집니다. 또한 파일(객체)의 사본이 전 세계 여러 엣지 로케이션에 유지(또는 캐시)되므로 안정성과 가용성이 향상됩니다.

 

 

CloudFront 캐싱 단계

  1. 요청이 최적의 엣지 로케이션으로 라우팅 됩니다.
  2. 캐시되지 않은 콘텐츠가 오리진으로부터 검색됩니다.
  3. 오리진 콘텐츠가 캐싱을 위해 CloudFront 엣지 로케이션으로 전송됩니다.
  4. 데이터가 사용자에게 전달 됩니다.

콘텐츠가 이미 캐시되어 있으며 콘텐츠 유지 시간(TTL)이 만료되지 않았다면 2~3단계를 건너뛰며 데이터가 엣지 로케이션에서 콘텐츠 요청자에게 전송됩니다.

 

 

CloudFront 구성

CloudFront를 구성하려면 CloudFront가 사용자의 파일을 가져오는 오리진 서버(예: S3 버킷 또는 사용자의 HTTP 서버)를 지정합니다. 이들 서버는 전 세계의 CloudFront 엣지 로케이션에서 배포됩니다.

  • 오리진 서버는 객체의 최종 원본 버전을 저장합니다.
  • HTTP를 통해 콘텐츠를 제공하는 경우, 오리진 서버는 S3 버킷이거나 웹 서버 같은 HTTP 서버입니다.
  • HTTP 서버는 EC2 인스턴스 또는 사용자가 관리하는 온프레미스 서버에서 실행될 수 있습니다. 이러한 서버를 사용자 지정 오리진이라고도 합니다.

다음으로 CloudFront 배포를 생성합니다. 그러면 최종 사용자가 웹 사이트 또는 애플리케이션을 통해 요청하는 파일을 가져올 오리진 서버에 대해 CloudFront에 알려줍니다. 동시에 CloudFront에서 모든 요청을 기록할지 여부 및 배포를 만들자마자 활성화할지 여부와 같은 세부 사항을 지정합니다.

 

CloudFront는 새 배포에 도메인 이름을 할당합니다. 이 서비스는 콘텐츠를 제외한 배포의 구성을 모든 엣지 로케이션에 전송합니다.

 

 

성능 개선

CloudFront는 관리형 서비스입니다. 성능을 개선할 수 있도록 AWS에서 제공하는 서비스를 파악해야 합니다. 그리고 애플리케이션 성능을 최적화하도록 CloudFront를 구성해야 합니다.

 

AWS는 콘텐츠 전송 성능을 개선하는 기능을 제공합니다.

  • TCP 최적화
    CloudFront는 TCP 최적화 기능을 사용해 네트워크에서 현재 트래픽을 전송 중인 속도와 현재 왕복 지연 시간을 관찰합니다. 그런 다음 해당 데이터를 입력으로 사용하여 성능을 자동으로 개선합니다.
  • TLS 1.3 지원
     CloudFront는 TLS 1.3을 지원합니다. TLS 1.3은 필요한 왕복 수가 적어 더 간편한 핸드셰이크 프로세스를 통해 더욱 우수한 성능을 제공합니다. 그리고 개선된 보안 기능도 추가로 제공합니다.
  • 동적 콘텐츠 배치
    CloudFront를 사용하면 ELSB 로드 밸런서나 EC2 인스턴스에서 웹 애플리케이션 또는 API와 같은 동적 콘텐츠를 제공할 수 있습니다. 그러면 콘텐츠의 성능, 가용성 및 보안을 개선할 수 있습니다.

성능 개선을 위해 CloudFront 배포의 구성을 조정할 수도 있습니다.

  • 캐싱 전략 정의
    적절한 TTL을 선택해야 합니다. 또한 쿼리 문자열 파라미터, 쿠키 또는 요청 헤더 등을 기준으로 캐싱을 고려해야 합니다.
  • 캐시 적중률 개선
    CloudFront 콘솔에서 적중, 미스, 오류 상태의 뷰어 요청 비율을 확일할 수 있습니다. 그리고 CloudFront 캐시 통계 보고서에 수집된 통계를 기준으로 하여 배포를 변경할 수 있습니다.
  • CloudFront Origin Shield 사용
    리전 엣지 캐시와 오리진 간에 캐싱 게층을 더 추가할 수 있습니다. Origin Shield가 사용 사례에 항상 적합한 것은 아니지만 뷰어가 여러 지역의 리전에 분산되어 있거나 온프레미스 오리진에 용량 또는 대역폭 제약 조건이 적용되는 경우에는 유용할 수 있습니다.
반응형

'자격증 > AWS SAA' 카테고리의 다른 글

[AWS SAA] 56. AWS WAF  (0) 2023.09.15
[AWS SAA] 55. 서비스 보호 방법 - AWS Shield  (0) 2023.09.14
[AWS SAA] 53. 엣지 서비스와 Route 53  (0) 2023.09.12
[AWS SAA] 52. Step Functions  (0) 2023.09.11
[AWS SAA] 51. Kinesis  (0) 2023.09.11