카테고리 보관물: 미분류

Selenium Grid 셀레니엄 그리드

셀레니엄(Selenium)은 웹서비스를 테스트하기 위해 사용하는 오래된 자동화도구입니다.

웹서비스를 테스트하기 위해서는 웹브라우저를 사람대신 작동하게 해서 접속하고 클릭하고 페이지를 이동하는 등의 작동을 시키고 결과를 본 후에 제대로 작동하는지 측정합니다.

이걸 위해서 필수적으로 3가지가 필요합니다.

  • 웹브라우저
  • 웹브라우저를 자동으로 핸들링하는 웹드라이버
  • 웹드라이버를 핸들링하기 위한 컴퓨터언어와 패키지

셀레니엄은 위에서 3번째것을 지원합니다.

웹브라우저와 웹드라이버는 웹브라우저를 만드는 곳에서 제공합니다.

셀레니엄의 용도

웹서비스가 제대로 작동하는지 화인하는데 씁니다.

데이터를 크롤할 때 씁니다.

데이터클 크롤할 때 셀레니엄을 쓰는 이유는 Javascript를 사용해서 동적으로 콘텐츠를 디스플레이하는 사이트때문입니다.

이런 사이트의 데이터를 크롤하려면 접속하는 웹클라이언트에 자바스크립트를 구동시키고 화면을 렌더링할 수 있는 엔진이 있어야 하는데, 이게 쉽게 만들 수 있는 물건이 아닙니다.

그래서 기존의 웹브라우저를 자동화해서 움직이게해서 테스트 용도로 사용하게 하는 방법이 생겨났는데 그중에 가장 오래되고 유명한 것이 셀레니엄입니다.

그리고 이런 사이트의 데이터를 자동으로 가져가기 위해서 역시 셀레니엄을 쓰게 됩니다.

셀레니엄의 단점

구동하게 하기 위해서 자원을 많이쓰는 웹브라우저를 사용해야합니다.

쉡게 말하면 셀레니엄은 매우 무겁습니다.

셀레니엄의 장점

앞서 말했듯이 셀레니엄을 쓰면 동적 생성되는 콘텐츠를 테스트하거나 크롤할 수 있습니다.

React나 Vue.js 같은 것들로 만들어진 웹페이지에도 쓸 수 있습니다.

셀레니엄 그리드는 뭔가?

  • 셀레니엄을 설치하면 여러가지 이상한 패키지를 서버 또는 랩탑에 설치해야 합니다
  • 그리고 그냥 쓰게 되면 서버의 자원을 순간적으로 많이 쓰게 됩니다.
  • 쓰고나면 찌꺼기 파일을 많이 만들어 놓습니다

그래서 셀레니엄을 여러 서버에 미리 설치해서 클러스터를 만들어놓고 그걸 필요할때 가져다 쓸 수 있습니다.

그런 환경을 만들어 주는 것을 셀레니엄 그리드입니다.

아래 사이트에서 설치법을 볼 수 있습니다. 비교적 쉽습니다.

https://www.selenium.dev/documentation/grid/

그리고 셀레니엄 서버라는 것이 예전에 존재했었는데 그 후속으로 나온 버전이 셀레니엄 그리드입니다.

셀레니엄 그리드의 장점

  • 차원이 더 필요할 때 수평 확장이 쉽습니다.
  • 자원을 효율적으로 사용할 수 있습니다.
    • 여러 서버가 셀레니엄 그리드 클러스터로 부터 필요할 때 자원을 가져다 쓰기 때문입니다

ImportError: cannot import name ‘_psutil_linux’ from partially initialized module ‘psutil’ (most likely due to a circular import) (/usr/lib/python3/dist-packages/psutil/init.py)

다음과 같은 에러가 날 때가 있습니다.

ImportError: cannot import name '_psutil_linux' from partially initialized module 'psutil' (most likely due to a circular import) (/usr/lib/python3/dist-packages/psutil/__init__.py)

psutil을 다시 설치해주면 되는데 아마도 이미 설치되어 있다고 나올 것입니다.

다음과 같이 옵션을 주고 설치된 것을 무시하고 재설치하면 됩니다.

python3.8 -m pip install --ignore-installed psutil

모바일 게임에서 모바일 게임 광고가 많이 보이는 이유

게임 광고에 대한 분석을 하다 보면 종종 재밌는 사실을 알 수 있습니다.

그 중에 재밌는 것은 게임 내에서의 게임 광고입니다.

게임 내에 다른 게임 광고

모바일 게임을 설치해서 하다보면 아이템을 얻거나 다시시도를 하는 댓가로 광고를 보게하는 것이 많다. 광고 수익을 얻기 위한 것인데 게임 광고에서는 유난히 다른 게임의 광고가 많이 나옵니다.

이것은 예전에는 카니발라이제이션이라는 문제라 하지 않았던 것입니다. 즉 다른 게임의 광고를하면 사용자가 그 게임을 설치해서 하게 되고 지금 하는 게임은 하지 않기 때문입니다.

하지만 그럼에도 불구하고 최근 게임광고가 게임에 많이 보이는 이유는 다음과 같습니다.

모바일 게임에서 모바일 게임 광고가 많이 나오는 이유

  • 게임은 원래 하던 사람이 하기 때문에
  • 이 사람들은 하던 게임이 지루하면 새 게임을 깔아서 할 것이 분명하기 때문에
  • 최근 게임들은 쉽게 질리는 것이 많고 게임 유저들이 콘텐츠 소비 속도가 매우 빠른 것이 특징
  • 이렇게 해서 클릭 수익을 얻는다면 그게 게임을 계속하게해서 아이템을 판매해서 얻는 것보다 수익이 더 낫기 때문
  • 어차피 모든 사용자는 언젠가는 게임을 그만할 것이기 때문에 고객 리텐션을 크게 생각하지 않고 광고를 하게 만드는 전략

※ 현재 설치된 앱은 모바일 사용자의 특성을 나타낸다.

  • 게임 앱을 설치해서 게임을 많이 하는 사람은 게임을 또 설치할 가능성이 높다. 따라서 게임 앱에 다른 게임 광고를 하는 것은 매우 효과적이다.
  • 이커머스의 버티컬 상품도 마찬가지다. 고기를 판매하고 싶으면 육류 앱이나 신선식품 앱에 광고를 하는 것이 효율이 가장 좋다. 그들은 이미 육류나 신선식품에 대해 매우 관심이 많고 적극적이기 때문이다.

같은 카테고리의 앱에서 같은 카테고리의 상품 광고를 하는 것은 매우 효과적이 수 있다

나이키 의류 앱이 있다면 현실적으로는 어려울 수 있겠지만 여기에서 아디다스나 다른 스포츠웨어 광고를 한다면 매우 클릭율이 높을 수 있습니다.

이런 것을 이용해서 많은 버티컬 이커머스(특정 카테고리만 판매하는 쇼핑몰)나 종합 이커머스에서는 메타 쇼핑이라는 것을 하려고 비즈니스 전환을 많이 하고 있습니다.

즉 메타쇼핑같은 곳에서 어떤 카테고리 또는 여러 카테고리의 상품을 모아서 추천시스템 같은 것을 해서 잘 보여주고 광고를 한다면 일반 광고 매체보다 클릭율과 구매율이 더 높아질 가능성이 매우 큰 것입니다.

이것은 이미 메타쇼핑 또는 버티컬 쇼핑에 자주 접속하는 사용자라면 적극적으로 제품을 구매할 의향이 있다는 것이며 구매에 적극적이기 때문에 정보를 얻기 위해서 클릭에도 적극적입니다.

카니발라이제이션은 어떻게 피하나?

예를 들면 특정 육류 판매 쇼핑 앱에서 타사의 육류 상품을 판매한다면 자사의 육류가 판매되지 않을 것이기 때문에 문제가 됩니다.

이 문제를 해결하는 방법은 매우 간단합니다.
회사를 여러 개 설립해서 만든 후에 브랜드와 상표를 다르게 하고 동일한 육류를 판매하는 것입니다.

일종의 트릭이지만 잘 알려진 예로 음식배달이 있습니다.

음식배달에도 많이 사용하는 방법으로 같은 업소가 여러 음식을 다른 상호로 배달앱에 등록하는 경우입니다. 이렇게 하면 음식업체에서는 전화를 받을 화률이 매우 높아 집니다. 물론 배달앱의 검색에서 상위에 나오게 하기 위해서 광고비, 홍보비가 많이 드는 것은 별개의 문제입니다.