ETL pipeline Project

ggydo59·2023년 3월 10일
1

project

목록 보기
1/1
post-thumbnail

ETL pipeline Project

🔍프로젝트 개요


  • .VER 230104

💡 목표


이 프로젝트를 통해 실제 서비스에서 발생할 수 있는 데이터를 가정해보기 위해 DRF를 활용해서 프론트엔드의 구현 없이 Rest API형태의 백엔드를 구현해보고 API요청(글의 생성, 수정,삭제)으로 발생한 로그를 수집하여 Json형태로 해싱, 암호화, 압축을 적용해서 추출합니다.

추가적으로 Amazon EC2에 가상 컴퓨팅 서비스를 사용하여 웹서버(nginx)를 구축했고, gunicorn과 django 프로젝트를 올려서 배포하였습니다.

실제 이용자가 없기 때문에, 파이썬의 requests 라이브러리를 사용하여 Bot을 구현했습니다.
또한 웹서버로 사용되고있는 리눅스 서버에 크론탭을 활용하여 1시간마다 Bot을 활성화해서 로그 데이터를 수집하고, 이렇게 수집된 데이터를 변환하여 Amazon S3에 이용자가 적은시간은 오전 04:00 하루에 한 번 적재하는 흐름의 ETL 파이프라인을 구축하였습니다.

스케줄링은 Airflow로 대체될 수 있기 때문에, Airflow를 통해 워크플로우를 정의하여 효율적인 관리를 도입해볼 예정입니다.

👀 프로젝트 결과


Part 1. DRF 활용한 백엔드구현

  • 게시글 List
    	![](https://velog.velcdn.com/images/ggydo59/post/21357bf5-b330-4e85-a146-843a42999060/image.png)
  • 회원가입 화면
    	![](https://velog.velcdn.com/images/ggydo59/post/462bc09e-4eee-4215-a767-574db06589ed/image.png)
  • 로그인 화면
    	![](https://velog.velcdn.com/images/ggydo59/post/f6c9c933-1b6f-4605-aba5-f77400d231ec/image.png)

  • 로그인시 발급되는 JWT 토큰
  • JWT 토큰을 사용한 글 생성/수정/삭제를 위해 Postman 사용

  • 유저 데이터 (Mysql)
  • 게시글 데이터 (MySQL)

Part 2. AWS EC2, RDS Service(프리티어)를 활용한 웹 서비스 구현 - 게시판 링크

  • EC2 가상서버 인스턴스생성
  • 모니터링
  • 웹서버 시작

Part 3. Crontab, 파이썬 requests 모듈을 이용해 가상 유저 Bot 생성하여 CRUD에 대한 로그 생성

  • bot 생성후 행동지정
  • 생성된 로그
  • 해싱, 압축 진행

Part 4. 압축한 로그 데이터 Json형태로 AWS S3 적재

  • AWS S3에 적재
  • 크론탭 활용한 스케줄링 - 1. 한시간마다 봇 활성화, 2. 매일 새벽 4시에 S3에 로그 데이터 적재
  • 결과화면

Django Rest Framework(DRF)


Django의 특징, 왜 Django?

Django 시작하기

AWS EC2 배포를 위한 초기 세팅하기


AWS EC2 가상 서버에 웹서버 만들기

EC2 가상서버 접속부터 초기 설정하기

django, gunicorn, nginx 연동하기

crond tab scheduling

ETL 파이프라인에 Airflow 적용하기

crontab + mail

ETL 파이프라인에 Airflow 적용하기

작업 기록

20230303

20221211

20221209

20221208

20221206

20221205

20221204

20221202

20221130

20221129

20221128

20221127

20221125

참고자료

profile
데이터엔지니어입니다.

0개의 댓글