얼마 전 Facebook, Instagram을 운영하는 메타가 유료 서비스를 출시했어요. Twitter도 유료 서비스 "트위터 블루"의 구독자를 늘리려고 하는 중인데 이렇게 소셜미디어 기업들이 유료 서비스에 매달리는 이유는 맞춤 광고 서비스를 제공하기 하기 어려워진 상황 때문입니다. 오늘은 메타의 유료 서비스 출시 소식을 듣고 서드파티 쿠키와 맞춤광고까지 생각이 도달했기에, 이에 대한 이야기를 해보려고 합니다.
지금까지 소셜미디어 기업들의 수익구조는 사용자의 개인정보를 잔뜩 모은후에 개인 정보를 활용한 맞춤 광고를 제공해서 돈을 버는 것이었습니다. 나이키 웹사이트에서 운동화를 구경하고 나니 다른 사이트에서 아까 봤던 신발이 광고로 뜬 경험은 한 번쯤 있을 것 입니다. 이게 가능한 이유는 기업들이 자신의 서비스를 이용하는 사용자를 대상으로 디바이스 정보
, IP 주소
, 브라우저 데이터(cookie)
등을 기록했다가 자신들의 광고 솔루션을 사용했을때 이 정보들을 가공하고 식별해 사용했기 때문입니다.
하지만 2017년 애플이 웹 브라우저(사파리)에서, 그리고 2018년 유럽 연합이 GDPR*과 EU 쿠키법을 통해 유럽에 기반을 둔 모든 웹사이트에서 사용자의 동의 없이 쿠키나 개인 정보를 제3자에게 주는 걸 막았어요.
GDPR 이란?
개인정보를 수집하려면 사용자 동의가 필요하다고 규정하고 있는 EU의 개인정보보호 법령입니다. 위반사항 적발 시 최대 매출의 4% 또는 약 280억원에 육박하는 과징금이 부과되므로 지켜야만 합니다.
또한 애플은 2021년에 앱트래킹투명성(ATT)을 주장하며 IDFA 수집에 조건을 걸었습니다. (IDFA는 애플에서 사용자의 기기에 할당한 기기 식별자에요. IDFA를 사용하여 iOS 사용자를 정확하게 추적할 수 있어요.)
애플이 주장한 것은 사용자들이 개인정보 제공 여부를 직접 승인할 수 있게해서 제공을 거부하더라도 앱이나 서비스를 이용할 수 있도록 보장하겠다는 것이에요. 만약, 제공을 거부했을 때 앱을 이용하지 못한다면 애플이 해당 앱을 앱스토어에서 지워버리겠다고 선언했습니다. 앱스토어의 앱들은 이를 적용했고, 결과는 당연하게도 사용자들은 대부분 "동의 안함"을 선택했고 타깃광고로 돈을 벌어왔던 소셜미디어 회사들은 큰 타격을 입었다고 해요. (전체 유저 중 4%만이 동의함을 선택했다고..)
게다가 이후 구글도 애플처럼 웹 브라우저(크롬)에서 제3자에게 쿠키를 주는 걸 2023년 하반기부터 막는다고 선언했어요. 애플의 새 정책이 시행된 지 6개월 만에 페이스북·트위터 등 미국 IT 기업들의 광고 매출이 약 10조 원 넘게 확 줄었다는 분석이 있을 정도여서 이제 구글까지 가세한다면 맞춤 광고는 몰락의 길을 걸을지도 모릅니다.
음, 그럼 우리는 여기서 무얼 더 알고 있어야 할까요? 프론트엔드 개발자로서 이 화제에 중심에 있는 서드파티 쿠키에 대해 좀더 공부해야할 듯합니다.
쿠키의 어원은 1994년, 넷스케이프 개발자 루이 J. 몬툴리(Louis J. Montulli)가 고안했는데, 유닉스 프로그래머들이 프로그램 수신 후 변경하지 않고 반환하는 데이터의 패킷을 "매직 쿠키"라고 부르는 데서 착안했습니다.
쿠키(cookie)는 웹사이트를 방문할 때 브라우저에 저장되는 작은 텍스트 파일입니다. 원래는 서버 간에 전송해야 하는 데이터의 양을 줄임으로써 웹사이트 성능을 개선하는 것에 도움이 되기 위해 나왔어요. 그래서 브라우저의 다른 저장 공간(세션 스토리지, 로컬스토리지, IndexedDB 등)와는 다르게 4kb 미만의 작은 사이즈로 제한되죠.
다른 기본적인 쿠키에 대한 이야기를 하면 너무 많아지니 서드파티 쿠키와 관련된 정보만 다시 봐보겠습니다.
쿠키의 특징 중 하나는 Path
나 Domain
에 따라 저장되는 쿠키를 다르게 할 수 있다는 점이에요.
// path를 가진 쿠키를 저장 (작동 o)
document.cookie = "my_keyword=NikeShoes; expires=Fri, 31 Dec 2023 23:59:59 GMT; path=/sub";
js로 직접 쿠키를 핸들링하여 세팅하는 코드입니다. 쿠키의 key, value값과 만료일시, 그리고 path를 설정해주었어요. 이 코드가 index 페이지
에서 실행 되었어도 이렇게 path가 /sub
설정된 쿠키는 해당 path, 즉 sub 페이지
에 접근하는 경우에만 브라우저에서 꺼내져 사용 가능하게 됩니다.
domain값 또한 다양한 도메인에 쿠키를 할당할 수 있어요. 내 웹사이트에서 쿠키를 저장 할 때 domain을 https://www.nike.com
이라고 세팅한다면 해당 도메인에서 열람 가능한 쿠키가 생성됩니다.
// domain를 가진 쿠키를 저장 (작동 x)
document.cookie = "my_keyword=NikeShoes; expires=Fri, 31 Dec 2023 23:59:59 GMT; domain=/nike.com";
그러나 현재는 위 코드와 같이 클라이언트에서 js를 사용하여 현재 도메인과 다른 도메인으로 쿠키를 설정하는 코드를 실행해도 제대로 작동하지 않아요. 그 이유는 최신 브라우저들은 SameSite 정책에 맞춰 현재 웹사이트가 소유 또는 제어하지 않는 3자 도메인에 대해서 쿠키를 설정하는 것을 막았기 떄문인데요. 뒤에 나올 서드파티 쿠키에서 자세히 설명하겠습니다.
그래서 API 콜을 사용하여 쿠키를 설정하거나 "서드파티 쿠키 인젝션"이라고 알려져 있는 workaround를 통해서 가능합니다. 원하는 도메인의 페이지를 iframe으로 현재 웹페이지에 로드한 다음 js를 사용하여 iframe과 통신하고 해당 도메인의 쿠키를 설정하는 것입니다. 안전한 방법은 아니고 제한적인 방법이에요.
또한, 이 쿠키들은 정보가 사용되는 곳에 따라 First Party, Third Party로 구분할 수 있어요. First-Party
쿠키는 내가 현재 있는 웹사이트에서 생성되고 거기서만 사용되는 일반적인 쿠키입니다. Authorization을 위한 세션키 등이 이에 해당되요. 앞서 말한 쿠키 정보로 이야기 해보면 domain
값이 현재 웹사이트의 URL과 같은 Samesite 상황이죠.
그리고 오늘의 주제인 Third-Party
쿠키는 현재의 웹사이트와는 전혀 상관없는 곳에서 생성되어 사용되는 쿠키를 말합니다.
맞춤 광고를 보여주는 상황을 예시로 들어 생각해 봅시다.
신발을 파는 사이트(SHOES.NET) 운영자는 자신의 사이트에서 상품을 보고 이탈한 사용자에게 다시 그 상품을 노출하는 광고를 하려고 합니다. 신상 운동화를 본 사용자가 다른 사이트(NEWS.NET)에 방문했을 때 광고가 보여져야하지만 First-Party
쿠키는 "SHOES.NET"와 "NEWS.NET"으로 각각 발급되어 같은 사용자라는 것을 알 수 없어요.
그래서 중간 매체를 두어 Third-Party
쿠키를 활용하기위해 "SHOES.NET" 운영자는 광고사(ADAD.COM)의 sdk를 설치하고, 광고 지면이 있는 "NEWS.NET"의 운영자도 광고를 송출하기 위해 "ADAD.COM"의 sdk를 설치합니다. 두 개의 사이트 모두 광고사 sdk의 스크립트가 설치되어 있고 이 광고사의 코드에서 광고사 서버로 데이터를 전송하고 쿠키를 받아오는 로직이 있기때문에 "ADAD.COM"의 도메인으로 각각 쿠키를 생성하고, 그 쿠키를 활용할 수 있게 됩니다.
구글 에드센스의 광고가 탑재된 웹페이지에서는 아래 사진과 같이 배너 광고를 보여주고 있어요.
지금도 아마 개인화 추천을 해주고 있는것 같지만, 여기서 구글에 "나이키"를 검색하고 나이키 쇼핑 페이지에가서 상품들을 보고 난 후에 다시 이 웹페이지로 돌아와서 새로고침을 눌러보면 다음과 같이 나이키로 주제를 바꿔 맞춤 광고를 보여주는 것을 볼 수 있어요.
구글 에드센스는 어떤 쿠키를 저장했을까요? 궁금합니다.
에드센스 쿠키 정책에 따르면 서드파티 쿠키는 doubleclick.net 또는 google.com과 같은 국가별 Google 도메인과 연결될 수 있다고 써있네요. 크롬 브라우저의 개발자 도구에서 브라우저에 저장된 쿠키를 한번 봅시다.
광고 배너가 있는 웹페이지 쿠키 프레임 목록을 살펴보니 역시나 https://googleads.g.doubleclick.net
프레임을 확인 할 수 있었어요! 에드센스는 여기에 doubleclick.net 이라는 도메인으로 설정된 쿠키를 저장하고 있었습니다. 여기보니 'DSID', 'IDE'라는 요상한 이름의 쿠키가 저장되어 있네요. 구글링해서보니 구글 쿠키 정책에 대해 찾을 수 있었습니다.
여기 내용을 보니 'IDE' 쿠키는 광고를 클릭한 후 광고 성과 및 동작을 추적하고 있고, 'DSID' 쿠키는 Google 이외의 사이트에서 사용자의 동작 및 선호도를 추적하고 광고 타겟팅해준다고 합니다. DSID를 쿠키에서 지워봅시다.
해당 내용을 지우니 이제는 나와는 전혀 상관없는 광고가 보여지고 있습니다! 구글 에드센스도 쿠키를 활용해 맞춤광고를 하는 구나라고 알 수 있었습니다. 확실히 관심없는 내용의 광고가 보여지니 눈에 들어오지 않습니다. 맞춤 광고가 얼마나 효율적이었는지도 느끼게 해주네요.
위에서 언급했듯이 현재 GDPR에 의해 유럽에 베이스를 둔 모든 웹사이트에서는 웹사이트 메인에 쿠키 수집에 대한 동의 팝업을 띄워주는 것을 볼 수 있습니다. 다행히도(?) GDPR은 EU 회원국에만 적용되는 법령이라 국내에서는 쿠키동의 배너를 발견하기 어려워요. 하지만 국내에서 베이스를 두고 있더라도 EU 시장을 대상으로 비즈니스를 하고 있다면 곧장 대응해야 할 것 같고, 점점 GDPR가 글로벌 스탠다드가 되어 개인정보보호에 점점 더 엄격해지고 있어서 국내에도 유사한 정책이 적용되기까지 머지않았다는 생각이듭니다.
프론트엔드 개발자로서 우리가 알아야 할 것은 격변하는 세상에서 쿠키에 대한 규제를 빠르게 팔로잉하고 내가 관리하는 웹사이트에 적용하는 것입니다. 크롬이 서드파티 쿠키를 막는 시점과 더불어 어떻게 쿠키 관련 내용이 또 변할지 항상 지켜봐겠습니다.
우리는 곧 새로운 거대한 플랫폼을 가지게 될 예정인데 바로 요즘 핫한 chatGPT입니다. 개인적으로 chatGPT 플러그인 기능을 통해 서드파티 어플리케이션을 연동하게 된다면 플레이스토어, 앱스토어에 이어 아주 큰 플랫폼이 될거라고 생각해요. 이 글의 주제와 관련하여 광고 부분도 실험이 되고 있는 것 같은데, 검색 엔진 'Bing'에 실험적으로 광고가 삽입되었다고 합니다.
실제로 이 기능은 일부 Bing 사용자가 포착해 트위터에 공개한 내용인데, 대화형 검색엔진이다 보니 맞춤광고를 위해 데이터를 쌓을 필요가 없이 질문지에 관련된 광고를 보여주면 되니 아주 편할 것 같습니다. 그러나 사용자 입장에서는 광고가 정확한 정보인지 의심이 갈 여지가 있을 것 같네요. 저 트윗의 내용을 보면 광고 때문에 TrueCar가 나온건지 진짜 싸서 나온건지 의심이 들 것 같아요.