Notion에 TIL을 작성중이였으나, 접근성이 떨어지는 관계로 velog를 작성하게 되었습니다.포스팅은 7일차부터 시작합니다.
클라이언트와 서버의 형태클라 : 정보를 요청서버 : 정보를 제공HTTP : hypertext transfer protocol → 웹에서 정보를 통신하기 위한 약속Request와 Response를 통해 정보를 받게 된다.HTML : hypertext markup lang
요소를 하나 찾고 싶은 경우 find, 여러개의 경우 find_all을 사용한다.페이지가 많은 경우 url을 통해 page를 변경 가능하다. 따라서 request.get을 반복적으로 수행하면서 값을 가져오면 된다.정적 웹페이지 : HTML 내용이 고정된 사이트를 말한다
: selenium은 Python을 이용해서 웹 브라우저를 조작할 수 있는 자동화 프레임워크이다.: 라이브러리 설치와 Web Driver를 미리 설치해두고 사용한다. 버전은 4.14.0를 사용하였다.WebDriver 모듈을 이용하여 크롬창을 띄우는 방법이다.: By와
10일차 포스트
Django 설치 및 앱 생성 기초 실습
Django 실습, 뷰와 템플릿, 폼 이해
serialize, generic, mixin
User, auth, PostMan
Serializer 중첩 한 Serializer 내에 다른 Serializer를 등록해서 출력하는 것이 가능하다. 테스팅 test.py를 활용하여 자동화 테스트가 가능하다. APITestCase를 활용하여 보다 편리하게 테스트 케이스를 구현 가능하다. from
Git 브랜치 관리 다양한 사람들과의 협업을 하기 위한 브랜치 관리 전략은 필수이다. git flow 깃 플로우에서는 프로젝트의 관리를 위해 master,develop,feature,release,hotfix로 브랜치를 구분한다. master : 최종 배포 서비스 브랜
: Django 프로젝트를 진행하며 스케쥴링이 필요하여 사용하게 되었다. 초기 crontab을 찾아보았으나, windows에서 사용불가능 하여 apscheuler를 활용하였다.설치settings.py: apscheduler를 추가한다.적용하기출처: https:
index페이지와의 연결코드 마무리 수행Django 템플릿 활용: 페이지에서 post 후 새로고침을 하는 과정이 궁금해서 여러 자료들을 찾아보았다. 마땅한 방법을 찾지 못하였으나, 조원이 Django 템플릿을 활용한 코드로 해결하여 보고 참고하였다.
타임스탬프를 생성하여 api 요청시간을 관리하다보니 시간 관리가 필요해졌다.그러나 timezone이 UTC로 되어있어 한국 시간으로의 변경이 필요했다.한국 시간으로의 세팅은 다음과 같다.기존 테이블의 컬럼을 삭제 후 다시 생성하는 작업이 발생하였다.makemigrati
README 작성에 대한 예시: 프로젝트 마무리와 함께 README작성과 마지막 작업들을 모두 수행하였다. GIT 활용에 있어서 미숙했던 점들이 많았는데 다들 잘 따라주어 감사했습니다. 저희 프로젝트는 Git을 참고해주시면 감사하겠습니다.https://gith
구조화된 데이터를 저장하고 질의할 수 있도록 해주는 스토리지RDB를 조작하는 언어가 SQL테이블의 정의를 위한 Data Definition Language조작, 질의를 위한 Data Manipulation Language대표적인 RDB프로덕션 DB : 웹서비스나 모바일
다수의 SQL 실행 시 세미콜론으로 분리SQL 주석은 -- 또는 /\* -- \*/ 로 사용한다.SQL키워드는 대문자를 사용하는 등의 포맷팅이 필요하다.테이블/필드이름의 명명규칙을 정하는 것이 중요하다.단수,복수\_ , CamelCasingCREATE TABLE (pk
: 테이블의 레코드를 그룹화하여 그룹별 정보들을 계산한다.그룹할 필드를 설정 후 GROUP BY field_nameAggregate 함수들을 사용 가능하다.COUNT, SUM, AVG, MIN, MAX, LISTAGG 등등: SELECT를 활용하여 테이블을 생성하는 방
: 두개 혹은 그이상의 테이블들을 공통 필드를 기준으로 합치는 경우에 사용된다.출처 : https://theartofpostgresql.com/blog/2019-09-sql-joins/중복 레코드와 PK의 유일성 체크JOIN하는 테이블들간의 관계를 명확하게 정
: 동시성을 만족하게 실행되어야 하는 SQL을 묶어서 하나의 작업으로 처리하는 방법ex) 은행 계좌 이체 : 인출과 입금의 두 과정이 동시에 이루어져야한다. → 이런 과정을 트랜잭션으로 묶어야한다.END == COMMIT, 시작전 상태로 돌아가고 싶으면 rollbac
트랜잭션 : 동시성을 만족하게 실행되어야 하는 SQL을 묶어서 하나의 작업으로 처리하는 방법 ex) 은행 계좌 이체 : 인출과 입금의 두 과정이 동시에 이루어져야한다. → 이런 과정을 트랜잭션으로 묶어야한다. END == COMMIT, 시작전 상태로 돌아가고 싶으
Route53 : 가용성과 확장성이 뛰어난 DNS 웹 서비스이다. 도메인 등록, DNS 라우팅, 상태 확인을 조합하여 실행이 가능하다. Route53 = DNS + monitoring + L4 + GSLB puiblic host zone private
: AWS 리소스에 대한 엑세스를 안전하게 제어할 수 있는 웹 서비스 = 권한 관리AWS 계정에 대한 공유세분화된 권한EC2에서 실행되는 애플리케이션을 위한 보안 AWS 리소스 액세스ID 페더레이션 : AWS계정에 대해 임시 엑세스가 가능한 권한 부여PCI DSS 준수
VPC 생성 : 가용영역을 나누기위해 생성→ 가용영역을 2개로 설정한다.NAT게이트는 한곳에서만 나가도록 지정해준다. → 외부로 나가는 IPVPC를 선택해서 생성한 네트워크를 추가해준다.private에 두어야하기 때문에 퍼블릭 IP주소를 할당하긴하나 인스턴트 서브넷도
: 함수만 등록해서 서버를 따로 만들 필요없이 서비스하도록 해준다.함수 생성블루프린트를 사용해서 간단하게 사용이 가능하다.이벤트 알림을 통해서 lambda의 함수를 등록해야한다. → S3나 다양한 서비스에 가서 진행한다.사용 용도: 이벤트 발생 시 함수를 테스트해보고자
비전 : 신뢰할 수 있는 데이터를 바탕으로 부가 가치를 생성하는 것.의사 결정권자에게 조력하는 역할 → Decision Science데이터를 고려한 결정 (Data informed decisions)데이터 기반의 결정 (Data driven decisions)사용자 서
AWS에서 지원하는 데이터 웨어하우스 서비스Still OLAP : 응답 속도가 느려서 프로덕션 DB로 사용하기 힘들다.컬럼 기반의 스토리지 : 컬럼별 압축이 가능하며, 컬럼의 추가와 삭제가 빠르다.벌크 업데이트 지원 : S3와 연계해서 Copy 커맨드로 Redshfit
사용자별 테이블 권한 설정일반적으로 사용자별 테이블별 권한 설정은 하지 않는다.역할이나 그룹별로 스키마 접근 권한을 주는 경우가 많다. (RBAC : Role Based Access Control을 많이 쓴다.)개인정보에 관련된 테이블의 경우 별도 스키마를 설정한다.코
데이터 클라우드, 다른 글로벌 클라우드 위에서 동작데이터의 판매가 가능한 Data Sharing/Marketing 제공ETL, 데이터 통합 기능 제공가변 비용 모델이다.SQL 기반으로 빅데이터를 저장, 처리한다.배치 데이터 중심이나, 실시간 데이터도 지원한다.Time
KPI(Key Performance Indicator) 지표를 데이터 기반으로 분석,표시 해주는 툴이다.구글 클라우드에서 지원LookML이 자체 언어로 데이터 모델을 만드는 것으로 시작외부 고객을 위한 대시보드도 작성 가능하다.다양한 기능을 제공하나, 고가의 라이센스
: Extract, Transform, Load ⇒ Data Pipeline, ETL, Data Workflow, DAG이라 부르기도 한다.데이터를 웨어하우스 외부에서 내부로 가져오는 프로세스DAG : (Directed Acyclic Graph) : 루프가 존재하지 않
Atomic → 한번에 실행되어야 하는 SQL을 묶어 하나의 작업처럼 처리하는 방법BEGIN-END or BEGIN-COMMIT 사이의 SQL 사용ROLLBACK을 이용해서 되돌아갈 수 있다. 트랜잭션 개념 링크 구현 방법autocommit = True변경 사항을
: 프로젝트를 진행하면서 snowflake를 활용하여 데이터 웨어하우스 구축에 사용했던 것들을 모아서 정리하였습니다.: snowflake에 데이터를 colab으로 넣을 수 없을까 생각하다가 찾았던 라이브러리이다. 그러나 실사용에서는 snowflake의 웹을 통해서 넣는
: pythonOperator를 활용하여 쉽게 DAG를 작성 가능하다. 두가지 방법을 소개한다.task decorator가 없는 방식task decorator를 사용한 방식참고) 중요한 DAG 파라미터들max_active_runs : 동시에 수행 가능한 DAG의 수ma
질문에 앞서 airflow.cfg의 위치 및 찾는 방법CLI : airflow-webserver에 위치하기 때문에 shell로 접근해야한다.docker ps 후 docker exec -it -u root <container_id> shGUIdocker-deskto
end-point : https://restcountries.com/v3/allFull Refresh로 구현해서 매번 국가 정보를 읽어오게 하기Redshift에 테이블 생성country -> “name”population -> “population”area -
airflow.cfg에는 두 종류의 타임존 키가 존재한다.default_timezonedefault_ui_timezonestart_date, end_date, schedule : default_timezone을 따른다.execution_date, log_time : 항
: Production MySQL Table(OLTP)의 prod.nps 를 AWS Redshift의 raw_data.nps에 전달한다.(OLAP)Airflow DAG에서 S3 접근 권한 (쓰기권한)IAM User를 생성, acceess key와 secret key를
라이브러리 충돌DAG에 따라서 필요한 라이브러리/모듈이 달라지기 시작한다.DAG나 Task별 독립적인 공간을 만드는 것이 필요하다. → DockerWorker의 부족Scale 조정이 필요하다 (Up, Out)K8s와 같은 컨테이너 기술이 사용되어야 한다.Worker 서
hangman_web이라는 repo의 main에 코드가 머지될 때마다 다음을 수행테스트 수행Docker Image 빌드Docker Image를 Docker Hub로 푸시→ Github Actions로 구현한다.flask를 사용한 웹 서비스 → flask 관련 모듈 설치
image빌드 명령 : docker build —platform=linux/amd64 -t tag_name이미지 확인 : docker images이미지 삭제 : docker rmi 또는 docker image rmDocker Hub로그인 : docker login -u
: 다수의 Container가 소프트웨어로 구성되는 경우에 사용가능한 툴과 설정파일 모음docker-compose.yml이나 docker-compose.yaml 파일로 환경설정을 수행한다.Docker Desktop의 일부로 설치된다.docker-compose —vers
Docker image / dockerfileDocker ContainerDocke Hub (Docker registry)Docker Composedocker-compose.yml (services,networks,volumes)Docker volumesproducti
WebUI를 이용해서 관리하기 (Admin > Variables,Connections를 활용)CLI 환경에서 수행하기.docker-compose.yml에서 환경변수를 다음과 같이 설정 가능하다. \- Variables : AIRFLOW_VAR_VARNAME: "var"
새 프로젝트 생성 : https://console.cloud.google.com/welcome구글 스프레드시트 API 활성화: https://console.cloud.google.com/apis/library/sheets.googleapis.comAP
모든 DAG 리스트하기이를 이용해서 활성화되어 있는 DAG만 Print해주는 파이썬 스크립트를 작성하기기존airflow.cfg에 다음을 변경해주면 된다. WEBSERVER expose_config =True ⇒AIRFLOW\_\_WEBSERVER\_\_EXPOSE_CO
: python에서 널리 사용되는 템플릿 엔진이다. Django 템플릿 엔진에서 영감을 받아 개발되었다고 한다. 현재는 Flask에서 많이 사용된다고 한다.변수를 이중 중괄호로 감싸 사용 <h1>name: {{name}}<h1>제어문은 퍼센트 기호를 사용한다