AirDnB
는 Airflow를 이용한 개발 행사 및 대회 소식 알림봇입니다.
주기적으로 데이터를 크롤링하고 개발 뉴스 및 행사에 대한 정보를 간략하게 요약하는 알림봇입니다.
kakaotalk
- 카카오톡 채널 등록
![](https://private-user-images.githubusercontent.com/64704608/287463753-64da25b5-8ac0-40ec-b7be-bcdc72f200c2.gif?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwMDgxOTYsIm5iZiI6MTczOTAwNzg5NiwicGF0aCI6Ii82NDcwNDYwOC8yODc0NjM3NTMtNjRkYTI1YjUtOGFjMC00MGVjLWI3YmUtYmNkYzcyZjIwMGMyLmdpZj9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA4VDA5NDQ1NlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTAxMzY0NDUxODQ5ZjBlMDFkYWQ4YjliY2UwMWRjNTJjNzNkZmYwZDMxOTk5NzUxNjk5NDYwOWFjMDc4NDQyNGYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.CgdNLymhYGO-N7X8NNgMb1dZLjLGhj4unNYFLu4bryI)
- 카카오톡에서 'AirDnB' 친구 추가
- 메시지 프롬프트 창에 velog 인기글, 공모전, 개발 행사 정보 질문 선택
- 알림봇이 질문에 따라 요약한 정보를 메시지로 제공
- 필요시 첨부된 링크를 통해 자세한 정보 확인 가능
slack
- 슬랙 워크스페이스 가입
![](https://private-user-images.githubusercontent.com/64704608/287508888-ca10284b-96df-408a-afb1-f783b37cf365.gif?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwMDgxOTYsIm5iZiI6MTczOTAwNzg5NiwicGF0aCI6Ii82NDcwNDYwOC8yODc1MDg4ODgtY2ExMDI4NGItOTZkZi00MDhhLWFmYjEtZjc4M2IzN2NmMzY1LmdpZj9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA4VDA5NDQ1NlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTBjZmZhN2NiZWU0OWIxOTAwZmZiODNmYjI4YjIxMWI5MTBlNzFiYTlmZjFlZDZlMWNhYTViNmEzODcxMjRiMTUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.4Ruz7VJSXbAmnxmGVsdqXIbpLQBOJL70xSRfnYs_msQ)
- 슬랙 'airflow-dev-event' 워크 스페이스 가입
- 'airdnb-bot' 채널 선택
- 알림봇이 주기적으로 요약한 정보를 메시지로 제공
팀
에어디앤비(AirDnB)
입니다!
airflow를 이용해 data pipeline을 구축했고, 이러한 작업을 바탕으로 알림 bot을 만드는 프로젝트로, airbnb를 차용하여 airdnb로 팀이름을 정했습니다.
김건형 | 김효준 | 노명은 | 유혜지 |
---|---|---|---|
:-: | :-: |
조민서 | 최용빈 | 한상진 | 허윤지 |
---|---|---|---|
![](https://private-user-images.githubusercontent.com/64704608/287510997-92ecd184-9132-45f3-8a13-e274d4f5ea11.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwMDgxOTYsIm5iZiI6MTczOTAwNzg5NiwicGF0aCI6Ii82NDcwNDYwOC8yODc1MTA5OTctOTJlY2QxODQtOTEzMi00NWYzLThhMTMtZTI3NGQ0ZjVlYTExLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA4VDA5NDQ1NlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTkzNTVmZDYwNzVhN2Q4YjNlZTRiOGZlZTkyZGNmYzU2ZWUxZjBiYjgyOGQxNGQ3ZDFiOWIxNDZmYzc5ZDczZTgmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.HsgawAim8ftrkbI8AB6ZzQvnU5LlwZjf_IbuH6-Ukn0)
-
배경
: 개발 행사나 소식을 모아놓은 사이트는 이미 존재하지만, 개발 행사나 세미나 등과 같은 소식이 뭐가 있나 매번 들어가기 번거롭다. -
목표
: 개발 행사 및 소식을 쉽고 간단하게 접할 수 있는 서비스를 제공합니다.
![스크린샷 2023-12-03 오후 7 35 11](https://private-user-images.githubusercontent.com/64704608/287511460-8a56c16e-fa27-4fa4-b714-e037921de754.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwMDgxOTYsIm5iZiI6MTczOTAwNzg5NiwicGF0aCI6Ii82NDcwNDYwOC8yODc1MTE0NjAtOGE1NmMxNmUtZmEyNy00ZmE0LWI3MTQtZTAzNzkyMWRlNzU0LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA4VDA5NDQ1NlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWJmNTViNWNmNDk1YzVmOTNjMGQ3NDdhMmI5NjQxZjc1M2FjMTg3ZjYyZmRjY2FjNDViZjFlNzFhZTA4MmJjMjImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.Nmi5VJCTYDd_fiPV9Y6l0hZN67itez5vEqEXtaGaPHM)
![스크린샷 2024-01-01 오후 11 37 50](https://private-user-images.githubusercontent.com/64704608/293591971-c5508d5c-7ca9-4fa8-a744-b02994cc452f.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwMDgxOTYsIm5iZiI6MTczOTAwNzg5NiwicGF0aCI6Ii82NDcwNDYwOC8yOTM1OTE5NzEtYzU1MDhkNWMtN2NhOS00ZmE4LWE3NDQtYjAyOTk0Y2M0NTJmLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA4VDA5NDQ1NlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWUwNGQwZGVlNDliMTA4ZmU3Mjk3ODllZTdjMmEwM2EzOTAzZTQwY2ZjNDJiN2QxNTQyNDU1N2UwZjg2YjNjNmImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.-1TGWzURzrqn9_LoYhn5dsUdIvGhlxwX3zR1jNMiY_c)
- Airflow는 데이터 파이프라인을 스케줄링 및 관리하기 위한 오픈소스 플랫폼이다. Airflow DAG은 작업이 어떻게 연결되고 실행되는 지를 정의한다.
- Airflow DAG의 구성: 개발 행사 + 공모전 + velog의 트렌딩 글을 크롤링한 코드
- 각각의 dag.py에서 크롤링을 자동화하고 csv 파일로 저장한다.
![스크린샷 2024-01-01 오후 11 37 59](https://private-user-images.githubusercontent.com/64704608/293591978-f0322025-9d15-46ba-9e57-edba7d79d32c.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwMDgxOTYsIm5iZiI6MTczOTAwNzg5NiwicGF0aCI6Ii82NDcwNDYwOC8yOTM1OTE5NzgtZjAzMjIwMjUtOWQxNS00NmJhLTllNTctZWRiYTdkNzlkMzJjLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA4VDA5NDQ1NlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTUyYjM2YmEwNTg2Y2UyYjJjNGFkNGY3OWI1YWU2ZjdmMjIxNjkwNDgxMzNkYzc2YmIyMjhkYmVjMDI4YmE1MDYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.i7wMScMwpHGbWP_YDt0Osn5xiDzbdMOfH9RNT3re7a0)
- AWS S3(Amazon S3): AWS에서 제공하는 클라우드 기반의 객체 스토리지 서비스
- s3에 DAG 파일 업로드
![스크린샷 2024-01-01 오후 11 43 17](https://private-user-images.githubusercontent.com/64704608/293592008-03eed429-2cf4-4a35-8602-faaaf3b9bec9.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwMDgxOTYsIm5iZiI6MTczOTAwNzg5NiwicGF0aCI6Ii82NDcwNDYwOC8yOTM1OTIwMDgtMDNlZWQ0MjktMmNmNC00YTM1LTg2MDItZmFhYWYzYjliZWM5LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA4VDA5NDQ1NlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTIxNjcwNTg5YzExOTdhOWVjZDk2ZmM3YTk0ZjIzMjRhMjM4ZjM0NmZmYTUzNDMxZDA2Y2JiZTRkMmE1NjgwNzUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.jAzURbUQD92ouPj1LZBogXgmVd8-C-VYReoH20SGw9c)
![스크린샷 2024-01-01 오후 11 38 28](https://private-user-images.githubusercontent.com/64704608/293591981-a316ff03-e371-4312-a92b-e085fed4bf40.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwMDgxOTYsIm5iZiI6MTczOTAwNzg5NiwicGF0aCI6Ii82NDcwNDYwOC8yOTM1OTE5ODEtYTMxNmZmMDMtZTM3MS00MzEyLWE5MmItZTA4NWZlZDRiZjQwLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA4VDA5NDQ1NlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWI1MDM3NzM3NzRhYmNjZTkxNzUyMzdkMmQ3NWZkZDJjY2M5NDA3MGFkMWViZGQ4OWFhZWVkYTNkMjVjYTc3N2MmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.cAuQ7hHi_xb9g_1Jg8fzB1FWEQqDHl5PkdvqoyNvDJk)
- Prometheus: 메트릭을 주기적으로 스크랩
- Grafana: prometheus의 메트릭으로 대시보드 구성
- Grafana 대시보드: Task들의 성공 여부, Scheduler의 상태 체크, Scheduler의 진행 상태, Airflow Executor 정보, 현재 로드된 DAG의 수