28 Jul 2022
#GA4
※ 김선영 대표, 스피어가 GA4와 공존할 수 있는 방안 모색
1. GA4 특징
1) 사용자 식별성 강화
- 플랫폼을 소유하기에, 쿠키 의존도를 낮추고 코호트 방식으로 사용자 식별성을 높임.
- 구글 / 아마존 / 네이버등 플랫폼을 소유한 업체만이 갖는 장점.
2) 사이트별 크로스 교차 분석
3) 이벤트 기반의 데이터 모델
4) 향상된 수집기능
- 스크롤, 체류시간, 마우스 클릭 등 다양한 행동까지 수집.
구글이 자동 테깅한 데이터를, 우리도 기본으로 받아서 사용하는 방식
5) 새로운 측정 항목
- 단순 설치가 아닌, 참여 세션수(Engaged session) 활용
- Engaged Session : 10초 이상 지속, 전환 이벤트 1회 이상 발생, 페이지 조회 2회 이상 발생
6) 기본 채널 그룹
- attribution 채널을 유료와 오거닉으로 구분 –> 어려운 영문을 국문으로?
7) 목표 vs 전환
- 주요 산업별 전환 KPI는 뻔하기에, 주요 KPI들을 미리 리스트업해놓고 비즈니스 하기.
8) 예측 잠재고객
- 7일 이내, 잠재 고객 생성 해서 광고 효율성 올리는게 중점
- 세팅 이후, 컨설팅 니즈가 존재하며, 툴을 사용해서 잠재고객을 뽑고 싶어함.
- 쉽게 컨설팅 없이도 툴을 사용해서 잠재고객을 뽑을 수 있으면 좋겠음.
9) Raw Data : Big Query 연동
- GA4의 big query와, 내부 데이터를 연동하여 CRM을 제공
+) debug 기능
- 데이터 정합성 향상 기능
+) dynamic link
2.
1)
- bigquery 추천 교육 : query ga4 data by simo ahava
Reference
24 Feb 2022
: 타인 계정의 AWS S3로 파일을 자동으로 전달해야하는 업무가 생겨났다. 일반적으로는 동일 계정의 EC2에서 S3로 파일을 전송하는 레퍼런스가 많이 있으나, 나의 로컬 서버(linux)에서 타인 계정의 S3로 접근해야하는 상황이기에, 필요한 과정을 스텝별로 정리해보며 진행해보자.
- 반면 S3 버킷을 소유한 계정에서, S3 접근 및 업로드 권한이 있는 IAM계정을 생성하여 계정 Key값(Access key값 / Secret key)을 공유해준다면,
동일 계정내에서 파일을 업로드하는 이슈가 되기에, 아래의 2.번 IAM 설정 스탭을 진행하지 않아도 된다.
[계정]
$\star$ A계정 : 접근을 희망하는 계정 (나)
$\star$ B계정 : S3를 소유한 계정 (타인)
1. Linux instence에서 AWS CLI(Command Line Interface) 설치하기
- AWSCLI를 설치하는 리눅스 명령어 :
$sudo apt-get install awscli
그러나 위 명령어를 바로 입력하면 E: Unable to locate package awscli라는 에러가 발생한다. 지정된 상위 폴더가 부재하여 발생하는 에러로 추측된다. 따라서 아래와 같은 순서로 CLI를 설치해주자.
CLI 설치 Step
# 1) 경로 폴더 생성 -- 이 과정이 없을시 위 에러가 발생
$ mkdir awscliv2 # 폴더 생성 (v2로 진행 권장)
$ cd awscliv2 # 폴더 이동
# 2) 설치 링크 실행 및 파일 output지정
$ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
$ unzip awscliv2.zip # 압축 해제
$ sudo ./aws/install # cli 설치
AWS CLI 설치 AWS 공식 가이드 링크(영문)
2. IAM(Identity and Access Management) 설정하기
: CLI 설치가 완료됐다면, 목표 S3 계정에 접근하기 위한 IAM 설정해야한다. 여기에서는 파일을 전달할 A계정과 S3를 소유하고 있는 B가 각각 해야하는 작업이 다르기에 구분하여 세팅 절차를 살펴보자.
타계정(B)에게 내 계정(A)의 S3 접근 권한 부여하는 방법(youtube)
타계정(B)에게 내 계정(A)의 S3 접근 권한 부여하는 방법(docs)
[계정]
$\star$ A계정 : 접근을 희망하는 계정 (나)
$\star$ B계정 : S3를 소유한 계정 (타인)
1) [A계정] IAM 세팅
(1) 관리자 IAM 계정
: 우선 AWS는 모든 권한을 갖는 루트사용자와 일부 권한만을 갖는 IAM사용자로 나뉜다. 그리고 IAM사용자에서도 IAM 계정을 생성할 관리자와 특정 목적별 IAM 계정으로 구분되어야 하는데, 만약 관리자용 IAM 사용자가 없다면 아래 포스팅을 따라 ‘관리자용 IAM계정’을 먼저 만들자.
TH : IAM 사용자 생성 방법
AWS 공식 가이드 : IAM 사용자 생성 방법
나도 한 번 만들어 보자’s 블로그 : AWS IAM 사용자 만들기
(2) S3에 파일을 전송할 목적의 IAM 계정
: 관리자 IAM계정이 생성되었다면, 해당 계정으로 로그인 후 아래 절차대로 IAM 계정에 권한을 부여해주자.
2) [B계정] 접근 권한을 부여할 S3에 정책 추가
[A]의 IAM 계정에 정책 추가가 완료되었다면, [A]가 접근할, S3 버킷에 [A계정]에서 설정했던 정책에 대한 추가가 필요하다.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DelegateS3Access",
"Effect": "Allow",
"Principal": {"AWS": "arn:aws:iam::999999999999:user/UploadData"}, ## 계정 A에서 IAM 사용자의 Amazon 리소스 이름(ARN)
"Action": ["s3:PutObject", "s3:PutObjectAcl"],
"Resource": [
"arn:aws:s3:::DOC-EXAMPLE-BUCKET",
"arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
]
}
]
}
3. 서버에 IAM 사용자 등록
: 위 단계까지 마쳤다면, 우리는 A계정과 B계정의 버킷이 연결된 상황이다. 이제 다음 작업으로 EC2 or Linux 서버내에 나의 A계정을 등록해주자.
## EC2 & Sever의 AWS CLI에 IAM 계정 등록 절차
# 1) 경로 폴더 이동 -- 이 과정이 없을시 위 에러가 발생
$ cd awscliv2 # 폴더 이동
# 2) configure 등록
$ aws configure
> AWS Access Key ID [None]: 직접 입력
> AWS Secret Access Key [None]: 직접 입력
> Default region name [None]: 직접 입력 #
> Default output format [None]: 직접 입력
# 3) 목표 S3 버킷이 출력된다면, 성공!!
$ aws s3 ls

4. [Bash] CLI S3 접근하기
: 여기까지 왔다면, 이제 AWS CLI를 활용하여, 목표 버킷에 접근할 수 있다. CLI를 활용하여 버킷의 접근하는 코드는 아래와 같다.
#------------------------------#
# 1) 버킷 생성
#------------------------------#
aws s3 mb s3://{new-s3-bucket}
#------------------------------#
# 2) 버킷 리스트 조회
#------------------------------#
aws s3 ls s3://{my-s3-bucket}
aws s3 ls s3://{my-s3-bucket}/{directory_name}/ # 폴더 내 파일 탐색
#------------------------------#
# 3) 파일 복사
#------------------------------#
### 단순 파일 복사
aws s3 cp {local_file_nm} s3://{my-s3-bucket}
### 버킷내 디렉토리를 만들어서 복사할 경우, {버킷명}/{디렉토리명}}/ 명시
#### [local -> S3]
aws s3 cp {local_file_nm} s3://{my-s3-bucket}/{directory_name}/
### [S3 -> local]
aws s3 cp s3://{my-s3-bucket}/{directory_name}/{file_name} {local_file_nm}
#------------------------------#
# 4) 폴더 이동
#------------------------------#
aws s3 mv s3://{my-s3-bucket}/{file_name}
#------------------------------#
# 5) 파일 삭제
#------------------------------#
aws s3 rm s3://{my-s3-bucket}/{file_name}
#------------------------------#
# 6) 동기화 (recommend using sync rather than cp)
## Note this part tends to hang sometimes, so just ctrl+c and run it again. By sync, the process will resume.
#------------------------------#
# local -> S3
aws s3 sync s3://{my-s3-bucket} local_dir/
# S3 -> local
aws s3 sync local_dir/ s3://{my-s3-bucket}
EC2에서 S3 접근하기 (CLI 코드 정리)- 시나브로101블로그
5. [python] S3 접근하기
: 끝으로 파일 업로드 과정에서 파이썬 코드로 구현하여해야 하는 경우 코드를 활용하여 file을 S3 버킷으로 업로드할 수 있다.
import boto3
s3_client = boto3.client('s3')
# 파일 올리기
s3_client.upload_file('올리고자하는파일', '나의버킷이름', '버킷에저장될이름')
# 파일 다운받기
s3_client.download_file('나의버킷이름', '내려받을파일', '로컬에저장될이름')
Reference
CLI 설치
[1-1] EC2 인스턴스에서 S3 접근, AWS CLI - 홍&천 블로그
[1-2] Moving Data Between S3 and EC2 Instances - github
[1-3] AWS : CLI 설치 AWS 공식 가이드 링크(영문)
IAM 계정 세팅
[2-1] AWS : 타계정(B)에게 내 계정(A)의 S3 접근 권한 부여하는 방법(youtube)
[2-2] AWS : 타계정(B)에게 내 계정(A)의 S3 접근 권한 부여하는 방법(docs)
CLI로 S3 접근 코드
[3-1] EC2에서 S3 접근하기 (CLI 코드 정리)- 시나브로101블로그
22 Feb 2022
: AWS에 최초 계정을 생성하고 나면, 해당 계정은 Root 계정이 된다. 이 루트 계정은 모든 권한을 가지고 있으나, AWS는 보안 및 업무에 따른 권한 이슈로 Root계정의 사용보다는 각 목적에 맞는 권한을 갖춘 IAM User를 생성해서 사용하길 강력하게 권고하고 있다.
생성 절차별로 스텝을 따라가면 되기에, 개념과 각 스텝을 잘 설명해주신 블로그 링크를 참조하자.
1. 루트 사용자 vs IAM 사용자
: 루트 사용자는 모든 권한을 갖지만, 보안이 뚫렸을 경우 모든 리소스에 큰 피해가 갈 수 있다. 때문에 IAM 계정은 목적에 맞게 권한을 계정을 분할하여 생성 및 관리하게 된다.
[IAM 장점]
- AWS 계정의 공유 액세스
- 세분화된 권한
- 무료
IAM은 AWS 리소스에 대한 액세스를 안전하게 제어하는 서비스로, 자세한 설명은 아래 링크를 참조하자.
원잇님 블로그 : 루트 사용자 vs IAM 사용자
2. 관리자 & 세부 목표 IAM User(Upload File to S3) 생성
: AWS는 IAM User를 생성하는 역할도, 관리자 IAM User를 먼저 만들어 진행하라고 권고하기에, 관리자급 IAM 사용자 생성 및 관리자 폴더를 생성하고, 이후, 특정 세부 목표를 지닌 IAM 유저를 생성해야한다.
나도 한 번 만들어 보자’s 블로그 : AWS IAM 사용자 만들기
Reference
[1] AWS 공식 가이드 : 루트 사용자 vs IAM 사용자
[2] 나도 한 번 만들어 보자’s 블로그 : AWS IAM 사용자 만들기
10 Feb 2022
#vscode, #python, #jupyter_notebook, #Pylance
1. 문제 상황
: VScode로 파이썬을 작성하면, Pylance라는 패키지가 내 코드내의 에러를 미리 예상하여 확인할 수 있도록 도움을 준다.
그런데, 외부 폴더에 있는 모듈을 불러오는 과정에서 아래와 같은 경고성 에러가 발생한다.실제로는 외부 폴더의 경로를 sys.path.append()로 잡아주었기에 코드는 정상 작동하나, 해당 모듈을 클릭하거나, 모듈 내 함수가 미리보기로 출력되지 않는 불편함이 발생한다.
2. 문제 원인
: Pylance는 디폴트로 내 워크스페이스의 root 경로를 포함한다. 때문에 서브 디렉토리를 경로로 추가하고 싶은 경우에는 vscode 세팅 기능을 활용하여 extraPaths를 설정해주어야 한다.
3. 문제 해결 방법
(1) 세팅 화면 열기 : ctrl(cmd) + ,
(2) 추가 경로 옵션 검색 : python.analysis.extraPaths검색
(3) 추가 경로 입력 버튼 클릭 : Add Item
(4) 추가 서브 디렉토리 경로 입력 : ex) /home/th/subdirectory/
Reference
[1] stackoverflow - import ‘module’ could not be resolved Pylance
07 Feb 2022
: 시장에는 비슷한 기능과 서비스를 제공하는 다른 player들이 계속해서 생겨나고 있기에 그들과 계속해서 경쟁하고 차별점을 제공해야만 살아남을 수 있기에, 적극적인 푸시 마케팅이 필요함. 이때, 사용자가 원하는 정보를 적합한 타겟에게, 적시적기에, 명확한 메시지로 전달하는 것이, 사용자들의 신뢰도를 지켜가며 마케팅을 하기위한 중요한 요소이다. 이같은 고려없이 무분별하게 반복되는 푸시 마케팅은 사용자의 피로도만 증가시키고 결국, 푸시마케팅 이후 더 많은 사용자 이탈을 초래한다.
푸시 마케팅을 위한 3요소 : 발송 대상, 타이밍, 분석
1. 발송 대상
: 발송전 명확한 대상을 설정 필요성
- 명확한 대상에 따라, 이후 컨텐츠 및 메시지 내용 기획 가능
- 잘못 설정된 대상에겐, 스팸으로 느껴져 서비스 신뢰도 하락
2. 발송 타이밍
- 너무 반복적으로 남용된 푸시는 사용자의 피로감 상승하며, 이로인한 이탈률 증가
- 주요 앱 사용시간에 재접속 유도 & 휴면 VIP 고객 재접속 유도 등 고객 행동에 따라 적합한 타이밍에 발송
3. 발송 결과 분석
A|B TEST
: 두 가지 이상의 전략을 두고 타겟 유저들이 어떤 전략에 더 반응을 많이 하는지 확인하는 방식
- 버튼 / 아이콘 / 색상 / 이미지 / 텍스트 배치
- 푸시 발송 타이밍
- 랜딩 페이지
- 문구
Reference
[1] 푸시 마케팅의 기본 3 요소 - 유라클 전략기획팀