Django ORM
N+1 문제 하나의 쿼리로 N개의 데이터를 가져온 후, 각 데이터에 연결된 데이터를 얻기 위해 N번의 추가 쿼리가 발생하는 현상 example 100개의 게시글 목록을 가져오고, 각 게시글의 작성자 이름을 표시해야 하는 경우 posts = Post.objects.all() for po...
N+1 문제 하나의 쿼리로 N개의 데이터를 가져온 후, 각 데이터에 연결된 데이터를 얻기 위해 N번의 추가 쿼리가 발생하는 현상 example 100개의 게시글 목록을 가져오고, 각 게시글의 작성자 이름을 표시해야 하는 경우 posts = Post.objects.all() for po...
매번 VS Code로 글을 작성하기 번거로워서 노션 데이터베이스와 Github Blog (Jekyll) 을 연동하는 워크플로우를 생성했습니다. Github Actions를 통해 스크립트를 실행하고, 스케줄링합니다. Notion과 GitHub Blog 연동의 장점 효율적인 콘텐츠 작성: Notion은 마크다운을 비롯한 다양한 블록을 ...
Celery Executor 아키텍처 출처: https://medium.com/sicara/using-airflow-with-celery-workers-54cb5212d405 웹서버 Airflow의 UI를 제공하는 Flask 기반 웹 애플리케이션 UI를 통해 DAG 모니터링, Task 상태 확인, 커넥션 추가...
GCP Cloud Build로 배포 자동화 Github 레포지토리의 main 브랜치에 push가 발생할 경우 GCP Cloud Build에서 빌드 및 배포까지 실행하는 파이프라인을 만들어보았습니다. Cloud Build GCP Cloud Build > 트리거 > 트리거 만들기 이벤트: 브랜치로 푸시 ...
배경 12개 섹션에 대한 크롤링 + api 수집 작업을 마케터 분이 필요할 때 실행할 수 있도록 자동화 필요 12개의 작업은 모두 한 번에 실행되어야 함 (동시성이 중요) - 검색 결과 순위 등을 크롤링하기 때문 구글 스프레드 시트에서 키워드 목록을 읽어와 크롤링에 사용하고, 크롤링 결과를 다시 스프레드 시트에 작성해야 함 ECR 이...
오류 INFO: Not scanning for jupyter notebooks. <unknown>:165: SyntaxWarning: invalid escape sequence '\S' <unknown>:166: SyntaxWarning: invalid escape sequence '\[' <unknown>:207: ...
문제 크롤링 스크립트를 비개발자가 언제든 실행할 수 있도록 자동화를 해야함 AWS ECR - Batch - Lambda 를 이용해서 docker 이미지로 크롤링 스크립트를 올리고, lambda로 batch job을 실행하고자 함 크롤링 스크립트가 여러 개이고, 하나의 스크립트 실행 시간이 lambda의 time limit...
1. IAM 사용자 사용자 생성 및 그룹 배치 -> 글로벌 서비스 루트 계정은 계정을 만들 때에만 사용되어야 함 그 후에는 루트 계정을 더 이상 사용하거나 공유하지 않아야 함 사용자를 만들기! 그룹을 만들어 사용자들을 묶을 수 있음 그룹 안에 그룹을 배치할 수는 없음...
1. Spark Streaming 실시간 데이터 스트림 처리를 위한 Spark API Kafka, Kinesis, Flume, TCP 소켓 등의 다양한 소스에서 발생하는 데이터 처리 가능 Join, Map, Reduce, Window와 같은 고급 함수 사용 가능 streaming 데이터일지라도 내부에서 data fra...
1. Kafka CLI Tools 접근 방법 docker ps를 통해 Broker의 Container ID 혹은 Container 이름 파악 (confluentinc/cp-kafka:7.3.2) 해당 컨테이너로 로그인 docker exec -it Broker_Container_ID sh 다양한 kafk...