데이터 공부 72

Airflow를 helm으로 배포해보기 - (1) 사이드카 패턴

오늘 포스팅에서는, 직접적인 helm 배포를 진행하기 전, 알아둬야 할 개념 중 하나인 사이드카 패턴에 대해 다뤄보고자 한다. 01. 사이드카 패턴이란 사이드카 패턴이란, 어플리케이션 컨테이너와 독립적으로 동작하는 별도의 컨테이너를 붙이는 패턴을 말한다. 사이드카를 형상화(?) 하면 이렇다. 이처럼, 메인 오토바이에 사이드카를 붙인 형태와 같은 패턴이 사이드카다. 이렇게 오토바이에 사이드카를 붙여 달릴 수도 있고 사이드카를 떼어서도 달릴 수 있는 형태처럼, 기본 컨테이너와 함께 하나의 컨테이너가 함께 실행될 수 있는 컨테이너 패턴을 짜는 것이 사이드카 패턴이다. 즉 pod 안에 두 개의 컨테이너가 띄워져 있는 형국인데, 이때 pod안의 컨테이너들은 동일한 volumn과 연결이 가능하다. 또한, 하나의 p..

파이썬 클린코드 3 - 좋은 코드의 일반적인 특징 (1/2)

요즘 파이썬 클린코드(마리아노 아나야 지음)라는 책을 읽고 있다. 한 챕터씩, 책을 읽으며 내가 기억에 남는 점 등에 대한 정리를 해보도록 하겠다. 목차 1. 계약에 의한 디자인 2. 방어적 프로그래밍 3. 관심사의 분리 좋은 코드의 특징 중 3가지를 이번 포스팅에서 정리를 해보고자 한다. 1. 계약에 의한 디자인 계약이란, 소프트웨어 컴포넌트 간 통신 중 지켜야 할 규칙들을 말한다. 여기서 계약에 의한 디자인이란, 계약을 기반으로 코드를 디자인해야 하는 것을 말한다. 이는 런타임 오류 발생 시 코드의 어떤 부분이 계약 파손 됐는지 명확히 알 수 있도록 돕는다. 이외 장단점을 정리하면 아래와 같다. 계약에 의한 디자인의 장점 사전조건 검증, 사후조건 검증에서 실패하는 오류 발생 시 오류를 쉽게 찾음 책임..

파이썬 클린 코드 (2) - 파이썬스러운 코드 (1/2)

요즘 파이썬 클린코드(마리아노 아나야 지음) 라는 책을 읽고 있다. 한 챕터씩, 책을 읽으며 내가 이해한 대로 요약 및 정리를 해보도록 하겠다. 목차 1. '파이썬' 스러운 코드란? 2. 파이썬스러운 코드 1 - 인덱스와 슬라이스 2-1. 슬라이스(slice)의 동작 원리 2-2. 자체 시퀀스를 생성하는 방법 3. 파이썬스러운 코드 2 - 컨텍스트 관리자 3-1. 파이썬 스러운 방법으로 컨텍스트 관리자 구현 방법 (1) with 3-2. 파이썬 스러운 방법으로 컨텍스트 관리자 구현 방법 (2) __enter__, __exit__ 매직 메소드 구현 3-3. 파이썬 스러운 방법으로 컨텍스트 관리자 구현 방법 (3) decorator 활용 1.' 파이썬'스러운 코드란? 모든 언어는 해당 언어로 작업을 처리하는..

파이썬 클린코드 (1) - 코드 포매팅과 도구

요즘 파이썬 클린코드(마리아노 아나야 지음) 라는 책을 읽고 있다. 한 챕터씩, 책을 읽으며 내가 이해한 대로 요약 및 정리를 해보도록 하겠다. 목차 1. 클린코드란? 1-1. 클린코드의 중요성 1-2. 클린코드를 위한 코드 포맷팅 2. 클린 코드를 위한 방법 - 문서화 2-1. Docstring 2-2. Annotation 3. Annotation은 Docstring을 대체하는 것일까? 4. 클린 코드를 위한 방법 - 도구 설정 5. 1장 요약 1. 클린코드란? 코딩 표준, 포맷팅, 린팅 도구나 다른 검사 도구를 사용한 코드 레이아웃 설정과 같은 것 그 이상을 의미한다. 즉, 품질 좋은 소프트웨어를 개발하기 위해 견고하고 유지보수가 쉬운 시스템을 만들기 위한 요소다. 1-1. 클린코드의 중요성 소프트웨..

제 5회 빅데이터분석기사 실기 시험 후기

입사 전, 빅데이터분석기사 필기 시험을 합격해뒀었다. 곧이어 입사를 했고, 실기 시험을 잠시 잊고 살았다. 그러던 중, 이번 실기 시험이 필기 유효기간이 만료되기 전 마지막 시험이어서, 시험을 준비하게 됐다. 시험 정보 시험은 아래와 같이 세 가지 유형으로 출제됐다. 1. 단답형 2. 작업유형 1 - 3문제 3. 작업유형 2 - 1문제 준비물은 수험표와 신분증을 지참해야 했는데, 수험표가 없어도 시험을 볼 수 있었다. 1-1. 단답형 한번쯤 들어본 개념이 출제됨 이전 대비 통계 기반 계산 문제가 더 늘었다. 단답형의 경우, 와이즈인컴퍼니에서 출판한 '공개적 빅데이터분석기사 실기' 책을 참고했다. 절반 이상은 해당 책에서 소개한 단답형에서 출제된 것 같다. 그리고, 평소 중요하다고 생각했던 개념들을 블로그..

빅데이터분석기사 실기 단답형 대비

공부를 통해 배운 내용을 작성하고 있습니다. 혹여 해당 포스팅에서 잘못된 부분이 있을 경우, 알려주시면 빠르게 수정하도록 하겠습니다. 현재 빅데이터분석기사 실기를 준비하고 있다. 작업형은 그럭저럭 예상이 가긴 하는데, 단답형이 어떤 것이 나올지 감이 안와서 정리를 하고 있다. 누군가에게 도움이 되길 바라며 공유를 해본다 ..! 나는 이것을 gsheet 로 옮겨서, 퀴즐렛처럼 만들어 활용했다. 최초의 인공신경망 입력층과 출력층으로만 구성되어 있고, XOR 문제 해결은 불가능함 퍼셉트론 출력층에서 계산한 값을 입력층으로 역으로 전달하며 가중치와 편향을 계산하는 알고리즘 역전파 알고리즘 대뇌피질 시각피질의 학습 과정을 모델화한 인공신경망 자율 학습을 통한 클러스터링이 가능 자기조직화지도 앙상블 기법의 일종, ..

MySQL Role 권한 설정

MySQL 8 버전에서 지원하는 role 기능에 대해서 소개해보고자 한다. 1. MySQL Role 이란? 2. MySQL Role 기본 쿼리 3. 조건 별 Role 권한 할당 1. MySQL Role 이란? 말 그대로 역할을 의미한다. 더 풀어서 설명하자면, 권한을 모아 둔 역할이다. 마치 '학생은 다른 학생들의 개인 정보를 볼 수 없다.', '선생님은 본인 반에 한하여 학생 정보를 볼 수 있다.'와 같이, 각자의 role에 맞는 역할이 있는 것과 같다. 이를 통해 집합에 대한 권한을 한번에 설정 및 관리할 수 있으므로, 사용자에 대한 권한 관리 및 운영이 더욱 수월해지게 된다는 장점이 있다. 1-1. Role 생성 순서 및 구조 즉, role 을 생성하고 & role에 권한을 할당하고 & 이로써 특정..

Airflow Helm 배포 - 설치하기

공부를 통해 배운 내용을 작성하고 있습니다. 혹여 해당 포스팅에서 잘못된 부분이 있을 경우, 알려주시면 빠르게 수정 조치하도록 하겠습니다. 이전 포스팅을 통해 Helm 에 대해서 알아보았다면, 이제 직접 실습을 해 보겠다. (이전 포스팅 링크: https://eng-sohee.tistory.com/161) Airflow Helm 배포 - Helm 과 Chart 를 알아보기 Kubernetes 환경에서 Airflow를 운영할 때, 일반적으로 Helm 차트를 이용하여 배포 및 운영을 한다. 이유는, Airflow 에서 제공하는 공식 Helm 차트를 제공하기 때문이며, 이를 통해 특정 클라우드 제공 업 eng-sohee.tistory.com 목차 1. Helm 설치 2. Helm 레포지토리 추가 3. valu..

Airflow Helm 배포 - Helm 과 Chart 를 알아보기

공부를 통해 배운 내용을 작성하고 있습니다. 혹여 해당 포스팅에서 잘못된 부분이 있을 경우, 알려주시면 빠르게 수정 조치하도록 하겠습니다. Kubernetes 환경에서 Airflow를 운영할 때, 일반적으로 Helm 차트를 이용하여 배포 및 운영을 한다. 이유는, Airflow 에서 제공하는 공식 Helm 차트를 제공하기 때문이며, 이를 통해 특정 클라우드 제공 업체에 얽매이지 않고 Airflow를 운영할 수 있다. Helm 의 장점 Helm 을 사용하면, 복잡한 쿠버네티스 기반의 애플리케이션을 쉽게 설치 가능하다. 설치뿐만 아니라, 업데이트도 간결하다. helm 차트로 하나로 묶여 있다 보니, 여러 리소스가 묶인 복잡한 소프트웨어를 동시에 관리하기 수월하여 관리가 쉽다. Helm의 단점 하지만 Helm..

Python 클린 코드(Clean Code) 작성 방법 정리 및 고찰 (1)

더 나은 파이썬 코드를 작성하기 위한 11가지 팁과 요령이라는 유튜브를 시청했다. 시청한 내용에 대해서 정리를 해보고자 한다. 1. range(len(x)) 를 enumerate 로 변경하자. 만약 idx와 item 으로 모두 추적할 경우, enumerate 를 사용하는 것이 간결하고 좋다. range를 쓰면 len 함수를 추가로 불러와야 하고, 각 원소의 자료구조의 인덱스로 직접 접근해야 한다. 하지만 enumerate는 인덱스와 item을 하나의 튜플 단위로 묶어 출력하기 때문에, 훨씬 pythonic 하다. 변경 전 코드 data = [1,2,3,4] for i in range(len(data)): if data[i]