패스틀리(Fastly) 의 캐쉬 솔루션은 Varnish라는 캐쉬엔진을 기반으로 만들어졌으며, Varnish는 VCL (Varnish Control Language)에 의해서 컨트롤 됩니다. 지금까지 보여드렸던 UI에서의 설정은 설정이 완료되면 전부 VCL로 치환되어서 동작되게 됩니다. 즉 UI에서의 설정은 VCL 코딩 없이도 내가 원하는 설정을 가능하게 하기 위해 제공된 기능입니다. 여러분이 UI에서 설정을 완료하신 후에 상단에 있는 Show VCL 이란 메뉴를 클릭하시면 설정된 관련 코드들을 확인 하실 수 있습니다.
서론이 길었습니다만, UI에서 제공하는 기능 보다 좀 더 복잡하고 세세한 설정이 필요할 경우에는 VCL Snippets 메뉴를 활용하여 직접 관련 기능을 코딩하여 활용하는 것을 추천 합니다. 익숙해 지면 UI를 활용하기 보다는 VCL snippets를 통하여 설정하는 것이 더 편하게 느껴질 것입니다. 아래 그림은 VCL의 Flow Diagram입니다, 아래의 흐름을 이해하시면 설정 시에 많은 도움이 됩니다.
VCL에는 아래의 그림과 같이 Recv, Hash, Hit, Pass, Miss, Fetch, Error, Deliver, Log라는 서브루틴들이 존재하고 루틴들은 각각의 역할을 담당합니다. 예를들면, Recv에서 유저의 요청을 받으면(Receive) 그 다음 Hash에서 요청 받은 컨텐츠가 Cache된 컨텐츠 안에 존재하는지 확인하게 되고, 만약 Cache에 존재하는 컨텐츠라면 Hit 로 분류되어 그 다음에 Deliver 서브루틴으로 이동되어 유저에게 해당 컨텐츠가 제공됩니다.
반대로 Cache안에 존재하지 않는 컨텐츠라면 Miss 로 진행되며 Origin으로 부터 컨텐츠를 가져오기 위해서 Fetch 로 진행되 Fetch에서는 Origin으로 부터 요청 받은 컨텐츠를 취득하고 그 다음 Deliver로 진행되어 유저에게 컨텐츠를 전달하게 됩니다.
아래 Fastly homepage에 가시면 좀 더 자세한 내용을 확인하실 수 있습니다.
(https://developer.fastly.com/learning/vcl/using/)
위의 설정 관련 이미지를 보시면 VCL Snippets에 코딩시에는 내가 설정을 원하는 서브루틴을 UI상에서 선택을 하고 필요한 코드를 코딩을 하고 저장을 해주면 설정사항이 적용되게 됩니다.
예를들면 유저에게서 리퀘스트를 받았을 시에 User-Agent라는 Header에 Firefox라는 문자가 포함되어 있으면 X-Firefox라는 Request Header를 만들어 Yes를 붙이고 싶고, 없을 경우에는 No를 붙이고 싶을 경우에는 vcl_recv 서브루틴을 선택하고 아래와 같이 코드를 작성해 줍니다.
if (req.http.User-agent ~ "Firefox") { set req.http.X-firefox = "Yes"; } else { set req.http.X-firefox = "No"; } |
이런 식으로 각 서브루틴에 내가 원하는 동작에 대한 코드를 작성하여 좀 더 세세하게 서비스를 컨트롤 할 수 있습니다.
다음 기회에 좀 더 다양한 설정 내용으로 다시 한번 글을 올리도록 하겠습니다.
끝까지 읽어 주셔서 감사합니다.
'Fastly_CDN > CDN_설정' 카테고리의 다른 글
패스틀리(Fastly), TLS 인증서 서비스를 이용해 보자 (0) | 2022.01.31 |
---|---|
패스틀리(Fastly), Origin Load Balancing 설정 (0) | 2022.01.28 |
패스틀리(Fastly) 로깅(Logging) 설정 (0) | 2021.10.31 |
패스틀리(Fastly) Content 메뉴의 세부 항목에 대해서 (0) | 2021.09.30 |
패스틀리(Fastly) Settings 의 세부 설정 항목에 대해서 (0) | 2021.09.24 |