분류 전체보기 28

Podman은 무엇인가?

최근 많은 기업들이 컨테이너의 표준이된 도커를 대체하는 툴로 Podman을 선택하고 있다고한다. Podman은 어떤 장점이 있기에 도커를 대체할 수 있는 걸까? 우선 Podman은 Red Hat에서 개발한 오픈 소스 컨테이너 개발,관리 툴로 libpod 라이브러리를 사용하여 컨테이너 에코시스템 전체를 관리한다. POD Podman은 컨테이너보다 상위개념인 pod를 가지고 있다. 하나의 pod는 다수의 컨테이너를 가질 수 있으며 k8s의 pod와 유사하다. POD를 생성하는 순간 인프라 컨테이너(infra container)를 가지며, 생성 즉시 sleep모드로 전환된다. 즉 Podman은 POD를 이용하여 별도의 격리된 공간을 만들 수 있고, 이 POD에 포함된 컨테이너는 인프라 컨테이너에 의해 다른 컨..

Podman 2023.06.22

주별 집계 데이터 적재 DAG 만들기

이번 포스팅은 매주 월요일마다 지난주의 일별 데이터를 집계하여 DB에 저장하는 DAG를 만드는 과정에 대해 작성해보려고한다. 지난 포스팅에서 만들었던 로직을 그대로 DAG에 옮기는 거라서 큰 어려움은 없을듯하다. 일자별 데이터를 주별 데이터로 변환하기 이번 포스팅은 일자별로 적재된 타자, 투수 데이터를 주별 최우수 선수를 가려내기 위한 주별 데이터로 변환해보려고한다. 주별 집계를 하기전 필요한 지표부터 추려봤다. 타자의 경우는 타석, developer-trainee-j.tistory.com 이번 DAG는 일배치 DAG와 마찬가지로 하나의 PythonOperator를 사용할 것이고, 모든 주차 집계가 아니라 지난주 데이터만 집계를 해야하기 때문에 약간의 쿼리 수정이 있다. # # 필요 모듈 import f..

Airflow 2023.06.19

AWS EC2를 이용하여 django 배포하기 (3)

지난 포스팅에서는 AWS EC2를 이용하여 django실행을 다뤘다. 이번 포스팅은 개발을 위한 django 프로젝트에 CI/CD를 적용하는 과정을 다루고자한다. 이전에 CI/CD를 적용하는 과정은 windows환경이었기 때문에 EC2환경에서는 다른 방식으로 설치를 진행해야했다. 우선 gitlab-runner의 repository를 추가해야한다. curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh" | sudo bash 그 다음 gitlab-runner를 설치해준다. sudo apt install gitlab-runner 설치가 완료되면 연결할 gitlab을 등록한다. CI/CD를 적용할 저..

AWS 2023.06.12

AWS EC2를 이용하여 django 배포하기 (2)

이번 포스팅은 저번 포스팅에 이어서 EC2 서버에 django 배포와 CI/CD를 구축했던 과정을 적어보려한다. 저번 포스팅의 내용을 따라하면 ubuntu OS에 메모리 1G인 깡통서버하나를 만들 수 있다. 이제 이곳에 DB부터 차근차근 설치를 진행했다. 1. MariaDB 설치 프로젝트에 사용되는 야구 데이터들을 적재해둘 DB부터 설치해야한다. 이 DB는 야구데이터뿐만 아니라 django에 연동시켜 웹서비스에 사용되는 데이터들까지도 적재할 예정이다. 우선 패키지 업데이트 부터 진행해주고 mariadb-server 패키지를 다운로드 받았다. sudo apt-get update sudo apt-get install mariadb-server 이제 설치된 mariadb에 접속해보자 sudo mysql -u ..

AWS 2023.06.07

AWS EC2를 이용하여 django 배포하기 (1)

이번 포스팅은 아마존에서 제공하는 클라우드 컴퓨팅 서비스를 이용하여 django를 배포한 과정을 적어보려고한다. 왜 AWS를 이용하여 배포를 하는가? 프로야구 집계 데이터 제공 프로젝트를 진행하면서 Airflow, DB, django 등 각각의 서비스를 기존에 사용중인 PC에 올려서 배포를 하려했으나, PC를 항상 켜두어야 한다는 점과 운영체제가 Windows라는 점 때문에 차라리 AWS를 이용하여 배포하면 언제든지 활성화 되어있는 서버 환경과 ubuntu 운영체제를 쉽게 이용할 수 있다는 강점이 있어서 AWS를 사용하기로 했다. AWS 계정 생성 AWS EC2를 이용하기 위해서는 우선 계정부터 생성해야한다. 무료 클라우드 컴퓨팅 서비스 - AWS 프리 티어 Q: AWS 프리 티어란 무엇입니까? AWS ..

AWS 2023.06.05

왜 Python에서 일반 코드보다 함수로 동작하는 코드가 더 빠를까?

탐구 원인 코딩테스트 문제를 풀다보면 내가 작성한 코드의 시간복잡도를 고려하며 코드를 작성하게되는데 16234번: 인구 이동 N×N크기의 땅이 있고, 땅은 1×1개의 칸으로 나누어져 있다. 각각의 땅에는 나라가 하나씩 존재하며, r행 c열에 있는 나라에는 A[r][c]명이 살고 있다. 인접한 나라 사이에는 국경선이 존재한다. 모 www.acmicpc.net 이 문제를 풀던 중 같은 로직을 가졌지만 함수를 사용했느냐 사용하지 않았느냐로 통과 여부가 바뀌는 것을 확인했다. 정확한 이유를 몰랐던 것과 로직을 엄청 수정해가며 사용한 시간이 아까워 원리를 찾아보기로 했다. 차이점 Why does Python code run faster in a function? def main(): for i in xrange(..

Python 2023.05.23

gitlab-runner CI/CD dubious ownership 에러

어제 runner를 통한 CI/CD를 구축하고 오늘 CI/CD를 테스트 하는 과정에서 fatal: detected dubious ownership in repository at '경로' 에러가 발생했다. 분명 어제는 정상적으로 CI/CD가 진행되었는데 갑자기 안되니 당황스러웠다. 구글링으로 찾아보니 gitlab 저장소에 대한 소유권을 정확히 파악하지 못해서 발생하는 에러인것 같았고 git자체에서 해결방법을 알려주었다. To add an exception for this directory, call: git config --global --add safe.directory "경로" 해당 옵션을 사용하면 된다고 해서 powershell에 경로를 입력해줬는데도 똑같은 에러가 계속 발생했다. 아마 메인 PC 로..

CICD 2023.05.23

Gitlab-runner를 이용한 CI/CD 구축하기

이번 포스팅은 Gitlab-runner를 이용하여 내 PC환경에 CI/CD를 구축해보려고한다. 작업을 할 때 주로 Airflow와 DB를 메인 컴퓨터에 켜두고 외부에서 노트북으로 작업을 하는데 이럴경우 노트북에서 DAG를 만들어도 메인 컴퓨터에 바로 적용이 되지 않는다. 그래서 메인 컴퓨터를 서버라 가정하고 CI/CD를 구축해서 외부에서도 새로운 DAG가 적용될 수 있도록 할 예정이다. 사전 준비작업 1. 저장소 파일 복사하기 우선 github 저장소에 있는 파일들을 새롭게 만든 gitlab 저장소로 옮겨준 후 airflow를 재기동해줬다. 파일의 위치만 바꼈을 뿐 내부 로직은 바뀐게 없기 때문에 간단하게 작업이 되었다. 2. gitlab에 데이터 push하기 gitlab 저장소로 이동하여 git pus..

CICD 2023.05.22

일자별 데이터를 주별 데이터로 변환하기

이번 포스팅은 일자별로 적재된 타자, 투수 데이터를 주별 최우수 선수를 가려내기 위한 주별 데이터로 변환해보려고한다. 주별 집계를 하기전 필요한 지표부터 추려봤다. 타자의 경우는 타석, 타수, 득점, 안타, 홈런, 타점, 볼넷, 데드볼, 삼진, 땅볼아웃, 병살타, 타율 등등의 기록을 주차별로 집계할것이고 투수의 경우는 그날의 등판 기록 (ex. 승,패,홀,세) , 이닝, 상대한 타자 수 , 피안타, 실점, 자책점, 볼넷, 데드볼, 삼진 피홈런의 기록을 집계할것이다. 우선 타자, 투수 데이터를 불러와보자 conn = pymysql.connect(host = host, user = user, passwd=passwd, db = db, charset='utf8', port = port,cursorclass=p..

Data 2023.05.12

크롤링 데이터 전처리 (2)

지난 포스팅에서는 크롤링한 데이터를 전처리하여 타자, 투수테이블을 구성했다. 이번 포스팅은 적재된 데이터를 바탕으로 player 정보가 담긴 테이블을 만들어보려고한다. 방법은 sql자체에서 필요컬럼과 중복제거를 하는 방식과 전체 데이터를 가져온 후 데이터프레임에서 전처리하는 방식중 전체 데이터를 가져온 후 데이터 프레임으로 전처리하는 과정으로 진행하려고한다. player 테이블은 다음과 같이 구성했다. create table if not exists player_info( player_id INT auto_increment not null , player_name varchar(10) not null, player_birth DATE, primary Key (player_id) ) 선수 고유의 id값과 ..

Data 2023.05.03